From 00d6d0ee8fbe0b30653d84353565b272898e10ba Mon Sep 17 00:00:00 2001 From: Minho Date: Tue, 23 Jan 2018 20:09:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=AF=8C=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO | 10 - static/css/markdown.css | 11 +- static/katex/README.md | 94 + static/katex/contrib/auto-render.min.js | 1 + static/katex/fonts/KaTeX_AMS-Regular.eot | Bin 0 -> 71656 bytes static/katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 71428 bytes static/katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 40200 bytes static/katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 33188 bytes static/katex/fonts/KaTeX_Caligraphic-Bold.eot | Bin 0 -> 19836 bytes static/katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 19588 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 12136 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 10604 bytes .../katex/fonts/KaTeX_Caligraphic-Regular.eot | Bin 0 -> 19220 bytes .../katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 18960 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 11868 bytes .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 10396 bytes static/katex/fonts/KaTeX_Fraktur-Bold.eot | Bin 0 -> 36200 bytes static/katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 35968 bytes static/katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 23388 bytes static/katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 20476 bytes static/katex/fonts/KaTeX_Fraktur-Regular.eot | Bin 0 -> 34896 bytes static/katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 34652 bytes static/katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 22844 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 19868 bytes static/katex/fonts/KaTeX_Main-Bold.eot | Bin 0 -> 60688 bytes static/katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 60468 bytes static/katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 35480 bytes static/katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 29492 bytes static/katex/fonts/KaTeX_Main-Italic.eot | Bin 0 -> 44132 bytes static/katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 43904 bytes static/katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 24880 bytes static/katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 21032 bytes static/katex/fonts/KaTeX_Main-Regular.eot | Bin 0 -> 68228 bytes static/katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 67996 bytes static/katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 37620 bytes static/katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 31220 bytes static/katex/fonts/KaTeX_Math-BoldItalic.eot | Bin 0 -> 39990 bytes static/katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 39744 bytes static/katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 23192 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 20036 bytes static/katex/fonts/KaTeX_Math-Italic.eot | Bin 0 -> 41676 bytes static/katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 41448 bytes static/katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 23820 bytes static/katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 20432 bytes static/katex/fonts/KaTeX_Math-Regular.eot | Bin 0 -> 41536 bytes static/katex/fonts/KaTeX_Math-Regular.ttf | Bin 0 -> 41304 bytes static/katex/fonts/KaTeX_Math-Regular.woff | Bin 0 -> 23712 bytes static/katex/fonts/KaTeX_Math-Regular.woff2 | Bin 0 -> 20344 bytes static/katex/fonts/KaTeX_SansSerif-Bold.eot | Bin 0 -> 34204 bytes static/katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 33964 bytes static/katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 19196 bytes static/katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 16020 bytes static/katex/fonts/KaTeX_SansSerif-Italic.eot | Bin 0 -> 31320 bytes static/katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 31072 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 18080 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 15152 bytes .../katex/fonts/KaTeX_SansSerif-Regular.eot | Bin 0 -> 30212 bytes .../katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 29960 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 16744 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 13908 bytes static/katex/fonts/KaTeX_Script-Regular.eot | Bin 0 -> 25104 bytes static/katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 24864 bytes static/katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 13856 bytes static/katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 12276 bytes static/katex/fonts/KaTeX_Size1-Regular.eot | Bin 0 -> 13408 bytes static/katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 13172 bytes static/katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6980 bytes static/katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5820 bytes static/katex/fonts/KaTeX_Size2-Regular.eot | Bin 0 -> 12648 bytes static/katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 12412 bytes static/katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6684 bytes static/katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5560 bytes static/katex/fonts/KaTeX_Size3-Regular.eot | Bin 0 -> 8596 bytes static/katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 8360 bytes static/katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4776 bytes static/katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3856 bytes static/katex/fonts/KaTeX_Size4-Regular.eot | Bin 0 -> 11520 bytes static/katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 11284 bytes static/katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 6456 bytes static/katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 5172 bytes .../katex/fonts/KaTeX_Typewriter-Regular.eot | Bin 0 -> 35784 bytes .../katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 35528 bytes .../katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 20712 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 17344 bytes static/katex/katex.css | 1074 ++ static/katex/katex.js | 10788 +++++++++++++++ static/katex/katex.min.css | 1 + static/katex/katex.min.js | 6 + static/quill/quill.bubble.css | 952 ++ static/quill/quill.core.css | 397 + static/quill/quill.core.js | 8519 ++++++++++++ static/quill/quill.icons.js | 15 + static/quill/quill.js | 11402 ++++++++++++++++ static/quill/quill.min.js | 8 + static/quill/quill.min.js.map | 1 + static/quill/quill.snow.css | 945 ++ views/document/new_html_edit_template.tpl | 197 +- 97 files changed, 34366 insertions(+), 55 deletions(-) delete mode 100644 TODO create mode 100644 static/katex/README.md create mode 100644 static/katex/contrib/auto-render.min.js create mode 100644 static/katex/fonts/KaTeX_AMS-Regular.eot create mode 100644 static/katex/fonts/KaTeX_AMS-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_AMS-Regular.woff create mode 100644 static/katex/fonts/KaTeX_AMS-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Bold.eot create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Bold.ttf create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Fraktur-Bold.eot create mode 100644 static/katex/fonts/KaTeX_Fraktur-Bold.ttf create mode 100644 static/katex/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 static/katex/fonts/KaTeX_Fraktur-Bold.woff2 create mode 100644 static/katex/fonts/KaTeX_Fraktur-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Fraktur-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Fraktur-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Main-Bold.eot create mode 100644 static/katex/fonts/KaTeX_Main-Bold.ttf create mode 100644 static/katex/fonts/KaTeX_Main-Bold.woff create mode 100644 static/katex/fonts/KaTeX_Main-Bold.woff2 create mode 100644 static/katex/fonts/KaTeX_Main-Italic.eot create mode 100644 static/katex/fonts/KaTeX_Main-Italic.ttf create mode 100644 static/katex/fonts/KaTeX_Main-Italic.woff create mode 100644 static/katex/fonts/KaTeX_Main-Italic.woff2 create mode 100644 static/katex/fonts/KaTeX_Main-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Main-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Main-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Main-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Math-BoldItalic.eot create mode 100644 static/katex/fonts/KaTeX_Math-BoldItalic.ttf create mode 100644 static/katex/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 static/katex/fonts/KaTeX_Math-BoldItalic.woff2 create mode 100644 static/katex/fonts/KaTeX_Math-Italic.eot create mode 100644 static/katex/fonts/KaTeX_Math-Italic.ttf create mode 100644 static/katex/fonts/KaTeX_Math-Italic.woff create mode 100644 static/katex/fonts/KaTeX_Math-Italic.woff2 create mode 100644 static/katex/fonts/KaTeX_Math-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Math-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Math-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Math-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_SansSerif-Bold.eot create mode 100644 static/katex/fonts/KaTeX_SansSerif-Bold.ttf create mode 100644 static/katex/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 static/katex/fonts/KaTeX_SansSerif-Bold.woff2 create mode 100644 static/katex/fonts/KaTeX_SansSerif-Italic.eot create mode 100644 static/katex/fonts/KaTeX_SansSerif-Italic.ttf create mode 100644 static/katex/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 static/katex/fonts/KaTeX_SansSerif-Italic.woff2 create mode 100644 static/katex/fonts/KaTeX_SansSerif-Regular.eot create mode 100644 static/katex/fonts/KaTeX_SansSerif-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 static/katex/fonts/KaTeX_SansSerif-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Script-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Script-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Script-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Script-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Size1-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Size1-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Size1-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Size1-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Size2-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Size2-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Size2-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Size2-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Size3-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Size3-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Size3-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Size3-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Size4-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Size4-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Size4-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Size4-Regular.woff2 create mode 100644 static/katex/fonts/KaTeX_Typewriter-Regular.eot create mode 100644 static/katex/fonts/KaTeX_Typewriter-Regular.ttf create mode 100644 static/katex/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 static/katex/fonts/KaTeX_Typewriter-Regular.woff2 create mode 100644 static/katex/katex.css create mode 100644 static/katex/katex.js create mode 100644 static/katex/katex.min.css create mode 100644 static/katex/katex.min.js create mode 100644 static/quill/quill.bubble.css create mode 100644 static/quill/quill.core.css create mode 100644 static/quill/quill.core.js create mode 100644 static/quill/quill.icons.js create mode 100644 static/quill/quill.js create mode 100644 static/quill/quill.min.js create mode 100644 static/quill/quill.min.js.map create mode 100644 static/quill/quill.snow.css diff --git a/TODO b/TODO deleted file mode 100644 index 99e7e542..00000000 --- a/TODO +++ /dev/null @@ -1,10 +0,0 @@ -1、把 log 提取出 dbgout 之类的方法;已改作 beego.Info() 调用; -2、把源代码里的 TODO 完成; -3、Export 的两个 URL 应该可以合并,用是否有 :id 来区分;这样 0 号文档输出整个 book 更顺;已完成; -4、统一代码风格,空格、命名之类的; -5、美化 PDF 的输出格式; -6、自动登录新开标签页而且并不能跳转至起始请求页的问题; -7、用户分组管理; -8、[自动]展示历史版本;增强历史版本对比显示的能力; -9、[自动]展示作者信息;也许可以和上一需求合并考虑; -10、查看了解评论功能; diff --git a/static/css/markdown.css b/static/css/markdown.css index 9e5e408e..fe24f160 100644 --- a/static/css/markdown.css +++ b/static/css/markdown.css @@ -131,17 +131,16 @@ body{ left: 0; right: 0; } +.btn-toolbar{position: absolute;} .editormd-group{ float: left; height: 32px; margin-right: 10px; } -.editormd-group a{ +.editormd-group a,.editormd-group .editor-item{ float: left; } -.editormd-group a.change{ -} .editormd-group .change i{ color: #ffffff; background-color: #44B036 !important; @@ -158,10 +157,10 @@ body{ opacity: .6; cursor: default } -.editormd-group a>i { +.editormd-group a>i{ display: inline-block; - width: 34px; - height: 30px; + width: 34px !important; + height: 30px !important; line-height: 30px; text-align: center; color: #4b4b4b; diff --git a/static/katex/README.md b/static/katex/README.md new file mode 100644 index 00000000..c7de02a7 --- /dev/null +++ b/static/katex/README.md @@ -0,0 +1,94 @@ +# [KaTeX](https://khan.github.io/KaTeX/) [![Build Status](https://travis-ci.org/Khan/KaTeX.svg?branch=master)](https://travis-ci.org/Khan/KaTeX) + +[![Join the chat at https://gitter.im/Khan/KaTeX](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Khan/KaTeX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web. + + * **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://www.intmath.com/cg5/katex-mathjax-comparison.php). + * **Print quality:** KaTeX’s layout is based on Donald Knuth’s TeX, the gold standard for math typesetting. + * **Self contained:** KaTeX has no dependencies and can easily be bundled with your website resources. + * **Server side rendering:** KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML. + +KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, Edge, and IE 9 - IE 11. A list of supported commands can be found on the [wiki](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX). + +## Usage + +You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN: + +```html + + +``` + +#### In-browser rendering + +Call `katex.render` with a TeX expression and a DOM element to render into: + +```js +katex.render("c = \\pm\\sqrt{a^2 + b^2}", element); +``` + +If KaTeX can't parse the expression, it throws a `katex.ParseError` error. + +#### Server side rendering or rendering to a string + +To generate HTML on the server or to generate an HTML string of the rendered math, you can use `katex.renderToString`: + +```js +var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}"); +// '...' +``` + +Make sure to include the CSS and font files, but there is no need to include the JavaScript. Like `render`, `renderToString` throws if it can't parse the expression. + +#### Rendering options + +You can provide an object of options as the last argument to `katex.render` and `katex.renderToString`. Available options are: + +- `displayMode`: `boolean`. If `true` the math will be rendered in display mode, which will put the math in display style (so `\int` and `\sum` are large, for example), and will center the math on the page on its own line. If `false` the math will be rendered in inline mode. (default: `false`) +- `throwOnError`: `boolean`. If `true`, KaTeX will throw a `ParseError` when it encounters an unsupported command. If `false`, KaTeX will render the unsupported command as text in the color given by `errorColor`. (default: `true`) +- `errorColor`: `string`. A color string given in the format `"#XXX"` or `"#XXXXXX"`. This option determines the color which unsupported commands are rendered in. (default: `#cc0000`) +- `macros`: `object`. A collection of custom macros. Each macro is a property with a name like `\name` (written `"\\name"` in JavaScript) which maps to a string that describes the expansion of the macro. +- `colorIsTextColor`: `boolean`. If `true`, `\color` will work like LaTeX's `\textcolor`, and take two arguments (e.g., `\color{blue}{hello}`), which restores the old behavior of KaTeX (pre-0.8.0). If `false` (the default), `\color` will work like LaTeX's `\color`, and take one argument (e.g., `\color{blue}hello`). In both cases, `\textcolor` works as in LaTeX (e.g., `\textcolor{blue}{hello}`). + +For example: + +```js +katex.render("c = \\pm\\sqrt{a^2 + b^2}\\in\\RR", element, { + displayMode: true, + macros: { + "\\RR": "\\mathbb{R}" + } +}); +``` + +#### Automatic rendering of math on a page + +Math on the page can be automatically rendered using the auto-render extension. See [the Auto-render README](contrib/auto-render/README.md) for more information. + +#### Font size and lengths + +By default, KaTeX math is rendered in a 1.21× larger font than the surrounding +context, which makes super- and subscripts easier to read. You can control +this using CSS, for example: + +```css +.katex { font-size: 1.1em; } +``` + +KaTeX supports all TeX units, including absolute units like `cm` and `in`. +Absolute units are currently scaled relative to the default TeX font size of +10pt, so that `\kern1cm` produces the same results as `\kern2.845275em`. +As a result, relative and absolute units are both uniformly scaled relative +to LaTeX with a 10pt font; for example, the rectangle `\rule{1cm}{1em}` has +the same aspect ratio in KaTeX as in LaTeX. However, because most browsers +default to a larger font size, this typically means that a 1cm kern in KaTeX +will appear larger than 1cm in browser units. + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) + +## License + +KaTeX is licensed under the [MIT License](http://opensource.org/licenses/MIT). diff --git a/static/katex/contrib/auto-render.min.js b/static/katex/contrib/auto-render.min.js new file mode 100644 index 00000000..96e1ddec --- /dev/null +++ b/static/katex/contrib/auto-render.min.js @@ -0,0 +1 @@ +(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.renderMathInElement=e()}})(function(){var e,t,n;return function e(t,n,r){function o(c,a){if(!n[c]){if(!t[c]){var u=typeof require=="function"&&require;if(!a&&u)return u(c,!0);if(i)return i(c,!0);var f=new Error("Cannot find module '"+c+"'");throw f.code="MODULE_NOT_FOUND",f}var s=n[c]={exports:{}};t[c][0].call(s.exports,function(e){var n=t[c][1][e];return o(n?n:e)},s,s.exports,e,t,n,r)}return n[c].exports}var i=typeof require=="function"&&require;for(var c=0;cf){s=a[f++];if(s!=s)return true}else for(;u>f;f++)if(e||f in a){if(a[f]===n)return e||f||0}return!e&&-1}}},{"./_to-index":32,"./_to-iobject":34,"./_to-length":35}],8:[function(e,t,n){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],9:[function(e,t,n){var r=t.exports={version:"2.4.0"};if(typeof __e=="number")__e=r},{}],10:[function(e,t,n){var r=e("./_a-function");t.exports=function(e,t,n){r(e);if(t===undefined)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":5}],11:[function(e,t,n){t.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},{}],12:[function(e,t,n){t.exports=!e("./_fails")(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},{"./_fails":16}],13:[function(e,t,n){var r=e("./_is-object"),o=e("./_global").document,i=r(o)&&r(o.createElement);t.exports=function(e){return i?o.createElement(e):{}}},{"./_global":17,"./_is-object":22}],14:[function(e,t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],15:[function(e,t,n){var r=e("./_global"),o=e("./_core"),i=e("./_ctx"),c=e("./_hide"),a="prototype";var u=function(e,t,n){var f=e&u.F,s=e&u.G,l=e&u.S,p=e&u.P,d=e&u.B,_=e&u.W,v=s?o:o[t]||(o[t]={}),h=v[a],b=s?r:l?r[t]:(r[t]||{})[a],y,g,x;if(s)n=t;for(y in n){g=!f&&b&&b[y]!==undefined;if(g&&y in v)continue;x=g?b[y]:n[y];v[y]=s&&typeof b[y]!="function"?n[y]:d&&g?i(x,r):_&&b[y]==x?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};t[a]=e[a];return t}(x):p&&typeof x=="function"?i(Function.call,x):x;if(p){(v.virtual||(v.virtual={}))[y]=x;if(e&u.R&&h&&!h[y])c(h,y,x)}}};u.F=1;u.G=2;u.S=4;u.P=8;u.B=16;u.W=32;u.U=64;u.R=128;t.exports=u},{"./_core":9,"./_ctx":10,"./_global":17,"./_hide":19}],16:[function(e,t,n){t.exports=function(e){try{return!!e()}catch(e){return true}}},{}],17:[function(e,t,n){var r=t.exports=typeof window!="undefined"&&window.Math==Math?window:typeof self!="undefined"&&self.Math==Math?self:Function("return this")();if(typeof __g=="number")__g=r},{}],18:[function(e,t,n){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],19:[function(e,t,n){var r=e("./_object-dp"),o=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){e[t]=n;return e}},{"./_descriptors":12,"./_object-dp":24,"./_property-desc":29}],20:[function(e,t,n){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a!=7})},{"./_descriptors":12,"./_dom-create":13,"./_fails":16}],21:[function(e,t,n){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return r(e)=="String"?e.split(""):Object(e)}},{"./_cof":8}],22:[function(e,t,n){t.exports=function(e){return typeof e==="object"?e!==null:typeof e==="function"}},{}],23:[function(e,t,n){"use strict";var r=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie"),c=e("./_to-object"),a=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";e[n]=7;r.split("").forEach(function(e){t[e]=e});return u({},e)[n]!=7||Object.keys(u({},t)).join("")!=r})?function e(t,n){var u=c(t),f=arguments.length,s=1,l=o.f,p=i.f;while(f>s){var d=a(arguments[s++]),_=l?r(d).concat(l(d)):r(d),v=_.length,h=0,b;while(v>h)if(p.call(d,b=_[h++]))u[b]=d[b]}return u}:u},{"./_fails":16,"./_iobject":21,"./_object-gops":25,"./_object-keys":27,"./_object-pie":28,"./_to-object":36}],24:[function(e,t,n){var r=e("./_an-object"),o=e("./_ie8-dom-define"),i=e("./_to-primitive"),c=Object.defineProperty;n.f=e("./_descriptors")?Object.defineProperty:function e(t,n,a){r(t);n=i(n,true);r(a);if(o)try{return c(t,n,a)}catch(e){}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");if("value"in a)t[n]=a.value;return t}},{"./_an-object":6,"./_descriptors":12,"./_ie8-dom-define":20,"./_to-primitive":37}],25:[function(e,t,n){n.f=Object.getOwnPropertySymbols},{}],26:[function(e,t,n){var r=e("./_has"),o=e("./_to-iobject"),i=e("./_array-includes")(false),c=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var n=o(e),a=0,u=[],f;for(f in n)if(f!=c)r(n,f)&&u.push(f);while(t.length>a)if(r(n,f=t[a++])){~i(u,f)||u.push(f)}return u}},{"./_array-includes":7,"./_has":18,"./_shared-key":30,"./_to-iobject":34}],27:[function(e,t,n){var r=e("./_object-keys-internal"),o=e("./_enum-bug-keys");t.exports=Object.keys||function e(t){return r(t,o)}},{"./_enum-bug-keys":14,"./_object-keys-internal":26}],28:[function(e,t,n){n.f={}.propertyIsEnumerable},{}],29:[function(e,t,n){t.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}},{}],30:[function(e,t,n){var r=e("./_shared")("keys"),o=e("./_uid");t.exports=function(e){return r[e]||(r[e]=o(e))}},{"./_shared":31,"./_uid":38}],31:[function(e,t,n){var r=e("./_global"),o="__core-js_shared__",i=r[o]||(r[o]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":17}],32:[function(e,t,n){var r=e("./_to-integer"),o=Math.max,i=Math.min;t.exports=function(e,t){e=r(e);return e<0?o(e+t,0):i(e,t)}},{"./_to-integer":33}],33:[function(e,t,n){var r=Math.ceil,o=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?o:r)(e)}},{}],34:[function(e,t,n){var r=e("./_iobject"),o=e("./_defined");t.exports=function(e){return r(o(e))}},{"./_defined":11,"./_iobject":21}],35:[function(e,t,n){var r=e("./_to-integer"),o=Math.min;t.exports=function(e){return e>0?o(r(e),9007199254740991):0}},{"./_to-integer":33}],36:[function(e,t,n){var r=e("./_defined");t.exports=function(e){return Object(r(e))}},{"./_defined":11}],37:[function(e,t,n){var r=e("./_is-object");t.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&typeof(n=e.toString)=="function"&&!r(o=n.call(e)))return o;if(typeof(n=e.valueOf)=="function"&&!r(o=n.call(e)))return o;if(!t&&typeof(n=e.toString)=="function"&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":22}],38:[function(e,t,n){var r=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(e===undefined?"":e,")_",(++r+o).toString(36))}},{}],39:[function(e,t,n){var r=e("./_export");r(r.S+r.F,"Object",{assign:e("./_object-assign")})},{"./_export":15,"./_object-assign":23}]},{},[1])(1)}); diff --git a/static/katex/fonts/KaTeX_AMS-Regular.eot b/static/katex/fonts/KaTeX_AMS-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..784276a3cbfb3d3b93c974594ffaf70514ab0eb7 GIT binary patch literal 71656 zcmdqKd3+mZoj*R$Gq*-Fx({1EbXbxt$?_pva%{&|?AS@{#BuI8ryb{No1|%zhTdmV zN`RJfl$Ns4vI{JfLuuO5Lbu#qU^xqvqtq0ZWxH)DEL*z!WgGeXenygGr%4O^Ua#LD zUpw+Vn)%Gk^E{vXc%D4(BbyhFJ=|t)C%1%K#jV3dgIkL;`?xE(1GsuQ&h&8`aprRF2zL>8DR&5u zY~#}S^q_SVzk3091&)_;`vGwXtsvLP9W$XaToaxUKF^z)U-upW5`1jjjU3M%9v)u5 zYWK@)PI1KhJkHjvUf0q-eEk*+fUd;%$?1brhkyFi;yXD`e1+qLi>Hqr4a#4aKg@C7 zdM1(l-`Exn*kp@G<9?i0EUyew)U%uqUlP9?gyW{_U|jlSASe=Qxp7)_^!;60q)^nEVgl5 z)Y?~nJo`^-!h90DrTjx=b_Rbx&PnDe%C&NN?k#BFMKE9Zq4X81+_Bz+v;-%&b} z=eRbqfZT56xZm5kmwv}?Vn5@1hj!yx!QapF!Pzcu3;!bdUXbJN*uk@_^a1<{;_ZLt z+Szxq3V;5L^G|UOdM~Hp7{|wswv|qER^GzJ@iE8=&P`t7B(%Nk8eahXQ=A*$!+^7! zM|NL|tHJe<`HZJ956^RAxy_zgi|Y>aeJ^twf0_&8dxF+*3AJ|ik7_NO!B>Bb&%fb$ zIlxDW3;n=#JR=2IoSS`tJU;sZu4U;Bxc&;4$EO?b>B1*lKIVi?To*p8%ikm7L2eOi z1D1VqXglyp<2_yML+ zHV*P>ZZE#CM|%-ITiN?Co?PX_&2U?ZclIUBagMw)`x3_H$H&L+Ww7NVYiG;tO!>Uo zceHKz80VZ@hwtpOmVNO4kxF~sv2uS3=PK~*SUGRrTfWBHYz*wkVDk8|@l-zMSn=IF zf+o!I@mJwEJ^M}b^AwKw0A~KX)&WmB%+(_E9^6N~rDp){-Q`c^*YMAS@539bsQ_ts~pYyUU&UgPGPh%|AX;x=BF~wr?~aNW2rCm z+pIqYu8m)UYfHFR);~7Bd3`$f-IaN~P@gN;D@XI4l|FMbjDBWcVq?R*qLuT1!O_Gi zNkJCi!|i5L0n)zosbO*o&D}V|S~Z-&FURq_&o>H-+CGepmS3 z@crRWhCdsAIQ(e%@$lEf{~Z2N_?hsp!oQ0|8om*=M(t5|)E~V(dVlnE^pWU4MZXmN zR!oe$;=!gD6FU;uC*F~`EAjcnlZkIXr#|O+F7W%=*;$M$2&H@Oc<6%hWXt3EfH|Iz zgdPYLLXU(#A9^D6mC%!+pU;g)m^YqaxFg&fUQ!;SjA!Vh9RpEt+z&G6IVnecBT;d$e^EP7w`L5%0|bH;OB;zZ(oiH8$kPyEYs z(sS15yuUw#0sZUjS7%Sp-Y|R3?2*~_;%jGioLOC&1{$%n;Dr|F|&MT zU?xA4nQ5L$%*1D6GtrswOlYQlCNSfivCr6M^ci)ApW&YU?`L0q_7Bhg{@LF>`{J`N zJp1csfA#Eh&;Ih+XP^DqvmgBhdFF{{zVOVW&piCh_Gen32|iQzOw}{KXN;f!=x6`@ zvoAdTpHJWL^wiT^pI-NL=hMljnEDd<`G4q#K=Yf-g)x~LeSubICrd2& zhC>!aNmf*gX4MUw-Qje(Jzk%`sya|pd+u#@=brd$zK7-k2j{iT<{|dCe*RflV{i1+ z5IuXfz@>r(Zo}rGiC}Q_QO;O1T9DRl*<9!d6dETc_XbaH*j%8|smBzUSJTsxU4c-j zz)cjm!N}4FF++os1I-1JDg-C@HWz3rxI0+*(s)6LZF#VfSO$ltht_W09EyYjCpQNR z_Oc910eM=oC664vudwh>?MU6d6GGCkkY; zxgew>=vQ#}DRI|8kX!OX(>ji7pIc#FN3HlaVQg2y>>m z0GrK1Fn~^0dRgG3k*TGnS7;Zwz0iQWaP!>I=HFyxG!q$kP_ytun?r#}Xd)46F6gOK zlnxbkPc3aO7%2=O7%W%^N7%T~hzv{=boOm6zUlbZT(IFWc5_OCn1N|@yI>4X22V}~ z3kD{wxnNI?uHSr0*u8Y3p`h=HT-jW3q(;|l9$i;D83^IL%RKK)o#JeR8#bS^*?_;P zfr2f`h!mtdaLUU5==f70USNWcj&DB2C>N78a1!WcuT6v^xUJF-l&-T|K>O_K1V*w9 z{a-c-BrZVJ1rT_O<6IF;@nC`Ldyo)fQiChSo#N=w`ppGfWFR%0WZ{ZrAdG2pV{EQubHS53McC1cd1gmn>J-n8{?sXf9jj8OM0TuB zos!rwkUAx^V@>Lm!j846Qz|<)rGn`K+1^}8n2pPt3rVwad2^vI#TE4A-_XZ;^sx@l z4x*3j7(yS}F^oR4V+4I<#|HF~9i!+YJI2sQc8sHs?AVAtvSTV0>@``SIfbdQPX-6s zG%uoM%-wYH)I1TU|P{Mhm!E|sLV_r<Opt;)nA~$R9SH_|PvTjN&R!0tOV20>cqX8Ng-OQm`8AtQ(;y!VoTf3p zdSZadKn2ni@537-!{9z(b0I5%?@6*G?CId-?nr?joZ1aBLNTf~4WK-u-1^PwU@vqd>v8!c9(H!h zr6|6wz@<6uTSC<9iEA=a#tiz{Tv%N0!C(b7lT1CIJH!eq`%;l$n$6lU1at31`c#^@ z!GQg9r-9A0r}J~CP3X$43t*O{3SG&{l?4wSNEH?(PlARRv77{3zV5|9OS+K8`v=YG zVgy*3T}E6Ha77wSQtIPU2o1>aIZCaJ_svOh+4%_LZ=pUmZ%n@QM!Eu_dH4=Zl>0cu zCZjT`!)*K^HuJ2D<#Egnc^QW6DKRIsJ^0X-E_8qwmtWxg3dmgIb`?4SGmlqAdY+x`;(AdaeSYs1|VU5iUhBYP_%pe+D7z}G{WiYI7L+{&zG3{zippu`I2hyKSPMgi+z!cHGQSU>;-mpg0heHn)0#+> zQp?GkEqUPch#L@2#aU(G^IX2v=DDS(8pv&HU|rs}`4qo<>8Tj|_Ic$-jtKeNreR_M z1V;44XPL_v5bw8hd>;_jtTOt1e5BY+*{qV$2;S^5C=Ab$D8?C(k~6WGg@ ze*ZwPnB^}h(#1fL8^@bF&=Umm^>Ec0aKrH0;ycQyPbx-xoq^f$4A*vDe8 z#)sp##lO`UY`nHfX}Z1X`9vadcT!5;n0zf2OO2CE8B5{h@uV{h>^C=1}J4j@vt)>v*-ZwR3&ve-Q8{P{>L6`&-$MGdS2+w_Fmij{l%%pH!l8e-&o)G`!DYQMSeX0(Z zza90DZW(=aW#h_|tGHF!RfkqRw5m8ZK6dTc6RU;Q4XYnq{qlHv{P6fgYb0{(0T5bx*8U)~{dx+=h!cJiRf$@gtjrO?Pju+gzAfI`P{rw{7{u)?Hg)-gf1- z!nWskC_6fKY};|`j?e7)(T?KIx}C#2_wW3`&c}EDd{UWAPad88_LO_--BaJ#Rk!Qd zt}jimoc{Ul-rXPEbA0ciz0dF4z3-v@(*6%#)N#?P7Z)!1z=0bN{N~`u!KV*R9(wPg z7cNa-`l-Y2!`EJxz3f|;Z$4r<@|mLpM_;(&wqwGvn~&Xf?32eHg)`I+s`v)zgy&>V zc~}yVvT03b92rMEf^$@rMc%^V^;;!EsXGH$E1<83!ecHB z;GiofCh`HoZQHtbyr;XpCD9ZK*Hn94vV^!~PLtfpXnVG^qlH9d$>a9bQIA`eBH?(f zvm={n&*ri&XSUtvbvb?BOuKj9#hhEt#A6oH8D{t4ay(7rvLt8P;@Drpt ztGW|ayLSB_f!7^GuJY4}ORHHGa5hI11}`d#EDM69$eL3RkTA(A0xABa_%lzdCM%La zMT??^T!vyNO~g;O@^Yy7*m~=|jTG0#4RaGn zd|gjIJj#6byo)0|H_}B_-XIn^N2o;@0ctc{@|u^3!gmo>sazG=)%b;OywE+6UZvM1 zIhB`rRX%J*ddEU#%M?a~m?*auB&d&SBBhjUg?@DqMj@;lZJffZyrLfFRCec~xjQip z7rc@6@UMIqquIaVU4O|vwuJ*@!aQHMXwmi89=m+a_=@F=h8GPl=?9sn6OF<8YJXUl zJV{qaF5~s#mr!Bo1=+9Z)UA;p-!v9r0KsEE}Yj zxMGpGuMXyl+@1ryvn#HS7%t21%EKe>46emH;^A15AVP-UOuMFi@hkpAb(-oLwvZz} znbv$V@cG9yK@HS6Mf|t|wX!fHUm^;Ec!@0JR`m8coL;xaKju_%lO9zYIy}0hcduCF zBt$kOZ@nx~d*g=Nw(^a7j0&Qm`LCn*$Ql*gG@WXR)Xv0s@C%AqjlXq}m$lDr-NH>DgH$*9@tt`MARfsQ1 z;iSX3Md5g5niEC3Re=0*j><%mOhR>;gvvx&Yz`hEoXAsgx^m+J=zQu80SS>dRp2GE z8l+N1xUCZ_M|&2vw}gT<)qb}{<@!m##T0LhDhwh^VMYqEjvUCMJ=U_C0?<&FHbb7saT@f({zhBzGID}xZmJA+ctZO9=6@XKLvqQ!eAmifPA|&s3aQEibrHgwz1%)SN ze1?Hq$}9A+I$z|-b0Wu>!{qrOZKDez^KS+O2?pG`db(GSEy;I}_Kf;Es$!`&i&UL- z<)CfAl_pCwwN&Ox@w@ND^SiQD$r>@EMjJK+7B}gPBdn?qno0dwt?FX$ zKd-eVZ;ZsEy@DnaQC>wqF7S%?<|#*Ztab7VD-~o(lx4z8vPxT3i$rD7T1|<~TKtdV zi-t|tNj354yftv<`;uMI65os2`&!?gl#4%o{G$2|r-!!2nyRV5%hC>H@2$YujlkIk zZWjtMj&RozSH8BLNb>a5IIl>T5Q}mtA(o2?Pu?;~DJKDwR&ZJ`_|hUN7BD92OHg}Z zgT;b>hd2wqTF8{Hsk|h~6PzsTqjtk83X}>HFhmT2sTC&b|Mq7%@QlCecH4q3;C9eO z)6t`ZJ9^#GYxnHlzHQUSWl#Xw&Q=&O;ZUH;?e!SM zMnYw>0i)Xi0!`4-PeNXw#|-4DHNZyRd6rjB<&WY}C-SVxs zDXMNuZ1U?e{S+jONpifQ&~}T?gWhD2%e4K{;JZN;a?4P915K^Ke9km_pDYg4HyI~W}<2OW;Vo}K0naNo&$ zK~Bn!ZTNf99v?68WH+I_P!=T3AUjHUdRT)+g36W&D^V1Elq;Jq_EE3})Zzrxg&|f9 z-SggLyWmavzXIMNGK%tX+~m$p8^%{-7-K%KJL-w0)4EiXB%lYT0YF7eMMT2Ph>&Ct zQxz}>GBALdWf7^68E`;+IC%l`@|6jvy)#WZU5s?*Ctz)g8ytU=H;saQCdihgKPNoPg|oshn)RzEjFj!!_x;u~i=*d^R`+!ym+J4DPhQOPa`mDDSbY)t^U6a8Fw?*!mb2D{Z_Z+< zClE`E$vktx#Yn+hOWOMgp2o^Tg^-4k%}GBd{VZ;GYW(x8x=K~e&PI9#Mo2s8(ZQP+|tMrSHvn? zOu|qsA@9mTYJ^-oHQs&9v_g8yHpcsxsJuS$Rp+PcOBP1)bE;9TtsJ#jshsbsbt)x0 z(tzCfGvvk=loVdUeKl_Z##Du994$+V1gCKVOw=jpAd3R`SDkR`R8{p+hYb!ftW-L& z&>z0g9k%n_k^f79OMY^g}r4 z9k?us251==lF%`WNyIc2FDx8DIFKY#N#T?PPQ=tp{Y0+#DDjw`bTD(LEJ)%p`g={3 z0*zpKxv?7fFMdVVG}WIF#XpH+Q2UGc;k&d&uF467IXL(1EV&G{(F}X^hDQ>xUc`zaS`E(? zRiG0J5k-Ae<|!isXpgf|k@*lXJQqOZFLbelWhY8OVMyS;&5d4TwrP#6KFm2H7i0LbhyM%((Gw6gE?zKaC9xV<&mtN61g&K zHGq)`Co{Pz5^*Ocky3sF!d6E#DSzS1HbjZ?)}cXHm)9My3M&{-j)i|pYL9tB{RHDL zdD3OsXA-gGpp1}VNfAb?RWQ^`=9kOPcf?B45izAs=4VNbA-k=~V;H(`Erx}iASb)K*d220e9IcN3?3v$F^pxTIs zIZGEZN*K|e6+9kaDbNA)msz_#Or$YY#@t?xVcTnBlQ~r&@DMPIcQa#%k9U~9a9c@< z;VRErZapDNHq9#Xp-sE&I;B>jz9NqpA5_d=ut8ZKHGt~rC3_9S?QqM&4L4XdCAr4? z0a9(RHe}10Kb{p%)9!J&lsfNUa?);IXm&50*;dz@R3yLahgRXZIS}fSBt#to9NoCiFSFmZ+Q#|+) zV$*#hp+~Qc7?MputfJzNb#O!68t&eQ^DufV>=&sRy)eLdP{jn;Q6E(m#5v}>RxA*5 zK2Y1apl=RUa+KV;&Nbt30}DU?{z@1$XeHmmh70t^mYQGbgsAa?0!?lVCX#a1-2ms zB6u5g<}Ndwz|NJ6FBV_W>=JeQRyV?vkxwHH^m>D|R-AKGh?i8$)OzMKQXKA(OuZhZ z6mRE0ROa6sxwmrn<=xjEzG&}QU!zYF;qH==6Yzmol$_dns|H_%P_Qhe`lyb0I-(=e zghio}WJnbjUI1o04_N*UAsiB8VDDRwUV4DB@8*qlZdcOX)9G^48V@E`?Vk$s{sVPys;+U+eyscRWmU*95 za0^vh@tfsy5+U{1O%lb*)9bGTa=o}NYD|!SLl(%g-J4YY+AB59D_h7_nG8bow69On zC_;S-e`b}a3J#}Stgevs`hu3}-UGLhgJ?6NA zVlk}znNI-s;7VqDyhNV>%`Af!y({mugCfS4FRIo=jv%@+7vQW{AzB!H}&$==CAQ?R_F&r&KK3ci0|$_qh@zs3LW5TPPVp(IcS-`p`)@BO{>s%ypL*3z&wQO2 zmL#)l1TGAp^0&yDRdHEvoV$$M^T_lf5KTq2dSLsR2@v>;KnP2JoQ*1DJr75r!I@V% zcPZ~bdzKJ>Q~4Ut!o`oIY7-$r@+S$iahTpTT{xyuOBxXoAWS%O>q>FoN-Q{+Wnre6 zh$tfrcv=C-w3}gr&W>m)dQgiens{LWD8_6hbqgS}s=>Ky)xajZrui37-FN@gh@0m< zD@LBL*9MYV#AaMsU&t1$cLcpz7Yxd5p!h4>BEDG>tPZi;t$YOfmDbg0Jh@w_mUNiK z^|mUi)YpMV^|rvqdRqs5OlS-qTpl|a+tIUo_sCnEZ5ijW6{}n#Y0Mt49~`K=HR}d~ zY_86?HXcr#=&btA;k8u~wb+E7osIDyjmvz~nxVSoE51f;yo|!XWb5*q$GuB7G@&gA zs<*vsVldcm;*7D9K6XwYsce0PgTra#iGcyh(bP&2z*SMw+AgT%;KpNk6Gs-`^r2&V2GDH3kB$wu`ADIFrlwCS}2y7+>6E z11b?`4$qF7{MXE_Kz#2;?!DYIdE*Kq@HQd}cYx7Z%BL2VO9Mwl>Y@RZGy0++t~ZY19^m# zL`ft_IlUPy%OSdNzUiHBzv;ahUr7>}381rrfZ;qIlNSnt&Q?x;;O*oDZ_`Bs+#57ZQGt{)lN9#MGu`m{V|{C_)m4hsXjqDf5@g4~ zdtxV}J9_I|6j83PjY>SP)HvMh!zsJqTQqW|V>hJ9YLDF5bxZy6x)WU`S(1HgV^=P5 zBI~yaC0Vj)sxkh(;>pB zkqf~)2R$;`@@2@DMaaf)JfgPL;Lbq{MRLe2H zF#L5_)@|22OQ~-E%35cry=IwLR6cl_DjKRH-}C+(4%SqByoIR_mi0E%7$sqM-F043 zm!pT?D(OAnl{H(tzp1e%>Jda@soObK{QD8gryon(dO%|WS2OzxwIhzb5xKP!-22E# z-nkgk?&$7atNKJ$LB`CKdO8rEM4C)MT@I_$f%zwHMdAYK3{^Gl4OoMfcy=iW5PH*F z9OvG`2)2nSOb!b3{BK+M4(3M2(IZY)1Vnr)ca}Scw8=v7_P-Pyv4=pu;q?!OF$Vv4 zXJzy@X0tL0>w5RQc5EMA(X%MqnQ3W>xWX0~R?%{Hjit^b;TBk|rKFl^Y*n-nW-{2c zzu^C*VXWSLC{j~j6ZYFdRfu}Zx)zq>MlP8Nx#4H%Vx>JygPYBeRYHV6JvC)o%gA_>ET-EUneT@T%7Q^{v z0Rj?`RGm7$xZ@JRqDfX&kT1Jju<*P$)~PjF8k}maFW~hw^aN8o`+M7#J1B3cf^HGz zFT*ak5Z>LgUZuITXbCO~)%UkIlWS{{`>{DiHDGr(jkGs5HAI)DJ&~}>2*mr7^$~A8 z;`cT-J3aM9*j_?6kqq9=Xg&nFdW|Vp`=RMqbNA=nA`~k(vUm}S+9W!XbW^F~D~A!= zf}=@L4`9mAQb0plV3?I^)XoQK8(j#Qe>0%64YzXC?Qyp>xLcy88|2F7Sh|+c5m3r# z2C@zT4Pd=u!hvd7WP>?CEE)-_Fo~`oA`$r&N2F}Zxy(FV2=xt16<)9il4h4(z%VO(EiQ%U_+7Qq#M(XG2xdY=Nl_=qf6mFj>k zp;QU9_)PH`3leyyFN&BsN^=YnB2g+-DG6IujcOI;_o*41R{T9l6rV2s#-}Jw>d&Zl z4SZ#X|MPX=Wf=L@J=`r1?;-F+%XV~)YSy#C+?jw9MKE_1(r3=mDIwro81Vl*n0ysf zDon7Q=RC<~#u-5vlRH-|$GeAXl5TI+q6mv05pOvr$V^{mIhWXqnLRL&&Iu^8*raJ2 zF+7yb91~wT(KM#ZZWOGnGHc>AFzE5o#}NICx>fksf}>;bYVDf7CM!Y#a>TD7VNMny zT_FXU5hb9qz0)4cMC~cn3BN>cs8%#<@ju0j5KPoUHPvzmcLg*`uC^sqq9D?)*tLv5 zd;6oV)!ANYNut;Jug@4(K|<*anA*@J!7BEA;^Ad=gKp6&r`(Mhu^Jj1z9t-VX6J)|Ih*kd?HpLg_Jhp2j2s}7Q({MZ(Up-<;aSF- zS3z)tBB4dLf{h4}2JddpUGy*{L2pKW2lv%JA@Ch&g;mYDk9ygQ39$cxiyDUhMqTq#FZ`Zs5RB;OT+%1V!b%ttOW$}o7d&Vgi zA4W9%9aitLTU5>AzZsFG{R)pXmE`x+vDzv@f|CjE<7KPcDE{;C$H(9;P|`?p_LycM z5+un^$$%6t{>k009KU|6rw3tLBBLg*_~+uU;M8@Jz;18O7OJfc=$fg+#o6ESzXl$* zz(%|VvA;X>jwo``$FIF&*VffzT?%Rt%J`_Vs0zxgkl*6D3D69S%`ONdydD5pDa9GU zKPa#{^13J3Os^Apl^d?V^x%%|EN8fKWOyjw-`<*NtgrJ}nXkdbR<0bUktLu9nPM6- zgQ~2}loaEpvsg6Mnk(xxOO{Gp6e>mN5lui*6fOCjqM05HAbVZ%MWXl~W)(02g8If- zoJJA-1C!Mg7P${2a{C3uth|QuQxQcz(#EwU(B|JIQmgXsRu78GZrT%snIzi`HN1=5 z+$6aJvPC0x;6JxplQ*JZfbvyK&m0l2P}JS~NIbCKV<&G_`tvZ`FWpbWcE=TD1jSR3 zGgK7}dYe@et%Abx&i?8%ABDPAfBiGked(fK^9bQx?H4I4jsrcQCfE=(&lSaA64FG4 z-PT5ph392Kx68KtOOE!cl}}C#R*7!Az4)8rZzrg*{6AM`Yi&B7<1PNY_+NAT+T z&!$@t7DlLVs~t&p#h9y1I0w>pKFIu=0hOYCSWbP%?Kj?VNQ4!ox0mGrU@-BW5z~Tlnz0PTggcnm%0vMZ3}(g$8Mb&QV*edAkki#&pR(~C zCu1%TYPQAqzn_H$-4WU1wk#FL1dGdN7ll_u!QlzDW&`8mr|Rmf4Tt4}_o7zOlUdgU z5ufX)s^6|y1X<1Z`rDq5BuT!X%DUM2EF@B|-Uo@P6L;|hg1-TOA5rYq&M!KpksmaA zO$mX-0U`t5sQt1%hQs5kfy>GQyiU!#By=&ao@s2ZW-((~Mk#@6d1nvlAGYXTcK{_2 zFh*`vkp!~tjH3cd5CxNy5A20&vf!E{Ssu$3T_gc zC%rqb?c27lzQ!UU%~PhFT8koy$ZrS}ETJhN*~8=tnSj_h>sg)ygf!0rp!^$LFBM3l zY-xJe=1nU{(UTQJOB+0lPOK=BEO~)u1cUKC%h#G&9cD#?aynT>J_}w|w6#egrpstn z_M2h@1kz7fg_4^^mOU)b!%9{d(SZuwFtq8zn%nAf$5)LZh@W$?3{dg&?60#ERgROs zwh+;DgPAu(lSFSdPqk&Md3pjtDtpuh`7ak=KBjuB;;vo1AYLv?n>GQ5C+uw+m5~lt zVeNWdi>|uv*j2n=G<0Tfi+;Ly*8_>oi>Sk*nKrmAIpO$uZhps4c-8JugNm%$gtVrU zSbABgu>TTG*BytB-18w#7oA9X=#2ks%eHO?Rm`KPV?O>!&ITu@f;_gVl7JONhp{CI z{vCpBMjV+{8KBBug?-116Nuo6s2vNSj^skXs9awNJdv+nxe{AD)ku6ykFc}SZ>f5ce|P#c9ttJO(2CHI0ttol> zClQN1;k5}$jj7zXk`O#&2xa5UuXO>vMpghlx9MaGb)&>WHFxnw;j&8|PJLU->4wow zQ7FbyX6v2c?%@76@45ZrI>-|r;ZfIww~uUIN0sHJH8h<_-%CD^y;N-IAc7NipukU~ zV1s8A26|)Vs4l#foAA0}FqW$~SQO@OxY>-E{6+WK7QD1n=aGKftsHmj9dEk>BRg^Y z=4+1~yaXH7?cBCy(}uNcMwa(4?(JCI3Bhl!7K8sM#({5 zF#-{{n%>mCRJAzc3hx$OemT;gPqzp)E>&?(Z^TlG)d7C{-3(v$k&S`ub=RZG60f|h zqWb462#DBPyereqR!y@ec|MJb!O@i_@evU@v3l=>4>=~Z2>%cd*`1~|4QVDsl)5Hu z5gA))d^r0u?LNeVj%<`d>2f9m(#VPWJ3mL*YNM5U+3z$ zC7`;0Aou1y_l{9R+D$a$wpFOFy<-UL!C0v)TPildsTz{u;$e`JrW)E5tO!u^PUw_! zmPAM4kh~S~J^QE?x<%N^D(+cG(Xy4ZSX>sC60823pMEp#>)*^nz~@; z=6ZDQb6BjgZ|*r@LzzRi^#aekz*DdupfWiZe1O7Pc*TM|t~qOGAH>!JAk;29B*`DpNp zxri*DU<)hF+@bj*^3JM6n|kcwwmOK#>Q_GcsT&SgNuqms`#Zj&HapfY*?i0{Qpb~T zw}wO3Bin0hM&La;mh3J5S$jfL44349;VoFLlFPW|c5m~T+eMY`sESOD-)d-9H#|7m zuT;5h0l~%Z#IkCtHA|hHM9>_#<)%nV$XNX-KIchS-d*Kz(JxBGc6_S0FHqx2*WL4@ zBYWOgm-Yl|j%@B*=OuD5@pn7@0awI0`BeuvWyBxadc=sh0{%T~Za#A*&o?4IXd!nX zoI*&WAT`wnf_AAs!vg%Cmd-)Dvl-o0tCH~IiFHufp(Ri$uyqTfWbpdm(iVq3jw~tN zwgo9Y2h#YIOU%AV&d}dsb<$q!Aa%l zIdj>3*&MFm1Pkl1Ksh7b3|jEtcr!2u8kJeB&9v{yjHv@xdY+1i9I^0n`EHni0@ zk2@elyQ8s|rsZAEYp}kcc!4+9FN>MH}jTuFO00F2nCidKF9cq?Zp?LFQ#n zX4>p(+9%&wI~e5+-tOVZ>>nxHU3V21%bi1d` zk2<~W6w7mwNg=}i-4}yGDLtxI@wXt4eSgVBsK!D&NUhT97MLrW5G$Ztu{MvcF0bas zPI!XA?M1-^zyy9b0#)aNv9;T8^dOX*z40>`A+gGjMckr9ELbWk-d=b z(c*vns9|_0uxxtmjw5S>4ixtVD_6s=FOXsWCc-Oqu|&N{-@_vYEG`x$pOPD`;(4_$ zdiFFjvM#v`87T7Vk7*mHpC6~L5&>Trr>H{w|Atb$|KI4*+1LIb$Lat1um4|h%H?Js zKt5$Vm*Aw+bq>;+B;CZ@j$a?h52_Q2kOexcq4F}_h;O%N*ou9u^hXT@+362e>jt$_ z)q3Ev>a42PWY=#%xdo|d?phH!-Jg5^SE7w@YTNaMtJ=Fl$n}w zmZxSM15d0Ek=T-$g`mx38**8C+EHy2mJO*shhz~+V9+7BYgOmg);LxmD?xp1=fg^{ z+V1!FFT+LwdL7@;r;8pJiWn5fwoHQ!so^Rs$&-j0Bo7*fRTtAqcX*LK;-=V}Mz%#- zLN>2vZSSdX>${BF?V8Qq*le@=gIlqh8Cf+EAZ@iSSG6EZEyX?=8bBZg z*&;^lEM102RrL2!%oKT;1jk|S=aQM<%N&G8y7*C#Xx}m=e$*_sK z-J@WKq_b))n-Pd=$UcW=$b2-6g-^Wr*QhegVG6sJ|2_Q_JW1(vvxYfrV5uMItT>xO z=BBU!FUtu=;JdI0ep$bp8oVUG%X;0+^FgH}niv5R7!J%wcs*tU!A;!%IN=O5L09eA zPWec!7leZlx7Dr0sMfVa=OrmnduXvIneg-?}+&QeV1>K zvGOd^72!2wbS*0(t{uC6>&o;N%tH?A#{LtwpcC_e&=Po*jou-LU>1iQh`b@0M!soC zid8R8V!8c^KMJ}o{egbMFwRWtcI*ffk~LjrbUFLN?2GiX^nbCxk8~P)RktSPG|$+W zgjo0uMOAEi8I59wn7LF>%~`D{jtq1DY*_P(c&jtLgnSoCFZHKCbZAyTlNB&!6z#{~ z!&fAi1~peY??Idt-i*6-$+y0RHNPxOt0Vp2kdjdxV#8Fk6IO?QW>!~4PdZ=j-;c>h z>1)_aNIG53##&-TpSL1YP#)uh!4JFvkF2LG3mhpA0(%qT9L{!G6`Lq~rJt+)K0iE6 z(Ope#$k#|Zp{bUCXJc@*Ecy2Co%R~5KwmbTJ_HOs9YMDn!M*y%>ppbx%20i%-Oo3* zltDq+Ai4h}`>=NqJj{9(`3@qccGi&b$Fy$*%4iYd1iu^@i6FRYTwO_&>F#gp$DK9tqM2)Yh zg~~{-H;nbYt9FL}F0PmV4EoiJ`RY*7FAl3bP3Oi$G+QOdg6&cSPB!Bl)+sYLZ*C?5@?ib} z<`iy}FT;PvDDKQ!>rf*tDtb#x@mIRHT~Pg1Hm?{SP?Sv8Ype3BLdK(i@bCD2JP2D$ zH$V9`s9IyKv)MyjjHrgCA}X|3M;Z&cPvAC*ZMi z-K(OLt#??2`eb9B2aBj` zeX&$6>@V9|A2$7(H&TjK;S2}s_yW1#l({C&f(T5TiX|Ueo7r0=6hxIPrdet-GaeqZ z#I?kLs7319+vN4x14;Qhb!8y!3LumeBS}=Sp>VPIX)lL0K#Zu)cY zC4@#gTNSxy4Pxg>6dXxTz^cj4h`gppR$4nFlw4xcZVvtX?EL;kVP~2;5|oN5jeu=1 znL!qZ!SpwoVRi)4A?r+G+ks>r|JjQhd<#2>N`)VnItX5jE$pDL;m`g1|AG$gFV7zm zsQ2SPIIo3+sEXN^8pnYKzl&ZI9iQ;p}Fqt)Cxp>BR3=FL%P zZjL(5`Cu~>nwuG+t}-)c(&u)9K4o^|JhO35Com6`>ze%u|25i=dB|Z;zV>9mhCTV_ z&xL7PmV>l1sw%>9$Jx1vvVaNrgQYsaLURN~eiDdIZ`(AuJhCbySIfnw^1RUE;-P#O z*0@D?ZuWTQ=qYl0=jfV=(Q&Ixin9g;beWQVJlx;iAMR`O)&y8zBk1dA(bpvYizVgZ zOe##!S67EAoomm|4rC8glVxHHIhdq&K$~Nk0m?R53I>He_>J7Req58uPfF9}7;9-6 zbCk#p{e>}+$*)}=`bfSz(Vm)!5}UJMA@BR-(y`{%ky7{CCu(XY+Din7Zriz8qBjgb zmS3`{TeGz7OLpl5tN>nJ#H|xE!1DxXt))V1j6E5nX3f=TII`kiR%Qf4oi)G)Eo?hB zuu4g~v+t%63i-t590#00gDItY!i4RjeT``$&?R3Rj|+;0Z_QTubBh|WPM5A)>95MR z@)kvi$FG&U0zx`9y|>8(UOFU*;YhS$m0(eY_tCp})gr8Fh(^MqFtn6``g~&Q&wUqJ z2K$u8INMdHEn8Kc>uy4hl&o4+U6pNPC1~+RrEk!3Xi?7r21scn5{-@_?o95vhag%o z7L7(Clrk7%-C3HKiXLI}0?QsY=zPWS*T~^FQ8?tqir)BZ1oRtfB4VFYD}SlrzOafi z|)wc)u^2@`+&#$uY89kR%`dsr}p=wu)8A?Lv2bXWo4^b%`Vsp)@?DTMr-PVszD!6 zAHhFDzJt13=`;jK*^dF2o1UDxA5qx~Wf54$WiUqOnRat#9Fud5k2ht(7&b)2{~R)#`r)$C3VY)sbu9c!U0+sj!NP6N~H+% zGng=U%jPXiDpD*xBbU`^LBrA(*Jz?SuB%;{Norf&m|ni7y>+a2C($OC!8hQkt23Nm zyY9wo9olXqgBaGcm60RrV(_NL5ffXcx9l#{az!?=Ozh1G-I7*SYRevO&K&uBEBVAV4GrDX0S%jZ7%15f z-nh!U+ib-jSMFx4_QZ1^X2ndyiIEH=Hg9A+@j!&Yntujep7y?8Na}0hjRk5 zL^RklDwq8xHr`@SQd8X_O6p@h^pn=&%Hm4)7;*!-UTyMPd_JWre%^kvlF%yPhhYf$ z4pXu@>`yFsU=VNkBsN4S-c-D4?rA+%cvKIax1XhFmZW!STQmehO3z#{e)E~5#g+5M zPp&67zz%}k}s{C)__kyUa8pJrVy`K zM#c9BCfZS;oyMjEHY-*}rx%6D#q;`JQ|f!Y*>~4jUB`NdZkGKO);n`x9cAYWBV*F7 zG&JTToHaSoH-=R7?b@=n$vc>pEGh5`)#BB~tEq;}`3Z8|lBlx#e2wIlia%pgNZIBr z{(fK&HC#e2X+asS4cls^J0kQVM#s6?Ph;Mf!S|9*w}+UnF=dh2SM2$WEve>aSHyA~ zFlmI@XpDTA@y5hgh6!q!{|K8z^hj;3LBxt$YFbrtE4fv$7&v=Puuk%mv}-u2S++J& zwQ++*OAfozh_luO$-@?G07ortOAsF>qIXFf+um50NwCe*!MCrkmZYvdf@@2MBvr3( z=Q}KIK~wguo9)MbbB~xYFn`&;U@Yi`7U@SeeU24jPNJS38(zqg>Ar(I%~R$XP}sUl zuvb}Xyw<24Zx%6uVqH(dqNqGe-3yo?bYy zMAl2F@B$O6V4{N2$-3D-bFMo;Cm~bbv7K@qB_W+<-F6@XnJt|u2^OZpAn$Dmm{erK zZ#4uzF{RkwL-b%uiEPzWOQNSvB$xDx&1W$n1bdn+^bxuaZcv*%+L@*3+e2nwnaoC6JU|^wla!;_u}EB%f<$Llv6|`%6+c+fAGroB zm2MqlTVj}fe3t(V^>QQFwLy7!H!eB@Ie2#qeCv z3FZt+3E1Kk2yj+A?uJ-n%TCb5c;NQu_)qJ_yXyle+}CUCzh`X@T9D%>x;*ujDv4OU zU!6pVlvt`W)(^ZtRENE!B|RkRDEKjqx4nY|gAY8Q7f*fsA6%>I4O^-SG*SP4NgwO4 z)-5ZR8JS*}D52c^v0fSbz{|al>Coq{wmuXKk6>STSz2iiIfzw}AUj7#ss1r)PumsQ zSEr6b4Ph+_S{xeMuGEcARetQ{jEQ-Z88pGa=NhxT;Rn zMWODh71bhE$7;C%^?DUL)?b4fNq3`TvDFSx?99e9P|Pm{XdQ(!p$&KFJo%6ySiepk zt_WNLXT(WYCLN9%dv6>2GN0~Naoa$5>sDg})7GRDvXMy_L_*k-lyU?u)6Q0{v0u}& zL=7}kotUnYd1M;Yw38)#Q0L0*lX**tF_i)t8`)) zc74T#x*G47rv=Chr^TPuir)_huvaoDPc-D>Yr1~&9b&bN;*?K4K=0Lye+t!q?4x=t zU8~#EWP@QH8Is9NjCE=PqX%xD0H?PmL3w=gS^MW4ZSG8PAb)4+h3 zgE?Jo8XI6UF9NE@nIEFIiu#=Ha9G&%HS9|G^^HO}>~^9=8Wkk8*&y~ak19Q@RB{=) z3|q?z#sACPdjPgoo_phZU!9?Kj<#gWmaSz;-rMpXNo>cl<0Ky0dk-=QNeCe!O&Ddg z(6U!s;L_3or6mNqxU_UnTA=f`bl&#T38n4rvhw|&_ehR2pn-e;-}fgZmZhU}-ub-G z_&vYprtD4D1#K2S*VTgA&RPfi}`HX81D+wnx@D^f!Q^I0a0_c@5t$5y@bNTBv*HbN=q$W1f5z zNw*V=5gR4KByQ2Txwg@2Ew5glSy*nh@S3V~oSuB%yP#LhpU)Di--i4=uE>?uvK+5i zP&GdeCssObD17jOk{s(b^-4b%v6c+x!uDi$drL!tLyo=CSdfJIg9aN-YUE(H`y)u7Z(^US{PChG=ifQ|DrDwxxT2V8BcwQxOGrPqc1IIwXF;i!;lcPIq-)f zog^e^HJvA(G?8ytzJc6+!4an4&1mB{E;QIgHuG=Tr_7^>+W^zzrTsx!d1xLr6RoGy z6WO64*C3`n$^jBRg0V(@>7vxTB)O=sv-FiGyFnLVEAo4pee1njZCKg^tsbwQvRv(B zKu+RFRd{$L)oa@k3>A2lzHUoVcuv3C+}qQlvKH|6RdxVs;$Nfo&n_uad;7Qz;4GmJ zn4w24XRnx70^vR%To|?|7mR`>%1Y};#FwaPIq6Ktd(iFV!r+HYhG`Eg$GA!yiI@S% zE6C$6oNUOvkNE{|(C?*}3imZ;>{nmoK`J5G`!uJk6&XyDdi6DKfLpBI(oBnH@9d1K zF6-nHo1#7*h7dkw(%8*4)quXJCG4KDG1j|}KL}HP1m0cdQ02jXMBAq}0L?+sD9=sI ztRZRhZLzsX0|rC9V!bXlRK_G%_BmFS{CrXvZ94R)d-F!#2u&`*d6Ol%QTmSBB_IT!O3)sPD8AR0ckX{rmAfN8mtLcXol;j&o?I+T2rw^ODkDp2Bn_*~;jC**6>SYe z!`nAf%q(6X1)XVB>=JV-9t5ZL!a~0~P-2Y$HXD;mw`l1KPyc!k`CKMUzeGG*2P7Dn z5t8qDd6Jh4#vaFd;HI`y{|5hF7L+Qb&{K*)P$_hHXm6wuCrywFeA?~tYMZBn))*u*U zflGLVec0qi`@ms9dk;^LB{B-|(6U4-xdN*MCn8+0NaDcZ_g`FPcdObro;O4MY0o|f zBs^kbregja`yQ;1S!jD(9bgiq+Y5nMixW7X6af)Lz%*zYrBE{HrLn$+&rVc?5^5~O zkFi$ya|QLwi$e}`&|9>&Zb3K50s_UG=QOS;5$_c*uP+D>)i-V&3TNkxZgF_#)hgk6 zTN+c{jyhj;tTbV3E{Ih(mR8l(HPp2XOuysvaJivnX#Pe33U&-9N~^joY{$HzmU2f9 zj|YDdzZ zLt*M>LtqdFaoECl&&z(5SwX*V=%l~J{l5Zya5=^+6)(16yo_gC5>;Io46@~+(%)TeI0E{nG&Wtw52NTq;)6L^piSEM;pL{IY}(65;{MG zp+(^T7us$S+EShva&L6LsWvo-vl~|{=j}Q;QI)#Np zJ75JgU4mBKuW8vy4TwT^>bIvPmgc`lf0PscoG$?uFcKiq3FP3AY7Y+$OibakA&~%a zaR87ON-1uwF!G+=^<%ZN+9YI&~#RXK)h# zboU||egw2)nld>^_@M4;*syx2VHjQ0rhYlFlpV$hKHS;GblE<4bn4UC^*pq6AbS;% zY-62O9!*h;>qhC^Dme9FekJ=Z2h~eO+qXYtS$W!2QmDNgGBv7@!x54RYOanOuswH{lklWHYIM`EW=}aZ9SEXy4 z!=4zjy6qzkHYuKH3@ZgiBip&7xg{!9lvmhL(G4>6YRJ&th}9!@rJya)1IY0~3)DEh za{8u0UPW7xPIzi7wqJ5|IbeP^Yp8r~v^3Jw8&4%-rB!W6_mUOv7;LC0FRt%N#M$n> zV})R5c2t-5IGwF+ZjURtv8M=0lS)Re=_&M7wz{L6v5a$5A8%b(Ju7J{Me8R zoO`a23p5zyuE-A+Ji9_ShIa-H7Z_?GKH-=UY6}hD=>e?hRC~suN|`Yo$js?7 zyJHw?RdwrneX7WpR=Zs&Rbo}G3sq?x0tOd26<>KdhM(l1DaOCao`sAdA6f+ZKlU#9 z3CK1P@{nw?{7e|N-bkjDm<5u91|_5MD}eSq&aYcLyRfLbb0Ah;(o&JYyf~RwS>GKW z?C2PXw~i(X7*b3D76T4dTApN_(BT_wq#opd($LeAf`$ZdH4bFB zgGimGS6E5;KH{nYXHzO(UN+d{t1LoQo(x`_BMk^=|I6K34-Qm!) zA8$y0^IP~iuOh7~E_*ULI*Niok5^P*d5vbj>Or&*S_HgQxTTHeDQF2~%tGJG3Se;+}ctqyoJTndtO z_O>~Avf3f{RwMJon8OCF*`ETNvj}rIry)RdNHSx_W@*ecklKO4nK7N>cLLz$#&*W_ zaK;%T_4MRtR*jbRcg*TY%}y5pk%-exUo()J)z@B-sw|H?J%v`qRf@l}JGD|=*wVc36%Iz1t<9+Y6(QLw zJ6fxY$_xF;vGo~y#Sk#(4$W?##e3EbSmJWo_?mWW<-Gj6mG(fyo1Dn>M#P(#?Wx^% z9De<50OSwS#H+jqlqzk#a&4&EqL;RedNswC>5*#^x-(o-98R`R4X&2CrL|kFNqFq^ zR;mqDc(zO;EY&8g?$YdWO+`)s!ad+oL{=1JtOYXmx6rWrus+&jPMAKz-ZZpQ0#{FS zju}!)jVJxs88`^0Ei8&gJ@? z_`RsPgnr+!9&}WX+6ThX`PFXuQJq1*ZtWjxQsLqIcOjDlWJm(GoLS9{m>$=7*6+Wp++o`FgEmh>uGEDWE+Pd=9t5 zc3B6Vz-NkLHEO-K@q|!Z5~Y#s^EyA` z)U(fIpK-ZnG{Hq98Tv=}Q;QW;|)9aRKW9r$|!5F#&>y##U;F zO*wd(T2P=~b`a|vE6DXS{q{06^y&rG)eC63i=}Q2kA_hS5bK(NgW@;&_}XxIZCI=) zTHpLz$PFrl9*?}cUR!M{R_xVmG)BypD}mHc&oigST+%*#9%-_EAPdsSLO?qk zE0d8>5Y?q1SZI`5JS0YiB=rcn0X7xxi!>+C-_}pN&B{~6E(MH~!k<#it^*6%yIFT4 zi{ZTjTjDcfOB^wF=y9F>3{Voq&gOzK2jTo!?=p}zeN0H=fFKzC-7J8|NUwa)gvcZT5 zvOPZ4f~@I~s(x8`{Slw1^DW=bAS~qyw6iQ)5`rh&IMW*(v?f&~lNicaS%#s6?m2B7 zN05b;0nwp?iRi`bPZSRl@*;no`Y)B8)4m@m`gPagK$Q7)*K!ZqcoTg#F zjAehuPx6#3QLKKvf z!Y0nwyk-Wb#8h&z%KM-eOXlpKvVT5!3$sz3M0M(E{9uP_>yZ*+aU>F>qjv3SM7;tZ z`hZ=_URz@;){%o^vB&WVGwPi9{5$|^^WwGSRqP%u|!RZW(`NPq&ka0E0QBro#)4TV(eUzj-^|UG@*vjn8cJSuxpTODmMn{0Zq-K9dM1*qocN$T0 z9zNDK_Xx6iEK}WYbOl{kK+^R6NG(+Hh6|pF(rAUlVO--*_|Cq@mvF!Hk_|GD5-Xg%9b9Zb@Jhus4tp%* za{x-=_Z3-@$aKS#Qn9N@`q&K`NRNtqevqR%e1Wp*%L-k_WgnA@T*cCp#$~QT+drSb z>*qf^19@oO$#sULn2J z*f_9j$iSf;<|NJ_)UUy~mMOS6Dft5Yq$XSLe}FF>1@j(Pt%ZU1%ta`6ASs{tL|>N; z8$#b!5t&1DZ)?{EmIdUBvGlvlh)A+baS_Y@>S3Sk8XbQ3?Les7RY!Tvp52Xg&?rGC zxqR`l!>9wMn!m-F*A=BrR9#*5kt*&>dq%nRF=^VW7-#8Nu8*Cj5%h7eH)0d( zLYxAP;y^$TbWuATn}sGn=OYz8$0%Si&dfV$pSbYtr#U zN0MWokIrWuD0QXZvuJ){2*6z3vTTX@_}Ub@ue^{jx>ZzJ~=OlenOpsC21^Mnn%JT(7(o3@Y6)n^qGZDEex+zjVw6E zNH=tfWEWwgwlqWhu?$>{B{=KHv?IOUynW7Pb`WcP@=FCp^(YdkRi=-?3o2Ph7It^{ zj=mjPd5ZITt*oHf?Sh!^>SPaS_8=$=zKP>%P-rb{*Glb}UTZ9U^KGTcUQlu>j@gRGu311Q^Uim;WFVMEhDi5i*MlCI z{q@N0ys3_X%!_2AF&^^;#$|G0TOr1yCBK|oGQ!FtYfL6SHZdX?27)GI;ZuwkA@=i( z0Y(uc+N_&le#L0nv@|ETfX~}{^jLRz_40>s6sR)mip?4{V@R&8Zd_xNEjPs$BpL5M zX9Tn(&CQ9C>I(M3A(jL}=X=o>2Owx_clSHyRhKV>aMbQ_J@8&6*5O?Eq_3a~OI^0i zag}-4%{QLidzoPaL?AhhEe*TXaBR%9Ta(c82oUr7YRCJvi7uPn>juV5* zddtbu0PfL3h$wNaXIem7LWi6jkVq8M>W1!!1uYpT8WEj<-t|QXDsde^da};1f>+%>_0YRm z+i_-}8l}YT>p{4!P91>4V&lu+mHpyzW;>~Be*lySfD-7jcIC$%m((#OLvJbpMf$_( z_t3_1wDAeFF$5hP__rc42Qcrza%i;0k<$?qgwaW)3=$SO7?6Y-7OO%ql|&UH9pgxj zgkwJjb&;W}*MG~gS-tKbn zOD`woksUh3-I~I7XEF_4yUp3Fy>=9~YHi)6+CBWxA&^lzWcGVe5=^vx3)(&h_Cq(? z-dbVA&M>^GWEmE`(J*WWv<>?M5ez_bgy_V{ry3zP3Yv)vN%05<_!Ac036A2Iwp{6z z0l4uk7-EjGBE{_WC~YgZcB__D>dq#wyvt{|aC>v}$M+Y?wvz6-&x7jEUGPK=6lB0O z&1&JHRC9sZtF*7|PC7WVX!YAFD&7;YxrSPrJAsk6`5f`X4YUWwPi+=`s1SaY#>&w2 z9-#Kf0jvrKp}u^$LObTM%-R2nR3IabLM!~o_GX}>cmq)UJ#~9LCtyxaim4{};G{xbD zK48h@NF?Au64~(isbOzuqw^w;p~QofnmzyJ$&>}uA|6Za=%@N(fz-i> zI`z&A-u52}+FV_=TMCfJu7X$#{A^olyPOWQe?jZ2B;swZ&YcC>$qSVM`LU=#Mjqun zhP7#VuEcSG3J0k;<;4j{Yt~qbH2uMbmNz&Wuqy3RD*MaJ*E+ey?lVRp6gwETc;Mcn zae8HVjx8|t-U}WM_N?6o^nfzlzSU(58e?E}cI=8d17_K43>2H1e_`XnOk=0&pu>I! z$Q9)T0Nap*xFlz+ z|4P)l1r`2f9d?965O>J;k#cVmGR33d$`Bo)rc-<#upGS1oylas=7zwVA%+iQpC?5T zUaI7q=UbpNUO1Hl?CQh^jUKJv=v;Du`q{LhbP=y<4Yq>c!2+d zvw;+qts~a^!V>f`yw+DQZDfhLY!N!9vM)Y`BCi?+IMH|WirrNg*TQ%OfT6KZ*4nRd zTNJCsb;ls8qZOFv+~BrZ9g;aTxVpqcG7P%gN$9c@pm4LC+^~2ggf&jOEap$35)54y zQ!306I`b$FPT(X+EP#{HK172UFr=93cru;>u97}FL!m`+%-nzx#1}^57RNS6twS5$ zh)(*OyGKgmb5{UK2`$XxRKma}Nx)5QEoctetdVqc;X`)q11lz#lCm=t+a(Tm``|=k z?iSp{xwzN4@p9Q2-dije?-};T6W&D~-99VSozaD))iH0<-A@4&c*g(MejJ&5s7Z_y zbI!^$wL6_Z3wYG#0rwnt@7kd9M~o5aw4999^-LfNN*F|yIf z#1S+~#yA-GE!rbc>FCMJuN|zO}8!%f?CPSMDp+8kVOnO3&Hov9IoS!Xl7Q>-fMItnLO%3URHMe+!KS z11ZUqDBfX~fASN4@e)@&=ALKReG{jgkPDXs)j{#6fkrQ#g9+LrA`yec14#p7oWLmM zw+{9ag-<&exdcTzv!PL;?g#ma;IKCgLP9lRz+mLwdqsEA(8YziUi{Wc)-;~HPt)#x zz&>vu-YMKS&;G#OQ~wUDJ83O&n}G|!*=_e&;)f2xGxYQHEL0q_hvU00cg+1S01O5oof3YTvU7lYBG~;LRoIpkzPBCHIiz(0bl_Y5{K#9pe+8rLexDdkO z+9mb}?=^b5AHNswr=9|z5Kb3Bid(cQ&%TS%#s5xMk?TvZ@*F+_V|a_?GFv?x=cF%6 zp^s)XoqCw6trI=ers9gLrYHdWpdLh4E)5gv3=O{1byU=TjOfJYkj3W9)Wq~ju z1_mpcGLK6RKF8^tdVyDxs}sRMZg)t8zH;CnpgqAa%1phu&sTEyvCw@)Tp0)!#A2`} zaJyce??eR{72bRoADeoZ{XL|bZByR?b2R+p>`%15Bw)lojC{xeU?OT@Z7d>x^XO1l zU0K-0$S-b)*3+sM)GTO*q@`q9y!nD1)8Hx*Bcz3A%+U0;!KS3h`^N@kq3TT9vUzkd zLhtT@ksX0Vbz=3kZu%wjiOU}Da}_Vze29L`uPF(6_3{oB8L)O%DoLfX6EF1_+sE2F zQyP=2F}Mak;T>JneZrr-vF@A6QbEG6z`NsI!${DE%bA_DJ;nZ`0m?Zk zkeNnePM~MI5qTGitk~1|MU3=?kJqSASCj+bUIJ+qvzQ&o@-zcjSRC#EF^UHKb!DwT z5Rdn8n@_iz&7H-lAPyPkEzVtt-D`1rt<#rT-@p)G;qsXmCzHuCFGkpHx0TKc1pHu% zH3xJASONi?&E+oTHqGhdtkUnNEA8NO6W5I+0obKmr>~-%s59q;@Y8K#Nxq3W!IX&Q zYhZ1fn=X7nYt45YjLYz8#}D3)J$c~^E&~dBkg_1{PSPDHSVh>s=lDlW8t_eic=y95 zXRo6u6byJhP8}@11k_6*9SwqjHn41VWBcMy{^ualWD#mO3T_>H_A`D&VurJSNE<(p z&oz(DgRf4V+DW*9ovb+f3;LV=BnxMMPJhLCp4kT5lg6Vlo@YLq;j#4h%tx}s)JZ-( zb@IFqGaf{>F7wZDpr1ig3{gMyvpiW?5b!&-bNdOrW;Ez&GNs%Z843Dk*l0l&dk46Z zXeQTyBP7AH&)mIx>UZ*gW&eo^^mDKDRhAaQl)lQnE8w{5>Z_UUs(ia3-nIcje&GJS za`pwz9P-qE06bWBt-mq?9%UGdL>>)x?x3(< z0}qyOKyDV&eBIQ0{yYN{X5y8=eg+})1!gy+sGvikgv4AX45gkya<37QDhE=%pF(^q zJBNMB#q{iKCk4B1$II{1=XawRs1YxrJ`kqViZumnAX0pBPM*Fu?AzQ^jI(9>?$1m= zW;=krw@=@GYHR*M*)QR!$*&u8pLm8Baa`Mzp#VJx<8;2~yyg?1$UkxV1>1s0-*uix zpVJ6_>dUCVQ30O3Mj+dP1#XU5Ngp7Z!Z25@iU3RT)Xc}%mXE2?a$ga%-&>~C-S5bx{k68ItWblW?C zW1ffco7>;hl{WA+NSqMuH&ipB`a?G(B~D;+NhvsgKg@CZqDrY^s0&Da`PKS$=zzs8 z1!_EF3&-r*=K?E&4?(lfzOyNGPM4l9{9Jcs=6YrWl7{;A-HR_qaWp`R3!4IKK>Mg_ zg6;oa%mlWqUvJlb>tBR}aVzk$cb>0ntY%j9jP8AR-9;9cj@pkb)Pfm< zj_FB$>M!EJX>D>B&laP>GkL&GZ3{j!t&7T1X?`ET`@@%0N~iMxgfkI z^D3-)O-=Kx{qW&`aA55y-fjaUJA+#6oI1sR_&e6oajD>3A|IZi>pG!bT22Oh68Y>A z>Zg@~kS<0IkvwDvAyVUlO$N~x6H3FJcq<|7>ya}Ts9_NfRMk!?+OWio|yZlUCtgNi3l*_E@N z@iG5T>v+3g&&;#veO0QzYXZ6B*%R5vL=xjDo6qj7>#K@;{1qK`rMX;TMUC^gW4x;{ zSlMo2bDI&?H_{r}n%RwX4P9H)ZN;hqPuHm`_9x)oDNh0sMyyR8sgfW=K;RCu2ObSj zzQX~+x+MwamWu6cWVobAe)`{SR(r|F$P-AH2A>=9C7|fT-J`heMGnI0(OFr^zXsi_ z41G^T{Dw_QGRhMqzcJ~F+KN;H>F%xrBR;s<6@BM^Nd;*<=(P6j zVy`;0;8bAW<{t;EZ1&S{`SX1h3?=2%|N5iVMQIW*|7vPifdzz)SQDq)V8x069+)y! zbM_x)!-8ako@~y!x#006pbxc6ctT(#&?3xMx!9k~ID;D>pcY~Cp={evad=5GHpTvZ z{1bLn%=#1@58K$dXptR0PWB!6IZ^NG&t&)!7TaWc(exBbs3<3Z2^M-F9BW8=gHi&i zOu7!>csG#F*)KU3E|gIATzwBzOni~_r&BKgLmUMv8ZU9$0*0->k3=_u~ zN^)`mV}{{1GRiQ@xuB#-5*C(FE)k6!Ih0C{QHSv}ZB3G(prN5Vv0WBRP`4G!QXmjZ z_7l}_piym0<+$^ra%0{>F)=l z@qo|gLKPuZDnjYKa3~N6L?d2jm!e08ckI}K5NK)tI^y45-;eAQ4Q~xc#GC6Orq}hC zX7AxDm|Z>g5_~m?uY#Hr^L#Tfq5FWPEP)PeIT{eQTXQ`~Khn03{aB056>nSc?+zS%JGO5}gIXVH-*?t?6STfc#r`(( z8;qfcbs=(q$ri$B5*z{tF*0vXKbi80rk{%Y?_i%u*H0{A-&1oB&$i?q3rGMOnLWZ* zq-&Qf7HbN;&d)(tOkz!;MgjT^I9)KnOhBoivzS4X!Io#7_05=T?6jt22APfwJn7Ax zX)c*%f5eqrZw0OZSR#JMop;`WoNw~qv+ToJ@Fc@)WCtrzn_0f^KB95O8|niOKKKCm zk!W4#+E9)**lAq{4EJCQJ~FmA;4(D&Mw@6^k;MT|>x2uBW6fv>uvybj#wt?Gx87=d zM|7ktAReYbz)dhzgPrkUG)dw2-DkZwF_xkYLfFRy@U-8A4Mg$7#u|8^u{RK0Lyz$X z9^3prC)6SB@o6+L?Rc;SiGzUT0)Ng4qsH!VR^s&ilU{#kk6gwwx%{%-5OSKNo^XuE6wz)V_o)p;8E59=fRkbgFE^` zK1<}RfS^gtn`jZalTl2Qq)=Y@p;lu%irr{*1>sHR_*fso2brF^IS4UebrfIP+l3$* z;zaNsw=XH?HK187{++oL+~n4Vuh$_!>#%st?qkPZDno%@$=g)+>drw8kO$G8UyJtC zV-7tuhq*jVYDIG=qijrS9+isB?INQk&?kj|SXH*71xwli`UjQ`nWV5-q^_QW#njSZ z@a7B{^vx>k`n{t-0lM7xFx%;vIRA3g3id(d99rS9tuaQkbe=HC^IJU(uk zIQ2c~800NmhfRWop#*f zTRCpbz{LHRFmGw9q2L~;_MZ2Hgd(+Kr z#U<)}?{PZsyI*Z}vGRy||9#HCU;1touRsM@N||H6oeM2RAxqD?VkZ=Rkv7O|Z&?*w zL|XPh?NFH?aTAc+aJ@rvm(?Rqh^fFj9!GyqqQBLmzg^8DmrwX&g@<|C6^p*W`%ZtL z`sa{k}Rlz`T)o}}YE_Nuh=*8>1T^_HiJJ)q) zeFr`XC5LJUkb(w}s@`GIsK+pPaYjRaY~YLGZy&_`HdF*DE*T(Og@TdzYvB5^@Qn2K zCXRe)1lYuW4l{A(^hLOYzKK2($|TH|hEy;oT1%6c%^kZcio9={9&Rfw-QIq5Fs86u z@VRX7t*o1aL`-^Ja8Uu0-SuZn>#qUzODa*((AijCu6+H=POYE$`fH=H)V#79`Kw>j z^+&F+(c(32Y0D#z==z6lsIpgA+pBK)(9Axi!4^(&XU)LQz&N9vxIo+ws`mTm#jrz4OYudBlu+5%t^vLOa>^u zRC5v)8?C?^gK|@ndDr%E$S#YC(D%%<MUEgUUPm1^d6Pb zqLlAbC}Z)_o9guHZaM1#M)~(J+kuS^t~;Fzo`v&>c4->4lOn- zAi%7Eg*b{|O?|=Qfp60L{_IN=T$ycmfh@A9^P<*D7Xx@yzU?lC0tx)?Tli+TnO%Rk zYJn^5-B&{kqwB_QZYEXGA>VR4BBgNBz2E~~KPy~*OBF}7P}u$1EBFKE1H#g#SV2=o zq7<2%q;Fv}B_N(jl;v~I5sC$Z3mBql1xrPz8v{mq0%6QxgXbV-51_{D)OS!r7P<_o z@}L(Mhm~iotoyEzq)k2M~FE`U%!E(8c$gq-{z8w z>au@H0dN3$LZ7+39lSo@AT1O6*AqH|FwY@x#U`7-?a}3Dv`q^cbqu)*xqcPEj_5|e z>f@0jC(X6jm_wtHu$e^Tu^%P$#PCKXWr3hW8Eb;jkux+0t*gRVY_{0JO7usgg$|5n z1+wD!)OWx;ZghvYp*{t=c_lMlj0ztf37t|gpBnQ+Hhus=ZiPQh?Nn^2?e+p{fyn&Z zkLEgbKPu&-la1>uLCfmF;30jPZP_lsY0xJi2%q3D!fqsAZh62Ze7QO00cR_DVvJA? zh;hzb_Oo$m0A{((=fKz4r>u4ZoMra)G>@*b z%lpm&r`gYfuaO+j_rW9jQ0;dJ`!0`9B5`D>`NHZIODzD~?{(p7pY?jo_U7&XDAY=N z240v*@3~-{8vnAtXsBg7jx8^+bKP+A|7(OA$^9HQWtG6DtXn;o@Z^Xg16M=Pc(Hm= zCyJ7P4V8!FJ&H$(s_R4rXLM1hKICJkWp@@X1veuNkK)CZtPFS^)fX7k!Z%)p@*)b( zq!C{nY+^OG)m{U4RB&Bb)rj{Sup@m#aMa5ERqnAfuqgz|7#mBsI9IoYSskQx z%*z((T1frE7m&cA$|q|l>w-$l76XlRaXUhd$XG9!dz|n{ig!z!7OC5v{>+)!6ksyG z^fcA&Ms*_;Wfxlzwn!d-y&Ss6SRL6S)Ge4GhW%!Y1Bn+h;7LOgo(`cK8~GZB=i84{ z%0ThN$UG3{z*)mJ?l`j0Tjl3kMTG%RLaHNoAD=Z^XxD$z?1Jd9n)TJoD;v~_alq=e zNpFSU<6AJ7Ku+s7dsZ%Z{#y>mG%$UK1Av{+Rc{CNipAT01&YqwCC`=pad2Dn+S|&D zRZaH+rUWPQ*S`j6i~jk#&5fXTgI`1EKYJ3!nay$r$FLkSN<>2XMa@~!NfHIFPe2KE(Hue9jVrhww>%QTgjAp{Ovv$-VYare#( zv?c>sT&w$E!@V<3P z&DB(%?u|th&qRI9BKNuZ`hl3HZ{Esd)`Du(7>S=TMuh^;w6Oa1bC{a`mj-Dm66~Oa z;Xg`f0t5|8nEl`_*;hHzEB;5L#Gj}1CNnCKXMcytkR)G$M6WAk$@S0vH$O}>)>6u} z8*6EGN3oITln3@?uVwbje6dnT;^4@ZwZspu6YtLGMC(W=Gex7LACvi4TmeVT9X>XHiE)Rs3ril_Hu z(zFX>xT?K~WH@$_0SC-E`Oc6`7)mmSAc@%j&hF%oYsH_tcIj#jwJrcF%KTUip;H6s zOVL&@z3#Kc+SJYevlYmmP&67tpGMfy+iD=d>TazrfJiVG(imz}i{JDZnsb=cXJC=# zI0xIRDnkl%EIEd#kJKlCDpG80kf}M;~iz1(|`Pwmw<482Yp%mkzIQSN#qE_c<&6rIh{igZ5?Rcl1vl zsDXam%H88g69XaV_{5b*p-e0G9Xq)vkkqHXtxApT#bos{S6xxDgI~=q;z!v+`7SwhDb*IX-u=BSC z-c0#-?8S=kO{ELs3^9ho{3hn|*^*}0<fBIZ1M0=wVmt*xZy=V5Ktn| zX-=r(%!cDTt{|c&oRFlD7^@&R7#PLI9uC(Q2F(jUIYslyy@!v3$+#M58PgqauRbJ& zeXEht2zN$%XKnK;uutVu#WtTiAQ;HHT6Oy_&8mFwCJj;VT^F0d*823#Y9Id|->J_I zv~#VKnJki1e((WbQ594jN#u&rVDPg?!-Anac4c#ugPoXVvA+EKrWPjc+{soBeS~es zexNwlA^71BfkQ$$0j^j0Y7N`T*a*1|aM~$PUfcP=eU!H^-fH!8MHEY{T(_|&duE2UcScaUOxn1HJ*2qcwPk0E6n@S#StbPYN$ml zHlGn@B(ajwP#d)q$JW(=sb3$U9t#;qEmI zNu%I$iwPZqXxW1z^NPi~3o8eHFDlP%T46)<0yV}_2Xh4qFT1Gjyt=}qs$O*jRh_9y zc+*+mrf+aW_BZ5jbKdXvHoWH7tR@vWnsdIcph$Rc5jXAJv1QZJ#Y2O0W@Q?yDq^KB z-BiSj>{Ry}OPNkH5@x5zlXgCQ7%)4aKoXLMoa(}kfwLn+*#?GQPJT|Dl*wjNGzB-H zaWAZO3JB4Xhb~VMXFPyzU{ok29fZB#HP*N3_DDe_er$4dVsd2hv3TUM)_I-m#oZsj zNbyN;|BlZ8@ZNWRyVNoD$pvj(lLo34j}1-|Uyo=9QXwlrKi8CJXGy~ zcU;mJ(0XMJsCo1Rbb7?wbKG{25D*Q7l`_VmhPf~hbId0mBfj>B-UoCeRt{Xffa5*R zMJ)fJt5OsbuVA4HS=9K;-`AJlcZ>>vVWW|+1;%g*L%M*%-fy?Q?;*ksoOsMaRgB@d zY;dyq;-08!Q<42;g^bF(Xy>V4vrn;Iz)$A(v6tXqMoa0om=9NNw$4>{hD)M}fiFg1e%v7=bm2qKL*3 zNd{=@g{(21>N2mySQ7W8;CM9RRz~2_2M;CKQQ;EdKN>{3wY~}E{dQ{Z&+4-3;r|!} zsA+rltJzf!iXmf9u-R@lzl1tbJ=c%9dY^|gl8)7fjbm>z}fdnHF45kaD1I{$Ha>$kj#JjvvcoU z&e@Nwul^At5$!yUV^U6lgO%=oCWh&3u+G^?CDGU4p|8Eb0Au~qddYf zcITDHfiM9oBpN^=QaStc>`P3hyupc6`R@kMN1qcRv9rJLMGlbPgB0+YH~Q00e|Gm= zbnuM(@i4$TkKO(1AF(86^o`amLQLnyf}IBfb~f}2_oDp9!-&g#4Y-Fi+L?-aM9kaR z?qF3QIn60_Oa*62Oovz#k3;!DkePL>K>A)0o)beIJLTA6WSvXq!^c3;p}qQ#m)J{} z9ANzOs`ACEi<(fL7>s*g`z%ml{Ig$ERm`iO9m%eNDv|wQP=5Rg(XV=N(jUcMY(u{c z?!zWerb&>cc!MN>{6>2yh@7vxLK-f)z@gsc6@CaSwtEetL6CW?+1&@rfnAcWIOq@6 z+CW}%*`Y(1AzEOot-b6BV#nO+Im&Ke@VG-LWPc(fFh&?~Y2^|&d*Mw0AoFGT50uyH zO}DV6D?rIZH^yEU>*Gb#D|rTSN6Z7QF(aXvngm3UA&!huGvsFgPAHb~ltJe4AA;eh zVA04U?cAYN#ke@{)s3MB{U0 zU??SF#wpxv7^1YkVN4i?rzrbaWB#nd9;Fk{!ar^`N1E^S>q`RQ1Sxw5 zM~;G$T{L}Bv|;hVN({Q)3 z$Zq)X&$!I9dcLl(k2rkBMTr|H=pxbg)9V=cgZ#OGBkO!?*zWW(E@3{UftigWJeU%6i;E1pswBwgxEAz%%|wT zAaIxswj}=rEEP3}WHY14n!t%Yk;jXT*#Hvz4+4py7?P4L!>=mqH6U%YCgAtZVH%6T zp9Maz@W19@fD0d#N+lAuz5&2&d3~aV&j7N=A{4B|Pbj-N_9uS$wOJLiHJn|0B|>#L z?xh?76j+F7wl`=>p}qftM*+s6@L?LvPo|dFCVAouJRnOph@SvV26ABQc}bqKBOVl) zAlfJ3PneBJ+A-gtvwDvI9r(r$)N8RlIlsF)?VQHV!LN>pjS!Wm83eq>fe#RYm}im# z;)En8DwaZ~slh$-3X))Fea`PemZoCSKs10PSlRBL!86daW}vFEYgXsh3Doq3t8@K8 zMI%4b(NrcHTtf=ErGv)-%P zycVs0WdWO?D37|l;p|`YABCec-kv!wAylqdiE$b2sVUdZWV@ofuR*$Cu(rWf{H6zH zx#~ZYn!ydq?Hn}&-+#LEZ*XM3t6IIMnHvy_&oehn-I*VN3m+Sb(Hl9SMHm}kQlcI+ z`T1ZnKTA%WhpN@3TTx^>~t;7~A3& zpOyJ)Vu@&%1-!j02df+GPF5VA>#t8l%EWuk;d+-n8iXlx%eX+g?Vhu za_}A5znJA${vS>0AJtdEC}~zMJ0zk*7h`6TNb3COvj6LoDgiH15ALwvz!yf0qjM>j zxwX0?87pxUccwuWMMtQCiGaXN=0Fh%Dup5Pt#UtA15!a7OP2D)+!+CxX>Q^VSnZ(4 z{QN&qbm<=mnOdZ&&&xJsf3;72Oy~Vb-3C9U@slbK@D5U>vOmiHSoVmonX|9{4chH* zh;N7$&0TF?w+c9B5XC%C+?BHVg{e!yS{YJ5DgM2e105p4UCMTDhbAG@H`oSz!-hJ2 zr~6F#mbJ(*L!Z0qs>>oFP4I;ptJuhWIo+peoXDB1xp~Y;P65ef%rp>WWGet6z`#uX z4Y}w5jP!u2N16IU0d-S{CiEgWb>|QQnEK8~0g{n$De~bwa`wmBA0a1#F%K&NAU%wZ zD$>)RMpp%NM6p76KlkW)ct!6&eWizQ--%QQhrD^aOy<%IUDPf3iX$G2foUY84#GI6 z#Gz6#X?5o(2osuUUX4?DJ#fO%>$1Q2=Xt3|`C&U{CPABXqpAb;9e)Osaem^_neB4{ zISZ_x=QOU4I7ajOaL`bYg$;VT-Ia{wI(+PA~BdgKmL(hLg*{JHIvsDStcIsCEB0MjW#27+Kri4RS>`qWo^Q(u1Lbe!L}X}a?R{Q+(cL|SG~I#Kx>QR~2>%px19z&Kf) zJJ(OGeq+>}gqQglu$wPqwHafDMWH{Bqy^NBGSh(8bG3xPf`q}K+MREfj2)^ zC$&~rkNVVCeaP>F(CBVoJA#0lHu4QW+w`x=Gdc%XozNUbsg$4wyW^`}o zq4(qF@viZ=HE*E*600dgiraV*F#; z$gj6w>c=wRaNwAA)tYeCbW8$cvn*5PNdS|lbH#t@w%?3s{PI-;iFw@%!=7l&ISvF7 z6rx!zdOWG6h6mH`Sk#rOf%8XO*_xbJmoW*CTFRJP+EBuXTwN z;1*|XtrOGU5)b?TGJ9=ld95bPT5|%5lMnR`;D^%ctGtp_G!hPwj0A^5ZVpmFiXOon zTr}C63EMCSv~I=7pI);$_!2Ezqb_&=TUc10|Lar0PwK;)N!VvFJ%RE)>OMn`f z=&Es*sXh$_u`b*3(y(6ezdQI~m9A*GIEXq*C{(bqI&7Ayzt3KyxGDm2-yDWYE#^6Wk}J1Oa7fNsQwSex zINqnBID#A+3H$Np>~*t(QeRaORFDpFb@6ZswprT}7)vM=OIO#pWLa!JVJjGOnlily z=j5K2a2{uKA$v&FF#3NmrN%Bh=tF)B?J{?@*kw!FPw%pwzZ%x3uKK?-owWVx_6E5X z6@Po`Ls$gZe%{pd_N%W{^r_$ce>;&vCQh6x2mbgK4JmnxUOPjG59Cklz!v#MfjQkCqRHx9SH53F#%Anvm~Eg0B8;REA#FrTd@ zS}>mdrQ+)Bh1G*NL~Si`HZ*PK;KX)yR~EWdmT3gGhtMqJgMtN3_{?(SQYN^t2dV@Q zn!soqFg^qKkWZ&0UC3Z`M>K|9fNx@0E`%HHjSLC@Q;rV~On5{GM?*qXX>~*fXXpQX z`3;T<)vtTW^fK!9l_D+qoXbzDJ7B=@KLNTbLvCD zWv>E;5%qc96gx!TTLb=(-6m?-V^Er#LZmFWgYTgMIdO#Th(ontYYL(v=)A~oaa?q9 zsKsh6Zkd?mW*aN6ZXJrB=*isi3@WQ4V-|b>lC<*&XbodyY?RO%z*DH4zx$qC%&_d# z-}#H|F%dJYFk+a(9!J^$yqS$KCTYlEDH-8RV}8ULD%2H$uIy$hkf<1rQzP?0Sj%|F z-$*Gu{DeE?lm`2)fbyXjV$p23=r zSzZ+0UD=p$T0!RPV7)AEjW8tZIW)PZ(idxU#X;34*;Qw}HtG!69St3&_1zb9aFjWH z>1wB|AhH7WN@c-k$95L2BTES%UO36(rM6`08IV{zXcC z_V=$@onz{1-ElAWL2ZqUBvfl<6|x`b_Z4>Qsx$i&0*=&jvb*y2aqNI?TwsS@r}V~! z^ysy#ZTxfp>vW0cX9awNcbG0U9Y=qTUp^j%{cd0ZyLmHKoiKCAV8=;c!Ue}JohqoB zER0QBwSbKxb%E3XLC$(Q>je&voXU-8T>hl#;nS}WtD!Yb86u*Rw0|8c6vVXOz7UJ}}Bq1TP z&&kviGWEPgFR;1hmiakpM??@`ZcRJBHA|FD1Y((swyU3dcpNC`ev^$nwUh^r0N)3IJo#- zM4HRy$mvF`&99tM|H9a}yG@6&Z}(rklh+?_CiODc2#jtgb%elC4^hIY}~g8t4Zb?19gS0o&uNA z=mVn@;nEI-GF3-g``$|~c+2uh^MmX_e7K}!BxamlPe3+yn%0>1VvP5!n@j7j3}=uc zXqM@xF>KTLa7us!`&?e5rk6suZl(YwVLVA0?Z96g_|QV2XOPMS&0It^VPcu#Ace>z z3oFN3-NGMtWWOFwu!A_n4y21;`jx}+$Cm>h&El5ar~}Eu;0{?>S}G6C)3k@833I{V zE}|<2h3~=LM9^*35IqS7py>7OENUxeH@?$x+2&9t&gT+|ad1z+b?5GXmz@id?=QL5 zwizjI^(ntcNm>K&3zKpU^`uv)yO-MdfBzkN*jV;)*p@Gwwm}bD6o4Lve1s_M4RXrh4>s|%9Yb#N8HP*= zm_ttMu!P3XTQT{cx$H`zC}o;J0-qam+>wr%F^w&3u3o*`GAFS%ein)I*mdN?LQ;4-us}#@z`V0gdP6z!lIQcpbWcv-S^y!$cf?_ zpDVlknN2xHXP7k@K5n~cp=-d^xvJ2qHl|V8Nvchfa^JfwXV{4R!NyLwV>m0X0Ao7R zGq)lc8~`gii;eZR$+QpaZTprs@{tL}4FVB+QKL<_lbp70>^w>4C()EQs zm*36)+sQwrITl}mVb}P#Ve%*myHr%#s$dyeI-FowRb35B`~$v49o3B&v>r!XAa~@f z;J$zRes%BmZ#bHa>F~2XYdx0WdD1DCRdW zybak~YARI#8-aU?MMbfvC;gLwbXD|R(sg6MF6^jZTw9g+qp@iOEJ zAb@Nw3J1MVcn9knCzfd1mtqO>QHDU5`C^Ja3ePm{D0Eq`BaY|c-AV!vE=H8+El z!>-Cz6(}$zyGG^{{d!}QStj}kwI&X>pws>Zd?eWDb3FXC1W5kS#8*KlHKU5FX1 ziXGQCH~Jg#ccby&gUEGcCr<`D9_tL#^8+uTH0nJM<@ZX5(?%Znzyyri1uenKO z{@iP`DazL6UP~r7dnor>HkGo!xJFf!u4|6jB_y*DjM)>BzlyBkf=k zZDSHqI^BuC#%qQOw!g}~<|Z8p@5cLP(<~Owy_QTdc4h9hZ0cqo&%IVmFrG9#ei+YOhwnsSqi?{g zjkwQFw8u1i_nyo4ZrieTUnISuJkn5C*H+z7S6>&Iv+0s;TXsdpH*DLqYs03h$k470 zHMX-au5XGAZ(X-5(zjvV#!WkMw_)6x$~P{BLe+=D7NCn5UN^C6>6*UzcsYhowwU&t zF2YrN@$057`!8CD7XuiaT^JJjxffS#LNgoCIU0y|(fG6PT7CAt26pe-H?Vu}mQ9g{ znz~4PWcsPq(@#0KZRgzOJl|T3*6bBiL2Zm+dTQ{u1F!bs&t~*wKYs4U@NN@*plLlI zu4=^Onig-`d&#!lyCU^9^&OFY`!=uJzi;=}ZM!hq2kL7YalxBw)f-z*v|uiDK~eiV z;VPg%HCQ6+(7Uas?f7{RzZ>(@jh_8a7v7oA*^yhG>&{r5GoM$5Ctiv%rq)En>|Y{g z<^cZPhxNUHjE7`lxFLaGrl#BzHP?cFU7a_ifHz+36MJVp z{-vj$9*=e6iG3(yL09g>uCbwIv_kjbbuIo}f?kmD*@O2k!Az2HxoCPuYtixn^x(C` zLDhNXK_uOI>7|#}>|D2R>-KdAYq0&g%m0;($bDxA#Kt;9Y8c&O%c3t(Y6hnc3pxm?ccR=)85Fw zt(zj_LnDy|dp7MdE*>#1sEW+kjy1;3a^H=tJFsrsMeEjIv?(Imu`V*uwbR=YXTE#3jkKFtj+WX`13nhC+PNwB)gaO zu~}?3o5T9q02^d;*$|s&dWa3P5ipaEvIT4*TLcgNI9N(2*)3j>fo)`)*k-ncZDrfocD93Egz6Ey*lxCmUCj0(X=oqY&knFl*+F(0JH#$$ zhuIN!1v|>#!j7@y>`HbOyP93Y-pa0J*P(Ff4eV{~?d(Q&6MF}HC%c*5!fs`^vD*I}d)d2Cc>F!=K6XEQfc+bLkiD0^k3GcR&pyCD$Uej#W{~VIIJ;9!2A7dY9pJ1Ov2Iy1l-`Ugb)9f?s8TMKBIre$>1@=YuCH7_Z74}v3 zHTHG(4fZViCi@n9jy=y_VBconVc%unW8Y^#VE@5>$bQ6LWItvILi4h=i3XZ@fxB)99#Bo?bPuFK}YTQ%x|MmF0J>J;eW~J-LW?i?K6>qi| z?1a6n2YWxb>)pB@KOOeB=hyA3J#N^|S+NmY%&L((1zda9@zccnmZUf(E)o}=-H#*{ zNh-n@!HJhRic0V$_|jlF37iB@qPR43AKV0PBELj_37!N`#y{h4%@$Y4zgQmiNvz>Z zH(c!>PUkOA`!fp$EY1=XH@!Kn$J22=*Qbr$;l=Lp?yxsk0YktPt4)MZvB8Q=*Y)IF z_qWHD$U5?;`-gfgu7=b@I)FHUI9PXNu&QLRYGtr$WyF8PeQqjgOt)+g2{ z>$XhRZJ929@J#S{>z;V{JbWI$`eWRil*NPV!SU4P!Smn+@B(;&JOX(H>J2tU3B=9B zp>CPEKf^P_GvkliMd49+6dr{K)r*3I>P5kc)ElWcGU3RCBe?7WVHZeDuWpX#?PJ{f zgUSVUOM)MD3+fisEvQ>iw`A(i)RW08lUF9M%sevl$mEx)n_VL863O%}Q!l$k3Ooh8 z0$u^HfLExaFpt9gi}kZ-hxF`_A%&~=OZ_rbU)x20xv1ZgY-QLkTF*u_H+s3gy+0iG zHy@6lU%nIRs`$?9{qFAL$s8HZSdXT*e)Gt>B{3!goH`qtch)p7wmy@*j@ArCyoz`= zSeyoHh6ZbfB3?zjig*?AYOrSLO#Dnd;!%!LDSxuzc>5yue86Q|MTPPxBp7Ws^S0u literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_AMS-Regular.ttf b/static/katex/fonts/KaTeX_AMS-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6f1e0be2028f8c9ccb9ca055f9091fd8495c2975 GIT binary patch literal 71428 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_AMS-Regular.woff b/static/katex/fonts/KaTeX_AMS-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..4dded4733b3fd85fdb1c00352e30d8efa3f1a426 GIT binary patch literal 40200 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≀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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Caligraphic-Bold.eot b/static/katex/fonts/KaTeX_Caligraphic-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..1a0db0c568e4697d56785a687649e98e9bacda7b GIT binary patch literal 19836 zcmch933y$}Rc2M){l0zQ^q%h9CA~$<)4o3K)@I3DTe97@WJzASZCPI0c9RZink00b zq!S1UJuH*Z0}NTd%u_dHvcM#4873>~_1;A= z(z|u*p1QZ{)H(lIs&t=NAmokngiykW^`q90l>CZWHNW%{Ay0nmo5WqeK;A)!L5Og= z=?ho?YOn6@F-7Lc8aYZf$uc=Z#!>H-f-4&+50i&LeT`hl zwJT%`H*Y6p{0*RV1D|tf`52B@%+^~d8KjBaG^r}28Fwgt56>*!^F%bE_;Zmbi9oie zrj9Ob{Pm&d37Nlu+J?m=tsPT4YaS5Y#`)^{<+bg<|H|`^5W=2D-P!eAe(m};>Tzv;6-V{_rN_^G!4Zq2>RCc6r!H)+Z75$F zd>^j;6aKm{phEq!@OIq06X%%=mv7v@_GJmrreDE%?b4O?HQ$cxMf*XVpSZksdz;SC z|AXtxI5)P|E^q$Ap)dU&A>)5bi1LN)E7x!Q?n9}+A!P11as4N^uWfEW^Yqs~jRC(A z=XcDpWBh-0^$SgBT!Vi{8ijA5o_y&)KJoANj=L}JmZTZs0BF^H(LfvFz;210kk0PD z_?<6FGv=Lmlf9p!SyRMR3T71}2~6cJl;3Ff6)a@`iTw(ZP`HC5A#bye^lPM@n)0?M ze@_zflAC<Rcbqn##6AoX15f`)(!pC$$TiA@ zjgT__mhe}>UmN}m{Poq#)%vkb_%|fazDb(cCh-eT5I;LZvO<}7*at|5@W(iRYWGFK zM!JOaq)G6TX6Y=+3Gd(ihH!_B2rX#yL2_I8Q_y{sMA#cij(v9b@7dQ$MEp?_5!y*F z`(Gp@bbuG=6U8jiBKpULA1tl^HJH33

VaY0^MMQpM43&VY!~^^p_geJ}0q?xNNp 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf b/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b94907dad11e545adaf8fb1aaf54c032b7de1796 GIT binary patch literal 19588 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 U3l~oPCkLN7RR5DR&Av(h4+#X92><{9 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..73bb54228786739b75b05af392000dd214486580 GIT binary patch literal 10604 zcmV-yDU;TBPew8T0RR9104Zz$4*&oF08D@Y04Wdv0RR9100000000000000000000 z0000#Mn+Uk90p(jf?^0N36~cU2nyy{*d+lr0we>0Fbi4$1Rw>EP6vS+41o$8=R*}^ zn+3hc0mA4NM9`-}$({ZG@j%KErg_&=*aS(2$~d)3Gt92k#-&b`7InLx3X|HXPsYS# zrfqCuulTw|%nnm!x)JV)n30ITS}I>-_J9RAL}dK?)Wl94B3xaR!=~N8$1}Iw(O%}y zcz;MzG>7;({d*FV_aZMsAPG?jk^~463Q;T&NHA@1t87IJ6^FXe35-c)QWLu0_O}!9 zPQ2qjU9U4M!b6hy03|-yPh7zk4h?gM+1qsFvQ@UW z`(h4Lb1&0Dj5QLfo>mU}PcBo^M+at$fRiktv*-f)Iqvyf2*|&;nJ0uDxm~0KxH$k# z(fs}&@K+iDo9fEUGHIlmgYir28z&qk67SePS+oXtD+~L7OHDenDYb5D;gtmv%^ykD z%&g8gE4j?B+pc{{)^^ISbY<->`)WfemG!=ot8~@AG+$~#Ie_xQN~b6=1cuPC3jiXpqLfZWv+c0Q zLGMpJaL1%Mr>=^dp#l3;({;fz<6;MSqo5lZMxoN^3?|F@FG%NbF`UO22nmr`A`OxS zhsYJmP?cJv1@T`Y01o>jL3MrL*A{<_Al0|9u>1f40-j@^q__W|b^jLr@lzz46TIgu zjc-PX4*x~RTTIUFta1)`2WZ^{-Z2Lcf^m4oM@XOx@p2C~_%sC`*q`?YpQAHZjqiw8 z_M(HPN@Qtg_MTL7IKu_Oequ+7wQsT}LNA#V2)&4ed>8WpAD`xOswF6yos%D01zJi5 z+{Me3JPgzeR)-70aWBG2fR~_pIDw&uh3OR3Md9M0lX1Z?4})QU4s&p)>ZvjQKfRT8 zF(^{he$0E-aFC*6?uKniwI zc>a%dv8Y{WPT85p6_wOo$@VVc9!Kh`BOKQVM>jh_fzf_Y55J&J`*yR?dy*$+rmNe0Edm)cR4ZPzRpDaD zysiCYmSABl4xSaHxoW|+;h_y-!#_)!QL|@VHBmTXbts%4_HhV;!Y#G2$`DztTj-vy zPhy7!yb^Hxpb3UkE{uLb{L|^4*~7B+V%rlzjpn-koB$3FJu&K=jVHD!q=2~*`J%ohg3;Udc+9I6e^ z<4-~I@L&>bV6*yT#@(4gbU`JoH_JC{q*E;O(t*=qS}+IU2Bi_I0GS(mBisNvZt@i6 zPsv8O06Eq?^pwXOLKsJ4fyp4peXMJ#B*;h$noJg^;Fi)^fZ z41~JIrRDLfKqP(Fu4|l42_LH5#W%(KImyQB;B z5Qb52sx=!mNQ5R%kD)2b*{nNXw&6JdE>}25gOFE12P_v9JnuZd(tO}@KL9)*0A2um zrWFEs5dgdx0A2!op_Kx7834Q-0A2xntyKbe6#%>%0A2%pt}O-d006uefE()!vxz3= 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

dZ8W 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 -0IiRIyY+ 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 I0MWO6lO0N-BLDyZ literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fdc429227adb718aabf201bed2075bfbaff70a75 GIT binary patch literal 20476 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%0At0b+{OCX_D`rX{6r`VWQrMATlEm zmePbT7Q<3q)08cj8KH@0OmHP!mhAE-Q68kIVJXZj_eEZo-S%kH9>f`1W89LGsU;s@ z*m~y?pYA@RP%jPh8&n$A!)vQTO#Pkhw55r1C8{ft%6M4N;?1-Tc+>KRM(RNxvl*s=X+1oc`h4q;FxQt|Xbz;Ag#5JOX!NyIjg;O`W?}xEF=ds5gQ-EEbqX8bz@yBP#Qw@$1DwCm3vCFbD40 zKyU3?PeiXN7C7(mgTqryO$J$ZnlTI>?Vt(dBl?6oUF!mV)$qXJWgyLZ65g>YdS&C`LX=gTb@D6cM;%*6~U8S|j`a?yq#B^6#Xp7aM*0d>Tl zAS9frn1;XX0RZd`DLhe+j?`tt(xR%B*WrqhJ4k@4s$>rNJ^o}}6C}Ac86kJ(+C(mt zkg~TLiX1ah_-KVCznZJrF=_lh)XzVwy!FQ;-9oxtNtiCrXg$Eo@ky`Og#WC$Q-JQQ zCL#wb=*_JLLPdMj6y>2~ZtqIWBQlM{)D9nUXEL(x4f*0Wa28$MIZ#C!MB_zM5TrZS z6=6XG$a!-7pr5xibBgK53sLP%BP$Dq(Xogjn7&k5k`2GvsKiiEP|XjUH-FS;qk@3x zD1Gq8w_?2P8gOynzP-GQu2;Er#fPW7H1H-=u zS+$pgp*TfEgJKV+wff7)j90B{XT(v^(zQV*A=&$xLNrq7Qcj;yqqQ%^0fBp!QBC0ucbv5`qPH%(nimdQWsqLNqDq zw>4kqm$S;Xos=dgLS>l-1lY@Xlu8L3S#oF(+fc+hfDOfO7p#A`E{yH|H9rO)=~?cR z+^2i?{Y2vb!#m&c)^mswH`Y<)CZnWDrY(47;!3Fi`@9!oOsGh5;N`ay?i?Ilr$knk zC`)xfS+MXAMG{Vyeb1Bfu{Ai8-*xkTwjN(KVcaN-gGT_HdFdk3lZQ_A}goX zJwv!1W;pK>^50A(Vp-sfVlXyz=pa#aILJUJ0XmzJGj4K$OiToZywf?iRzl$uwH{bD z&A{DyIjbOlHx~pF68CruBa3hR%%l~LB~sn2-=j;WTq(w|yhfJ29=A`G-KCaKGFrp# zPzCQ=>8heKWfoOZ@Q>zI6N($k5bxxL%%mYjB+ba2vqS3^%_Ji8ZbON5s#rjf&mk#? zh{h0oVlbKYLhsGNH~S{+`4+d_TRepjAGJD#C>56BkRc{TNQ%TfhZTBA0l;oEq*xX? z8D+kr69vPoI=r@W@WAXyXQq_RC~QrLpJBS-kv#{B@eWfX4hIbA&2&m9hyrZ}E5MHJ z>!JO?a^NiuSa8qB8U?OQnzPY6wlmFqJVM>S{qFazZ*&iRC;=u2zPl`X{8H5o)KG9w zk658a$O{Bacni+jS|JU0E-sJ^pwiGGY#qk4*Uk5#Mmh<9_Yi&u_ou zzRg#*6)2|-R^Q!LiAIg#v7pEYl6jX76lw9bZ}~+xogP{qSpYQUl9XaBpN#}mp4IJV zF^?ajzsOzYPW6tX1cQr#H7|A32r*IhFRd)2B0ya6y0NeZtywK5(k8GX5(q{M_{9aI>5pRoDu{y*Zo&j02AnXpXbY5HiYEyX_0$04`*yNk#)S zVkZW1_h60(RZ&i^e;}QVDz;+=Aj0x$nVOxY$K|P=qp32IT6RW?3|E_mc2Fhtrc0C6 zq%Ws=Hu9=4grX&`Q>d2VR%Yh9SJ+OJa8l6p(hwP=0 zGSyw;y>65#N_xG{n+la7V{)=HmiD{7mOmFsscMnP6RJr??JUw+a>gUWR@a!Q3{?z2 zQbE(bwBlbl<&IXP`N?P+Mi*b``Z9el{UmD6Hhbpw`K7sbLL$qTod}g#?BIZd;W%DH zMKc9QQ_8}M?|FfR2|X6LJiR}3dP&i0ic!aQc-ADD!ScDK@9O)ao8Og z$|QA-Xz@T)7DH)Wk_59j#K)q6$YEc8w1N_E5uAW5C#R`B z63<|HojXw37>R`PL{q(3_|T|99~5M};j)Sc*DHZoekc`?T|^0?bkpN^4;`on5=o!i z(-on57n`DM3SbRY;s?4yb8%|EMyopt^}vf9;1W;MShfWRj;4an$EE~e z3V-cj3U}elY;VV^)(`X|i$E4${m_x6X0edMnvo}g$zctq#46Jm<*>9Bnp9@K7Qj#j z5IA5QbAfz}zSxY`{}bomltTa$M(b|dODtPm;;i8$5J+%28YjPkU)a_!|cWRg>B zQ-)csCbe+bGPPu=0LO3zGREj^RC1?ciX6(% zq-!I0-WN@6_;~pErs$SK$@Xk^tyYut`4KCa534#5k_?vcwT%BO{BCzDtHmeyR7B>f zlu1|J{;l$CHYs@WJa;952Jop*4Rt~s|v87A=#ksU2N zgGEY=$P5^D*nufzG#Pk8p`?NZ(4&mVd&*;=yP*sAxC2XkunNNA6vh;L=#t})vxQE0 zc!P+J=4RSv?`|ms>-%EOGk8DKGw6zp8e!O5hrh6dnxfCQl+>@5yS!Q~ndW#{(^bpk zab@BtH5y*IccxhI1nOPCIUn_Gjp%A&5zE>XUKUW;C5Bx1mYi7h12#$tjdU@XNY*Rs zL0?48R8zXUw~`J5mlsnN9imK0Et@ioL&FnA{}f#k6-%uSNrXhHVwIrutwesJoN&u| zAF52?Bo`D9P3D_lsTBpc5J=)eS{xfqsuQEW&`fKJK3YLw8m-pTfk3ch2+T|vQBSa# zPWt@Aqerv(cA#EzTT4~X9WK5GU4wOY;3OF|785CZA)j48uw_f-aNMPMlahq;3cpQ;j&%!iCt8;i=hT)$b~* zI1DAfz5WCe$25=(Yv$&M+G?c&ttjS1YiJg>C=Pq|YqZb3ihH#8@T*cfQls4cXV(u1 zSVpmub&I^djP;=UUf~&%jEagCkH|V=9hr<3IS3FWz|3H2PC>0DkQDGa;aMF9xK4_H9XWP6+;1ov8toj7>^9V{?UDYao~KmS{ar|k^^lS z$-V)|Fn~TChrb;F%Q{@ifD1=i4N^+5j*i0)*2LegqsMIa$TnMNk3*QgZ9_WPjc7-6 z0R;WU!@fF^5k!s@q~Ru2y3%EuQLzR2uFSD{k0#(S4ndq*|%8HY}4}O5oE!&?kO8aVk}WNXkFrS znNW(CW3}_;;UE$>yi4+>9<0EMx3HR-VF|I_0{tuKsHeCKy*szhR3c%&#F2-uAV7Ql zYY|KxLW)XQL8bw&Aj)3}cU6J@VMR6rZ3GfJiU-8Rs!^8i^Rg28SHJS{$L_y(eRZx^ z$f+{-6nRQzp2>&@^ULt5eIIa77oaA&HHk(KsKtnV%~&T9MxR)v1GX$$=fDE z8#5NpVSQd~W-BsYMbQhN?YdrJBG@|8EjC9K(~@J^4stJ{Sh?c%*W<03Na}2$p!k!+ zwZ?GP6$u0loou}MOz>wemd0z-s$feYffh@ZNq@N1XkYrxr;i4*rl@+|$*iWo{gTI3 zY%2aJL>?7D*{Ds0L}^Aw4sv+N8sJ5bp{C&vP@nr3J*@UssSls0iD0SS5qvYE+d&jw zBLb=zSNp2t$4H7OOLxO2Av%P_vSLPIn?vS_Egf{NYRmw!^^!o3M3EKWto9jt)Plbw zDw4=5b^f(?_J(fVMDX0f5}EIF_uyr~L1TnFf5+jq#rY`|j8{tWs7u4@#%;3AP*7-$ z?r7UFaDx#3mbn=iwtaR2TObeU+?*L3^Zqcn=Uje*1>l8@>6=#h5uC}!3 zmKAr~dl+djEQWBEYm?#ZokJFHPI-;x)0JYrWJ+4V51&DAmc1d>ivm?tw3%7UwSLlW zuC}U@C?{mGzGov9q^OD{u|bGt#id*4wb-IJsR*K zJU%!-JXA|XW%luj!LopR)>mtARjR%jKJa30VigTc>7nukUz5Qut2HZhikM(#n+5?h zTi8GF%u*<^!78G{H1dU~bQ_Q^DwKVZq#`IZEQheF-NH9oytq@Gp5!$nK*;ISBwqnC zZt$-_0*2LKim8C4AIC=+>f}B-G?aulL5ZoM4#wmSfky7wI5Z2dJ!FlJxcxaLDbLQ9 zhV_6owzC*3h-UL?U&+HO=^$-erhM&wp3TMS-9IOvLLK@Tca+0dDdrALRN??46!@^1 z6}SPI@wMfpVu3PQ4EdR0VZqa_u%8{XOjC;ZA&G+uR~T`}MVz7-FMLK{5j7l+-^UEV zUPh|eEfya1h`g&d?IAX8D#*%t%BhAVik>rscxY&$xuFVYTvSH|vHHmX@y0|gqWNnP zLozc;STtSq11p#TJzX=9<7l3+=BFrcWkWd><|f*HB92YF;{=kx*%YAusR#CAo`yp6hb{o~Ir3saVk&?jV~#aeIP)jMOF`Z&BrHK77nLv~wHtrM6Rw^C}2g-5-#-9ZW%6A~;E z+QcWD&~J11&&WsU4!6c-ddWs6X#mg%R)_DJK}H9Jyk}*3cG@8$D*TxgI%I zEZqGj;s&f%>U5ndi4anYEoO2ZHVzD^$4CnXX9*yS#7uG}&XZ#4?6yhL^o(y9Wm)ZX z0+lcWX58?;Mx<%TmHqIpJzIXa!b2^LGCC2FKQsC z*;jzZS~eD>NqgVPDKgUKG0=hg0RCjc%0|j80YsUVeX?5Xeg5PNtRg!>92^Upt3k+) z7^pQ+K^;Im8>6tGJc`P^8-)Wd_1+CHF*7wy5u5(^GL*;9XNNPED-@B^S5S=W&ZKkx zgceR)rS{xdL&jopz114h)k}+(Wty3&7{DjJ;eh*}RYK{ErMdhf`<8cd*CzAyKXN@* z)mg@KJ#OZSuOwq|b(VY66tqRw8h|m}aFF{n%MD?P!VW0UKKVenbziJp&4$>Q4MJGq z4&LnA%p-&BvGt6D&sgBwR!n>m@1eZ2Xcxg2p+K8`xx;oUHyze!lGAxc(ThPNoz{cA znr>-&Hf*^yFmy8ED%k*ldBqzNghws&93W|)$KqB|*1z~hN(1I^eg-w>L&p-TIow66 zA4mX}uaazr*|F)$L{35c(D8!QPVV6u?9ZHXkqKXmdNdWXs zQC7eRRE+tQFe45S=4f>mPOxR4qf;mt&f-G{gUWj-bhx9Q*Ygb#C1)C{<2H2LtJ2E2 zD?Ee+cdWcYS@g|XDOq%{9yM)JKX}B?R>5o95Cwb(sHC0Edn7uuIL5C(`H(m!d#v#2 z#dX;EVcBn@YRD~^aZDyskF@qn$E>@u^mt$y-@HHxu<9lMs7AXbHQt-j4SmSAz30zk z)jNMPmQ87yt+3SS4)N=Z^1E&F9OArFT%s2ps;5)oAf(~M@re>3bVs2bUT0DZ9?6G-!0p7ZZ&=Ri8lKgpNAJ@Qylwi^bNRuH zWVOV_P#P6h^`Cz7;==-}d4XQHq8>yw7K#u^PN)z2jvaIh)uNaVNr8(;&Q2club$GV zg74xaQY1Zp?4ep^o8+jJR{uDM#n6nlRBv&_c4-KZMIG1{FCYdN z*GnReplAxYB3=yBd&*cA;qhw5lv(4+zsQo7ZrO$$IlDfVj=E7b!NY?QXYG7pW^MI| z8-O4BzWXn`L)>TR2RSdkWuUx}f#P6&A9YkYn|-FNpu^?XC_d{&-C%B*UM2zqLQONp z%_3qKDO^rTvIhMVzybgsb#6j~-bE{hN@Qd*p7F$a--N2@KBz`7hT!&^^o{tkm&>xO zfC{}GL*+4{Uq6Shc}b0%yO(XR@E$ML6%n(oYmu>E$=r*@+eiit>ZQZGUm^G6+l`0u zKMYLwCX!({T>Rw&YakYd#II)hk4D~kONv-q6Pt4fd7p^@xI*+D}ZmPNGO9jEZhUQz|N}P%DXCY zUYNk@dD{>J=L+Jbc6z(Hle$zTgUk6@17? zas5%N$KNpdVR!cg#U z-}%CVbv7F?;B1b-wTu&B>=Qsr{-gojtH^OPP~jEi521Wz;18-yJ(Y5p=#nyAQN-+8 z$PI)rtb1%~bd1agUh~9j(-IPlSexs|)L>1QBv&pRkNsmXDQD3y1+~ooK>i5$sPz0{ z)-NAh8-OkZLd;zb_!)G_)>z<_j4uqK+-cxJ50nj%0dVDB7Is8L0YOqF z@KXOy(n-Y za#pt@q2O?cfg`z=$Ys$qSyfl?UT& zDIDhAzxy=|>5sT$OxJJdSY5y^A6_2IXT6#{(Dj{`+ediYJ_i#S;`Xgqaz6FV8pw;NDB|u_lR^# z5ZT(ffR$8Bd0DWAg39M-v8Xhz#=3_albY%->+q%SNB0EOD%QwHX@Z->+NrbnFP+Z! zqMIzlTiIC4r=y{uC5akc#xi!4kfWS~VKlyd6mKu==KSn)d-y8u0NZmy@{_kia(wIR zNu95}*EMX&`PkR`{`AuR;;LF23*!b#*hb_3QuATtaFo}?rq)?snn zAOL3$74&SAiFd&c{{N+2S!`VAb-w$)&%SWx&cY#w91dsUaJZQwC6XewQ8MLCi7b!A z5y^qQRnq@f~cJX_t4QF~X(xUzxIEq^mCT?E$0R=eT`$iGGe@VF;mV32YMD}-nU~jv z5%O|mV}!G`a5Buk!~O)Qe4E%)Hx_Fm_S9k6d6FFDl61&ypiz>2M?Ay@x&n%nNWKOf z)ecUXhUx_JA=BtR%bySgPOQ#P^Nb!Efr(%TuNVU_$Nm+f7l7v;~-ug-~X=C%<4n1FXMGOl7IGRw;^z1F+{3 z8nQ>2^|>zh0S`#69w0T6$RL2xaE}dKYF#8Z4{R!$9+JjEP$v<`rUQtyfUVw7>mj=l zo3KQsV|Ns@80{ECvMgs}u)UEx0ZR9xiW@WRSWM#`+2KSzn-s=sRODC~-N?*Dks^*j zjz_RitS;u*e~?Yz_Q$n2ii8>f&cr1IL3TXFk=3YzvJJbpnbKluP%xlL6WJ+mF6wrh z6H7Iu|M8Xz4Gcw)*t<^t6L$Ys*?+-<&o-AXl&~h3ZVb5p4Nj$_2`Pc+XyF(fZ z1T2+rQHe~L=0pgKgaSkv6ufY;e`^5&x+HRx;eLaxBo!Hvv9N43NX89S<$$K9AdVKX zMUvU|SlSTF1vCd$4M);HA*H)vC?s^VSbPb581N)EKS|{!w`E0#kmWy9L%pbK#zft9 z#Hog?+Y<0V$KY<@qZ!w76Huf0Eo2)lopvE!)D*9&SF3JH2fe|#IWrTcT8mO=Of{Xf z<-ovDy|#i3i*hbms*jf}XxG_{>SXlkMLpU|0R9?lq(e0GV!SHI3w*yKaG(J-JI^CZOnoVU?7%sM`JvDj} zI%~->WFI|SDHhoqQ0QJr>eFnOdkbMgl;`mPdyqQIbtAd?N~CONO(^>@u9-+)5*E(+ ztK+PZG{)YnVlP%t{vCt+XLuHYp?L;rBrsSntgX&=o0BFU7q(9OHL{ul+;K_-Dc941 zk2drsQqN&_LKM@QLfHw!^kK{cyAtS#)SpQxUNF=kgu#+Dbg7MDL-yb^XtvYrx3Lc! zvaM)p-eM)|iVH_lT#oS4*u=0a3ei>t)uUh!uOOOfUXN@55eu0@0Lf}L7V-kphW?Qk z();~xJ87_{WN_xHjU3!b_$tyx%c&smm5*e*doKetks|N*oIUJ3dm}SnwJ`fdN1eEn z*mVt{Gn2j5#h(0q&VwC)l}Rrpo}C&`L>x_h4=W1xM74qF@orIEV>Q15$tGSIh3K*ZEU!+Rp7kHGQan! zXrTayD-diD?-%d!D4Q0_c{85O%PgOOyaR<=T;2O! z?B;xTHd@G_zNdd9HEg6!gmAU^ALutw)Dv_0oR^+n<>0G$PoJxO2~Ko;wQx+(OmrSrGmQXk`!Wd*uRilf8*VYalhg zKP^zr2)~mk0~1h}izHp-XoxvQ$={f`!H0vHBaJThZp!S1RoyB>(^qLWjxm)@KUe|$&xjA#IOPDC(pwPPDw_5G&^S0D_f(SjcWm95b`R;vo~*QF)tQZQ>{utwHB_vP>q;5X!J_dABG7Y zag|8I(g8$bq!tjQ(>-sSGdvNf7x1$uZ*DnpCy#1lyEq2eiI^yO#G~5D3VR1nhJ2m@ z+M5m>F|5in3(X1~8jwlBy0Cj!E=SzJp*l_0HXs(jk7Q+r1~!3yg&HKLkM>PSad=zs zDQ$znMoFeoP;y4(jB|ojf=6#@J*L_JC#T~nell`)N`9VGqN642o#S6Emzp@ zat>r2R8Ba-kjD88w9`@hvDMKI*}4m7cwlURp5RkGMFJYxx{pJ_m=n-eplJ=H8^%uz z4+)~syRi0Hm+enuMplDA|kC}k`lVaN2{%0>|Ea{t=O-@mU$NljOf4Ffr zTa=BI_S0JY>?zq=IkM|WnH*ANIU3p;C%-%yW9Qg^!k%@BcCDpSfh@*z&_Vz$#R6Ii zTMW`z0W}9P2;bz{)n;R)lFJhR28j@%Dg{P{WsW%+SR;ePo1oGHz{13Rn1O(&Vd@6r zKIGlNG@;KxQ3~%YbS?e7&8gfaQL42#Bf+k$sP%~{weu}uWIV=?w-u?Hf#qBI3JMUH zM?g!mlF5|{78D_s-Bbj7epHjn4MlJa?mFTVc2;jLZLf;6v#Fu+oo@-2ZHzQb%}h2$ zCHrHf`l+*X`IJZ%wO(wbb*XSsR*5dyuQT7^egvdMX9-oYp%Xsh2E;&ehiC!3fWbhr zljoJF|BFys3KBOIWw{jaW}+ojnEl8y=94mV9O^zV7)e|5J18J(68|;XFEH;Qceupl z9@*GNf>IxPhyXp_;}MQ{h(IxbGAEzi*r7Y6}H=V;FDR0 z4YAlNDzG6Q$HW4jCr31;+L4GBI^>InpbbK*z;D@-OB{W)++L7ubU;fwr>FL27~ zB!VrR(HNJYS0zp0r149JfaLvzpw-sDY+vPmo0FUzNYJ^61oSpE5B3Mbg7(GV&`vM& z?O4h*%j4&^E2wmU=UR%nxyafXROPTre%LYc`Ff07spn6;*N#|IO&kZIg)`R zf?I94{Nmk9sOe+#lAzX>7A0|sF9HKt<4iH;t#GW1G6Xq^#Bq?gv&o8S5wTGB=8>7> zMmR@_*kXKQ9fd+}@oTpLtPOxjZkEp{hN6|1wme<*?3Mzfz>!m$QCYu{(`>8LFwXy8 zJMOx@5s}6>bW&xvfaP!+;ZLvjChaBQ0nu&~PT}Z{GLScApXt5C5g|Y_4 zGw{FxErE8+>9^Haq8b!RxGi+6nbM?m3E(U$^pHjZD33_$FxxY;f-5{1W8qv=91a_{ z6vy)_N@7%Jb!(|yNXN5N652^ zDZ29jp6HlZtPCl`-N+l2$yU6Rf&gcy@l3)$`k4o5th3SN6-N_i=3p?C#CjcbYLlSl zm?_BFzk!^c2a>Y#mzP&YY_iXTh(tF+~$xysZ4N})b6=@359NLA0 zur$_?j4!M(yY+nzXvRo9%e>?p`H>On5)vbzAtI{7S*6=ZvqBwCR5SP$j!H6=}9@c`P#DVEqZdqw&269t!EETTW=sw)bP5?a-!u5;xz!0 zEO*9Jjq_vNy9js)sGG3G>h)7)*-podnt?SAW zxMrQCYMWwq*jEwRLTWfZjzN*2MMPAO1YWS#&=OH!9B}UIza>H1=_2wJ;mc>+?UHOH zwILHv>@dIv6M7`Mh>SW1+}#GH-Ivy@c{Rp^!}$#JIzb zjxKmGk%}_!_@|(IG^b1PMlO}+Trb&}bUn2ULsb09G8;E$zBvasX;di%JopRt8n=v` z4C&Ein#M}Q2@JZ&VOiopNKB$$E-0A|NjD6-<0EH4RB8793s;Kn;$+i zqQ))gKrA;=PZ}L`5t={ZCTrJW{aoKM5{?^VU0|vvvr`2nVnAut-#KEF=4zz?cP1zq z*>mWlHt@4Pk3ODJsE?$!NT5Dqv(Qb3eSG?{9R`vL%{t6=02K>F3ov=$YJ^xBdCzr1 zvV>SKaFAF?eSs^L?PfEqujpKgpQ+}TP`opPh!;Fud_?C{8K^sMaoW-(*F#`odNHa< z&O{164{=E0a-u0k*axTyL(*#^!4Auc>0dnBka;)b;b0` z>bJz%nGR|fM>Covn{uXYo4%=uL-(@9ojm;hD)Ay-c=Gf%qO{@L7QjJvDHCaz%$POWY89wMfjG&?@G)V_spPea<6c24%!woC3%CkgZ@yl zG2Pc?Ea~@|Gr+mK$Gi^T!5*{2>@vrU&y1ojvx;L2Nb?P5mYE1zO|*R=&-YP9Lgyaf zuPvOphyNVl*arf)kG-7Qb)@lr)Rmj?i~4vn-7eD$uC!{}2 zJ@!X$RsB|@F+0&}G#ma(|7dULz~8#H*FU(`ulXAXx9Zxjp4^=B&+qmQ{N-D{?f$E{ z+Id|1DlYvZ+}~>$Y!8p-IcDyo#hmY5?Z0?q?XY*}_&)x87H93?lYN{+fA)9o@AuGH z!$ck6J9Iq68GUrVg@Mwf%mo8^+8ri-^_pvU502OF9`5x0R=wfR`A_s<;=MaQz0d#a zich)1^XTPauw2x4A3)!A{LG_ujQ4Gf@IH=ru>^a;*l6h=1ZTBD0L=6K!=t^s2Y$2O zocE89Z};vW-`(9iz=}L**4sGY*YDv+5y_L}M+Ek936RFJz&s4zb&ymKBi#jDLyvh4 zvkWv>z#!;|J5Ab^%|9MPjK8(K}`b~89 z^m!&m(?Hp@f=5q$dkbT{jk`R=RStuzglFvIOk&mpoFCrtKH9`~hxk7Aite}tM!taK zCWHf>`@w!)c;X7QCLc~`)VKG0_T+ti^y&eA_5wb;iQjbB_vfV-+;N$b2XWRhI7~y& zh-&YlJ&E@bMnOXB9{zWP6(ymx|K7?@qUUQE!PCS@?L*~=Kf3Vn;lui?z2n_a^jW$E$qsgPu1Q;?517neGFlNAf z*swOc55v_Avj!XoA0Yn*YwVAgA|z1ZHjAE@8&)a{mLNNfAsX?0gRRdwq8 z^Y8yZXE?%foQr!M$8%Sgmrrh7`rBjAbKIMII2%8DqS;#dh3$879C7-dzFqp z{zZ=CFX7w|Uwq=RG_AT^9OsGS`o!H=uRQo={~!K$juZYT$La6Avis;&oOk1SW7sNJ z9(eNZ&!j%&<2Y}c;~t3Lb9wiY^wU#KT>BP&NAAH1d6|C;p54K5?w$u9d-*TF!Te7+ z{xW{w`oO~%cZdFB?KknhEnNTngS#)kO5RKU64%&q`k~ziFaP(?_#+(mnkkNxpTGL> zqmRAoGr#kb9QQQ(L{_d|yL|PB-}9_!`1IZwcNTs7N}A)|ae+t2zD|E1P11P#|KeKg4zhti{|nm^caHl#PN9F!4RgQC zEs>|WYxvzJK`u+b$u+UPh;0MgGvuGREPgBaZQ^$dzeW6N`^R-`^Y|^{H_m+-@A)#< z#JwZrKCVIkA1=s0#tqTS+$7)QV)VV-X?l^groFH6vs_FFa%uXXaeWTYJj?0m=i?-}_bu{GeA_qC zmZ0BHb1US3a3*;dw@j9~B>A6shste`5NDCd-aq4dn1s2z=pM$w#rer!a|^iFz;+7P zJmly0{ubjEqavq*1f#sf)p1_KGwbBdd;cFBM~q<|zr*D3xi#_+oQ?Jga+r&gf95*a zkCG!e{zu$XL%;CLK~nG^Xyg3G9lijyaYS$~&Iufokuao$2Zv?3Np6~(1+6Y{ui!qE zj{JrEcYAw#Xp!a$&XqatJhzK0;lJSi?%TNZ7kgjX`_sKY+56+YKid0)y%)YRlh|?( zxDPjdum1=*lD(S!=WyCfxQ(4eR|PO8C&`Mc>4s^!+#avb9|(rRk!TEkPH@RoI+L|? z`9iT&u2gIFMssMm)$VjhM#s4E367hbnx2{M&CM??E-fEgIlQ{IzH#K}=CR`^PO{hj zAN=pst!JG+b8Gisu+!&i={|RAYiT>3Ui%bh9b4;5C(ds5JF$Lgd*|--^;27Yn&17j z0-{{JXx|mfWcu88pIfjOpTh_(?9A8uq}EUG++FX}TKZDD|JlvHP&oTsiD(N;7nhEo z+sfFP*!8V+e{*vy)9-D^()}^EH@3ZR&i3|ptWT=j+jgJZ+`7EIUGMX?^isMn;1(#1Ys$>97#`g;00o_%9T%;U3;ZS8Ev zc8_mw+1t3t-W;cwZT(J6mK(H!s^SulGH*wPRarCk7{D8Jzby=e@NXoNM9K z)(w{n^xK{9yQ+*y!MgJ|4ED#wpFRnK5`2Dh>jvXo4A%U0ke9u-lCg2y!G3ITo!tW7 zXIHoJC5O=eLpvbiOGx#72zZ0zd^U!7q0h}cM+kAa!B^vMaCGV9R^MgMrN1*H{mR9e*XH-4X;$~KVFSxF-(4Zo3C2$2WmG6+XgYtY#XZG;Mq1@yCJY` zq;^AO+i2~E#I~{84Vi7@wHpfCCTcfSwk_AvjXpVF?^m3iN9z5mvvaN9Pu94;S^YQk zF@-)R@$5AE$hH~uk!`c+Biq{OBirWCN4CwQk8E2&AKA8uKC*2IePr8OEj{IkK)r^c zaqpxT*f24A?qb`oF@9^*`t@qR4oPZ)i4TF>zNaYJyJI#}V?VG3SgGD0x^Cbn zL=srqf*N8(7=H1{eD~#6E!}nc+eSOG^xYB-Me#km$If%XPdb`CmreMO0Xg&&(aKU`Kkv_zP7ejgY`t?KhAt;M2sCB4C zNc0FH0YBb91}zhWfZ(6gq^~YiFJEui>GaffJZt>+<#c24jJ|+pqE))T!{ohpZ0mWN z=F_p~X@QS!&odpUK%3%yc%!`x=>s)iDoT)hQXMFJy0CM}?(++~m!O8|!fp)vJKK=m z@4ROhU4mk^mv_fvHr}v|@507;3!e8qUV@G=Whp=bVC+RO6jb|n^aM}b#m#xA6Zi{D z!?fJ(cYz}&*chbocCoNO2KE$&X3{y`S0Lc&^s;@3y^K+7${8~D0sAA$o!n}qr(hdd zkM~dFVYi1|%H!xTF5R-e144Z_bM4ssltCZs{ptN4EF6$#hneT^{KNxN&eZI5gN@oU z6!X+}<3@w{A%L^DPJ^1aPxo$}c3L0Y`jR$twfv7f z*YBduYOOzt%^DlEC5&r&8D{NZoYrfM9s6q-){WY89Jh#_BiJEq=ViDhV9(J z+OVDTtj#iZF0eLi=T6p!?d-5NY-g9Xna9putPR__$l9=-ORNpsxm@c{+#2S)*+G8> zr>{7Bv)H@G;U}E#;o#m{fAUuA``Cfg`hI7RwSK_aV@)5d^`~w%eTW@6O&@mlSktS{ z9&7qYtv`LM={0uXG=0?BV@)4(_E^)$YtO3!J#e1pt9|8ipU-W+{J`YYIS$VF=a0it zA#aCf9=P9EZ*bE5b78_&*v|91LX^Q?Kyvov`OmP}ms4?8ng0ye8|?Gk;*A`6<`}%o zXSQzemlkgn*wJT{*KtJXJ#!H*7Mj3`-hSRxh*9|z*?YP#ybac3@rHP5(J@Wm`Dcw= zW2fk^?0ud7H2FP5Ukw^?j=zfIKRGydZVPgQpOrr`{nN6jBq0s9Qqc%=JWVUo|8G{1xX+r9jdlHZBMc7v0FcSsnw!^Z~xa8f&0Xr z+xsT>oAd_fL5z55tzX{U>V-iKib#`%xvn*iQvME(=PiCcw$>lU^}wy`l*9P!ux8wP ztQTb@y@ngfHIDK;J+pr+g$ZOTLHf;xrk&JXt7h^*_mL#FWK3` z-Tq{Or(U0=k~krHCLGFSg5fNEAfIlBQ^BAA3{S{ge1i4uU&n<|#Lj_~oI?8C=jhLJ zJ}${E_YA+K^OTTPAEAc^U*tv?P4*?^9Q2ioqO;(EL1!sBgLCv8M+rT;{X#xg;-yg4 z*C5@_$Y={a3k4HImgImv+Hv|Fu(REaX-g3>h8ic8Y~!gV4X?DB}nW zJD8$aXo3K2+wF{w%#u#Q&dO52fAIX#5#Eni;kE*v=3M;k*xI-O-lRmK_0e?lq(>|c zO_g~fDKtb?%@s`~Q#t_!-AP?N8Gl{W;*HG6kXnk1a=9p3eq%VK5$e}`1$!o}v}&rl zaroi!iC(IEBNq#L6Q;ovPe9BVu75s%s8q`aTZf7g5%X>Gw#nYojs^xCDYmM$mQEK= zFEuqws&{=_#PXtBUOxpJLrzEoqfTh3P`aFwm9j=f_u;fmC|D@FP%KfssL1W9=@Tcr zvDD8c>aO5uxm49HAs9{G{JFzdgB~HceC3!cUIb~u&P(Kz+?yZ=78h~&{sl&HNG9-M z?%wU^GlWsA!=z7={aHqq?vkC1@ow<&vx%JbD+ZIzsYgeb%6Y(F(XcDiM5ocHAlv*JgtLnK$7+ z`ISm#arrl9qPk0wCDAiqeBh4`S$}^j&ECDew?zE(Pq_#uJ#TSjs2b`rt{8AqlXSsZ z_yK!ZWZUQlb1F?F7v-#bGwbJ*zLlTzh=Jnt&({up>d{B@LO|EM?>YOF=Mzt^uj1KR z@=M%b(@%0sT&x#foE;mkXJa9ku26$pVINm65y@Zmb=wJWrym~~7zGa}nFerJG)01v z+#pQ?a4jfRNq1x#*IXpaq=4}z24G|~lq4zAd3BVCL^qluF$u3mN~+;2dZ2#fVO0fh zQpv-cv4lmmN+8hjxJ*UYlDbYmA>x`K@wJetss({~2rpT2S+Sxz@e!#kOOZxM5zMKW zsRbgspYU!W{wh7q1-M$T%tM8&=qe?kA5XYbpe7|e-Ngr! zZ8RnufuPsVv@^lSdNMAO@!*rDNd_N3OETm#>>U}ArJKL!50IN*5b#|BDbf{Qr8ht4 z^WXd}RsHZ!YP>}?M!$=DbKIA>`@uWX^KKsWgV-}gnxq4fmf2tp=;=u8MO&eQqNd$c z3U?)yZo(>K_}oDl&kFh5Au2PH^7*iTQnsoFr4<%}W zb^pnf%-LN_h-H?>Clbl_lrHd-CizYByIhBRwCBr(;Y1XOK-(Y?zbX?E zhMAeVEGIw<3NUe$KL;nny~aNA4t%124cgSPZN2nCBXF(2Q()!a(PX=4;f@a1xpN_w zJqGcpim)m$88VE`i}=h2N8<#HQVUuzbW44;VdnjEfc$d#b*pEqUUhYiYLGd@l}cK~ zA3CCDV-OdW=Ouw^eA_o=foTMRCv}`P-}SONu&QL4aCwL-)mJY6SXdJYubUx^!xVb^ zm*fwSgMb_gxGw{}Pgfy<(5ZyESk5;iLqe&au2%wQ#~d$-sThZ7FqI+45W?W0=d%Qd z;Nn{v5%x~H1~-D{7so`sGDYRY`}{H~u4dmU@rH5pYV$(Q_V`;V-#U31u7)5)+X@*k z2EAuK5F{cxgPVCim3G&*t3Vgy*;W>PD}s-IhWtMCHN9#?6;qWC6@8J{c&gny+T3aiH-@KRkR)G(D; zdF)tY-tdyFRt<+G$f343NB)fb5u|X6YxZi)SRVol5_&g$FK*l6QhYFf7M$zn*T+X{ zrA#Ur4~wvmVsT`&Gee+4yHIws6i#FumLgUs`GLDYC&Ch#@2Dm`mxM>cHbk!$k*Z7AbHAf*k-ydr+-OEIWr z-mv`Y=H?gR_R}IBv%V=()42HbgpVBl^d$PsWOIdlihO|^;x6?(p#a>=q9XAka)g4& zudelrkjyAJloNUGA~K$WDBQ`MXP64&X3ldO4`GhW?(If!M$f<*70$8NN4I-wxlnEg zvWy4v%wcnZpFJ6HuD?p~r3tXHV-p-^u(M4tcAF_J#sTEW{B*ae!l0ehji;Xm5qU`) z>n+#kdK=HQM>R==>&(}STSJw|+|h7u&6IIIid7z0>611rZulFK|$)W*juE_*^!XgIf{#Y-5s|C&@ zASHL+YRRu}_d>%%gc}Q#sCgjELj1GF6-) z?HS6q9ETYKATu|I%q*SMthw^=Xd*qk_|#q31eqwjo=41}1rkBIcshPqw#!Sdskvxr zA-NhLdLctzeqkwhTHvX3UwGt>r@{N>$SPvTed7ajL&>8U7smoQY=A(Jonq%$DvymC$6~0lz>*U~ zjdVxa!B8vIh8((x-EmX^oOC-onIuATntu4*k*_~y9OnI3p1H`ApZY2C+9Lui4t3{l zzVNk(EXCjTd(ZOd0&?=mK$G91zXYCLgcrKOo#5`_PV|hqf}?g+{HPXo# z?;u9pCGcuya%ZZT>y~7tw)7*HPk+jY|5{BRA3Ju{phQ10GI6KLa_IQB7BG>IlHcGo z;6dlt`Zl-s2a029>5KoU4|@x_kD1VfJAvyat7&34s z9b5#TF2N+UV!?Q!5D6vtSSX$^M*?y3&Y+zg%4BYSGLkPugQ+y@XLE0XdmegRL#4{t zKyAAjjPdBL&hB$PJH^g1DP`io5lE?>%Q7kT-bP;>Am%p5Bg}E^uM;RT-tUYwli^4% z9}dxgY8n|`AaXemi^KDV?o9^aKa-aY+1YR;eREGxO}l3Jb)huT6nL4c-e5lFtJy@- z5f7rIfpR0<8|jze0~v_)vb_}g#iA1^V2tpYedWs2qwP++?ZhSsvjUlPcZPH`>A;H* z@DxF~`NGW?h(gxz^OA#yh{pqVw#ly_?67w?_WqGvrZ1qjW}17rXAC7`u$5y7ikLxo z3B?`Y$nj2L;{ky&zxBH)&My5RiubgsiIGmNQgCz(8_XF7g6zjb`<^KKrdv8@bY!3J zp;e@P=76h|Ega1lzB@;!mx!8=HStEd$JGG-UBzKY$;oQ2;;8L^2P8`H%w` zfZ0cOgENE}HrN)%r|gGmngi(;3tMvL^@}MRwrgi=O1%52WxzKmOM1Z+yemhZtHoK4RAr z8dMDnU6>to@vwpe(lNJZ-!XFHQ3ptIi0sgl;YkNz-vP0m=8O$)Q=1*NTa2p)J|$}k zJDU#%;AFA~vFA7tB;Iy_A0jFN1noFkgZ3kQ6H?Jm8b-!;5w*18j|61d^Kd?v&g7&| z6kAJz3TC&Whi4`gZDH=O1o3lphdVV$CI8Y*u*DJjkyZB#Nn~5q<1E%;6sEF z@Tf{Kpp#;}Fy0z+tL8SKAv#;85+xDhsTKU?O#bfq&h&;(BC&wx4#(_(%PbV5ennGa zS;Gi;M?)Sn5|3r3Rl2LHjZnyKY>XL->@F|PXdyc+&~Q00V(6}HFn{yi8>dBtk7FgR zS)u4=A}Em)Odm`lk8&sd8C1K~dzJIYrY6R{9v2EN$?9ks;l>J7E4{`V0#Rmu^GIj% z3=dEO`}^(>kYWHZtpp1L7%dybZXiw?nWfMP!4T-hh`1jMIL!w3UzQ;6j>3fK+eIfh zc1#m6Wn#|Fz3r7juju1l{tX|w8mFFYMfMr|>#y@!(Q{}lpa)a6>L$j^<(EaxNYdqU zt^}VYEU1>5Z63o=A_`0;JPe`jNROX*(}&y$!qlQ>n#&g7J)-2tOBUwG31cheUw8K9ZwrVxgUigP$en%@J#7?4X4k;LZd7wQ9;^IikK;GCRx+9Ms|LBBHM%!|7 z#Gc6o7FRc$A-mwwWLXIfB_wm?m_pqycLu?yeIKGSpd;|k#9T=sUVF(kaqhe?mMMmE z|G7JNeSOhIbWNh?j+4~?eAOGg$!@F_O9srG&jnp8XXk<HytR)!9e?V9c5ye@ql5*HZ&qbsD_+3XJgs+-R?JX)D2V ze4`E^6EGZIJv&GF6$~zai#wet&!X#_M@GBlVu@L1B7+^7USa0N8Axy={0#<`!~bzq z6!Y@ity%a+0WdIAU;w`N&Gsw--@b%_M-cqrL4{%mEg71`;@$y*P47BPM1@bdRbG$K zHL4#94iR=%5*>sNap;dC{z*Dsc!mI zs<%s8yd%iGSJ!lTxFt&Qyh?VE%Ax_C*R}Hjs(?y9J(lhr0)T4prvKi#51(8_WK@W{ zQbnk7L3sJ`r_Y~Il}<|Ib*fhLdcA`$4WIWQ;-xMm5cz)%Lp`XHZw0Hitgh*6K(m_Y)Hc?sjP;T%FsL zOY_JPk|5(_lxW@4uw`S>rg(b(wA*v{c-0^79QK8EvbX>)kSQN(N}_5}N{0eZG`t-t zKAuVe)FR_v@C|tvZ4S>~KB*^0tQc`W|DIR$nnPATr`7Yg!<8JnTYm5H9tL-My-@d6 z1?rX-m)t1zCPb?EEss?yP1{j*KOaK&UP<4GI{i0sXL=_wF##MebFbc_a0ge*r2RHalI-BO(A>apg-1XahU#79Bx!)gOY3iV{k>PtpF4JRzE`hi(-j3G2sESX zj2i~p@#J6Zce8Vh1hWK|n+eh&d3!5S$gbcn$_)9w?+3?>f^?9^6~&%D3^p> z`k`af2;i^wj0GQ(GTdpvEi6`L5}Akp#SjSQJTM%dVP6jHFW7=TfST#_BjYGC@-vZ*M> zxMJ9qBd5fmPfBN%DE**|Ojl*I4&~^onv@q^FDsPGF`~Oe-#!KLq-JSFEF{$w)w1#L`A$w&3+A$auWWWgRfKC*l=w`3qPO2}T0?)}r=<5a_#SAjFm_hxPI1X%?wAR;W> zWdI^|p3o4a4G|sfqS*IvIqk#&U9l(Q(ulQ#+1Dk|oC0j@`l- zW7lzNdAJ}99l-bwyx{%FmW?NKJDf+|PQNpkn912dLjGMc7K+Adp>V(utWZTzcxs;w zYf_>yl!Vx1W`i=^OfhN)e*|7ta5Gx66hf^~B-0v=ctn{HrM-fz5HSU5*r1-|^3vw{ zs3NI`=?~NQ1zeWxH&vFaLNY7hsjC8!a(RJF6f_JvZ%&t^-~L&u^TA5g)tZ=adk)WZ z?p=&GLcBpWePK#O&4nmWG-O|9`#sU)%S%&%+M;PX_QwMs`9IK)!YO!$`^8=|jAX`S zor>xcb5s#`Hr9Dbc>vl>T)mgbNFav6`8_zx@LklaoGJ<`(`L-ac!*OZL2&|K!3lh2 zfrH1fj|DqI5nkhDIVeLY=3$7KjYC2U%%CDZ7Wu)G_`#F-!IMC2gwRM4zvM~ILy&;H zcC}n+=EjSWW)_289R-lF?|L)K;`}%i9Uwj^A?g&mhek_7XD!~TFg>JJsfd|OT%EB zK-f3Z)%0pAO&-&bCmm}l7<``mF1$ArI+wS6%6*xfa5+7kYTubv^_hvJIieD4$Qy~2 zKpUd*;}a*3vNys7aSylK_qDa^xm#~i~g(b2{Jqo#gY53KrUM%4i0NLUr%I2v8?`2in8^G0tvnt`}$p*6UaL}6DJgbE?{cdVIfv!1&(6DG8ki@ zH5x3R&lL4RhUvBzcC7ILYz+9JQ4o=2Erfv$O8!uc#+&0u1zIhVa0ito!B-vSJ>uA$ zUsD7N$dp(x;xKAi{j;vjk6>)A_Hcc-E*oqo0pRSYN z(xjd#n+umryH#x<3w#>GmD>Kz`ws-RDsf~XOpl?(fbZxlf0>TY#< zeMKR|)A_byn3MzvN?}Z04uZ6xE#hb)jQXA5=DylXo?n}TjK1p)7lxpFp9HAPul~m8 zKJil@`SB-AMcUU8U5G3yJD{{hObrv+za1#SPJ zn=$=Q+Cabxebarce5rA6R~?+P6P`MI!H_n%o5`b zgi3>F;08yV46MsQ$uQf)P=tY31{N$J*^M9ewn4Bwa26Q6!2I*Uy_T4V0g}SeScsSH zrZyC=FBWI=(GXEgJ7Q4TH)2Z!RY*e`$!ATO@6Mf(&AE2k64c=%GT;uFG!ixK@sc6M ze3nPmG*2jE4HtAiu7`C+uOZx}hunEUV~GUR6qSV}lJ=G;B1SfX$z&!3g7F2fq$(+E zQb~CXmp>v%LLuo=J)W4?4*PvGK2IDqoWg>1;<%)hqP#2_hGGh)o5F(SBQc58)MR$~ zWA9(iBZdNKTS=y5(`OY5A&c;QG>=-NdOhOyw7Lr_sl@Y&I^}`Go05g75h)^+wuTd^ zIZ)klET>Do>npvy2Sr>kryV0E%iZqPSHuLpB2}u$+G=WkL^1r)vg#Qcdi1dl>P+*V z!*W!XBsGG9h(;C`Uho>RcRc)-(Q(6@gr# ziTZl2@4QDwkipC)^N?<-RNQ$xRD{iZ<&)R0-nCOJHw$nuBCJjTwvzE63&{@{&WQqU z1q)fG-%zdN_))N$0~P6n27}PvfwUafJP0M6XELrIFn*E`1qRYFaIXddC4vaO+J05M?gE&KLj9XGNwd~^y+wVH+)7@tk>ZM_RlS-p{czsQX zslUCGwlq<$M0F)n84n9uyqVVAQX&%`iXx$4c}Fh5&r4?)D68%wCrRA`@GZr11<6oF zssyqz?~$!XC(>XoJ_LQvZ;EnBD~VV*fazcZej1y%ejoSlp0T_@1+Gzp9Xp6dP_M<} z5C&x;6;B@m{5FV2oJ`sPB?yAiesDVnD@cCFqd11;A;-irtpmisBXD=^luNm+sdM)U z_n|Nv^+r&K#RAhvqbPP|L}h+7{=7Ko1cMC>=D7WjzsuFjdn^ zX5Go;I4~Jah>F>eD;xssYt9?IpslYrOUbD_0*O+-Nl)@=_}mecop@zY)->qc=qs)~ zbuw8@p708M&JAU!=ctR+0#O&WI%!`bS{aI)rCPnHp%N!3<`VIGyihUSF4gExvy$X^ zQjzCc3lAQBbu7kag+eE$HsH9c9opG{r%UI?J5aZ{5g(DTN|w4r3_r z%I@t4z38T1?RI-neB=k-BQO^#@k7rL?!zB?=Hox~@mIfc_rk*blN1mr^SuTNb{c4jjN?+^ziKKrj>Y|38ATzjWB%0)crRVzrMk+2~7y*)eAMPw;eaxy7L z193~HmN!AgT+E=7u>g9n6m9rXQsFh@Nqt|^GAI)DhQa4()WH2<;cI!J^1DE44l>tEE|asTt* z`@x7e2+Czxox{G{?-RIJzjA3|cDh`0ncUOD(@1q4XfYT>3drn5YHW}LW861D2lk;h z_<)R|2A&rTXoIpiaUZOKRo!QM7LERE)f)o3KvdLj>9@BMW6Y~7wy*7#%v44u`fx`e z-VRF-K#fW3@I zsg$shC5QH~4MnU2*iig-!TLAr!r0zl@ni6jp5;ExeYR&mKqUU(z3ZKCJC7)Fa|1#?c{<3?E=JObFvOCQ0Iy6^|y|Nc*Z;L|_$-q*bH@oV>9nVziIa@nQ^m^L4P z0fQTV;07_qu(OWq4wsx6$lE0qgFxXHaL1Ys6dNW%FfAub1I+Ih(#v!fejJ~Qg&4Q< zBm4Fd&uTMI3%4>T1G6QNZ*ZBi@F) zMRj3n+lT2>W1dz=@U?szDkAipUW|;k--8e>0JYWq~t_!PwB@ zLqyTxAOoEQ=xj#Ly2)K+Vj?i)ozA(n5(=NF_27zW2JX?zSq1sK`5=&xxW`)7%HL~pWxP7YZF137;(HeG#DtOmwR~3~hv#64Se>AU}P~1?4 zcqcDpCJiYfX-4L}9on#HCJ|Y18%m^8#RP(U4oNvgG=}ICgUPHHdT$=S**9U&x4D(x z(rJYFsMRS%sjvcv3^6G}QY7X%%+Ny$0Ct-p#j?oBDDxGaC>UPVk@eL>bF(9znNl{R zusI=qhUtPw_8ln3J4}r@95A3a(25zv%NQi`#BHWE;IR=1zUIDUlw0(Y4^-8+F23@!%Nywpu2 z#6;D5)5X0@0|o4|@lC?J;QgUmh83)>KROIW}2{Lv!|^V5^V&2n~B zVKWT($8Zub4m?VrInFdg$S9lbb|8QQxR9kL84b{gofyR3gE1adMLD_tfpjve*p3;1 z2+M0_YIc^Nkf(N!rOHTZ*%>J^Tx}ZKA(hmdE=^XGzMSUS%&Wo>ik`INheWM3lk%th zicpzAPG4;eyH2O7BV#%*2R2=FZtFxfI-4dB+sh$ks=Lg4-6&I(^m?5)6)Ho<`IJ zDt#aQG-}SadgjiB<@t6(A}g1j2$fmv;DCeSI9@|VGX+Oe%EF58d4YuqJr=k;%02q< zgJ-uU$601^)Z*oWgQhdpH5j=8Ph*TR8RQlL97V<0nlbu-3aq`85{CU{QKMgqBfK9N zW2Om#udy2n#oN^Zpq1=WQD{~wy4^}a4DniV*c}+kBz28w@jz4-Lup--1hY8A$D)DA z5nq0^f)Z~MJQYAPUWo<}s0mqUmv9{OXvnfBr>Q*>&tQ6;J5bpiiG=b*Q@xn@(5OKl z6lA;MvWkZ`DuGyjC>4-hLaIdP@FEAe#G7d>+kyi}Q$c63DFK+mUpbh<-B_9J9hlYn!Cqtu$ik~1 zKDyj27E+iq@)R&R%)yjcWg4R#rnW+p%FNdS7|H+w2aIE`5Ws;0G>iohx06=?%6psy zmhYK2J@NRZ-8;@M&d*GBS{2j|VB*%m`yM2y21LJY=@^|Qm`unP1n5ANm|+~WAAn}q zchLBObvy_sE#UY}=M5y%fiYN~W`JU_S1^%f@U0~8vrvA7X;nMWI!hH-yQ7INUm|R4 z@@~d%M16)8LWLm_ry82OrSq9lo>o_{y}X7@a%z3bFss$177kmcmJAi(_>iI+Yv(kV zC!CJe#&!_IPoUa+TvKSIr9_8|VO>YHP$m^n#Fh{rOB{Yx2{^#b$6)<@f)Eo7_h?3z z)ktQcy7+-%cf#lQ1fnt9=d)187@dtu?o>>XL;0C>ZRF1Tqp3|F4VIRR=8jiR)(c8xNUkhr3PUh(AU@Bf zf#)XSbG?T98SV?*5B1*ksW-o=n)A5eY~D`bTM z7%{Jmv^Is81r&CPAs5z?6N`SpMk%3@E(R0HdSxT%i>R4uN_Y2G(?Q_!VydD;lqsoY zQ-*PPc%tZ^qRXOUsnsEgkSJBG5|qA`$WN3LZaMEml?j~Wg5sgceDiCyqTm(+NnA*a zW1~rRV$>I!X-(0`DhN!Y)p|M*2zCsCnF%B62^P~ypMQAtST^4d)Jtw_x$3#Y#n+%~ zFwYL0B!k9cB4sb;vm0~Uwp0$sU5Ym;Nhq)I%T*t6EUl821|1aYAu1JfX@lf>M+2yq6n4t@+Yo6a{qnzUb*x9>66QgljE)7 zp+>0~3K)!49lgeQWB~S$9`K6;=d;<$utbs^Xv;|U4M2tg^yxVK?EqNT;YtQvILc~} zQi64K9ColKe!7kxv)LotY@R(1VfuCq=}O_u9R#5jdBtE+soHFCS zQL&HmBsjAqJYNH_PUMwwDJx|PCVAM1xGi(0pkfjapBT$eRW+$@i^;fJjk&aVsvA;i zxKpgSVc$jfbv}}6rPA84O!hQseLPCEMr_HW9~m-()}-pikYOgTucVF#L-FI6EI%(J z&xV9HnKIU&Fu*2ZHE>pt1=ohBY#52LMBSiuiO*$1DPE4%E|iCZNZjx)$(MSl0xRCa zY-WZf#P$mGFQKEJ=I-j3Hv3EJaPpA+UsA7VCpbZRKhAU4R8ff{z|y33iJ;v zvKeS2kkC;)ASPywvUH!9mB_#Pl}|kWzpSU89Id9j)8$aob+FMPJ^dWDH# z>u9&w98pY5j%7Q@y@X=rirZh0w`L-#bAf{5PY%}_!&z4(5HxhM`IfW6pT1ZcuT86h zErkSHELA4`;Zmc0={MedERZ!t)$2}XHT@lzJg#C>@kb%@r~t}FZ7L*6Gct0J!$Z~p zFM1p`4Zn~2+&}MOwy#QkSe_<=sdh)PW<E52FlGxVqhe@9d#kyYyaOYiIr-MWe3xq~S(-{;$$z9?;1_ zLveuH*aY4In9kgyTe-dhcyrb%k_0Nw828<6X~``s?zZ;`(qNbj;VRcA!`VBBEZ&^* z8Y^ci#eB(>w16KzgWfEAL#h`As;Fo)vzBY)l-*owRV7hQ$YOoVRBPF=_XIscZE43R z8j4FyePZ>=5hlfVz(Flve@)~w+V4U`DuEgthN(Id8y4vQ!$ceF6<%d@#qp&2qs zJn%*^O%60;gz>=Nw7Y~pNW_tGL5`S7?-XhdrS5d?3hFJw05R|m`mOg%1dHFW@8`(p z$luXF!P-Cj>oj=aRWK`pPh#2v%AoSo(3B57?A7#p?zzyJ^0~=x*FRY|v};!lS-Jnd zJ6cm-3?+ItzxT)F@5z6`oURS7*vp|37_&zMK7_}I7KVpvsi@2rpBPLFxOZc%23Mu( zo8bd5<|bCrz?2>;U$B}Cc3G`ip;N>FGut!>nAybsfoGONi4A5E6{e9dJgwV+bWx$~ zizF36p2ov3YnFUVF$I9dY|}N>ZMkEe-1dYixHZRuIkRn|&n@ucU*tZJF}5 z2Y5CXXZHS#di?_+I#oz9MQk9KVklfc=bAv0E%WX)R1q z-pYn@D8{RswB~;5PTi_S>hzS$JO7avUJG%=TYyyE`~wAHzT}d>=&zxa$kn`bBqO2H z0-wCH_ZQ@D@(Oqtx%k+|sOws_L z53COBnn6YfguHikWp>&jBP#rv6gp&s7tZL$%q-mfCgKLnR_b(}Dv1zMi!Eky9X1XO zsK-bP24@K%i^NQFCC-y#>D-P<()6rv7-d=QbOMzyETxm1!Ez}OW=V*XW%v6hVqY0~~WIYmagJU(>bK7c=& zu(B^@mH?v6%05}G^#OnK1y+%rAP$ZN&D9`eR}9n|sGtrYo{dphP##5P-p#_COTBN? zOUz77Q^cnKeGKLC^V#8y`0ZTMp4YBt1HHV9#cJ9x8eGmi|i$L2E*ma)LvR!n>m@1eZ2 zXcxg2p+K9h++jPFn+|I<$(cN(=*6IsPU}HlO}8{X8@AjU7&@77m23dOyy6WB!ef?s z9*{K8V{)q~>tB8&r2+FdK8G6fq2meF9PT334DqJZxJm9(>Yk3?sd#`uk=9u~)Bj};!hxB)vqEc;DV4Y>s~j=@Cgk=B0kxOI1y zo(Qa9%?p$Ot6uUCYP4HYd*K3Rz4JF?*_4*q4oi*h5Wm4Fzt<+uA|itxv-Sb^taoZwla1F!Uv14bFo%NKgw48znLLB^_7%P+?H@IbHNilOt++ z!GoAsR`rR~I=ol_h$NRI3C)EHxS^bY8UL=3)e@INX;fI%f9k1=j|iyd1$y0zdJxrE zC_*4Pp+4+8e#k9Ui()z?1uh;vH+kH@c3Ptf*2PJrNP6M;!?nr|$x$h-{!tE-p($tW z{S8Xne}Z#k_K5OAJ%}avhEVm)R3cy$=mJPbCo4Ols-qePHXJo*EVb@9oXpw0{naY~ zi7}7Ptr_E1nUXqEy~PpRr6E8Tbzob(fEZldD2X(JqABExcri@xEn`}Q$Ez7rW{oHR zEK6FtWgBwj+{Rcs>PFQB4-ZD1wey9U^|hmJ0DkEE-aqdRai60f;=EYPKzShp#liYM z>Zo!y`b=3ths&)|EbB$xU~ZURCISOOO*6&KB4QUQTuw={2K^Jj1OOg&ZbF0JO)G{< zWMnd)@x*!GgsSL1s75b7!RojP%3W9@LWQL8XG+y@?oFt*|SvEnFa8k=lUXYn%!<6;D|P-_xuBX}u2+#uj z-v|`%JKV4WSVKiZ8O#ykUcd!*R`piiU5WF;Ob$L)z(l>myPnk$$mcS=tX4xZ7}t!a zC##CAw?$L0*qGtrBd&Oq z95(|MUP1m4%2x*dpvu%!DTj$JDZ>>-%&v#rKnTOS$EHTd$b9fMPrf!SA;E~bxqb`{ z=5$GN<*pO4e+VY!Ec&IOmih0=9|9kho;SMFzl2R7Q#Cyq>lwHaqO32LPVv|lXMiSlX1lqzz1 zVlo@m{ce$`*a7H-QzAMmDC8`?36l zqDpd1zW)`e5K=vm9;X%xjz=7Cmk75zFgP|XFYyhhQDrW5>)C6>263Yu>-79v^ z8QlVNA7m+|cZL-)FTPWqW%I7Fq6SJs3Ct~pg z1r1@RjBw{F3cVUtSxg8M4@hO*ReI`*M?^swrZ?*vs!M&LvXNa_Ul83IR#>yJc6{LK zHD2n_RfIz{5f#MwGrrUAl3URn{EKo6dw)qjK)!&;EzcN|m)9OX;}zXq4{9W- zT-c0IR~U-ZT`s7Y8aSVKYOi?f(i8dqc8BaKN- zb(eMcQV*be0%{d&6SiM}r&_XgP3%nTlW&JRnPsr9)Z> z>Vw8vJ%p3Ub?gSLdq8Fw3Oq?kM6AQ&xIqBU94hG9CKK<19YhsZsI2>*KbhNlRp z4zT9kvP(eO<|GhRAxIVg%=uwD`87=PK-7sjP%&OIjUkto$r=PR7(Wbi8TIfUc#MG5 z{wbDIjA%K5Rhr}OY*}$ZWgQbu2$o#5M1eP@?(7?<=>K2ZmBq$&Ugx{-`|Jy6?kpT~ z$l-7n4u_;@ij+u-)JDmaHzl$>5=Z1jG^LW1WVbPFG_BjTDH614(4=UP)B*aC0tw=@ zdFe}mpnVBo6fIDoK#?X0P!uWpTI7lS&b=esO0C*xWv!k6MN8?< zpRp$-KK&gp&k1u!XI9|KiXdv4Qk$8VH-s_ra%5wKv$S|J%D%(?7^r+(*i$!`Y9jX3 zQP_Es9ORO8$ZVidl6^-!#09znij+vc1{~E6PML-31o9!%=zYtd5Cl%M>=%_*N<(=E za0+f<!wAAkqT1`XH@`>_%+D5|xhKRm@_vV~ohMoQc8qM(zYC-HR%2 z%&=oIjdx^+6ZLFTn5a>aV_|$VGZ#gQI088y!9uaRm}CD@HhtTl)Z!=-Y5+JBmk7S6&-7pjqx>+o~ z1U?LS5}Ti-@{-%Kq9e%ipR1u>R5fFw?mFU3L)L8xc%Tz-H}KJnYq<%iQT#Ttjh4^2 z5HD(q*VJoOH>HE#VBDOY3sbE{sWYLPPTF!{V5nYOL54*+mn_vMOBS^2Y({l5`s|V( zZ6yGIjWyDt8Wu4n4*Y^p`;qt03tsuE%dwS+7*i$7&t7ec8ggc^#UTtaZS$&X1UOa{ zxA;%?)7)E-+CVRyfe&$`oQ5(9x&6^PVXHY^_i_T2D`F?3x?AXRr0+q3(L7?h0`OpX zHOSimr4Je(DSVyo&jih;GAaxgThu^}UV_eAatzr=&sK{?_9hg%7n1rc+vVOum=NW8 zJis2L&Pv@#ZoLvIn^_aeevE4-l9z?W^Zwc-Yb1?{H>=o-)sz3g;Qj@kMPO*2MH&eV z){EA_zaruEc-3&!-i}tnwqy*$-3&okrbCByfiU2>WV_NRYCPA z*uyJ`W}4R{n?S@urVv1~nvKQ0fV821;)V2nzuQh4tSK3sxn?5=cN)HmbkTAu$b01@ z+3w(FfF@Gp-CnRqoo8=mPE{?;e$i2Yp{rGW+%W+Y^S4_EsLvrzk}VJ@6JaH8PxamZ>C0#w22U|7XL&2CW?Au zE}!%A)5q0kOfE_pa*_vl9@Odr+wo`IceyBYi+O`ks$PQUVt40L3!O#;+YxvExvlf( zAb?w_T0IBC{}8PV(7sdF#NR5ckW2X<^WF6s65r24r|5EVbk-Tv|mRZ4b4FWF( zn~*G7gGUS-u#QqdY(uDalG80OuX0eHH3Yk?Xh}oar4DltQ0C6)npU1qvHa%|rZ&1? zccO?=u#y^^EErtOlO=dbI8Gd4zq0+?cd$;ahUt`K#7DCeM!m8<&e^yYKn5YNQapR> zmKO73aW&Pd6jW>R+6&c)nS(~JMEy~i;1O4eBrF|3Bt~ixK|0;@b~wWmfqDTyd-B${ z6L<2cHnxisfSrhmf=4{6ovgBV@np#78KAxCz!Af$JhRxWz@Y(|6s!w7xOyex1`gF( zvbF)S0DdGZGc>RX^efaLF@3aeLW;xNf=_813^qzKje?RhB4?ZvtP&I|vd`-%LG23j zg1%o#=5m~(B>rFb)!idOT@4PY@80I8tqP|0~w)P%mG=3G^snMeQ_K!k6) z%-g9%+R03wvP3<%wL2&4QH4P9SkQ8X{SN0q)6ht*?q1m>IA+k3a}o&+FIjT#j}lcSpbUm?CgXI zxIZbTz3uYCqrvwn0OOZS^!v>xDPWB@H9-_K-`DC8<-~a87NBOoyD%DU$8lqyDUnz7H1^b z)m61VHKTUEDU40V_{p{+RWq=BD_=$d;>s9kNmeqsQo({Eq_SIzV4oV-q;f+M9D}=o z_=KI+o69?E;{1GSWODbLf@K?H4O26dO;O4I2&sPR{6an@Qbny78*5!IT#{9y3-)Ww z*SQ}8DbZO*Rcz>lkGKIbklZ0!054!LknH4nCF=hIl$L_TjYL^41-zMP2^D5Pw2V_p z895GhpBIdzE%_Z35H*San(Xg0?;v-$#N^(!v5f?!KJ*X)dc4QGIN~7!#Q@5je0Gm- zhI^yFB*b2 zQ0=I9=ohUpnPBwi&?Nt|7w!z%ev z$H?dFF>bY|I3c1Cv-UhHX03x}0KA#wg zR$kinbkVb03XB3rPH9GE<7Q5?txm(Z@Vo7}>-NS(8sErCmE8uG!x@ZkAr?FXfD5(7 z7D*j)h?8h0GNN@M6_W~u;jy8`LTDGt8WhjK0|&GO+AU|_R$qx~P$=QH(5+@llhP%C zv#8KR8VR60BB{e{&&><2@LY_Ab4_tLY}is9&#NejQJvMT<#Hh%&(27QC!o}um84mq zLl)Am+`0;PlsNIzFX_o%isw?@))>Z+J@MHk?k_-n(z~a!v_?ViXj=-qhrUwGgO&-Z zR2|z9twaUx4)TKz2TDB;9wY;00LnC2bFA|HXqFe3MRp&l;n#_%WF>9*C=umZ&w`%G zP1Vvy8m<_RRnJ1E==|x5lt_cfghdx_dXUCC8%wY$k|gsQda)z%IcU+_IVI-4*|UyXm%^;dXyKoSe#u}3Gg%xJEzsCX17>Q?@mwY2XHYQz0 zVgxiqM0Gf;wIC6lS7 zu%>C)M5mC;bp>nM0pWzmEMytr4Scp(u$4ZpStqI5rkEY}RYbOs8jg=+P$Xy(5!EAs z7pyh3MAR1tocsE3NRW2Ah&)C3^4WH~BpXR>#KaRjjP#Ld;PDhWAK_aVMXRe`RGokh z#))`7uN~1?C~}<4o7{6Rq5MuLWRnFk?y%$Iiylm*qRcz~Y3Lr!*;2fbOQkv2OE#um zPc6d`6@R?K#*MjeEWk|~RZ0O5{+zwetso~udUrZaW2NB)2HoSZEO8(tCQ&aJl+1>t z8wTC+5j_RvJ?*oK_X?&4IHz(Bk!gX=kDeV<;}&!vmYb?4jSjj9%^z`-^&7B$ZtNNf z$BnTrFjbS;nSv5AptS1m9I;7rtx|wH6O@eXIrLE*`dObxAI~b(M^alPP#>{b=qAHH zKKs}X14)Hu9p*ZKiUpztm^^SbLadCv?>Zq_LaY}!NGznjz?I5&vl-S`bS}luRrAXz z-kC$h3mz^$qVuT?)E&1tYiW|}A+RvJ6jdZ=Dg~d1IHGVl(UcaZ=~8RvgGY>Uhi zd`sbXC1!$qX4p2lSGYHaZHt+aykXlxf2i1)?&~s^^aspY;N0D3UWe~s!0a-6%rWCL zUqxd-@b8)pvip938GK;ZVVms7irG~SQ9aua@0 zA5W&+V|u~0R`9(ZR;x-)c1Gr&^6>!(Z(m4R#Ow?c0O? z!R>y{-#oZo*M9lr=8S(~uXo_D-0to4U&Ylf;L_J{=@;StUdLd2cr?#3^8hX8LhoAt z#hdGgy}QQ`@aMBQYZssF;~e_4zx!anhsHW4>Hy!N;~~!Iqw_5clqO{%7|7G^F!jsV zT)%g4yngR+x9_*=4S&IZq6bs&-|^{v{$E#o$`zhRFAsy|qQ3h8`mW>W6k5l4-@ynU z;CK&9FbKv*OaCx9s|^BRp6?$X4elNI&3f~ce|&tW_u%;6-rxW$@~~NN8>BlOE0+N3MCKXtYdJPhMp1C-bZ^H?<0(Ygw}oh?+7bOLTUf~m7PY< z*D->piILhz$`OBj@zJA4^;dhxd!OmORtJkNRXm*{mZ>q`%kiaUDK}Z4UWQ(x9{CKe$+ec`}oKH;CBDu2w!|~u+u;EkN5ii z_U1)@>wf8$BKMP zB-Vf^Y{9!c15eB>@?z$&7cM}2E+Q9j3E6Wi5JqbtvvaVHHktEa(~Iy~T?Xl00pUIi zCc1{Sljjk2eGzGM*Ws@DGz0es^ViG|;K2dzHo^py5{t52D7|oq%MT6)jmAoYj%)44 z<70F9cWZcT505j$V`q4r9Ui;EaeaMtcw8GE*D*)z$qD9!W(%($J@e=9(edwo(b}Tp KKm6dcU;ZB>;KKX> literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Fraktur-Regular.woff b/static/katex/fonts/KaTeX_Fraktur-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..c4b18d863f31c568adb0b8de64ff2368cad1b656 GIT binary patch literal 22844 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4318d938e26c1dd40212772f4c9984b7fbce6adf GIT binary patch literal 19868 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 TnS<+ZgZ~G>KHm%580?|7K50xN literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Main-Bold.eot b/static/katex/fonts/KaTeX_Main-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..80fbd022363e7ee84f211c9f814ffa479d588815 GIT binary patch literal 60688 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Main-Bold.ttf b/static/katex/fonts/KaTeX_Main-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8e10722afae5f5f0d9ac4dc5245d445db9151f2c GIT binary patch literal 60468 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

0U>End_fG6~2M%=g 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Main-Bold.woff b/static/katex/fonts/KaTeX_Main-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..43b361a6005e845717c8de2fbc8980830acfceb2 GIT binary patch literal 35480 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Main-Bold.woff2 b/static/katex/fonts/KaTeX_Main-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..af57a96c1488802f4a5a3d59cac03ad04860ea84 GIT binary patch literal 29492 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 Xf;9h=;B5aP!m4RV$0k;o00000frDRh literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Main-Italic.eot b/static/katex/fonts/KaTeX_Main-Italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..fc770166b5e86b6a9c18440231ec09449c89b634 GIT binary patch literal 44132 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 noxukIgdR#W!k!Aw*ZU(qC&D3N!YOEao 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Main-Regular.ttf b/static/katex/fonts/KaTeX_Main-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..da5797ffcce7d6bcf6155a5744398fc92ed15cc4 GIT binary patch literal 67996 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 z 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 GyZ%3WHxvT^ literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Main-Regular.woff b/static/katex/fonts/KaTeX_Main-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..37db672e821041b2232c741848d4a37052fda363 GIT binary patch literal 37620 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Math-BoldItalic.ttf b/static/katex/fonts/KaTeX_Math-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a8b527c7ef6b56119ef869c96947eb0f3228c20f GIT binary patch literal 39744 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

u;albMjYz@PA_< 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Math-BoldItalic.woff b/static/katex/fonts/KaTeX_Math-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..8940e0b58013e7002cc8af7f77c2ad78460f9411 GIT binary patch literal 23192 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..15cf56d3408b3d1afa9ccae05dae5de94e91cdce GIT binary patch literal 20036 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Math-Italic.eot b/static/katex/fonts/KaTeX_Math-Italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..64c8992c477ed0007844d3cfd3f0f962eb91ac89 GIT binary patch literal 41676 zcmbTf2bg5nRW5q=KKY!=IdoT7uIjF;&NlJ{?}T&zxs=k^pC$FNlfC>&OeO3lhK}iE8ml(H~j0rNWRwbcSurNlH}Xp+4k+; z*1oOJkhCnVOGl*((yDYu+K=srq)RyLlJ;P0UAkAgOFD<|)6#K_c|dv)-|v?$mmHTh_Mgj^M0It7mh!K{blJ9F={~S#1*nPy;JRm`(Pl$f3NfgNtUkc-hFic z`R^Y3oFx6iSFyM4;E|sGg}1GBW6)#xe)imb>sQRryyaK$epj&X&(1yaP`X1>?v^C~ zLpXlv;*~q^`(L5|^?gZF=OxL0-<|6ZVjRuQFMJuF#+~;*e(|mU`=Pod1wJWB&wS<5 zh4u5=`zKR4_7eUNU&0PO#eW{x9>n+jrTZRw>|2Lj{~O=Gf&cHn_x^M1ZLa_PF7EeN zIR3}?tv_~!J;Y~lY!%njgj zxboBwAN(L5iOzqIcz3*i@3-6DdB!{W?^1{SkJvB$>2E&y(bnhnZ(c7dN&ZJ*0b`R5 za1Q^Y>qY6L{D(NcTS;*~321-YKa#bd`S| zd!BPX+22TgYzMo&L6W}blm6vj#aZ~Va&h52uActhbvb=~R62=g`#;l?^p4wcC-xZ* z>fl~X`jOO6XR!VF@gq>olAh(?m2&)t`2RnpetA;L@c&!t;7{YN1Nc58b+AuM30{%L zE18!owODf8jajjMC`<9etKfL}; z_63~tyZHX+(hz1V$S1|IF#jsXO-eajE6n~>%F%oAJMsLxq+aoiFXG+4Ee+AT$Syp` zqSVHJR*LcSQdm}`75)Z1&#)Bbnq;%jOL;t3lD#NZ*}sW<<=7p#PF?E5c|H7;6lLF) zYB(;Qi;v?uRP4J4^D%+BdO-^CHaySUF((g5asDi}FH2s25T8e-3g&~x&$0JPWuh;u zf)3~LAEaphZxcKsNngbtaFo<0DN+NUWzbInx22^X>7?|8^bz^p^84kVl|LkZME({U23>vu$D&ZsYyS9z|Z}P|GYZ&?GV&uyh`ghm={Q8%# zf8qKEUi$AZ{nAUn_|ivS`tVCX|I*LB^s_I$`=y_L>FP^YUb@fca4s(Tll);C-mE!L zaP1Dx#Q_|21Yq-O%H~#UL)CP{v}~8#3OXNNWvgE;s)v%+TD~*;<2D8|kwbYYkpa zpHDZwxYAIHCqGqY*4)Cmg~O*-Gr3Ii>T0^Nva*_K)Yp>f#wcx#uC1l7IfK^EH_F)6 z{FZL?((zsz`NfshG#=vWdb(k)te(Z5G##^OYnZl%&nC~Vt*s>+tg^P2Ye*}r7uMEl z4Y`_LNH>(iIvz-!TUl+Wx!H!6o5ka=HQ3o&L#gKQTqk~`C`m8XymPIgRvY?U&76CuP*NlBW`MmmXyY&~T|F67qdom<$qIK7d_ zSvYy~)wZAHBA&_3e#*Awh1EkWM#Tb9?E%u#uZx zYq;s#VSIDrTdm>6Wqe{v(wKpBcuB$Nvkz{)#anB*Oc?~Yx#!zLhi9z z!(UxKw7Pu6*_q5>e^BfXRIf?ixnrx>yxzG6Tc2%sE5xK=-Pvm{`r*cp28)0aa$#ll z8gVWrYxXM0OSkRH6*kBj;=Pmx!LqW!v<4YIq=(T`Ydk$g3re!k2E`b_3X8PR%tw3NoFxkA-r3# zQfq{(*BE_9FwgWEtzMJqGgiH(&}Y1QO{LF7^_oVX$?7$oKHI9-4Ek)ZUNh;lvzqR1 zu-j^lF0t{NTB9O19;h`^RjJ{w{1=|F1J9VkwbOV;`pn=N=`)LGq|Y3lkv{WyM*1w^ z8R@f#XQa;(o{>Jwct-lHR@0M01Zq`GjqhxF4)i%o^jybhqe}eNU2W7VjT$7W2TZ&O zZo8={<<>`Yq{e>i2(VJE(Yr|=7HRZ!T~k?jVHIkKh|srvW?p%?znUHr&pUu|Y~hs> z4MlO&$D{pH1%75fVMjSU80Hk3!2tARzcBhBVB%%7v@lxpaE+ zDy}uQbvWJaT%)1jni!RCoF#d$A6or&o|evee6AtSt)GV);&basY@c0&?B00JIvxp%Ik$U#G?~L4cH_P9A?||f-Q*^C z5K@*36aeO41w%o#-|!^3;yO+)h=;&WSQ^rDTlWG-jME&Xad)-YoP*pXre;FyZWs{o zbb5Dgk#0uRniNw;FVLJ(>F8>AdJ?vgp18Ra7u%Y0t$=TPaA?!|I)r*9bDhmKDT8OM zHKv+RFxMi@Su)QzzG91%)74zMn`Uh{6!YX-_qA>of&k8J?glltcGov|i_xu9cZ}Ip zZH!i0M|NCvw%Qo0Tm=sivs{H(zT(CpOLwCi_n#BfMGV-QU1F{rq@o)_;ymL#lm>M8 zCa1RE_tjZ(@n($iU*SHQH_|VYxzS{18@)4Y&1YPo$!JaLZhHR=%{)C~^F20Sc@eK1 zc7zkw9&#A$ZVW;emu|6t4|FaI1sg*cv$xt9!N)Sq+5+Y^y&Gn&HBbAh#Ey++OzZyY zr{FkZ;{Y}oZ5*tAiitfd*bsXT(U=7sI!t3|;|PtRjiWS%HjdGlUD!BIV`$?9jiHTI z8bcdvG-eJPCut0AoT4$bahk@^#%(laH#TmkF|=`p#?Z!D8bcfFG-ehXchDHxI7ee> z<2;R_jSJPr_~tZUq%VzW?7mZM&0y=2;3w>^D36yXlJ_myjsHv8*6NiKEK)(cs~V{pUSu4*w&Y#XzmGrlN) z5e}${Bi8Kaq&ohJZ?ZIhEzjP12yW(ESFg$E=dTs%+h>h8NKC1}^&EUH41qVj_Cnt9 z8Qj(NX?FdYhVs)e9P`)I^E(0#VX?OTSOqMUm-76Jh--g`{o3_^zh35HY=80kckuml zt?wA+j630~4@p1FB z)+6@4uBz)r_ZvKK_x`@`lm1JA(ZJsazZ3eG@TViUM}5(siT)_|mH2ofmE_5p;aC z&*yvprtkOr?;eN@ymfHzkZ z-Lrkzr|Mc%VNL4oSN9;gITPpW}+laBcJ| z%3lU_Jt5!DO_!m*^iy0!zg)`U;r{~9G6&G__PW*0Bz26*5^p|I8zMthGSqePXd2iW zaq}si$#Oy7m#hORFxUgFG20JU zwYD~{PTHm_%c>nX62HCOr7>CIN@&<}eK(tDN_S9}HOs#@xENx87H3Ic&&fOQ)Qtp} zo-hXzD2@YjSfYJ1~!$tZL`L8WKB&`OGiVJOa<*yugXxMbP_| z!-`wODi~I8hdhHy40vqwikp|gad3tI%x%Yy?A&HS>x7(x0Q|!FbH>+Bn|PigtucSnvcNbgV5u3tJK|9Dt2XcJqZdE zML13n~w7D#WJu2T{g_Czd{=p5 z_=2Veh{;Zc-rUu@) z-rxJ0)0e`WfioC)`JnEI>EF5cxQ+pa@-k$MG4HPY*$-hZnbZN@^b-F#5;E_1jLa0+ z+m^U}1yD2oT?Ti_iiW%io>5jW;}k_>$~hBS%36~wE5B?oRn<>Px?a%1p%brizJ)Wn zMGWg)X!Gof4vP@DeDB2zXKybrL<{A3*GS0)yTAsAhlEBU?)9*61lk94J2I`pHpo$8 zX(*-<3@Q~X31`7{&L##LQYVY6kH$;fg-)>J(dSQ*r2qVu;;wfF5RT3S@r?o#EAZ+&BFi*Wo| z#i(_VmC<;Yo?txS(%F}+Nu%0rf*P_ef1fjd-cG}`kmezxz3Ca48#$Z^wi`zHI>&C+ z@~xbTz)o1=33e(l4aQ_80T1_E^MiOLr@mT<}FkvMpmmDo9AmO$jnIIL(HLu-%O0hb%k!2Sj`} zIL-UXNeJP+9o6J8fUbq2V38EV_+0TbZEGQyyeUiDNs?@l1g1YcdVB>+h-K0vlUl|L zZAV5*Q(gKD2iY)ddOR>Yl1^)`#kioTzZ2xz6tSDo0;bGT+uN6dCWt6&?2S*s=6D0c zvO#mFs`7P7(N*2k7E0;b>z{OSjl2nsJ2Y(BpNFJxL63ul?q{mj^18~BtmulYUy*bJ zZiKF#lN5!WA{78Lq^i;>63?1&63GtznDMYgt?}her?T+M>#Mk;iqvoGK1BuGQE83C zoh3zvTG)CZBnZ_Lt!t~2Fi3GGt(`cqI9neZu2u5cWZX8ThuA|FI6}?-MAiq20A>uX z204C_=zx%O(hiO&!&UEx`69nXC3EM6I?z1^)N(f~4U+a?vyXi6RV@@*xbu$&c&O(| zZTO^LjwQPb4$;f!6H8tXybMsp&_ZEDR%EXxYYOx%m%%f#*`X>*=HAGAUi)JWSqwI? z>v!K42#JnZBCdo#VB5M1j?7uu*-_k-bNMmY z!H-Ixt6L|Ti|u20gr+}PLT(;js(Q}jwuu9!Q4>hQn!3 z)(dnU=b{Km&b4l{{j%iTuhk1o`oMeN^R8##`ufKoy!XPHqlcE~XQoC5x+{6o1-kT6 z_8}iA&-x?qFZ5g&bBv@glLMe_Q-X7(D~1Mz*th)7p~1=~3+x<5%3*8Njb5$89?{6o z`++Uss7|mE__jlX-8@TCSy}JhF+kores$CE3r`rKgtzld>{!rE8fW`m+I63zJpVlFXp=SFWqQ@T zCVK+MGU+4yml3r2W#|(;*UMjnA%QM-ScloN&jaF;e}LcSr6+g9rEy_DPQgCHfM~*i=uHE% z+#r{0+koP>0k9NFa>qy?;wjHvSjcz8qn0ksvl&AekF6lY2{=Xq zFz&GZZXHlKTqhhCu0&(%nVTF&P)y32E~LsU6g-&ad}-w2jN|h*r?#nHn}K14 ziMfUJAb5a)B5WW(3KLCgc{sp+`?feHRMGsMcO?(_Y;ufruUXZU@fj9=^5E3|&TLK1 zBn&;#SKQ-M9_6obsk)amVAHUA+~4^RHnlp{mm8?Im!bdk_PJgc`zy>N{8pLf@j2<| z>zFnX+LN42sccN_UPc-Y~9$arG2k zLR=1PeQxK4FaVPkd&@Jgd*n5!@;P;K?L@e{=s%V$K61e;oY$5PYQ_sRIZjB0po@GO zxgVGeTo*^j36(Q4?6{;k$ABTgplEyt13N$nsi>jB9_Hmudq^QWcpgR)Kbrwv)4^ix zn~J9yaX5Mhf}kjE!_aGo7`tEb#C^aEJig`FaL5ZcRrW1Ux%eM4(=7UyK>|-9EX2Sr zk31T%pj{v&R{zBK{CqS@T2Iqe+kXN|3dqQ&+a+J!7ODhD-x#VHBDKTSjW4mZ;xWD4 z=5Y>1!(>B=L!WjV>_aRPIa$7@ac(&>1b{~MxfD6BK6iC!=(f{ByP4eQfoHtsj3M3; zesCJG&0D}DN2I4;Kxnra!=v;IIGiGHmo<73^%O*)pl(4eHx47^)f`sAFhDKM5u1Xx z{W$o-8Xb;z6@K%A6M?rlp@p$HtUyqgqn8ARB5YABfDy(l5+Z*`*U~qlFWV^E1XX0$ z@E*^g%Ug*;wZT5A#RZq{ne^pNGtj?0Q!Mwz5GlCaT4y);D;prtcEF`YB!W_ca6h2R zG2b2)abw^2cD*Z~haX`@qWkM115xDzuLt?bXl(;m#JmIVLgm@7paSS;e)Bc=2Z`KG zE!V!?QdkBo6#NoXw;`w$Za5OTZBTJ}=OAG*l3Nzz6-P1W?V9w^1NYp0=C;+9*ZqC1*Ue&;IhpADHk#`}<%1Co7{G9v^Irqld`{JuE$6_YD{G;Ho*gJs~npq9=j-lEX=$ z3ZVr=bKQh5x<&HsL*R054G{!~`v4D{Gy^}k^BBmDm||)7u9?a4p;|5*3wvxslMb`} z6jO{eRVrv4Y?7Bq-XG}zRicj4g;sV#NypbC%?we4VwOpPvMmzkNT+stLB8;ONPROO zN|8Z>WjM1x%7=#TWy3@DFkTby&f!IP_9PQ?ZWK3X+Ie5TGDI$u-u3BsUMjacCYai-QC~2A~!p^=DcaC=#9=!yAfG zj2*h`?t2#ZvA`W|>HAq_Vago{`=&>t>F)a2Kq5Ld@#si9|046e^YU9BKRhr$zxT@2lL4z`37UF?TQdV%C~k}m%m)~I z^dZkSEwPD#!0b*Gb0nb5(BA%LXnkfCle?*?TLzy_bK=uMX+>IRYTbS0z^JSn?FyIV zR>;~X$-1PYp4()|De0;KbV(EZTLmtq>w>9k%ivByhfYB*a(HijA`D3D#PSU%62ter z;*J;&?$JTk=B*(o+wNDdwa$R<)1apTgf^db>&&h3rBwDovJ9UPv5W#29@BTYGi;};GIXj%Buz_XKKp1?s4+zH8QVIc#sXGpam z9Ro#$e?r{YJ7jNn@$QyFr<)Vr%p$+(~nnPP@gEB1h{DE5{Z+9aB9{-;4hWl&kAR8QJtYSG7Y_5{lg z_L@VVf6U4}+@Fe9|MZP^>e5iysMX&Vwnl6yb1fIiI`Vq`pZWg_dA(P9nn{$xw4^gk z-$XJ%T_AC?c15xzRkl=tJvT!nz+ak!J#Uh!wkgH8K9Oup^Tf*LiDhwOlP#KeWPrUa z67uG)Z*f|^y7`PZo&kLX?DovoiGaDm711Xjd+`1{&)* z{*J21IXYuAjR3XVJOGEIG&n5_wgA=zh2r=rTM@4VX>6e*DlpZpyo69E09yyQ>64~Y z$v^o? h*5`D6&>2s>;iFuTwPt{zZSgLG!Z8_I8NFj<}(T#oi~ia&CwR3f(_w-D<@jlRfG+$2M!(Fx4e74r&cVaQ}Jll(8Er;4=g}- z2F7O7(&Vx|07OA}f>0diG>j1rj3RJ$Af;PiTXckiRm30Sgu!9nxv*>GLPuPFhIylt zhU%SulPhv=#A<8PboV$9fT~bdPE75XfcB z?>#x)Q8jo@@l}qYN~7(k+W3gw(V-afKSJ2O@x-n=w+{>$(R!5SxO;i9|DN`$&FXdL z`Icq^aD|lzEk%_H|8GF1@A-`>%;X-&2Li?cr&nQDHUlzb)8Rn^fHq+H$@4@iy*Wmr zFcJvvxosl|fvQI}>BO=9%Y8kie0#zR%u_m}-EM9M5lzfl_%j2fl7T}3m~5dU*dk1u z{Gd#KJBx27$;&$&HQSvS-y07l@wBDWwT zvXFDn&R19v`7AS$Ivp`IuAN-y4C<5tXWBPF8_bf*^w4lTnnE2Ar7m9nnnG8HfFjj| z>BGEFLWZtGXP=fnRClF3F8IAY@cCOZ6xRWWS3#K)WeIQY?2{KJ zU@QkR;RMI*jM8twjNyT4@1Ghy{Mz^(+r578-eh8)ynZ>j7~s8~X6i%hhb|*f-~)YQ zLY>|c?q$OxoIf`*b@wuRi*+;iU;X?iQfpUF@74U#fcZziZ-7}LCpUn%{7?Qi^Oi z;~3mt@XLdA3@4rtC-PIyFo|RG>*$%oJr@(PV;y0C$wcKrP(<1U9gZ~dR|>B}flV)l zbP;BshlnQWQpPZiPNa1QN=1;m^ zCOIrLw}y_Wn`YN$mQ}M_(|eO4MKPp|A@w{4bL&CpT$;*s7cJ@r$M z-*?aXJ8nCD>iGWU!Xwqf^C1r^6=>dpf(y8DJH{mDJ|G-LAra6|0Do=VM%VySm1$s_ia>c#~M|K`+m+pF4=C zO3SxlQc+FNmYr%p=<`FIV}q8=(wv)~a3U9eN-0HM<2d;;mqohL-TVJW1|Qp9xfGpZp7vTj)1`oO|udt zX=kpqDR5qfutJOgQUc|NZAWBr9LYH+Ooer#paiyRC(MisWBl+CoC~sNRFem0!5E=a zbJ;E*ESc|kpY?TipK1<6f#bU;dm?f)WWjEEiymG}5A`G?$Zm#J!vyZ3xuWYQTn2>M zx4+K>zbMB~%*-m*Kn|qz?(0Y$cJO6*g&{xd?qQ!}Mmw_@XsWq_E1?6n;_|>C_F4bL zSVXmnEhw`fYcX9_TL7SUTC9OeEnU!N8rVmOmu3Ow%rApS zfQ11?p#n)K_j<#a;?@|Ea7~C)#dW}2=Qc0kWLc9if5&&v&rDB^4fK_ZnPfPKtorTB zX&ZiuMDAM)(b7bg0CLc6FT%3uTSi!hy`1>Y6{^J8ruH za0QoY=F?9llJkC(5|l^lhlNb%N^wvcj+D#=^7*+G4CX?OtaKG?|k?lk;%5W3r>ho;%?2YZu}jt z6l|}yzt(b_J{d>7fP18IMDbq(U8beyUl_)S76P5eF=PU$6oyg&GE5npeL!Nn18Yu}R2i~|G7K#)_VQ3A7 zQ%>}eM4^iiE7IMdVN=_VYdpX$d*-CE?|2NX1W3;3m(zyd1oHY1|Db9wf1k-~XN*0^ z+H@1*ql6Eu@^}B0%Z3+_&@no}I=mMa5NxDc_a;VDm|Qp#JofUh0=#7A{2pH_ZrRGl zkKhS{V+l{Y{=eCe*k_~>>45aQx`n*Hz7G)zv3LTWS^*w43Rxr-bE=ePBpMlM`V1$MS?{f zLnQc;@ZBi>V-kVXw?MK1RTSP~KFOpJLPBSSH1-dOB;-ii9W;D11T%Bq+oJ_%D+rqx zddKViWnao2T5dCK2$8~#jdyjV+B2?Bg%8+~&hnJ6-NiltR9$u*O}h==hkz64Z_Q#O z)p?&*e>h+3OZi;xjc*3Jm=W3+Vyq`$jTu!#`D4Qssmxao9+Syq;!^qgzq5~V^mI$R zrJ;JiB~rr##{zY|f)UMV5?F2zRqP0!E%SZ5W@3AbNxV(G5+qr73U)&zstzD4Of+U@ zaE1-zwQ0`iU=S$}a>GcY<0oMS%^+}%y@R>3Mo?9>Y?mwH8l3+5)9r}^TK@p|hjb-O ztRu@mnu3FcQVAJ_m|Dyi%Vgsn{s8|KJMiZ0QXnX6ZE%NNN9$L9-JN?)dmH=eS3SC{ z20h3*eQ<@@Q^-@WpSC*Uy)j=pI=8rlH)K*4bMUL|v#66U*9*X35t2hrng+_PW_nnG@n)O->C@M-C1UO0qwK}!quO0vlzu~$G(P?n%g!*-l- z)6`DE+eZ8hR&q*J*%Q^HY!sW6~;I!o`JMGsA<`&U7jga@ndZ?O{ul31ibJ z@r9Ux`YkyTnr2I)Zjdg_8iXq{1TlgPIc~&2|1^^^zm7Z!V2aXa>_u-e$XxH@o1&ux zZz^Z=)BD1q5v2TvfYG#v;Tfm~3+5IgLymNHq=v=~GtV24O+$bAnq{>l$xv=0bhn+_ z7u33t2K$=o0*j%bD#-c9`wlvirsS(jcK&&iw^EbWs?wCyTd&n(z%AHbluf`EA>1M4 z2DAaw$#RS7qWMzi-XbaRCfAWLIRPW=C#G%-XF=^d2^GoIaFhFJmK~TyaNgnjM~aa^ z#t1)sntA1}2~??vSNo0?;CyyJ5Ien)`qH{MK^s0taCLIC|xgCmfE))Nw}>e)RXDGnC$rBXCwq5Q&0HwA~01$Hza z1)5EK3(=@h6GPCALPJ0oI^Gf0x;s+PENp>Aek94Ge%DkR>*FCF_utt-Rk-bb!wzzcAN@w3*MLWY+!?d7h5 zU)74K3$wsz$lZM6x6AJvPM0&OP8`AfgIBHV1MF|07YC&!>4z_5@Mxq*h=^5~Qdo2> zrXwt`rU@FtLZJCY^o>xTfqEJ=>Jw!RWUg!C9C(sVbN#9(5!riTyEQoNWV_+q(#fxK z-cNK2!1t}^6RiZm^6Z+>@ubbk=+jR! z`y%QP`F+;Sn`VxraiAYIaBmo&l);rmc&*e!=sT*;)_T~iZ) zKnwY7stp#zg8kUDRkDj|r}_za65JukU~rpp07-~!Q1K3NNU8+jOra)#X&eJLf2h=N z^|?!xeqkmN|e!k}v8LizBnL*&RSs*4F2dH8;u^e7UUEQ}DGtKJSfA zaL-})Ti)nOdSiTFOZnTT{oK2OR16OfM!f^C>x+1-sR0`*gn1^4706Z?cA%TT2Q3ea z((9KS5zJ{%%TGm*9MB51JRp37AZ~>S5HL*x?ga}CA1q0F%JFPlXF&Tx*=|MvJIAB2 z(e0{FkB!tSg=`|~T68bwvnEnML8_r^x-PQ7j?wvm*>xc0kcW3cFBP5m%n=7KbIgjE z%~qq_r;G7Gyc`R}qNQGbTJ`f-B<+RJ!lUzOa-u)kQ65xTt)}`tb~P@m9uu|X!9~6r zEye`HvweV3Fa4l6a$7nGciC_Q0 z^+EP7F^@~qXX+l5a!Q@hcau<7R0l%J3aL}B0ZoJI&~@$NwrOo9OhxRlO_DeCGgI3W?fr6EL_P$yaxe=JEn8Mym-ZfHFoX7M-}7%E#d$ zXEE=jW+)v(DV26I59Ch@1=M8i2%t9jJ~DD>oyCMd%8^KqSqa;f9Pl$BStvx;QoY$6 z^Qf^@ifCQ4y{vK0QqcEud;lEG$%d#RX&-7tN* zjPDP=VpQhbS~k;Gj0E#RHlFXQ{M75#4J59Gj$uE9j=3m(pl+q$au%DJR11?iDw*U0 zKzVcUE5C%W4YusEu&E-?B@~bFe892*VZh=|;CF22snmM#6P^pBeD-uHQOqNYQq7W4 z7Lkfj3)9?D-dp~9(-dQR;Z0HAs>R@#WP!mqr<|fV(eC4@d${_6oe|F4D30mx55_#n z$yhm`%4Iu(@oZFgxw75CQhTY#-|I8&WWXB_@qh>Ukz`jq);*$W?tI40-BDXn6JA$z zZ@#cS?m>iO=zsY8y36lQOnQ^$OuiNg#B(xtWxb{LjI9MTfv|hhD0|}vQ9bQHl@5$_ zn?=LzihJz7)7>t2(Ce~T_4(&p@el}7gbuPmvtenV-iwAI%AD*4gdhX10;#y53c>V3 z^J9EI84q}*VK$6DB=q$X&>I{s4t6VDY@3@yrjVvD8X?ZbUqB0@LRZ(`RvTt-0K5td zV5*iJql!93euwP(8O}V4Pic!#w5tS|Pj9PQ_CU>r!b~z3a5jLYQn#6H*e`#<10=N_ zIU?>mj@VXJ^by}Ki{KB^tMVFrmPe)4`mxR|aEDR!i1NMg9sn5;`)ClK%Qk#CbWOsc zM3XIPRkSG>F2D{5@|bl0eP?e!esu5BuKMJ7FR*})_6UJnkFrPI&Wl4Al7bZBT}wY= zGVrd%Ein1C(ILP|$FsYc`JpLuPTFC}dKm2`P-ffidp)6INsgO#EY{Mfo=_~-J`=YQ z)vm0Em{I8KNWaojCFTS1Vlw8by2#A!?$a|F)t!n#wzG!c-nP&7Cf@f!-RsKh!P7$Z z%I?B=G*%0m+^!#%t!l`2Y*}w~%a+|%G-GWY!NS8+WCy)RU2lHcN`{c#vEP(lsPJt& zo3!Ecpv{W3Twh92$t~Co$v^0M=w=kPsF$gVM+V0Us!)TFDA*H3Az)^pzo$n1I{_a& zv=z2O?g033Fwk-aVCB)2)tuICv;a+n3jk+~h}3idZb|`6^*+vG(V&g8M!!c>Q`3ey zk-$7p@5lUFwSYg{=jH*p0XLmoOeCwi)j+8b?g~MT$%_9G;LKtkX$Hq0>5V3qdZ-)A zbJO_~zBgeKe+BF-42~?;a~;&Bf!S(Cg)kOUP&RjR) zzLSW-I7^T=({x}Y(FWTpsgk6-?mT`B*Ev)w9Xrq!F4@f-UQ?>*qgm_c7{F4oM>Jig zP?6WARzsMkM~Rpo~{i@S`LY_cnxD3$Kj0Ha4r>ES>i7+?`i zHcI1(Sl#Thfm0o+_l(S*3us6>sO*zM@e=OrbLkx299RH=*&6#Zk7{-{g|erGVI?Oc zcPlZw6Vh-1AQlH!I?cWcI*enzgt>ZsHV-<0Unp22X%gPY=B$%riGT|0p6*kmJ&V(m z13jIkTqYKVlRd7CQrx39QF?$b4sJCvNCMQ97>a~ip-(s@Q*APOBAYco!Qv}n87;Kn z^8$nQ^;%ja#PnQw8`?RRiy2v$wXm4g#q=sDRCV6~#C(w%+>(8ouAD%-fYP=N>Ku%z zF~i*WmyN$y5MzjbB(B|vyfpO>`yZI2De1l!`Y0TRgGla42CEjJj{g#-5h3PfY6oiR zAnGTg{=|CL83X*`mV-p&&|rV9Qp&d_f{gWgmLZOu}vs0c-y#=4QY2aNQ~+aWMx3m|{elpd3{sDe@&$o`Q8Q z!b20R1W|5A(PipNpzckKl2H31T;Iz#9k*5w639L>RP8F{d>&~(+plAeMnnJt2J?uX z6XH4HYIUoQk#ux9_)qBe0fDUwAA`I#{DpdVcysuXU^M6hJcV41x4mayhc{z(s$t!& zn_6dQ_u=&rPsM$q6#Ao-SgkbdwK}^!Jt!*o_r2wwHofqXNWh;)RUzKY@b<;SX`hBx zafZ-MX&)M`4bH2cwp_rM@hWPhnhSVLG;D?Yv{1HiaoQW|=)znEp}Y5Djng^l@{7}1 zuBgOl6g3xc5X+LF`~g?Hf=UWf=O|g1AfDv)LR>|)LvF`744|Q^B%j|l$|-r6lj@~% zBs3Np-YR*Z#Esx6Q5fCqF(d@> zLB*DN|A6kkCtqMJsjK~+mcdbjr`Ub*LRWskM+T&5L z8zIeccAT6GfUC$nw1Dd7nlO$YY-+=j6Bwgl;nv|Y%{t6XbJ~#u_!CcXA8U*HY%dQ` zCMY#(_-5mp)<0OyLPEJ-im0X<4I@R_il0MWxk6WepwnQnbXPW{@_Y)tnC#cQo{cZ5 zc9)!sjvFE)^hl78s#Q`&D)N5`2pCskj)}FqNvM5EqIg5I69U&FWtaq&MHW^8vP2U?8N2JWJbBl z=Jmmi&XsQ%>tJ7})>aPgo|`}yYPpbzdtA~5cA>?OPU1{BF2qr!CV?ztBAw>xs#J)#^{VgV7wbXVORZ z^*rfAuW@^-K9j_PCp-By6DFSu2`q$cD>JFT}MhY{yI`^qa% zM4=9HAh$SktscQ+U68Pj$dN;Zd@QVht0TyBeY&ASM` zovDdvZPv|I4;)tD6N@$=CBM?ulkMn= z1iJm0DDLYw{>1I|#@ZGuC|_dMba!E<=H;FKXsQbd1VC^oc~NVDE78%EoOH$77HTGC zmBYv>d>=HsDE)2SvjSb;gQkrnh7(#xzQ!N~#85Q@+8+5{erZzf7ui8rps?Li;Tt{;?<5N4J}d&70E&wrs{t@9PNb>5~Wck+9Y(nN-jZpx`3A z*c4Wg6==C8!~jhiLVBrLoTP1NP*55Xn^2XvHY8AbxH6B~~N`;NpC zy`Dri7;F+1&&utU(F_u%a4v*OY?2WQTu1K`Pi)CuoxlJPk+M~$wl*{I(SvL1U)^L%dhxhNz zXDjphQZ8E|S&KG7|og&yb{$TM1kB;D0rh^w(%?!2G)>qnH-bijBSe`LaR2Jgi zgF~9_Z;K`-reT2?V#77*5uNt#$C22#f=&&$GGB4XNFEJrd`Z* zmr|x;F=Ox$I$xq;Rh=}14(ve4@~2pHXE&|IQG}L;wc)}4 zq}Y$58o%g!C8#^y8ig^=ay&ki(Ci#Xxwu!m+K(L&rIi&#gfuqNjb+f2iEt20E9_=< zEN3D*CW&Aq6ZoLc*jBmV<|;|F$O41|MRC?QQZ;`i+FQm-DYSUf%U=V~ zk0M*@bVZy1GJu17QIi>>-?t#8rDtA})n&z90 zr{H1de#~c*c5%cL%}YB|y!JxZXuqsQD+RE1CJkvooBs^!7gH4p*g#}>C_RLlJ2?b) z*?8B+yTLSYMhso^BUJg=Z%v&&^9A-Fx{)>TdQgJ=v#<`t8vNxYc92PLcxvN1=jo1T zo&LJ-i2k}Lvc&5wTX(H319_MmqFg;DfL^GARy8bdf%sZSUR_u2Xg#n`bVCI<8$#nk zkz=LwpZt`NIHe1xRGW8^0rCF$+c@XYl=c9Y0vR=(I{)YqZ+0@78A96VG)jEm@(h@_ zZ9S|$TJsPb?^!>aA1vi3ss}pLmWEZuK!{s)tY)!b8v@{_mKS=8EX2sLj#2@n%xH&uE)Y+=TT#?0y0pxA}Kk;_j%jgVA! zyHwfl$7g8g9u-bih~KOk_V13}jRm-jyN<0tY^4vMcVWSV)w#Rg7Wf3WE#|>uE?n1l z&2v;oZhf!MqjVjA;J-m|J_MOrkUn2`jSfWN1nh#FOngIv6T!>}mUTk^Av;(M0Py^l z_|Q?`O^*`K-TGXj`^}CDfx-bUKd|$bO|im)F;ab|zqf({fk+6eg{abkvS31a4Uq29 zH3xEqiN`vkL->eB5@c$cJ^MM*Pp!IFv`cm~)GQ+zLCBei!oTmCk50M#=q%G^tDfd; zO%J0)J%p|$X5`|!+ud;_d^F?(TJ9h7deIoe*>y}-4_Xl5W+P053+K^#q2$3QY~u?X zpH)x>Nf9_MNwutj|7YTfj`YTesu&4cF%7EN1@X~bAZ-U;Br z7oiMF#Tk|%!Ix=tvy4|D+o+iDpWtw45PNK$fi(&LFSIi}&KTPKQ8S9A0a4PVw}1IN znu+deIApp@F9WlO+Ykyv7r0S$^nnkms%HE2GI-BTO|ct)gk&NAw4OpK1TH|ixnMT? zo;%N%W!+_KZkJwz|1WR+3;#JZQ^9Jg^WIL&MEYGHLDi~e^vIO@RQX#r9)wY5#}5PF zQh6}QqG25yAEBb3SSSo=eB(!`5_q42Q<>pXGEh$#$~@T|xSPKZd3^^%qIG#5g&%ZY z`sC&sQRD(8B*bhG6^I2^kpMRU#h^^#miyC2$DPu6-||hy5F7ottK9OSqd4kGCY@Y8 zd|+u|dZfRXpkd+ooM&h3S8;r>6fU^K(dqO-b;ZyoJ3DJZ@=doXfuH~@;tJ1b`?%h1 zt+3nOqQmS6QgxeMvUKRy%Zn{7u;-sQ-@MgiODmAw+-U-VT1&I2FMos9ihRW?VH!#q z;3Q>U{+3wzqqR_#sGpaMsGnbu-d(r)q1Avo3X4GcAWwCYSY3{gK>Q;`B4R7+FRDK+CYg2c>=mxTldoJIY`j@r8Ru zgb;!TeNLjOU`46&6?~9Ss`N5)w zc8&0H#*>+EZF~!&Gyd}e3zJzJYm=eH6|c)+e_&ONVk{X!IiR)iEtp3Z2rOov1#Z~Z zc`BgW?Az3O1Q6Q>w6%=3lK_N9)4vH?lih8D0{=YfGfzv8)~zi161q_})biG{FbD9T zu#y*&c2tfE>4yIbP(T#`wV&GYUTsiRLl-MbxK12fT$mXh=<6(Hu#}pqOQ+c>3v3Uq zhI)ANVFZtd#N1*2gl|MVPYogh+rYNq=gsVrFryUXIf*GMd~q-^3iN=3)UdiwV&b-e z_;Uvqe2S_n|%kST{sjx^mw^r2Dc;jz6s=A}-!U=Dq-D}z|Y@;0y`>N@CJZR=S z^JLv0z6Wc`L0&MMCd#`o6+Be0oxSbVjs4H2lF6GWyVGy60$Lgun&@n#+%gV~; zlBiq6RF5F%(Rt8iTCTy>euJObSRvpE-O6LL196m(4?giZ?i!vr*xT*+w$vZ~8=&>; zq<^ei%UH;pD$-h1uE6m#@JrmTAfQCeGX+;rVU!`K=B~&x;(WtAg*>_6BwvaMj@EqV z6b!~$(0WcDNUJejGi!uh1XIMU1opzb1h7 zYwnRgShuidBnS_wXgcU=lxBf@QHD)rp$GM->TN(gLKciMB$$ zJ3b9D2GF(v=YVq}X@}NgnoaGnr82~6V2BeG4x(`^46K5=nYZ2QQ?!nD6f~*kc(J~B zV)V}4ojs$`{kz(N!H_G*g0^bMG2K`xyO5XVwKXV8JK^swCk9sLmUo{C!cvki8CgR6 zjk0f?I)LR$Bt$D@a96BwXkV9^N+)WosljNll04kIbS%HRx7-FPx8qh>vUV^U@a z)4GXc0uty!4ID(MsgIdhT?50SVe(k;yAp)=LW|Co28%=8sx#|+cUWoPVyqT#=3?JtucL6-FoDVX-~C+KcUbPkYpj?^Om2PgwWlyvm6q>`&0!yaojD!Da+J{FVB%lmw&UWp?O0qW*sf}{4GIMaW*FEs|bt}16 zRO&pyMv8fD2<6nC>9BWjHKEQjHqn3bqMGZf9F#p@qCn^g&(X=Ow`j2C$-djt?tzs% z-|poL+RGX(a9Ub7V*zzQ@!WsJxA7xW^^NX&$0cn%=jqUOIE3UE+W74`9jG}Qmxk*D zHuTEaXbg@diYHsWt6~zt%A{++lZp~n_VxFHu_76jAV<{2(_1?)1RfLuPjj)==+%sA zNY;rZ>BVRGFgyMJ-a|eJwkM=U?ihC^wccqIqp5mfAk4VOtpyGZ!KVtuLyGEWSj&~M z^V0R9F6w6U?>dR5xZ|snamDtXxmZFAg3O8^{(#@Tuyo0k+bnJR?ZE)G#z6-2sB`&U z{087*)ZPE`Z_ZVUs99;@9l+9Mv^}D?h{{+{m`wN+UQ)a+1UjpyqFI_*)PhqogZ`3m!Vl| zFS-I7zuH?(h7(1vD`cI{h4_1ekg`AM;rGB2Rqz{(psT5KM8tYvKv48FSTQbWLzDhrIGG5Gl80BjDKQT} zyLoTnLIt9|%URu>ba~ zRll-l601$?Ms*2)ML@q#+B%YViby}H-b_|sE9O^%0E4|!2A?=b0J+k+|_&7~Ee-#0dRTUPA~_PKnC zbe|V>>LJyzP1$Sn_E0W>LR+)@$^MbsK3`R-fsS(BW%fhZ`(4s>eWC-G6Xnj}bSja9 zlOZZIldwgS6rwo|t1#_jBfZ^)T(f|17u!Xq{l^y&Hp|U76)V~K!5|!QVldGib@LiR zQ9CYbnw7C}#hvy9*yB43!e3cLxK+j+`|E$!lYXqj@a-K{-jox{LC5|v>~jLB^03rd zFJd2ZE6O@VwPloBmYD4;hKIVQ(gIu&T`tah5F3zc6EOu=ig9Y~$!R1-r;jujnj=|* z+u~7&Qzh;m&7P`uMD=R>kX3kK>UBezTz@Xq*SoH|J-zDhvW}P?C|7%s$xy2k7n8nc z9$LIR;^`RusotTlyngPfi$9w`;H zax!LRD;9UBd_l9TV5^ok(HF;ZHJbVXZiEW`$zUvz^|h^jBBv$;9xeCLa~%<%J*3J+U!1B!z^M-~n$mU`TUZG&fosz36Kgi!}XY5*b)Q7gp3 z0}EKzWw5_30c2K_jJ(S0E#V6tG1^ zq%FfG28wX8R21v@9Pxy1SE%OD?_()fs;|;s%h&SBV4Pd+L;4673JpCShV0s2pD&J9 ze>W=Uc({6y*w_eb4nD@G5#_O40;6V1czX6{8<>*W_i$ zwUZn~^E0^*^10@owHGU$iL3%>1!zB@+eo0P)R5e!)r$c83kQfCZ$b%k*^l{yCu8i7 z8P*!t=Huq=larHEu0Y;Ue|lm5yb|j0^Ivosa*zD-mw7K-Z20AV={jFnSlI1KdtCb4 zX5ke^>>8ds3SW+TEtV+K0A@fd`0*m1zZdJuC{%L+?iKN15?NUM-e{~)fVufC~}D{5%qT#MGE-2MO1R>P{<-a1ad_DP$K_W@CvvB+6poYmk)yb&uFz^ zTb=ql*2J)e>w}%PJ8T%ffG5P>C8|-UIiK?fy0a>l1Q%6hqV}=5#03c1S`Wigtl?;N z=y1~T_}vy?LQSgI?fQY&jvdnc!}>ekE^3}@*Eir;e-^p>rMeY{Oe2WgT#YdVrA2GR zUV$Gh{eQh(X>1!;exElyhT=UWhlh9#MT(?EiifECGG*PCZ26AlII+hPBhk@SiMA7C zH(6k_MVn$j?FM`FNE#H_ZHv|^noW1RyG8n?{m?Fo_Dj3{&;uy2?Wdw>8(=?d+~5Dr z(6(YFF1A1^Nb@v&GxO%X|9w56g(%7-C_H^S1V`@&XTp8@LW6_>3jq4W+DN(8(VWN` zW+DyT(9^}*dhQuY7c0SQXOc{t?<8DVmtx8P%h!PDUO0t{dJY%`+aMzL0cuQt|4#@A zb3fdz$ZlKUjlant?$#3TLOvg>u zB(`NCQlQfSZWn4xr$j5DYQhFgX%8^u`Mv*cnI?v)AUGrWoV{W{vvh5D*B#AQALtN9{-# z7>>xHh?B+BiBhL)F5V%!dQ2ahdQzz$#ZXNofH-ZCiVks+C8wMrmt|-)mw;!=DrN^K zw<0KLzX*W=q#lr`P@bjCB$xliN>Y*R$gH!v9Wtm6k}twOx2-F{&N8J^NT*1Y{OtT5 z4sY$K1D@YQ_E|3f;D!JH@_TqJyEw@nK!!n%AWHJGc#I0mo&i0fApZkwPXUfe8yNVP zAv_Y(7|dq#`5wp~(Ly)p2W=)kh}cCSf~XS-iZ?&SxWY(wd#(u*y69_4!49;@>_J@d zAia@EVaqKnr|GoInG9i_mb+|fJ{g2gi@IC(xzp0$zhe%l)>CzpGbwe;37fMxlX1@7 z3P5c2#GM~M48>%N!x8(9qp;QM>9m>bW^WT(ilihRqP$pMU-Z$sfNrvnK@*ao3ebXk zIuSO-^R6DVM_nC6@)E}pCeW5rVa4STk}PTE%#jm3KsgZuuBZW+!TSyAR-nD4IDbrF zNzrXAB{odn-26Hm3PI;!{r+0O?MP>X(FlkiyWW*b&nxb*Y%8kSOjh~3gq?lWIy`U{ z?po*7>Gj_ZS;El+t<&aa|9z%3UP^Avrh77JDs2NApM3ZhdkgO~AOJ0k%ftk)B;_oEsDG3-ZptkXAIFe_M^ z{#INy#V(HgEGK$Eaaz@Xl7l|+O>x|b%2BUfP{Nf|5G>1~rWTLvtRQ~fOjVmgsIw+3 zWf%0m;6lg;6TmsvHHXbXT+7>Tv+Qs?JWL8bH*B^KBv4ffQ9EKJm9K-RyO6#~A#qs4 zB;=k6z-&zD6AJY_nb+Amgd2!CWEG-?B9|ZW;^o0W<(p8dnXkfu0F_M)k z7m-xc7G;LMJ9jzKd37M1V88NaAZZ<+u=uWwEQQ{_GTD<;Y=zuVUr*5CxHdaDI)ZX@ zCg$`dQCu-wKDaW1?I=^{3q3cx!@bpVVZDrX@;&@dm;oPP#3S`VAd;wZ853jGWlZQ^ zdcq$MmkQAG5(fDMT#j>Lgd=yWh5Wd@1|8nYDm| z*qrBN16oBnD-BEc*9mN5)6H48Q6ldH9&% z|BP^0eKqKvb)}H~dNvsD^m~-4b=l|sikF#enWs`IA_LJ>PX#fr<#It$3M+~&;f4_S zg;1ubb}x??UQbvL&90EM@8>byhP;-*L@%+F3uR4bV-pNurTQ8ua@ zbqytfFbM)U4!S`BmLR}z~5apFK>v6SHwI~j^ zTOKCKVrI<}pN6DWi69J4p2_$S5f=@Whf1$k^3|&`x4Xk_U0aFx%1)8}@wq9#w{dO} zTULE543$}SyM6~S!U8uJ1F_dn+syWn7h=JPXE-J^fAH$?%f;+(6)NW!x|aLIiqBUb z#cUD0L>>-^YnZQP;ZN&cg=z)Bi&?LA!W>5;ie7>N4o?5=8FQSDJ=;PD#o|KLj$%cbJd`YTomGlJx*R`1GZRwrOV-p zL?QM4Bl0(WqImz+j#REI=j$(-*~SlIrL)ZN5DnYK>N}g>gQHx!q{Q~?vFs$W-FI|Ic5D11S}&C$NZ%?;%_cg zktbpAq6Ok{`r>`)J(}>rcc2+ar1y~ANUlpb6UakB`?1oZ7_Li%6LCS=Y;NlhSP{zK zdg>C3*>ZH^byRPx0Axb$+$WyGFCl;D6HnpWU7%v$^K0kNPK*r=6na3&oPx$QQd0c7 zdfi?VKdB&C6q88$$76!QnbRX2<5CA$HHoEzTv{hoI++IjX1?l!a2-~HK9_jmGDFzp zg^O0jSKkjvL{G9x1Uy-aPOsmvqd1$-Wi3h4+f3>{i5{`^P_z|TJ z#PEGrwD|AMbb5P<&UA#+eQGE_?OUCG?u8dA3&Zlhi7BtSrA*@~N`*D_fDc{=O+GJ- z)rY$&sD8TE1AK=Y(PRQ)B5@wp3tBZwYG&6By>)(ed=!XYHbG=2EDPwmQi(ZR2n=Gz|lybt0d=y@XN36kC zwI*x{^YxjVP=OjwB(f6kf)fDbh%&^vrel5h}tnN$;o1mYyC4gH%~n~BFl z;aDU@@ez}W@p8W3?2sLmBI*Qy`P#8#BqD&!cEu6cAIbNA*(`=4Ph}A&i^D&uMPiYp z=-hH6z-TS>VRA7Z>KnX_U7%ScQkh#AEs>LN@9fy9ld6eRP@hTigSEf#es{FxjLBCT zpUg8Je6Sq~&ZZ>ie6P8Mc`^wF)PtJ=Eg3d9jF!fO+A1kIm-!rH zddWwJ=_MDPPDHSO5V`4&^`L-kTx5dhgnx;Q6n-V#b?}}H)ROUV2+m>bN-#7o5{^?C zOM3?#Kyf>unsjnZFt0<~mH>ItF4{%DcFHKMZ|$b!g92^YSsU)x9a`)gW}6Ka@g)xe zSZp)TyDe|sj>%>e0su7#hHRqSGI_~mi9{PygV>idk^K0drv{~RNwjSZ`8*zWf3yrK zzEmL&+8aISw21EktEE)!}kZ`>3SMtSWzG=Im!fZSQF4qQ}Z^Zk22 z``4km7v+0q&LCgOtFhxy?;aw z2!KhQ11Wf{&83VOM#wH;gl#H(vsI?a#JBF<~nzJWX!%W z4zJNZD#s|dN`s5D9S%ADgz^`05jzV+6Ukp%>;!M@R}<3Nv$4p)X^9qw0VQpgLT_v^BrXmUW2fL~&ZD>qnxHQI zro9|Wd0c9aO07d2%=H$snc7r2)tnOZStMbL>8$x?%KQhezz080^(@A{Ce-clcuaQL z@Aj{sTAL`2BbMIdL(GZeCZfRn$XLVZ5J!oKV{F?R-sFb7;Tq$Opz<+JWwMV6Baon;$xG2Lq#_t3Cn4McRlDhMsEZtba;HkysSjYd&j+S@4EKiRoDpe}D~d+PLtw%ORl-Ij4{ zxMd-l+(20l4X?S4liKCR+KsbX3+*MG(y)6~6QdB8TG~z%$9YW79=@RCA*QE+VfG6p zJ`rPl@K4{h@A$3e_xD=!`-fW%wZBwR$JEEq>}x;eq_KVCE+<@d6{9)iOF?5)g(}8X z6~@tO;pZj1%pDx}@t#fo4z#Ryd9NB4SGd|ZJZkRmsnt?-Ty3>p((bhOx0`#I?Yq@d z4IO^IQ9WzXkAo8d%>NdkX#5ih^`)N@Ktx}|+c>_0|Mm5m!khhH0q^*8UN*o}I|iIj zKCg%;-oqRdM5)+9lhA`!<}Utj;!GQcR1{vk{B`1;!8F z{JAPdbr-))Ade>8!e4so;~CNT6Q_j>IMSMp;a)^$S{TomP{z*@=9b9M0nQy^Es4DB zJX+H-Mm~=>_%wo0Jdq-(`H6e??v-|d+qbn>NR2I5eGZ=+_nP_nNJ3 z^@?Z4EzryVv_oB$nZ>>c5%JA0drL$$Tt zP%ka5sH+E!J-zda-l3>IfsrNsX2!Luc2{feXt#D6Dj$fZ&QD)Zwbqz@yVW`vE0>Qp z4x0z9qta1xheljpoyTts>rc5zhaN-~wDSQksP4C_YNOpfJQ59^ig>@_Qu>564R+uhYH zm$w@&&AOuP-rCf}wWfH!X}Q$g+SQ~h2Ux8AJ=6K^rs@1q)1vJhY-{FQ=xy2JS8g_T zTAI|*yP5Cf3ln___-Se8=02J)YX=9Kbw|JV-W~CkrnJA?+&IKt54ZQN;F7yq)xr;^ zmUc(FV?6QzkKDj7{&qH^0%~jo1)$^ntOFgJtY7MQqTaqocHCUcx#j}l_#BrQK zHcpH)14$m?<|Ys>rGQN)LI?r!xB)(r0Li=XK6oSn0wm$RK=^{)djHy|ss~w$bJ5Us z>YRP1z2<+dwOeA6BzdJbO0sl$*RCV`&VBFTXC>+X_zL#69XQ<6KmYdCZb@Q~;QN`g z_pDtuKmFEUl_dEx_I>s2Ll2}oB;`&?@;`v%7cX4C{ht37`d>egBy~=b?DyWjc0a~R zK3wlh_%v?6`_T(;`}YUxk`(xaBt8A*i|5zQY44jz;n>UgKYS58^c4R^Tze4T^B3=V z;E``1a{W8Le*^#DclW(#*Vw?yxb|GnR7d*^BI#J@=$ z@;_jY^k={I_(xiw*S>kJs3iFxOI$MW-}!@c_#a;@N+;w$!tq^7Qe3HdP<&hvdoD=7 zjCrL$TuMv5(!R_Le61*bqkPl-2$ECFVM^aACVf#O&e*PvYBS-Q1 zBb;|$8sv*o826gs3(}z6kOpwQ1fQ2u*f+-gQilDSRAyJDEH|+IRjI_jD~+(fmMmVE zdfBQJX1{Rlhup+=msFH5;aV%$_iZW5est}d?DIJ1_wfDCr6J5#kWYwXVg412n~-w2 zR+#;nl%x0Jx8wPDO11*whyycFZ-q_C_=%lwUao?$74fx{^kMm3^84hUmp>?fSpJCoQTgNY|0(~O{1@`S%K!HLYuB#f3>vvp zTEoZ}wv7C5^2g+>82RU7+Lx|<{@VLr{_ijU^2@*U@`qpk(96I0@-Mvn z^Dn>a<)3}|%FCBuzQ^ZqE-w1h{9zj2tT|9{?KaNE0UUG$VB>1a##U=X)pWzOY?s^P z_4xzAP&g8e#S_W4c2W%Z(~-_(bNNECRPOAmRBPQmy?y-ygG0k3qt5aF>dzxMac=9$ zJGOrL-`H+Q)pSETx-!3-PA`2*@*G@hXopX%GzOE6^6Hrj=_^N98oaRfX#+$(dp37l zGLvaYs|{&3H}^@*(CnF+T7y*^=`$B<4PH&3OE2p`r+h)>q#JM^BZ16MlXB%=?2K#5zSJGE-?W?_N0k3s%<;-$&?a=B< zZWTxChgWbYNiWsBbFHCP8~SYJlTeysYBYS!&Ezn}xtX;FzwJVUoyGkdYFDkHSJU*6 z_UzeDDbj5ig2$|%S*0Oo=EOr9)lcfSG&?`jmD!kVv$}oqE$1q%f=8Ie8=pzfU&*Zz zA;e5cNt(?@I*EsDJ!L~K<&gUEF*5+yrPZckaPB&b$d+5Eek(*gMLGd}2z{n1Qo+?1pFd zO!~^1bi;#5t2KPpr6Vg>m2-2e`G)&^?vYxuS(w8qbpav z-q{9Qn`w9}#H3)|nX4}P;l_^!i+~bxVR_{$aV{on<_gG5x9!U0a9V3S=^Uq1!25J` z6>qYD=U+GjB5otqO$Z1>9?W5iXB*PgCmCac8-i8os>J7ytTep2ne=?a22)x&@Y_uK z3~v9T&&MQ>G&6JM%+-KaX*^g-W-(16yj!qRYlN#;8GS}D&-59sUX|%HR=ujwXS{k< zrO!n5sz#s5>Q$XS+p1R$`fRUWHR-dnn(l6}TWXCivGKZEqarr$t2I(pso}2t7oM>L z&zQos(|AVu%-|X6GmB@W&m5kSKJ$1+`YhlX>9dGuq|Xwbkv_|KM*6H)(-T4jYE?{) z?@W3Y^f^QHT*GIhO8nMcZPY4_8YHO)OuPVYyP+uM)<$!r#(v@muu`qjyFnfnY4mhm zRatm`1!{cgw<;p^C0m@ z^v0P^^Yn<#_t<#l1-x?D5l&cp$YHR%F$h^)yvhFE(77xWYz$${ zo@!$RA4@cA^O)E4E||5}JngL#J2sXut^2Bf{n%i%aiIE1CiX02L+m+7W9D(_ z5RIXY!!(9Aj?fs|I7(x7V&fQ%p^f7-hBj7c3~j8^m|1L`pfR*@lE%=+DH=l?x6qhf z*tnI((8g&RLmOvk3~j8@m>F!`Mq_B>ERCU!b2NrF&Q}{_8`FG&zBHz=`*yK4jjfA< zpRl`*FLzWM;~S&zq%UIhU1Ezy-z~Oi=snfO#KzD|^hFH4S8UPH%VLX$zOLGs+!%Tv zeGxEQ0&jZt#k}D&xU1_^?Ap@}w7vDeI`i@b~IK=w=CH86TpAzGK7vo-HpTYM5 z`i?)5=HFA&I{OCysJvGhR%2S1ew(2fA2UB=J!IeQs=8isztQuY_YZuZ@Lvp!2EG;i zZs?!GpNiZX^+kU!`s3J_<70_bk|)2?cDa2p)X5NwwWj~WUln>>v z6fPAPON*r+lzveD&CcGg{S{yJf!a#9)%^!OpX>dbzCY-{b09MCw!u9^zM;<#j}8CQ z@cPJyM_wL%ZuG}HzA}~`d*8S;{@D1}Ck7{eb8_!g+tm8>JL@y`^_?G^S)BPFGhdwf zi=2|CzJum~G zwDclp&<1;!8oA|_x(l1tCG3&~ z%?=HY3`--!1O1V3NYb?rg;Y2DELU8HYrR)d{xYEJ3HerTx(xN@pW!0<nX9KW^Qr7>CIN@&<} zeJ`75N_S9}HOs#zxDaArjkBb$=fv%|>qdgha*xK3%cg9y_1|9qZP{ju%3WTab4~TR zWtn^5Gd7_bdR(zo6H>{UVzVrQ!{zr07=h;ShrpM1NC%|bq!;QQiKzf$H1#BtHMu#H z9hgT=R<*NW4T+t^eCC&E9)ag@Uf@LUBIy0f9X)5BKD?eGjpm zKMVlYW^_WCO`NoMltjT;mp^Y!v|gK%d_ z(hxsOcsq8y`3Out06ku}O5I(hVpmqzlb|qB1Vj`f1F0fPO|bz-c!;*38Hh{t8|Vk| zQ=GB!X8#(Bzyds-E%`zcTbLZ*xue<#oG9pfTFs?Joe5Lx!mo~2KA-do0rG? z^4dfvcbQC%={_I#YMykSYhItqART{u_;kGcp0%fp@O}MRf9%puw*phP`drw2=wy5T zk=M=NnFuhe%zdte=JRu}t~~t=Q)N~5g@i86K*!`DPkqvobZ^~qLFM7~H*`{Tiv+3L zC8!JYym`2|v~gHSPFP5e49VHL9}{Vo?kRfLlF?lTk zA;HqJIm|o{hiK-9F|Vv+Lm;vsv#Rjl|L^6{fm>Z|tLLBeeDU5@aIInln}YD+{kwQ9 zm&(PMTjkG1cOJA(@630XTdc3k9JQ59*GX{+)Y{=@?)r zuRz8a^X|-_`5@+!NgdElFY}K{_e$?`jLan1+m^U}8BjC+T>^K>iiW%io>5jW;S@z< z%2^Xy%375yE5BqgRn<>Qx?a%1q2sS{zJ)WnMGWg)XyfdP4vP@DboYhxXKpReM+@b6 z*GS0)yTAsAhlEBU?)9*61lk94J2IuhHpo$8X(*-<3@Q~X3Aen3M@Vh1?Xig4mhMz8y5Nh9 zWLw6BRFIIA8xmw_aEc8PVY?a04_S8d4~Y0|aEkYnlMuptJF3ZH09^}3!6GS!@wwus z+g3v^c|(@Ak|fz82~2-@^w=_#5X+=TCbWzf+K!Brrn>ZL4zgj^^mt%qB%Rh=3voeF ze<#SbA!0Y61x%Txwzn?^O%PGm*qfe&&G80?WrOBURpo1vqN}>6EtJx=H$3j*8hH~M zcWBtMKMzRXh8_nC-OE(1<#m-MS{xRXV+KpP~ZpsIuX204C_=zx%O(hiO&!&UEx`69nXC3EM6 zI?z1^)N(f~4U+a?GY@^>H7yibxN{E&c&O)bZTN&=jwQPb4$;f!5{q6BybMsp&_ZED zR%EXxYYOx%m%%f#*`X>*=I+S5pZJM}ECw6c^?Pp*gm-kE)VuS>Y1L5RlK8;@%#dBs z2yjVc*>JmeL|h4fz_xW29GSDQv!l2n=kg=4gCCJTTenUy7u(D52u**oB)KGbsp?se z+a?Z_PFh~@7SuHqIv#YxNq79pn+z{*8xE&ESufCaoQonLIorC;*2|J}zgjOa>HY6{ z_Y2Rw?G2CKfA{&*M-DE{O;3&tbXW4E3v}rt?1Mf~p7lrIU+B3m<`_v~CI>*%CfsJ))8A_XAtNQ5|O^@NI_%yLpxzVRCd4DS@Bl z+ieZ<3UA-Alp#ZrW$5+p4)_R)<}IwnkB0nE1siVb%=6D@va;U0ZGgOa{K|&m7oIRe z32*1=*wLVyG|tw$wCg@adH#9U(I#uU%k-*wP4)ziX3~fGuOMji%g`ryu2;SWLjqmw zunx0j$J14rCbPG`MFros4w~Gx;RSm)on~B!W3ab*LFM5@-RlJ>KXShTtHGERHt|@n z*9jPx{{X+uNsn)fOXI?RoP>RZ0nvm3(VGTjsX;E+mI1{r17InV4k-LRb1LGZcT=u=ONIZ#XTc+)6!*ZhdMHDO6O{X5S-V_>42#39?f198Qpn8RV|<1coS0cnbB z3Yl|NQq;>7$~VJ5XixdnMnFLm`RY+Ze~VF0Bthz)^6}zY66RHcH;hQoxe|@3XKrv9 zK`|+7x{xX_Q}AGx^QDmoGmg*OoZ6;(Z3c!FCgv8>gWv%Iim-wFC`>e|<>3JPom=9V zP(|~1-jUqzv&k{iy=GNY#->^L@dK0lIV>rRrYNfK9{daewze z*yPG&Uv8k&8j9Wy*$8FepZ&DcwGa9tc7CsfYJu;Y^E90P^`gQD?m z4D0|Qq@sofdzhCu?IDHi;CUEH{A>nvO$Up$Zz!H-#Np^22!f)t4MVRTWb9tW6ZZix z@c5Qu!yzx+RN1#Q>EeIHOta`)0tq~Yun+^gJo0eBf_8zBSpDN;b92!sX+2F>ZU1p7 zDIg;oZkK#zOQ;ecePgI*h|~^O*T2ZpipTVFo5wj64U-Ke4t?5fun)3GYy!5Drag(`(EF+2(4b%KU?#1XRu8-hqvK*~#;LRCRp zjoF_0W;St=#$hW=fV9w6|(A7O7i>^c}1aq)Aiq8h1lp2w<>6h#i$z{+zSI z&cnCda%5*HNUT?k5)!CJU-YK zM-P(^dPsV{?i()V!Bw+#dqQNIL{9?uC5Mwh6+#P$=DG=Abd%&;hrs3B93lt~_W>R@ zX$F3F`!SFkF~#DpozoLzL$zEs7WUYNCLLn?D5e-`s#MT8*d#BJyg$+bsze>73$5&g zl8&!Oni--7#VnHoWt$|-kxuRQf_&k*kop!rlp=!$%W!&Mln)Kv&4!2SVZ0{Zox_Xp z>`o?T-84M35O_BadJyitsYxNt-LWq;&rCT1tCBZ)8_sdSOQt^Y#Jc+DU-KkXU3Nne z;;m(Fkv^0QuY6MH{KP9iQZh{|3H2s$%5Nd>5=E8fV@|Xm24F0mgd`#s1Sm*Qa*eeh z$&G_>9GVBq;vhkg0jNbt{pr>Pii9V}a3xq$g!*7v`FQgznNdXdQnjZut?01|Nl6O^ zYZ@L*^~kUQh#emcegYvgPU#|^u4SyKj{vHeN!XR zba#EnKq5Lh{_sdU{{r*8^U_-%Jv1;kx99Pk_4fPIZKuAu_coWT*tI}m{L?2E&-snw z{!bEEiaE*P$M?aLbJ8u+(=SCOu5VHO@DOC3uW6fZ7V)KW5|M2IF|DJ5I*_H=KFq-i z#jpy6zChV=3GxS8LpLsi)JHa3>_Ig@p{jo*~tObPN;~{t0no?~uLS#XDQ_^{9}!kG>A^ zDl^+Uic_WrMXY!3ipRV2gZUoSz3;S_&6Ngw`%gULWy3LbLGP|ICF6oRWQrL|E!zXS zqS%{aXp?BZ&WZ1f8zfikpcFyNXVPFzR79z>c%r(e+Kjsu-ns{Cj#aM zS41CwbKK%|R1M*4cX%BA!64O4N#^>e6a%%Ip+rVR=lCf`E+Iz`^cY;9Sc#Qy_wQm2+vKs5<#dNHZ#9Ju`}n3v~*3& z26A^_xz7r%j`-E$qHD0XBiGKogC5NlC{=Af?TguNpOLV3`1)fyXK#8lC!eJmVsC{w z?1&qhNM8R>aJy#rMwe0u8Yu=JL=65ka(l<5Z`56f79j1NNto=G8Y)7gBTY{!54iUV zrTEm78X^+d(-zFSX;5!E8j7Pedeg$@uD>=pYYHrG>mDM@*LmG2+#GEoD%cPXxN^L8 zT}9a7df?!Jy-U01dTPZ&Iu(y*4L$6n`@jNZXJBkLEKM%k13(mnCkVxHPQw`Cz$gM| z2U5BTwnaxMSVjCHP8b~Ko%1_K&UeJ+r?7yqMYO{KsdA_Zg09;|^K}%6(!v7nP>AQY&5;M8m z@qvJG!0A=k<&A(0*>rf20H6(6e)2q#N^g#lD2xPxdv?nRLZIqVO*(#b-%?*sDc_#( z0`rtkYqy#kK|~XC7XHitsbt_#047_g2(}2*CO;_C-_D{TaxF!8-pxx6)F>l&F7Qr- z6clz4Vx46lNN+g-qHCuLTsfZWR#Mj@#a!lcF z4JjTbn=WsuE!_=|`B}GTGV6w#1;7ZrSL7CCL>6-HnYjuJBA;a@Ql}z@#`E~Tn z;hqbL*wK!#zht8FASfbjf(}QT_$!51p}>Y0L%N8F7!#5UVJ2%IuEo zmTY%TKNKd^Nm0WQqg@_jyLbN_S8Gn`&Qf3=MNFpb8BTMQ9w_VY)YL!#09C%ow3^MI z&=n(w^r`?gke=h~Zua1V-$U6>6uCN4x}z%rk1V$XaMF}leib~708C?JY)ZEAW=tBm z_FW~0d3}@gp}POp{iOmN*vF^FJ5sn>i}{momq`u_&8?v$>ZaMXnPt_i*7V+BNKp(a zV@N%Z!Q8svIhQ87c@=)Lb!BI=lX#>zNl*UFqxal(?zUS_ojkU0sqj#>@O;RFN(GvC zpx^>-+=?-Yxeo|OQAh;zlR#`YLtiZ#3WSkf2USGAjp&11JJF{Z9+QfL&DF?tJfbd(g`>>=zCos?zdpm{e2~v}GsT5BU5L=h&bnvoz2v|f(k{OZ}*ZR0imc7w@_f-DxT(Zw^$(9JXG0N6r zT<)>i`Zw0U!5{vTYPNVe2S?fwa;2bSWt4v)3Pn+{K@K{NV>L zoIkyC_~6{^_>NHo5)YONJ~v|X0Y|`KhNf5vlC(Wn+7vi1Ls%h304ag;!?q)`IF96; z6Q;sCQBVR~wH;>0g)x432+jrBGpfl0vtW$Sskv;I50=b#tk3#7yGJ#Lp}_IolRX|e z60%^oyhRVMrH6Ww5o9;Rs$l~6&|J~A<1Pcj?AzC8f?t$l$ERl$YajP3(?XW73(=Sp!^ zPQ*J8nZaD1ybxFK5*P~vXQt*-wat`uyqwm)IHO`nXTUcf!l7^3*Efi6?h z^Dho#L<@n=;}|jlR0=~W0CMg{g(b}2s}cY=8!MnQkt`5dfb8{`gf)eM1YYK36fg(^ zY8FOI3zcEYryENTSe1h!yE>(6Fg($21<`mOXvK z*n2DnRstmF^UG<&ZvuJ!`@dJUSAM|c)zilAqiwng@lnEuRQY@V!ezq?Na!e?U>({6 z3kWt+t-BMWDNHUL2_Adp*8pBJb8fdU6}N0<{m1YG!Lfv=UHfRAF)DanJR2?eJP*Iz5dNW7c)Y8LyYz0 zt1+W$D1TzOB9*!7fuk~cOk65o`#1Jcj-GC5mo!xGw?t}~;8>upmocIlO#;j9p^6>B zvt_<_=X7jOF^RW{SArz#PQh-7MAZRgg^9+@3{JCQyf)1l9SkDnL2ejnbo?Z&pcw?N zvUf07)(EPKmhEyST!T};c&a_IU+W*>{*bPOiFIW8$CGfdP%0s#5L1i!Vwr5b!yn+k zY6squT?_q!0bZ@6=>Yj0y;`HDxE)u0DCrw=SMdlGpH_On(;yf@}cM`srn z@rF#wVh($`Qrd^D(-ZKEE(QmA$JF5O`;J2u!+3J3jZFu(0FBZ0Nc`G$}ttw4Qz4clx2Hb+}LD>Xs5yBlpZa^C_oh-MQE}AcO?kSQ2Z*m<8lM^t) zeq!o2aTe6RlTeXN4L7-uX4!#R1m_*Pccd5zWQ_1rr6X9)CKb`CSA$?>0)93C5si1GY{wsfVenw^>y@&9JT&oFw{PkLd2rR z+PoxBBj~0n0_WN-{Rh<$Dk}Dwq_tfF`i4nXm5UOU3Yr(G_=CKXD!K`v#6;YVx5wfq zrzFGZ6Xg=rgVKi@6`Tgn#d*w>F8?$q5~h076RCgU#&-nRe*Mj4iK>uMDFo0DH8=tp zXgwjps-9hQk>X$>Un)g27RoQ2bW?B`Szt%=QJ~qxw-AjAH8BL;C^Q6gq2nDUT}Hv7R0o9wg)La&JHmcaxTfqDuw>Jw!R zWUg!C9C(sVbN!kp5!riTyEQoNWV_+q(#fxJ-cNN3!1vAP6RZ$<4K#7(Wjqe_C?eo^82itH_aSL<3K-b;GRG%q;spk z7>SnAkK)c(UGAMr?cK+^JG(nM_q4e~_sPMB_uL;=^X!n}O-Etqx;on8{;3^9Mt&g@ zNCtJ;W!GZCO0SW!`N{d|u``uOFPEb}mv?8K+>siQN z@3nv96=4s)RJY>D{qCTkqM0S{mJFsd12w&>DjZA!n87VYMC%v?VJ48A7Zwnq1EFL$ zJ`3mHvQ*E#y7VO9F&5~VAJJnCXli&_P z27_CS14u$-gNk>ELsBIGX9_g|Oyd~1`Gci?tH&+(1&rANJ)2hD9j@pLo8|xxNxrC$ zFO1B{W_JKlSzDh+*4!vx@a3{rPr=vr=$tn?&OL|RZ+(+1>5cKdE#+^U_OtH-QZYO{ z81)XkzAxgjCI@V&5at;#Rv=qp*nw{TZnQisNN-qbL@=j4Ek6}KazHE4@__ISg18wX zK)^H&xECxme6S?xDaW&IodN9&WxEjpY#)!pMz^azwPU1KDP$8-*MfT?pEZ&C2~rJR z({+&rc8tyk%&r3|hdjIsda3BdXO1{{nPXPOY_=NZK2?kd;^kN%7A^JiQ>vfGB55y# z79O2PlN0^Pj`E<&YBkmGv8!=e^_Zw74=(VPXfYOulw+?nx=Vfy8984l7R^jTU!g?B zK9&u4m)w5-=%W!Uu7!`dfNQCWxq}v?k@&SAUK?aDhQ#BJO~oB&!N;5!SzQb^Rc zn}EUXNWQvjG?y1(FntYxQI14<%u3j<#sm`9C;67jwPKpQ>rSgE%h4@T1}%!S9c zJJJz;BvA_clcn$6B|?1t&fWqg15Wur3d*0PzlVkDRkvax(u3-9pGvIb+7E0H$imF{-Fj{H?MY~FX z`SiA`We?O`D9j{t0cQhPDs`LLhW*OtJwQ_1kt5>1V~A~4MIZ6)v*?*Whzv5yAvxn#qKL)Ro6N;KJ$Rz;hF;R5V{AdgA+-gD;GV@LKZ z?yOIY^#Tj%Xpa!M^)P$b?Yua2At^`^-nH~2CIjzE+yawN8yy0ibUeEonID=m=cH|h ztcTHF0%f-BzS|QjmgKl;$6_sw>IubS?bC4^QSI_th#7^xj`XW7Rbnm>FD7H2s*B9r zu0B1JQQfH+WIJp4?JfIkZ{ocl(7mp_9y}#fuk0?2MPs#~$?f_f*{X(Y$CmX*H*MK1 zMKjjc5iC47Np{eC#Pyb^tYiq;9sAAc`3m2%vq>912ih!4OZCMRmE3~eko<$5hi*nu zi+YKwcw}&#pb9kziGn>r6ar=j`g>~BzZ3AmLtAFcxg~5@@gtU=0th!mY!lD zusa{|utU?mnQ(}Gn%O57#>W>|mv?Hugl}LiJGB0Xl>sewZ1|uSUmGj$-7W0zH?K{x ze+5ksOP8dB_5Hgn;DsH`gv5<9WdXHG$eHUV+;+z!)r1gs`U!|DHy+PERu-$lYW(Tfg@EFj=Mr=9oqGMy92v|2KD-f zva0+bXK|O&l1+Ab1Etcv8esHDDLotr1OqIh$wp}`5v!YBHgKxL^`4QLvjGiB2bFz7 zC|<&yeJ-7&n*$2~Fk53^^{8fNQz&~{7*=v3a;FlrJ0T7G0b+4rrBm!Hpu-r}OPHiP8gfad4}V zK@y;*#84#E3Vp&MnQD{K6WOf!2^L=s%V?o_pBEUcuh-HdA*ScbThPuOxtNi4S@R27 zT}-cnLRI&5K+G4I!7bUR>B@1m3n*<{pw7XV8Z*rGe_sEVf*3>eBXR9|Q9Dpe2T?x}^(WS|&KTeiHytDzhX(s=l~TSf z5%i%Rc#=(0l_x}a7IQjflWV8*PxD;6ZQsgc^ob+#UsQcg> z;kea$kU;j4p=wtl=krMW*ghR|G$H~JFqlX5oDk0mSF2lfjHIK>!GA)x4+v~k_!#7^ z;V;y?!<)ko1*1V9;3?#4yzM=EJG>dQQw{5G-PAfeyAQ2}cq;A-rO+Rx#A>BsuhrS@ z=|NGszwfPgwdsWqM*{vdstWODhPN*sPWv>piZg_6O8d}gZE#NYwB-W6j8{=3)m*@1 zqG2oCr-ibG3sc@uM;GQY2;IF0Yn;wXmtLC6az!OZqo}!ngIJaXpWmHm-I!DR6 z1o0%V7vd_a9dg^oVE_$PCHdTzQBKLjtW+~172_1ftw=xtA%dV_D7*uST_YdgqyYdCblDgX8X&D?fc#7Q@ zFLdPxOrFcJ0rn&^ET|S|%LlbK=5xDt`#UYz0_4V@f489mJT(`5VQ4>YrFRC~3MnHP zc=l%@Z7si`1l~I)y|a#j9!NW&4i2 ziZ-(z9B-zDwx4&CGX&PKZ)xZBj^XY~M|(W#bt9xX#*UG50dN(WhZa!XTocC8gH3H% zasp!%EZjU?rdfxXX-+$G0DtNU?qzLJpY7!V$^@lG4c|;$)A|RiSx6|?OA*ynqhX{d zTk&(KD_7|14|EzVmhQ@iRGv?v7nA+E*R%db)$WpW(J@10gdPg=QB~^>#0KY%!_Ix?rQwa538Zx}aaz5lz-t|bQ;RU-99`QByS!pL_fiTek8j%ALKC)vz zC<#Kv>%tcs8?9B+DcB2J+R1j3{5sJ9;?S0t(Q=Eozy{=kISC)(j0mV~!#)1j`VvR0 zmlo8`fyBmJ$NH1GQa_4`W!2rE3{Q0$C3hhjON4^$)Ar8kfUoy#Z@?Fq18dF;x(<}W z)x6)-3r`Fs{S{y5yV?TPoXZ<6)H-s@`*u9p;VZEqmD&=oaU-dBvG)UPWT3iKV;+_gDRq?VsO$hB8ncQBe`_H_F2-k!&O=rwLn)u)qK@MJr`rUFY|-jfgY zJk;kd*Cx#QRkzTC!~bdhOrl9*ig*dw2UAyX=|R_5Fr9FM4c2tLb)+bN%kyw z^xU}HEf;z_2jCUN`fUqECdGg}$mOC(V3cv)@IyX^}t~TKCxf}Qt~TZJ=u<~NTAz~iQ>L~<4@gQZ>(*hg7PJ1O?4Nh zYhK>zkEXhiKmY`Xk{7iWxEvi#$w^nNZN6qwRymBE!Vf^R3)0`#JPP?X!loLJZKPA*7d@#Yx(R1_h-N zu?baqb3+2<=@@XB5}YVR6~g)_p3rT&Z=q+nXK&I9hND%7oN~bDLv==RE?}d>s5UTj zW3v+O%EGL0<`sq|+8Op)L9-}CHnILtu>WAkUd@DczSg4JI;P99Yz}_fZfIP=~7*t)gao!J!)8XPvl*yH{tel zL`>D6MC-oo*33{_ZEd;T<&ES9g5_xwMP(uGJusx%{@_1gdju>>_Mn{(jp>7-rOp5&|s_~1ySAx3Jtx*``EXU(R3C;F# zl#6?$uF6%F>zY9zQXT;DoKSGs{{`TaV)1PPm zp&MBPuLmW_KLhJPtifMdWCxh^#wXXWah~pY#_6y7uIR6eB1^o+vUS($5|D@4AE>@kS?;nIWW&PNT&4P0xUN+tS18qcsn~@t(Ca`N2|tyt=nIgKI*ty2)2WHWu_dS+XvTV!J)*-1LT=pR+P!<8 zyA3yAd~>DO!{(=rXv~~?9g1D}o4EYcQwT|Aw@a1%etd?u?@{4Yh4_t{VgK&vomha& zxZ~*BgI4;`ITsd8Sed=!?SYST+hQIp=E8M-=Nw0MOl(v+-!u2aN#^!FO)p^gsp#m{WA*6ASnXJC8?G*@c)iK){$NxQ57RW zD~6(8RhEVz#3uTfI)S{tp55`{IfjMungkd{K8RN0f#9MxTEA#B)3VG9r0+l`Wbj3^ z>}}}KRFX?rlFxO@&0H?Oi|UI>!|k}i`S`^pqW1MQFA&28#+nyEB)a(oKlK%e55}*% zf_a%<;-|dCfBo#J%Mt$Akt0W5f8>b=@4x%@Qzt^j+)(#Oxsvrj4Fm_#oD~gI{6z?j zNLrvqv`BmcIrhku`i0jY%%W+_F^w4O$U6Z%_#%`+sW{CtB=|CoZkF*1WE&Op{o@=C z4PuYYGq5J%|BZHrM;Sw#KWav?G$2Zv^!6`(S2NLF4Tns3>1AN{a2rBl=mIy2j^6(P zRn=^tUIy>EsVR2-kC80opVCt(g}?B}_vp1DvGHE8i9?f3y~=67}3u13DnD4%(5?|a#&|OG?e%X%bjE&BU|}+AV{J0D zxZ-sg><_JqQH&)cCHs_0Sc%Bp!QQc-fInt zYUpA`3D@zX3-i;X1AU#P43<(eb?Fp4X@Tvb)ld&lK8)b;keEBnpYV-{=cz$NU>n#L z{JfD}5@wWQJSQJU7^~USofm^_=jAH)GlXS+}v@< z)`|C(wvO7|3+sQ4OmTA+O`slOEPRXZo{o-_rND~lZD1&&RCl}fKpgeV^kOt4Z;wB-XJkMw~AjP007Rr|M=vBwYhwhYQm*~X4d%f zW8V0ikEre_x^TifP+TLrOs`gFt z%Wh`{8|q3Ht4q0aRv5%*=Fxg8HFVTZ!LqWvu_WpyG1bG!d2}9dnU-sCrQhJk*Ov)+ zLbvjcnSnUU#|Iz#EO!l$AL#9Nd|T=d|4q>P_0m7ottBkvO%-V^Dp%n68Tch`ml05+ z=9z*ks4&WqQ*&2j330w*o2G+;`W7bGMv2dUy}Ac)dN{o%w9l*20w$l1fsK^huK4&LGP8 z<#Z9M%pV!XftxXy*NOWbH2@GG8lq?htKmA%5T-7drDc4662pDtW44y^*yS#z)3W8! zgp9?{+(X_{uE}1@N2V4nu3ht&S+}SC%&$DisQE@L;Dbc zBWg#uWoe1zj#ICX82lJ|c3-7Gj)@p)8GcOw>(|^ReV}e(%}5X)QqgqK(ZOEFF)V zS_HpAp(GSCRcJ)u)1px`1s_!;a7hc0vL@OJ_3rpI#27%^2Al)ViKHD`i)l8s!=}m* zr-31kQ#gpmu`sX-=4Re@t54B7+ELJ?nq$TKp7GJ!cXjrRM)&P(3kE~391Gg29mjNI zrR+jpmRDDyDD8y5x11PQo?Y5?ItWWizGP$(?KjHaG3o%8E0GYbkilKC!oj^=W-6Vi zt)vE{!AkN_@8Z$?%ARr?q>wA7cUbhxXv+ui0EV|bP~11$e`f#8zJXmYxXRu0hw|ZK z*&=D;)Mvy`0{a}5j!>=4{9qnU+EROn^xPg=eQh`NI9d*gPLzW}%0knGgM;u2Pbd^c zh@(JldH>{iPbHg9#)5unl#LRGM$LKx$E3^(c9p0Wz)+B9?iV%KCQ>)lBXn{Fgx|W-h(~}wkM=UZX0tY zwcaTdqp5mfAk4VOtpyGa!KVtuLyGEWSj&~MbJDe;F6w6U?>vE~xMM35amDtXzEDC7 zg3O8^dcWU2zj)D<+bnJBxnO`=;~;~1)Vcf~egp6@>h6E#w`MCv)U34d4q)jr+8)tc zL}e@}OeXvZFDYIZa@T}4ZZHg7wrv=JOg9*|{c03AGWkACE-+kpbN6kz23cBb9G%sZ z(Jaj@YQZU)L4Qd&VF_CpBBYz*5lkcgiogW?NV=919gb*I?r zdMrE+~>(#Q)j{2o}M3VwqTbTxI3 zh*%E{2#THpE5-$FXwv@+Clg^&^6*+WCFbF0HtsE4=)lzE$lyR8QJzIku&w-Lb{xG$1Nio zPMjI_&ZEiGZMyUQNBc79c{e-y1Hq^j_TQSd>X&ydh` zRXeLmpOVq64+xt(d(1FiC!a+jCgbK@^l-XUPr4wLS+J*cwLTw3w@y*mbP$*Nt!K9?_%?(?EfJ)|18DSK_+9?At!Xlr&q-am57 z=c+0-&{3|t%zgxWzf+p3k9Xj5qTCsrP9<`1GDKx&61GT^LNupg6{da1NN;x`*DN61 z$##-y|H%b}&2sY%#Y%R5FbGGS7)*3W-MEHO)Q*dqW@X2i;!b-4?9uH7;jb{` z{q;ZTNk7(M_|CQ}Z^{Yfpkx08_BjDmd06VK7qJhy6=e;g+A_*5OU(8b!$Vz@X#uW? zE*IxLhz&@!iI@T_#W=P0s?dbo?i9$SVznbl&d|+WT@5g3rXM84=mgn@pO#-Oz+T_-!S{+h064U(=dDL z?%jXs*B_spOSpE<6CHc;K6^pO3e`pd)u7Ts;3e?g2z^A(NEpM-G!c{XnP}KHqzda& zLB5S<@hvYz+}xxXM8U~>;unjs9d0d_9w`;Hax!LRD;9UBd_l9TV5^ok-WSJmHJbW< zZiEW`$zUvz^|h^hJf|iD9xeBgvmFtiJJ(S0E#V z6tG1^q%FfG28wX8R21v@9QK56RjB6B?_()f zs;|;s%h&SBV4Pd+L;4673JpCKhV0s2pD&J9e>W=Uc({eb2QY@+x{{O42wwV1czX6{8<>*W_i$wUZn~^E0^*^4aE|)t4%riL3%>1!zB@ z+eo0P)R5e!)r$c83kQfCZ$b%k*^l~zCt~bR7}grs=Hlk96B84Yu0Y;Ue|CQEoD%Br z^Iviqa*zDVmv}E+Z20AV=^CG(pWo$5dtCb4XW$h^>>8ds3SW+TEfy)#0A@fd`0*m1 zzZdJuC{%L+?iKN15?NUM-e{~)fVufC~}c467{ziMGE-2MO1R> zP{<-a1ad_DP$K_W@CvvB+6poYmk)ybPiVDZo1OaG*2J)e>w}%PJ8T%ffG5OW5Y?zt zoX`3L-B}e&f{Us$QTy0j;sS(ht%qSL)^M~sbSP)WCM^B-J-vR95qk4i^QgPk_^&rSNLu=_%!Olj{{P;tEVixeJl}Ik z-b-=cE*EjTTtrbK#YNPzyI7z+Zt=eMGBOHbdN62x%Vvp z`S<@nHJq>bq0kaOU-!b!FV0O3qy0u4dM|RbB1S2TJi?GQ!By$FnXGw`I3;F3)2T*xe(too7(E@B@zS*mND4x+rBEHWSc}M(g;0Tx1GrwO!<`bYfT#%_Frjx8 zc{QCY2q`s88A!ju4{)tdg3lvZB)GrnvMg635{FBzm^XPHmrQSCS&V_iF=D+F@i|R%i=LgEPD?4gq-{jaXbYmCLLhlUjg$-L}NIY%jf&RdqfL8oE~(D_%M7I zu@OWaNszz!8O8-h(%W-MkhY7yrsV8Ei_G4SD{h20GC6FygXJ`xbvlwEtkX)`s^*hH z$h642Wm`Ba|HC)T0aZFvH#w4Wk2hg;6z8&zg*ySTt?szv|@}BB(MUc;J$9SP4T#^r{qx=2NAr)_Xrc{NU5;m zvzEGbSO6IfDIn@EXGlc%?_0fR!&Fg1#Tw5Qtzu*~dD5qXm;d()3Yr(G;gR^1B@AVT;qM{}qQ1*v1OtSIv~QDTF+0UZw1W+!tI7`Je*0z|spi9K^Y@<1%~g zF1wq_p_fL@wxI;FO2KPKjHL2)&~zulH_0UqYnTMzGX+W>O|HixuA zv~Zla>FZS!0ni5lwl#g>fQWRFq~jV`Fi?yvQRX7zYC5dU$oCemM!K&Lg%j+T-VP+C z$tjEP+SqdF-D}f*y^6KaJ2KE0wA*jY508%_-JFRzd`To%%#{zXjo~=T)Wt&I?VfOd zwOrUJW1W1D{}XD!_tE3A`Y<+b^fc z4extelg>6mchkU`e0yQLaXy2O!o_+O)>R8+64HC$ums>E`~gdy46&SkT!`rpEWaWpVpbw)e8@0R_H4BjlDtvJP?%!KZ#n7^+umpgCUf z82~fD7$A*UWId1=nC&U+-=7WD%OMxOyCzn*`nIBGFf;lAsv~WA;-Y&lg{W@ zvw>2cJX_x?6)RTn?sC*uh#^-X!Q9~EoOl=eY+P6s&ea#^kOC+KMHC@Q_)8#x33e7& zK4z<}eTD-@s!(hJbB5e>u- z+0}IMh#(;J1j__Dk|BQUqp>N`yLxUTu6C;y#qM%>M~SnTTerk#!D&?@aD(&CWqt67 zi-yW0rMD{i>h+k*)#Z}bS0lc%Lu7w)VaD%iURc7BRo@IlWcIq8zY7>)f!j-g*js0< zX4}{+v0%hK8uK!L@cQWM#oTWfDi;^iD+6N1=PQq6wg_G#kB7u{%-4$W=XH-lxdLFt ztk=4sjw2RDPr(2KC(N9bG7ml=`sB4fMydi1LeJ-#6fZ~8>>(ZjA(Z#wAeMgWyU z=QyVQ9=H8+GTzr^{zm{84zgj79?H3F#4Eexpo6hnHnVTC-<=$JwfiINMdU#H@|V=l zt<8mT!~)D8ft=M^F8yLk`VTlP!w<*&ksq)k6uCeh!r;W|$sXfe z2S_!srNf+Cr>%544*IQp)d%J}tOR{d@zPZWx5-PFCB;`i2*`v_a!Ld=S&q(b+_E7# zo6jkgWcght_nd~0*!L@$K>72%{b3)Jp)2?ijh8Yayka@E{(A=iw1+&{eGq+d`v0cN-#5(}6%%qFpco03DId zl=DP@a|3Ardjsc_5d_NPn>Qf)tjx`hk4D2;@COAy$t?PaNy_1Sn-By?5nNDq!8n@0 zbV1|U!327RPYDtZA}*71!Vp88WVMlh6KiwvSSTEegvdW)Ix$(!51Q>>d!>jx0U*9M zoEQlYAhS)e2M)&a{a-PQp~!Pl#L435k86=wBq=(!U2rg34}F+iiiZYkE;AxdFGII4TV0t#zqrl3a4;6)vgl#I)KjxoJtqr>!)iB3l%I6sKYbSG+%LpB- zaatnL=FBk8`vYgNrX!h=TS<54$bmx3R0`c5KECAh#`z z`NA7t3re?ci*Td7aTAiieR0U!U9ApXR=nm%4}SWuBX!FU{!H{-j`fya9-Og?fBFM3 z#je4xL;>6W#~+zS!BdV2H-yXeH98NHor^OoTNaSl8ipP)B?v5*_Yo&+WGV8mbn$a* zAiWw)^7{4F6_`CIi~ZR&`7R>72?l5KUF72Z6LdfTOyV3+!Bc52W%w|HcL5>nU=bwh zN)g83y9B71d#A>kOH}k*BcgR=)MTE&(-rbs8ZKo}Qu3ipq$B9D7PFfJL3Xyc%okk6lwMJ@+pyR$Mj7bZqFP4@0CuhE_t=8$KBz~&A0TIT>i9qJ-upAE~orK|JcCa4L%V+U;Vb5or7C=Ozu;nHm5aUR~!y# zFA=_MVSh#PXn1lqn;+B#QV1=GGky~=IY@F24v-+>x}%BGHBcI6j2{XPp6e-=4Frb9 zb6Lc+L<^&Uk`76s5gP=Fv%^H#$vK+SD6WDgsLQ-J}36u@B;HA zVhz26A0<4FacGNR{SKTl1+h}74%d_vez(|vZP7=s$BL)bt5H4uLp&FKws<}1kDy)A zpGA+rC&*kz4FM9y*Nrk0Y{E~CvIzZM&?uXP6w{2dS@5!N8f6P~6hAS_lHe7mjk1#s zn19bGyM%6uBEsq85o}W3D0@K%aaKF{zAk+8Rs8B@24VWgMp+abFxKk#O~P3gH_B!q z&Aw=qEy4_Z4D>pZkQO6G*(u%-*Nn1D7_$7xD0_r})Nho%fOZSDWj%&TDOy zmvKwO=~XTCLRfBVyDeNBn4EolLDwTpPZQl76iR#|CV1zcf9k-=M>P)i+l_;x?WQ_d zs;Cp{({~PZ-f~*sKJk=OT3ttPj`&hgA621>epQ7@l-l@t4THId>jB2u;$xs?z0Yga zu(-nY=FxHMU|+44s*`HF{hD^KeX!Ho$86uPmTIW*v-Rpli+&QE2w?uV07dOc15w2u<1^v@-YccMEqq zFr*^!x`uue44pQ&v}J67QChF#6YZ{Gbg$w0577RIx7Tavz)G8s-bnAdhca!TBb2E> z^sXy_$5mX{u+6FNvprhn;NE!xt;Xq4MSXkPvy<;t(X0FTZDI3h!X5mjw?3T_jlXeL zxP&XM*#w?NXr_(+ObBKC9Aj>s}THV{@-^_d-6(jR8D zRkizCYgfCo+f;c+G_^5%N!8jDww-qSaH3p3-aKj@wvS84tzGJId98uz`kChVvmSUF z(7qUj5}(IEkG}}idD@3!;6Uv`m3%^0=n-l!G=FuWi} z!7+{lcqV}mrhz~f03eIdmM(*jTmh(@$5vZ|q<#t8@d^O<8o>G`p#BZ;?k^)!;}sH= zgm1wB11^mc_Ts!h8?y`VG6%e1NwD!SFY_@!OwkJXfL}#;O_)W5Ut`@Y3fV4>>|9Bv zvJ^|R49l_}xXtvkJnLiq^1c05r7~NwENXjun&s+Fv#m+1+TNWlOkU%B(w5o+)Ol|F+e9w60AzrzOU;Jx1*lTWU5`Spb zj4!GZzfhQKjBA6|6WrC~#{${w8U6d$)9?KaUH{@IgT&)4pTdPVU&Y?PP4@|^Sj{A$iMHC0_z({=hs z*G!kYqJ#th1n^C|@BpO$c>eK!_y3P1Bvj=A0G;daG5r5va;emzsKUqs0Dw$>%PQY6 z5RcSkFt#;x006*TzUA*&AagKn;g!a2F2n!;Y{Iur_!|~P0B|ca2Xk8h09*$EfG7h1 z;8NGo*RRbDoxgo`{+k2z|A1_6<7xIiUIYNh4Fdq7qY;lTLKdcmCf~6&zHL~)!2y}Z zM`-b_{MN;M%f#OxgCYdYwy<^a002P0Wf0YGq#Y>3Kib$Ef7`(>eA`U_2YmRqOIt&a z@AraKeaqjr0AdgqP(eFGTT=i)!{$2|TmS&dPJ=hR-of7aJ1^~sZ(H4OY?5hrO*uH3 ze*40LfBQv#BPH<3Im2Vk*uccV0ALhs&Vsi4V%yC!%Gv{nV$#{rYs8lL>Uq(R70)=K z149FYLIwi?xL_eP0{-X2^QIq567{n1mHD-)QG^o!q#{ND6dXbJ0zkf_n*oXdVBh>Z zsqdLG0o=czoIx!AQ~c*|v@yUH7?=_mSRQSO1O_IG6k_JnYcM)G7yyoojlBiO)aePg z2UXNo!oJ|ElG%lyQ6ueHqwJEp+FU#Ifsmb+v=x$HAeS9?`!y8VP~Tx)TkDPpH&-ha zBBHj8ZS{cHqqp^zr`ch4y7{3v0-}dWq&fnV0Qw(L?aE|Hu3>R8LF6UUkl5Tux_+nV zykTZrwG+XS0M7thn_WRJuZRekAL{8XvB?bmb8xL0qT@P-K@UOg0e-J6YoQT3K#JuE zE7}{lume1mTf|(m#AE~wC$+Cdj$IV^bWrQ+`KQP-)iZmiku2}ETB!+!_QeOI-vUZH zD^;drtmnfz?V_K~QeOD7Sr>38!*nIVd`{3O)Lv{z6Ksa!NTcScAhyCC$;?uEzRDsZ zew}*FHuVaady{zc^58{5O2hnm86@#$uaB+qIG3l8eh7&(%x{;4>d}J`E~hLHxVsyY zdmo)y#3iPmqCsB?P@f>Z(qd2lt&@R)S%3i!qy!`~7uY^?&6$cg$6 z_Api`MZJ&a3p7RG)BoWs@$2n#=DqQKCP^^*lkS=IYi2{x`E&A<^+53|w?+`c-w9$a zuLcOq)WF=E!pZ^yL*W8}TnhxjgcsFVUE$_xYxVSad4>QF4G|X`8YCwxE;2PaAilkY zjglFssjxc5&CpuoY4>`C43ik9C^0+4ghvlVCUz6XtRtJi1{jfu^?0mRt64hFtD&cK zk|~J%P71|z_1qn@v=U5D7GW|FNucZ4W|&@*`JqMaHs>4o8^-c9AlcAorh~`Jy$2RYCZQhdIUl*&e0WkVdf4p}!ezB!k%Iq@~8n{fNk{E$VFitg#ao;K5mg4>K(|PWW_w(_i_jmIm9QdF0K>5sk z^0M(V+%TZDv}3ATK5iCx_01i-nSebMsKULG@UIKvAc^ZnX^FF#B~n`0fxo~;{IH}L zHwWY}MAMXB{x&1{@LN6JyiONOxpoIZGFB(5QnGi{O|qUVSidCPBmHqPzwicfJTJw2 zF(h|N>la}E8f-x`hJAP-{EdqRvJ$#C+jAXy{W zTQVazTMalb_knB9L5y!7=U+2)7V-*fO1KI^0aK4|?FPxQoF9yo{w!TXbOR7bD3bkG zV`*^ttfm@S@~D_u_+HYh1ux6SrKX*x8jK>muX8xXV5f@mW*@!HMFhWX!b^T8 zjXf{Ko*_Q-&x|7T4v#A46!@&kb~kJ_cBa*Bp!0N1`RoE>?7T|S?0n89Jrlk9jKcic99PhU zAs=XS(3l_Qg$oPG$jjm7zCi1$^YQA_% z8eM9F`R^muB-57?87I1b%F;Opo+&Z)O{y%@x3($h8r_9SFu#eYlt}IZMadBec~qCS z6Gg9Rf=ec9clNxmZ*({4w@GF31R6R4M4B?sqfR&i4RrmIziF=%58l2(<6}~uTy~=7 zj6OLn-Y@D4R7?fiD{TEo6P3lnomLcWv0K7bjLK3Yqi6gzE=0@S#6c6^CWa*|y`^&x zRz-q%Jy4j={rQ}Ps@~K?6lnfB5^K<}z&7n=e4-fqwa970-e$r8ESQKOLd-p9#O1Bw zaS{JHy@;>%#YmG;2lo0ic~FBUD$3&a8kpkl)m36+v<6n?S|u)b-)_mk(CdexZ3Y7t z^pzokruUMko+z^5)q1uTJyMXgCCt46^E)r%$k&lg=;<1rlDo$t>wF;9yS2~{PW@c!X@Y$M2`-5k9vB8L}m z{7_cqvPPgg)Y6cqIRu5gUXt1rsMzvJ_XQp`7g)Uv%IbK(&Tv+ zBI22)X37>U(qbpwxAXjlbbGdLGP?UZ6>!Ual9e|K#V>CmK=iri#u<3V!|$Pog25hS zhHZ;Xz?$C~Tqbbl($Akr8;Vz){nt0mj&*nfd#x+3PNJ2?PUMM!;4>cP`6}kfs|Ocl9mGdV736?%31on zD;L3?y2yd2D7%;y!E510|AmNELCe8~T#QAD1^wr|@*bbe|b1fsB-0qn%tN^?KgYp zIuc>Zez6Zh03banE&f--^nw5beuN5#o&dnW=7onJzIr~F4NxH(kly_v_OHTjc23p6 z4w{)S!K2m#7YV>C)`wf+MmZsGK;Y5w{ws&R3G;uK4&W1H1+)ZA4x9r58sMc`RWm`RxJcQYnxrfa7EY+KUP z-2AD#__OP3aZ%a5a#8C-O}l|iR*I#8>}?gZIkeM&sP4lctiCS>AsAkdiDRO72Zt+| zAL(v-vU4Xu(_DklfNQes)t3|KRIW#c^fh_n++NAror!T%-E-CP?;~hH=ht5Azd;H~ zuEbw@g?zi$s(%jbUu5b1yI*F#Gv#f%KU3xJ8}WCy{Ea~c!+XYFTC10tc9GXMUPV4v z+PWbHmzuZH>@s-K|GoA%-Qk2268J2shkf}vcz4tS6@GIO-J&pSARO^r=%t>yYELEL z?2EmY=WPq?_jOWOcBt@uy@gQ?k8Wx#k?r_@0w^2?@DFdVm%k968gh9jH#gN!BhbuH zcIv!kVH9@36;K)0TO>T2W6mQY5`cm0(hgE0@rV|~jOt_g7u_6=JT@ANT53v|zZQQl zUNRJ_rEcz{W=N8-8ia^eo57|FD@nd&rOZUW@SJk17I#XCTR{#?)lZbg$^st>92$X9 zY0F3^RP7NEtJm{lpm1;%bjZN6;j!aQ=~!UDvB1jDrk-&OWPK!L5sWW01O5m<#;D!y z;g`27tYU16BHq^ zepeAn<)y%c_mgDS>zTj-JhEp}=t@MpF8Qn){NeKv?u+rOfw0L&l`uhPt}t)tAt>O& z;G%|)B;y7-sbxSbAF;kPXg)7O6yIu9#1IDeWZ#h|0zawuL;D~;@IZA-zDl@#-{U?X zWj=x`Pd*++%-Ng0wZXo;Ra^Aq9m*eD_F_xTLn)Qd7ZJoU$e0n!z0kD37st&fXlW8T zz40b8S%UN_qd?$w5F$Wo(pP*l8 zpO7tMAFtL>C}G4k2==6jf_@DB7aCEI1lY zmu5zTC}Iq8OH6MJ|HQztxZ-Y!tvz^LmOj+P;_QO+Qk1)t8)&$dVuC}`#mcN%NForH<7ug71_v74}Ua!mzulicdaXzaiDQ{oZO=nV-!s2V2^IClAKrqloi4 z_7U*^ngDUMz8x~Yn}=v;3S`Ggj5xkCWL#v0kn0iv33Pqm8H=8M)n@D=PLJns{v7>- zfy8KN`36?R0x}U>L3u1*_YsJ2vd0fm)MDzF>s{k(|)|K(A_%nqH^Y}=XR9Cf}RmVNA&qV z5sWKI@ql!cbQ>u|J&qPj9roc?=s~;yDoqA%xPyVSbjxiA1da4BdjvpYJlBRcIAkThTCFoOzv>UsakQMIGyDxwlr*(l z^c!^(gMx-BY8gXWks#trhXM`sz{orM2ED)(4MW&7pIHajpCJ(jI^Gk$>WrJZdT>}1 zvof_s!a711b|a5ea^9{cVZCoIIA{ZLy@;V>@)l|hU+gjeZEm_;C%E%2@9 z53Wx)qsLA#Wb+M0h|otb-Fq6DQSto*8Rbhflk;1F!^j+LC?8P`#EYjaQo#}X_Dr`} z3-BSBhn{JF^?YFZ5txkwi^$SBnSAJ|x{Y~BpjCHk0Ewn#Y9OgQ5+sl(kSLxzPxVr5 z`Ep;pqxU42#&L4q_=6&Jx66SCX{F0t(h?0JHNmWjr)Agqb{z z16|f+%Lc%;C7bU_@|b*jL*mzDTgQY%kXeoqTTF|@91vqvk(h(<9i?Fnz zBnU@@6u9#vF^^cgL=JjTLhnP4LUPl_Jx@FZZl zZLo*4#(zbb=+Siy-Q{C%Gf)XO9`Gg2W+4+osV75)BohF044*g;I%ED1^>wt-9(xps z3`X1YsyC2TeID@;|t5*9dQ}*Ezj9V-8REpZ3lb>%~flLpZTZ%DP#WkZ+f2OnWVc5 zgrF>t)=xk~De_J_G0_9F&IFkRiM!^Hyj43LbmT;a(_>eQUAUUI^l) zx8G2d@980Bo)q)!D>qoZZ|BMg1l@=QL;(42#K@a~U7;FgQ0thyaUgsz^C8j> zL+yDRD69$4&aOnSF)GxBttw)JM(g+aHZyADFNb@0=*!=GBx%X3DQcrrnl`bZFPDoc zG-xoh#|2oxDz(L9kSaRJzL{X*GrY{M?y3lIKg5zoLKzMxZl(0e71RfetJurdPIQzS zA3v5bAaYsXg=Z(*$_RS=+|`FfGF?c)mvL>=j;yC|N0j7tO_@qX&9sYwayQ!=Z;6yY zc`WsHGFXQ{8dDAmP zk7FRr8I^}!O(PpFsSXzSlz!)sNA8MIu`^iY_rFoJxY^is>HaDEyYDM<>_Y|jRk7yE z*vBXRt-f2JJkV>)-yQ_?lnHM1M}Gx^g`@$G&dMBnN<=}^o{|YrTHLaCuFGXf-sNZB zS?LOSCcMktI6Zi8)u^|g*JWf2zth3(^vgw~+2(C-oVKFQ!`k*kiH{+6ewq`@VD97US9AJMoyyt%Ob_66+O}(@& zE;^)n^3%Xpe9>`H=Z41=GZ~jh_4y@$bB}HyV!HW5n0n|w8evE>bK#1S3BZ0fG2|;2 z{5bY`F{d7mG8P5TYf;>jR`q!C&7Ri9vbmx#CIWOYGeKTX#l_?F_FaJxaF2Ce;}*FM z;0qu?3IS?k)^WX&4WZ=nsA6R3Ie%%AHdGj-YUxDflgH|t<2=i8YEggo|D*)#@nthA zW{|9MLl}w^4+bB8bjl|l-~~=?==kFND$`aa(R#|;TIyV6s;|@z`co458dOU>A>nMj zN~0(V$hIQnQ8M>1#k!(zjY(Ao1qf=Shye~owzxi)X=^cI0r1H`o*e|KKvIc(DIp%ywtE(|<^elrOcoyo>h~&y~oEJMPW^Px*ns1o^IVYRiJN#_39EK;_!IL6Q^c1&>vBl+ZnXjL!5>hq) z^w$^GxrOh}7&){zgGxVd1?;hZQWr+#azaFVtp?p#_j^3k6d%U$%4#T+ zas$^sO+wo@W5AneA07vii!oJoq%)B9`j)^I;{|ELp!e91%*%_ z22t;f3zrX8?T?%PBR--m4RyvmbIxVfzaJ$5Y*G^4gxh6R5AN@9q#Odp^_YzgA84KT zggbS6rQieO+^N@?iEb#Rzc&o`N)1ZYtf%b*%pAF}%vN4a?BairZ z4N(KQ9~80@XN`(b*LPjO-l-uG+&KfVhg9=-lp3foLQ!)j#V>lzYuK;qh$8+y>s!B+ zHhOJTG+wp8#Nt>>+gfbU;sO>oMIGQe`*qNg?485K>;2vrPN*js661}UF8RaNcGftp zyI7A)-mtcjK`Je7kGHr3T6D z14Yj}`^>u%LXe^NMfEN}mP$D%^u%%ZT8PJAedzjrBZ2U^+@wdW-7uC2@S1yF6i$cd^Eobh~9d~LuI8;f;P+L>KY1Q6)!ABm2GB|(R@Y_0%v`$DJdn*v8lN2QH zGfP4y*k+IdDN!%mW4^y?Ax>Z=%cnlpFadzsrLi&kzY3W%XzxPhSDk-x>FNG8B~bh9 z{SFnHW)8)93%fD>80&+*_CUls6vzm1%DQ|B3JAF1*wv?@1h zqG{@gwy5p8*Wm@-Hix{JYltnzX>yaB03zquSoBut8vjYad~SDWRByPLYBPYGg^Fyk z<7ca@Ew#yf8*35nj@lPn(@LWDP3l^$UNSd(P+IP zT`8*|xyV^IeCes2ly6U33M4z9KMd>d_JDc&!aafRu3(n*>xuyhRp0_)L-dZ&rBu=T zYWO>vX-QQt*n|v(6OL01>@LI2KP3XWF*}r;c+K><$kOOroThIgYmuieZ zO8l$h0WOf(<6X)&WffSJ@*gVd{D>5M;`S|7+8>x%C~MV6zK@vJ76`QJld7OgM=CPK zye2=d_6m-+PCqYuRBFZMZftoBT$)-mrN;!g2R~L5L{{(n=4WzTBR|TemZogG%`j@< zX?fFRD;n8rmu4tclzXgVDe((XmrTB9pr91GcSQ`Xr*bVMK=Glheh^(}t7gO67tbkd zRv|Fok-sBc!arqqyBQJKxB(GKyz}faJzS(7R(?bDdgolM!SJH9phlDi-yTurZ6&VZ zD#ZhBKFzEkmpoh?o1#E+A~VajK}RA%sW1QzpXb}&p1hDxv3rt8wgeisa#}-jG`Q2! z1t&I7%>0IgWNcAvFFIhWFud~+P^)Q^Bk+8%WeNnbQMNmT!D7Ph!X43+OKM)~^Gdg< zw_#XheI54&nC){as4z5MhjlxKDYl>IzY92<(KkvMleEm6H`cbr9|Fhu4CH3$9>9fl z=1vb^ie2RUJ-5{P31o-R1QUAs*|QJHZ_N#)wk⋘}=QksW*@c`5tZlWFk>o)0{pf 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 L`ga**&^mem*y&Pi literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Math-Regular.eot b/static/katex/fonts/KaTeX_Math-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..5521e6a564de3076d4b790a9db8eb302333a2916 GIT binary patch literal 41536 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 S_0RvON*urNH{buV+h6p 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

!XmQm{Z*H$HU~Hnp-n!GpmLW_S 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 U&j0`b0LJ+;PXGV_0MWO6orJ?YRsaA1 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Math-Regular.woff2 b/static/katex/fonts/KaTeX_Math-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ebe3d028a34a343fe4d31706cf3d2644d646cfad GIT binary patch literal 20344 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 bsAcs`lnHTDp9ZHV&mrs1L!ES5y9WRO97-I# literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Bold.eot b/static/katex/fonts/KaTeX_SansSerif-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..1660e76a2b6ea179340472720b3cbd15acf1ce9f GIT binary patch literal 34204 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Bold.ttf b/static/katex/fonts/KaTeX_SansSerif-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dbeb7b92ab57a2687b8bcd80350520205127b6bc GIT binary patch literal 33964 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Bold.woff b/static/katex/fonts/KaTeX_SansSerif-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..8f144a8bb312fa160afff853133665554eee9065 GIT binary patch literal 19196 zcmZsCb95(7u=X#uZQHhOYh&Bl*xA^&v$1VsW81dvoA-YA&#&h^(^FMXwPsFt^_dwr z1#xiz5a1_Ce*h5v%l}mVcmDq+adB0-AKuQ74fj8oTq$)as4y@C06-Hzvc?Y##CHsR zjcpAb000n^A3f6#-XvVF{p+qdBg{k3xHw1d!E7rUevyNd>5nh8;E&%= z`v4IMQ6FROYsLm91_l75C4s~4+Yfeqtb=rYfEXsdU5yrO;dj}mx$&);Cxq%qUoR*! z7{DqMjv4TOKAz9H(L@nL$GL0YCj3f)=gP_GQ1Z+r@tRO!K1PCZABV#9qf%`rBm?@;B zvz(!#fuj3&uGVf3m8D(|cqRrBCDf7c z=kAE$Fh8UXN(kyEUOOP^F-SnJV$wAqvJ{r)G@lvh0c1220tS3zFw<)#9B8 z&r^KI8{b{WSrz%^d(ILcAuBobJ_Vd-H20=|+o(*HR5Gi}Q@rMwG`%UfRnU$2Cez5w zZhv$BG3jR>{QeM}3CP|pF+?mC9O-e=2l9f`#r$}?5-hop`{1b4{awI835sp;MVo;- zX|=*JqiiSdVFT;&EjVfGY0*G`4t!u<#-z6CQ%|9GF-+Z-5^->JYc0Q^jotGC#-_Dg zSZ#$)(PPw}*CzZOb|oMAqJ1R;_MOkWMA`n#7%HE}V7}rpR|-E}%b}$*Sql8D7^J<@ z;(gLmV|%oi7s}=-Mc!qO-mqnxva;YghUcW9MzO1lyt(3~9J&E+?@j*+C|^~}|KIy! zU|{BNfCVlNj`#w6z!dmO3(Mi(h!g}IM>c3MX)umBi8!q|q&QORKN~lil^&cPlpg8< zeGhxII&q(d!N_2yH{7W#Br2pV^z`}t{T<+m=I?odWrT&i>xr4Rn%0&^L2{}!)+sEc zDI_d(^r@d$Jn~KO>G$&8_x=8T{jvS2|DLprmPrxpIm|^Q4RZHL

*oboKiV#1t zYyY+>CvOv~VQ@!l!|bbl+G4zG)l|uXh+#u@ z;v|EXI;V6ZEGj?J{LJ21xzGAq(VC$ykakRV-z6#BYGW-zGpP*fdieWtfGl611% z=+;iI-*>B$PP}K5ZHW=06SCBcP`IRdnj-&i-FAqjZTj!JaP|=Fu)hOMu40?@ zbOhTaxE1J+I|(!|A~ZA0s(cGvHMccpxN>Gm;N6K`=yzy_5OSuka= z=w;&*YVNS8WfsUh3`|W|l|hgXjh}w~xbSM*CRzb@Yiz9Ow;X=6QykdRmQ4xF(y@BL zWcq8~%MCl%4lcenVByvsPn=n=@`zK}#}!L!lW<=?8FKDBYciS5an~3uzDPpR{*_xo z?&CXBa^ApM=tEanjIFH`9;G5FY!TifL4Mn1adb<)6i4QQFCK`^(o7TZj+A23KP1Tx zJQ}`Of3%NMO#I|OiVKyG^3`{}9}$G2WWY!G8a}~WTaUbn9|dBq5&X%gYOGb^)$ekH z;qf;p{OVR{0dl-MF}PWb*S<2wfTdXxW02ouj3MBr7y~$h{&G2}CpX|##iH4gB+}Nq zrWXPSI$>W0rL3FOVd26n<+4luqZ?7ATi;kO%_2KcAIu&JCzSLsKYuxwMtCBal?{(#yx^&d3*$|(zE38agGdpm>lAi?l2ghIgTf7DUGbe{>y<<<=_fV2 z5BTQSc_bD~W&ufJf_twJyNCKdyMJ*oEjKydTI$9eUa{A*v=_{Tnuy;VeOSVM$ju3%Tva%@Y& z8T@n)sHhg(T3IDyTlrB5QGGf6h>L)e>0`&5zH)rqI~~f`zIJ_G-;0Dtvm6h-6MJWr zC-Kf6cIcBGK5!`ss~{HBqr-}fr)7ZENdf9HX#Dg|(1d1obG_79KA9^t1V*LiFF?kW zwnEDd3n4$|wFQS(ZjCI+0SEmH>A94FAtR-*jBX8n+ z#ZZ}ye0Ws*b6GeE){2Gd=e{!xWYa;d@NLy&Q=WDFo4qqT8A|Gg9wAb^k3U?W$eVc6 zd8@)*aYuR2oA{d*C3?mv7WmcouNeK2>U7Dj^64km@ti&ZyX^t~KHB02nz|1(`M;3E z5rPf(Kt1wOQw^Xd{htlPU1{≷zAN|6ZY0)a?&1a*v=~=vtLd)zB{Z&lHc^6yLgN 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 B(i;E( literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5fa767bddd69dde2a3a8a009667c5555161058ef GIT binary patch literal 15152 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Regular.eot b/static/katex/fonts/KaTeX_SansSerif-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..1b38b98a180c93c0dee50f491c520265029a98e9 GIT binary patch literal 30212 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 MoTMv$@AL8h2W0f$ng9R* literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Regular.ttf b/static/katex/fonts/KaTeX_SansSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e4712f847754250be2596ca801da591b0f558416 GIT binary patch literal 29960 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 UGdg|EzW)CvCg_U)@AJ|B52O^j!~g&Q literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Regular.woff b/static/katex/fonts/KaTeX_SansSerif-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..33be368048f7e28c8b87fe4631339a801a09b871 GIT binary patch literal 16744 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Script-Regular.ttf b/static/katex/fonts/KaTeX_Script-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..da4d11308aeecb950b6a4f669ef1d4b05746f887 GIT binary patch literal 24864 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Script-Regular.woff2 b/static/katex/fonts/KaTeX_Script-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1b43deb45a854d69d134865608f7ddf128e654c3 GIT binary patch literal 12276 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 OR#4h-t1!gio8|!SYu)4k literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size1-Regular.eot b/static/katex/fonts/KaTeX_Size1-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..29950f95ff6a625cfe0435b01d5fbe6b6270c938 GIT binary patch literal 13408 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 Nle>8x|F`6G{~Lv@cWD3s literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size1-Regular.woff b/static/katex/fonts/KaTeX_Size1-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..237f271edd1ca85a9cb78d12c142f22deec6788e GIT binary patch literal 6980 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 IHX(BV52p3?3IG5A literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size1-Regular.woff2 b/static/katex/fonts/KaTeX_Size1-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..39b6f8f746c39c8c2faa9188de664475443d6b91 GIT binary patch literal 5820 zcmV;t7DMTGPew8T0RR9102aIe4*&oF05fy|02W{X0RR9100000000000000000000 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 GdM5yznhJIR literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size2-Regular.eot b/static/katex/fonts/KaTeX_Size2-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b8b0536f96767e3e4235d7795f5bb5bb6b7d03f6 GIT binary patch literal 12648 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size2-Regular.woff b/static/katex/fonts/KaTeX_Size2-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..4a3055854ede4eaf25de2364da0fea0a05858cfc GIT binary patch literal 6684 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 Tg_Hl}z+VB4e{%Y3K;HiWz5YA{ literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size2-Regular.woff2 b/static/katex/fonts/KaTeX_Size2-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3facec1ab899c8b984146e54051efafb948eb08c GIT binary patch literal 5560 zcmV;p6-VlKPew8T0RR9102R0Z4*&oF05E(202N&T0RR9100000000000000000000 z0000#Mn+Uk90p(jgIWj-36~cU2nwwzqjdo`0we>0EDKlw1Rw>E4+nxm41XJIDl@@0 zWvwnokP6B&+5h2qGGqno9|eupeMHnj)1nZYRSLTg;WSt_nYypL6v~)F8b11csnBT$ z9SU2AYJ4(l;bAGIL=naJ`hh?9f6mpwJEhg`YPDrAYk_=Vc!J^s^hI>FwrhwrDjQ$- z^i?nq>4qptLyW-xzq)d{-2l6Jnjf4wa;mUH8VZ6GlxL}EQ`GLND~CJknuPeL8_nCc zZ;)UTP!I-jF_xXl-Y{Jlv<`Pw2)(PRO%kc=R?hUiZt(N6dFN zU-lF=cA-~`P7iej{ogO3KLEF>`DI$Prqwd#qX*f@MR1_6>*g_;Pv`4;lA-|d1>x=C zakWm8qtoew?2zn`9JC$MXC*80RRC2o<<&g0RZ6sU+uC00A9K< ze;*KJG_D64fLKXf1%TD=;qgQ8MFME=ivfO+!?)kTvt&0U)PWheA7)9-hCm6OO;&IK z>ncb%5l&?ic~-OrjDuH!^qsUo!9@UY1Mc+VgusC-ctbhNg9WgkxKF%Gl8!862PX#g z;ICoh|6vKYHMfl)P+sWnXP3?|z2&RX95;I&4SrcUA24z%HiOysNI@1;X2({A>!EEn8I10k42; z(nA8};6dQZT@Qh_#m&=86>oY|62?uprqA9+XRhjsj>x`=4)bdzLi{NquSunZ-fm+` ziZM<2+4QZ$?0j#PpbA=ik29f z`940$Rf|NWd3k8yY1BjBFPMowiUkv3p@pb-!3Hd$M;;#1a3+zqeo$Gh+5yaED)#0H zDU46gn*~k7(Dn2h1oXTj6p#qR06}@yv~#LPfgdCf><;8~xLwRclL6ALoix8JqN*x} z8mqu=yB2r>;#UY*=tVPRLUfh6G;|&bg~$`At0o>PU@0Niy));9EF>f`>W-46_s9_P z{s`&^l{G5gGNj7ts*aFaFpr%3FJhtENjiz7vritD`%mNj=NW3{o*8Ak3JNU7y_95j zVz3IxA_0Q%P{d!9Bp$e7g7hb`^jr|iLpQcaW|omNunLumh01#gf5WL0cy2nL=U9wW zG^1BUfo#<#pn%gJDL+jg0VPWX@`M)=nFUP|SwLt&8I-~5t9)r07T_{;RsV_!clx6m zB#(*$t0Rw^f-ca|1hAq>U`X-^2edRF*wcbsTu}{vdfe{8591DgPihC2 zkc4@Zjyj+?M6ezR*bxZW2?*E#1ndk1>;eRA1OhezLGl1;<{9ubX5^*D7A51c2w;iF zQv2F?foI@3@^~Z7H3~`%CW8k(=aRmNks zyWe?*QHr>D#Yy4J8|8^qo~&_^^S5Tp_PNI~6osiCushBT3 zq&wPM)W)`t`KNlQOXkT5J>l*;ojBClz1W4p?WK~G^_A)A;TAkE2WtXGp5#1p3I&qt zAc3Kt3c(IYGsDKzRBP55AU=4~nTslB(%uXi9+Lp^o=WE6$||PrY;2grPQv6u%mXkV zzyc&@EWknlivTP};-&;x3Sb$4*fOP=xdXMq2KDHt98jtdi z#zePiDLqKctN9tuX$v;m>Vvj{kJWxg*zvj1&NFBi!0J9D?fKkj?-{fY;H%$bN?#bgt>u$&LBMg9f3?L{6e3bYYj*4GjVxbiw4@WGD~TpE}1aY?j@6J(5Upa@=`hKdWa>MRh@vJBeb%y3x}#f`?~XcOfUmjgv&pxm2;Q0?)P>#73J5AEuhB*3g< zB6_Q<_ErH-^@wvrGq`Hh)|q3#t10*7kXYYTkx^%M$JWnYur0RxneI%oy1QtC!8n`E zu#~)|r8Z?mW=ix{n>!>>>I127`Z{SyhC6sni3dup+hnY?( zlJ3neaZE_+INj}VyZmurE;cUH7=v7!b9YugS877cyn1(|;|Rg3pghlEuaZaSHy>Xr zAAjI5t60%nrPop9?C*8HoAIwt&Czc(AqzQP(b)#pP3>uoW7nPkzmr12dS9@?7e_1x zX{P;>!l=N%w}}x-i)P}=CN0ut&9C$xHQ~jt7rJZ$ACS;pIAKq!Yi}l5sy08FKf zZM!l!Ys5EN_q~M;2bGIzJWb3e?6rq$tYt`cIjQQbI$ zi)qQ<9b=Gm)jCZnkzstnY+%EznGw4R$$J{AHI4$gaZCQr*6fLP(WJyvG8jgMWFuon zZY0H-vA<6U^8igkm|up%?T33nwkZb#IPOJ|eO^8xV6;+g+Kd?klK50y(TtrSQwGP4 z6VIPJskSOjvNMc+O5$*bnfzXdq=b*kPUii-$QgyF3?gYD+XK2HZ|fCg+Ao5I;<;~T zizoQlBk&N(^To88Tb@uF9qpi=x+?+C&)bfiQu!4SrYYQn<18(m`wxI50lI3sB_fwA z#bj*XkzkE>+%$80UP7QfF9<|8GyAhI`y6beZQ@le_hB2RNV)DOFY14!{SNN9e`#V2 zl^?-9+8T7XVY3H=pERSi2Y_MZ#vV85;|$jk0(|8Hm|-=9NM5}Z)Sgk|Ai5s+p+G3t5)Ze?F~gV8yDqfGhjmKT`d^ zj9t?e8vepdd5r86m;L`w6f;LZbHPyCrUa6tkn&>O4)3=ZIhSXFQ#M zWDIA2Q)@MA?VjP}xK00+f|mcum2kzz$MzencUBq}p>Cl%*3fzBx!E%+PN#j*&T3ZR ze@%Au?hVP;v()_qyRhq*@qEeKE8RKOGd2%D%LzZWMaR;@RRxP&mw9aVi>Wnn{N@v_ z_13337keh;5vPH9+2F5$0I)E)f)oA`cGaxoRVPEZd^IV>lEC$O8OjeJkOC2 z;DONU_PT*ZO$<4_PIpwn&hUcNKHDmKQ+FsVc1cTJyD_=NZ_wk@0@3c=y_Lc(y(5-{{r=v0`SZmWv)(|_shY(64u^JW@P=-kUY4i!0d8JCawfO&zH{ zC0}DerP7$)A}Dj$=@6_HC1%JvoIok=Iw~HiTt!(5TUu_>;%-x`mXtaqBDrKSGw+w! zj~Vx7uHLw*hl-ngZ!cJdg@w(fEQyZ|EOTQ}huZl`5$m1{Z7?+pquz%afvK+3~sg$s>4sZste^>ZqOX4L(qH zoM9*g!pD6|OrXt3Dl))eMFBD-<4g?fihOE~R&2;{L_t z%|d@sUxb@4fF1xC0(D)P0`71P4&d`606-3d0Kol8Y&w7jrQI8q4m(4LAc9#)01xdT z2~OAwDNy1CNP~_LK?an>Zsb8pyr_Fn%C_8~+@Q)!Vs&axs|&jT0JbYYfJoyH3DSrl zDKQ2qE?Ea@QF#IxF3lZET3KfgN(IcnLb+)r6v-M_bL)&3Ohl)f$vFxbZe{?1S^kLY zV@}e87D;?q9;mCvi1cibd0@SLi~2$}PWj<22gOj83)sH@1J)*5ad((R&YgmBn*qUC z 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 b_t#}$xcqq6w_XMyFZ`zQkbw9<{u}=bafM%{ literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size3-Regular.woff b/static/katex/fonts/KaTeX_Size3-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..3a6d062e660d3a9f71b0230e601dcaff83638430 GIT binary patch literal 4776 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 Sim-oV>Ot5I1I>}Z^_~IHATU(` literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size4-Regular.eot b/static/katex/fonts/KaTeX_Size4-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..c2b045fc3dbebff9ecede9a4a1fcf9080633fb15 GIT binary patch literal 11520 zcmb_i33wdEm9DDp>7G-XLx(NdQjc1eY|UsSjiixm%ZF~u2bL|_mh2d2ER8K;SrU?b zfbGS>Kpcg`&O)+W*^u1?K0cDPY_gann`E;&fUpF12>}8jB>S->TpMtV!Jg6n)!idY z*am;eYSjH+Rlj=g)w`;ur${Lw89_oQVPxhXB}XamS>66FA&1_6i?~zIZzn_{M7Z)1 z%U9k>^__=VWEF{#P7)_w`t3Z%O)&tu?c9Q{6jG$*J*@&JIG7738G6=R6 zB!p`*urYkLgKjtA5a|QOATWi@Cwp|NO0obPiY_6o^a5ERrnu6{AtI3BmX^*nz3;61 zHX(sC=$*5+qb%I=`c?@<`_PW|?1~N3v-f?U5T>E;$(}u93i|Qqz5_Ss_Te47ewFc? z|0P5`K#1eZJ7S~5{2}^DeZN!Pu^N;gehZ zgcSS(A@c3RL!)DkA8mV{kdpbJd3<;zKK%P79isc7A3bBkp7NT&>3NOh>&;P+4@{7~RvB~%3 z7}xmBFSEUuO9~1*se1l`#dgvsgqe3ku-y(|a?IjTebrut~{AAd(*>wI@|auW1Beags|X><&9 zR`njxz41HpTKl^R5dLBE<;h=9K0JB*mu68LG)ZlM`rR6hmTF>9gZOrt?%wqyYX~+M;9LD@=2MJOEpVSlN$ra zk-)lXBsA3q6(&|2VjA1FU86mauUSe;H94qoB^`}DCq=RiBv5mCw40Men{*|u!Q--n zG&VPs_@|6*3(hpY-QYq4P@xesjw;RLYK%KVw-m|c*3^_-D4Ehy6XvP0CPRed62rAZ zjKbilsZAf`hCV`mujxy1Y^xwZ>*_QOABHGilR9iSMqrQQ5(87 z7jLac%Y{~{mJT*<-6RSu&;zx#w8p419#yn77_C%u2Um4=O^Cfs-G!PfuI?+j`aZs?jwPjA#{tU*f;@E}F#HcUAA&4rsrv)~C~UVGOBk6ak5 zVI1z|VoUrghNbXa<2fIK*ym5XF_Tv4-x`GzXSnJT4xAvwr^3XDrlrRzrFt~@f@FfQ z=FToHU2RaBH3x#y4!=bklqkf1$L*%rj5IWiM<={eK-(S2Er6LaFgIVIRLcxbP!6+T zXAZN269R{`f)gT#vx5^B4s(JN5{J3L37Nw=!3isebAuB$4i^NKkVdzbY9%^yO{o^p zk&#j@FGw_3;IGgzA3ElNw*nnG^g~Au3!o#1Ds<$q5IS-=4?1#K1RXgnhK?N0hmITu zgG!yA0;NHi#vN4};h!k?XADpa@^}jcwbFoAicBg)5Vs=QE}BYetXAb^>=P*vN~K!) zlzV8FR#q}$p_$EHC_~%{71J$q;p1>nsn+$a1RZU@Fr!f@E~*~yCs~i^1-WUdT00S@ znV3-(<`0E0IwXp~j@6cG)xl79U8xrNG*Sd%56Ela5|TAf2`Q~Sd11=7@$pu*6~&?p zWgTS^86BZCGXwH#QDw4_Ao$lwG+SdJJ|0pPrEVO&7M_2sgbW^<2%ex)v?$N_swOnXdQpa0V=NbVv>Unm z@i8%|gu<-0#ACn(wEFV(Y~MeSj?|1^L5yG zH1$9>avF|o;xruT;xruT<}{5!Hgg(|Y~eH<`3$Gw$W~6%0^~|g!;z~v4M(D!h9faf z(*R@}r{PEsr{PF1r{PFEs4bc@^LF0QmZE!yjx7V$r^gezm!r`i)D}-sU(Fjj^-dk* z)B`%kNp}Ucx+&5@-q1;hbc~Y@>li1!Ca5i$A|2rkope;kIO&*V$*v}Odw4Yh4jce zY$}g*O$fbB6GgoBUF#u2#pOqOu(JXQ_RifC#94BZPTr)6w_=HCny~aX>Fd$7TNW`s ztI3VzVe(`07G?AZv*T0C?qEL_@`R1T)xzHiUlhI}yd+BEB5_!}SA0hNZ}F7HYRR#b zSe9C@vpg+{Qc&uZPD-cb`Er+hv;0;0`|?}XS=N=-zq8(E{hIY(tUrNNrhjjKoMqw* zm`tqSkwm-(Di2h8Dm}%O9yR=>-f);@Cf*EFWB_^lY(6`Uw*$FEI+4a`d4OcdYC&;P zFA(DXO1MjA%WV3%x7sfOuCY_ z(IYhb*-UPHN@~yMi$8_D49IhEc{CEv%FK{5B_c~|K~Z&8q&h;x+w3_$O3!|a+1ySq zrQ&+&NvFq2MJk^DIPWZEcQuy8NTi^-j=kg#2=S?y?H6 z;^Pr;57FX~SXEueB2`OS%~DzuSw?;C8aSL|mDzJ?hMY!aNtQfrewVZ0CVV_@17>H< zrQq-P9%!k+^q64vZK-F70iaA|^;>*a0o}5@WT(F@%P-k0I%efblsY!ATDy4uto+UJ zhka#^KRd^McAjKg(zo(6PI?VZ2o}jAS}X!%Or#};*38NC&|~ygXT^fS zwX}86nzmRETZBws zEM}>Rc)VHJc@+QQtT{|7kodgQs9;Q6N~cDk7^d-Qlv!kp8`fZ@cW#=yGWpHqh%+Z+=Y~j;UGlhOac;2Z zCL29WZ?x_2&nXCG&k7Xe^zXOP8|h(N&p(!l`fC?D`5vo~2Zc3c7HnYGP?1$gV2PUJ+V( z^`Uh|3yR7gquKQ$wNRO=?nhgGb7x(6W#6ie;lh&n!N-!XFBcIR4zbYvSj#;^HM2Pb zl{QiIZO8z9ex8Nee71V};(8PZULZ;Kb`mo}5=d4~s`{L)8*uNk+?6Q1nK(H~k znVw{4*mA|6bJv$?;_HbAbRXz7^;*cYK;BeM^?OiJ2a>NC74?fehk5P0#-y97eJU#7 zK$~9o9D|qSSBWZ3U2Rn5>`r~rsLvPhqgWsP)pUMa@{Y58jzLsXUPq~#xJFnd-k`6K zF1_aSK(0@*=B<49*TO9NqRonVQx$KC?`PY{Y}g^4*CjB5QJFy0B89giyhL-8X4S5GgI#p8UoUQ~v|d|5japoi7Tz&Xx#8 zLKRm!jMA5xk)4AS6;??eAGONKJFZkj&O3mac=CVpusv~;AW^H0ewRJ-7g}5CMUkUU z<x$?M?j!~vUN4^+L0t;pE3e<|Tb zlY9Ey8_8nsX&zI{68qWRu+_(7ei_}8{4lX!mODShj~<}I?eE!U?BmSb@FPa)vQD-+ z@ePB|0q{9IosS;t%Q~r?I3UX(uIc3R2ubXxTTFR+?s%|oP(5@@rx@xy^PzMCvSbi$ zxj>ejk_8?Iz{8NG^Dy&8?o56?@r-oh%!j%xdI-LGS~yHp=$xtNOEzC(_@c@|MkYRJ z7?I75%J&=WaS0|}6L%w!DRq}rF&^8_JHt&b;V=(LNvwV#PK7x~MaRN_)ubio)M4WCrRnVoat+jE*%9+Uyk@Hgl(q8H@H~rim}VAE~+vYA812w zV#^ok!X43No6{ug4b2f5TSChE^j`N#q^`5OkN15}&$w6qXuI$Fj#`^&X+PXMZ2P0O zSnq!MPfjX--o|JFWwyqruXq0G5B%p4N)Meo$et#4Jx^S^o~eCVwVvguv{{*^uE5yS zlIpm3bpTr@QK%|$gE_UjD-OyMJ$G1=I`7`N)qaxB#YzaH{P{1=`tmPt6ea32WTB>< zp%J3*L1)^8Z?{b&n3Lv~*XPL*T8+z|e$$@$yaD7c#%;{`!MDm(j^pcrvCbQ2#a4+M zlpEJD@VD_D!Ey82C58=W>Mz_trM5%EeYUqx)N$?KJC)Mj%hl($N(`{4O`p!#SD;*Z zxtUTsiWyEdLMo+#dzw$DdoShDnSM5W3g;z1oZ-B08(y91Z2NcUET+faxr6i!d|H^Y z3wAvE{wEcC`W6y;VV}(-zN#9Z$oW{4mt65Vhug<<;EH%U_kvN)5#U38pKZfeDG$$p z2YV@-dz<7~H1E$Mw+|UQ_XYO4@Bqny+-wV9tJA~)%BzFQMP+muDj)UuxGL;*Dlyb7 z=bYKUer|&#yVk7f+4mB)+nm;Ocj1x1IoQ!18_JiT5qvvbi(7Lc*UY@Z#nd_-}iZ{Qx`P*V#412HsdZ z$^&9Sv0)Ssdo@SaZIG5m!!+zlPvD1pbBtKUw&FKN=>$@ke{ZbuBiQ^NB)bSb7Z#0DFP&Zk%skR@{P#=eTwYU*IFBwB^OuoXyk^%EcBf=FNC}rs$R*u`q1`+ zf>-pQnlZQ6w)?vay$(@M|COYs-PE?!2FLW_E0x@_A}d2e{!N|+|Chj@?-86L_!n1K zRqCwsX(m>6Gv;}1wOd5T&3g{5wo0CKSr8-aPGCE7==yK2Yn>;B?-*i>^EXbm*V4Lmr&(;}3 z_rlC{2;(-LJdN8+kiqwrR&!l|A&e~)N-(COn~Lv9B9-(xZk<`>S8c+cg&W6ya<_lB z+a)sQrE7Hiq-Pcy_HkS}+waZBM5g524I53ZnQFB^(@y_+-#-4_APVAlc;nrO#dtST zQC*o?iL2N6yL>vno)d86{LD3)^8y>*pGEo3$oN}L?ly6XxSBL^Mr4|6;sR0WP7@c2 zk3MSR7Mx8$R_JUb;$s~q?xG>_rzW08a-VTpne<{>N5}h^x%Ypg7;PB_$(x)I#vN(Ax$_!#19bd&<_xGkRIT1;61np z@w`pPL#Vo+#<>D}0tE+(`f%)sA4aMNj~F}_C%d2zX&f59cBFqt-TeCc8?A9^$)`Sdn!Ve z3od2D%hT=Cf?;Nu@j$xVK;wsO>Tm#xe?kbI7(%#@Tn)Gn?I8sA4xD^j@HYqKOgTHv zu#L?K+UfFwkhmAg!L?EJ*cwITjNm+796_#3MU_IXfUdjrsJgiKc{15?#*d%M8=Wz- z1M}Ms346g|MCV{o41kg+B$|k+dKREM~#OaL)*vp#zx`_ItKcC;)A0YwtKKQ zKBA2E#g&e>)ymr8_@F_&+8_uj(^4~JFf+$0u|2W=f!MZzxT0$kQ(EfRDY3Cd_P(*P z;YDR-qdg=2!(*eN(f$Fha@pDz*z2z{@+UF8c-)d{RqE2!)mZxpnLMojK4PrO)9(>9 z@GcXpmV-En7sP`9eru=$SeuFWtrr8)*)2xqcE-%+-3aIPRTv2VbE2>j%T`%eHdQLA7G-XLx(NdQjc1ejAk^FMx&8z%ZF~u2bL|_mh2d2ER8K;SrU?b zfbGS>Kpcg`&O)+W*^u1?K0cDP>|`-XHpyml0AUI25&{H5NcLk%2w?-p80;DCU)?>j z1P1&it5J8os($_6tN$HU-7|y|LNdu=B9M{R)~>aEe_sDhLIP(oI&WQPMY#3VZ4x1L zKl-uW-SH86?%wYa!ZeIM-n(~P!8rchx8vm8F|u>_FSCCAzl4Yf32}UJXMAjgUxYl2 z5$n#uYj%9=-p9T|hzDbyqy33^AG@!<5ZBJ*i1uSZ4zn*ob_D(6{@vsIzp&lC4gKfP ze{OKNH-6xreOEx_m(d^E9p67f9w%4hdN=yYP<(fy`0=fNLW=%@5c#%|;jwYY54S%{ zNZCU0JUTL(82Q~(D;MMbEbw1P_}p>)`Ae2>U71<`4k;8~!w7l$;e-E_ZqFV+S0E2b zkU^}3@lpKY9_iV01!RjHKYM)YHF-#vWLz`OQGFyzHk)7M`t`t$eV8Rr#JKtP8~a1`p62Ryg4N(Q*~sE^sM+hg^=5>5Yik( zf%f-FnD^;goZcrym_y#c;TKb+jxd=Y3cIL!;Q(U0=wrezQpoP6%P$<5)!kHPcSG+r^ssOZdC+KQ(&Rx=A;ZvpGmf32 z!oJTB`lG4WaGaTLkAV(i9ymxJpAjO}IOdtC{}?0Olk zidM<5S8~oDc62K+Vj`|+_KxltMihR{&Z#J;qOtr~Pft(2Mgu)Pszy4x6FoiUnh;c4 z6ir+Zhe4L6j&9AOHfoaE2=jY18Y|btpbEQ`zDdjWMulH7l=HJjVlBOzQ0B*YlQN-9 zK=x#%WdWwOzB|^DAK%c^t@hyRiq39a%IA|ZHJ59ape8p3P9TAGXe4yiMimgNjd6`_ z-=Wc7=+`V|<(eE+xRH*g-cusk4i=cXBG$uMV$Hgd*5C=*L7G|`%ly+|+k&&fw;NJu z046kH#xbR3LXC4r=tz-#j;5yM!^pIiny^5PHybJ(A91@@jJt62^wehFOvDr|1E7^_?%?XK?n$w)xu;ljCDi@pnkTq=efR24V=&*3ai2c!4Nj8G zrj6Z`nVC%*jW=qU0Uo3X-Ns2LKe=$yXbwCfEa>Q-K_#ToZRJ{-PF!8C1$1JxTq_6?%@z17Y%GM0 z1(2=4M&9~iBX5gfBX3pM$lGGr$lC?5k+&tVk+-F=k+%zBBX5I2rCv{g@*tpb$CM`c zC&v95N2>*SyoG{Vc|a>iCRHGa+YoIRO(iv6r}8rPu^b4ca;Y91daIp5L?a`Q5^ZZb@>F{23P4}&jyOALV> zuPfJTf}z~{axMBvtO&whu-C#RBxivVQrdX(0?PJ@i8i$j#iAQ!9c2+29i=oo3;OF& zWpa=p_}5u9TT>u05mFVUegd)lgTncz~i7|-_=>$^`fMNsljvJxS$r;*n{ zE2=528?3QnqqybCN#zSP=;7jJRfwd2f6#fd*Uz&g;{Nl*X66w z(29AX(X~L{MU=o0UMxiv0AO!HK%umMz!FG|04*Erop^ZUpQD6cw#Dir5Y55_=a7#!FL4T7D7Z1QRx;(g4WJL%`V%XS> zqJbJd9jWR0esUwgck0w~Q2ly5VR!{P13_)cH1}1!qjT@lDb78pQ=D~oP^+J29pW9G zby%l3>xfQq)~kcs(rMOF-qBgdbc(Z%>lA0*6Fg}XS$gx-7|^T#X(>EFm_1#H0k$JXuVSuE(bGX!oSh*F0Imd*87h zCRAK;v==)ouwd`pGfA9fr|8s;ns^JAh~`O4U$ed*%{b){e%h+&5yEdJb=l>`fW+1gjEKrJ=LDl zYL6QJLSHz{vXifeDKdb(ajuY^!P|j+BAv`&v@$@lWVNWYq!h0>XtXxEgyv+)lE6G} zpEnnrZZDNeQ)}tTxjyFcNExT%V`K4C=K_*Mg%Ev1_*db(^v?x8DoMUqQ$I^hB%e<{ zmzqfZ>{aOULsuDe&F8u(bonAnXgD_~m$<1Ut5Sd#)kJEeKCj0uu+kF0&+39QdNQ@P zRFY(in+J>Zf4!v<|B-`S%nZ%CkaA^T~X3rJV7c6yZNKAp|Mr=;#&q4*Q% z%Yr@!*GHq_oa`(qTOzWg7M0XQqBT(>-fGYDQF`th%;t7_DHS(Jk2^h1DpL9M5z*;& zaLREAMa2dC8z4`HJW9Ack3U=WRA*BcjlBN)xkAUo?Wcd;K1+8tcwHPj^jGS0msNNbACG`@h?a)LNKHM9MwYSK zWwbWBoci3ga5$%`bLZ16IfKfQEP34gEa$*Y_;}n#o0~JALcZU7u(b-)V}jMUwSgf9 zKr)dvZ1q_M49o7aUH*z3zhtlKoKqlC>e#Y+-I9fK3b()?_EmZQ+&ufa1(I!P|Ef

8*Jbd7L&ee@kTfN?Yn+ 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Size4-Regular.woff b/static/katex/fonts/KaTeX_Size4-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..7826c6c97a108759a64d1fd402428ad73c795898 GIT binary patch literal 6456 zcmZu$Wmptp*Irn5>F&;@#bs%vK|mU5L0GyQ32Bwir9oPy8>G9XJ48~DknYm`*7tpX ze$R8=bLQOVJ~QW<`Ej0S#z#|85r76j4Qf#U;Xlhu_V4)r4Mjy=b(D?{75fjYjGpq

(NU4DA#L?o{;Dr;9otr1Mq$TMr^0d79|i^ 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 YDotF!T>j=)f7=SNblRTM18vg?f+#{j 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 literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Typewriter-Regular.woff b/static/katex/fonts/KaTeX_Typewriter-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..78e990488a9b61630e28263b73157205c0aeda96 GIT binary patch literal 20712 zcmZsCV{|6Z6Yd+^wr$(k*tWH?osDhVwrv|5CmY)~ZhrUvKi=;1Oigt^)qT3ooSB;H z88>-xaR3nDrzo5N5dM=9WB(ohe??qeMfQg`_0xy@A55+kd*ziGm;nHw|Jsy)U?3)= zX=iL>Xb%8@{BVHaez1<^3N2&o>P!d#K&$+47=OSG%m=S)W^Zl-0D#g00AQs608HvC z>c)+^q0^78!q5)~@_#@yxArjm=??<{1iJtLn>HS<^nMFdLzADeHGViuKVS#_<$0`|EItHNWfV!biK8m@edC==!XmZA1Ih$8f*;Rf93_M z`r-Y@B?O8AnzuEyF$Dl*M1R&o0RTXpx}M_M+1oie0|4^YKir?WfsVWoSTgJ#O@C~m z7Juw~e-M!n^)cbTZfsy;U;x-tPG^wXf3@jh9%tzVL@?@X>NR4De>c7|Oc#wc!Hpdn z06+jy32=iyhX1o!f6~t&iU@zso&M&KiGUSELY)Huq6omj0YE>bKRo{Mh zs7#tjNUQ^gnym9)%3P5@tTS_pErnT`t#J=uG1&5zEtBl^e={o6%8taZl}>h*J{7zq zEqytTcKzSHqFa}?`qb&?(rVezEc)fs2D9wgDe71-#P2^89H+ z4+M@I9#)vG`!gRmo|PV)9-SVT9+@8M0eug9v^I60hQY{SrZ>`+@L3-)|Ni~`4f04S zxWwGIBqy%andAZXPLj9YD>xkcP4H#+A%AVRzP;E><(K$P{@H$ie3X0cSM$|=cf61r z=|}&OcH1YN2Xw|x3`Bwhq60#L5@#T+4tQXOp~2ySpupfjU?AxIlNVPPR+iQlRFu>d zRh88hP>|3NQIXLRQj*dVQSeV!tS((`xTAJD#Tbt`A zXrN#(VWHtJYNFySW3A&YY=jI#mWQ04DAU!03W@?y1(&J(zy7FJdv*FNj+)|4DkmJ1 z5QzS$QSXqkPLrqv2`&SfV2ZIh*scX7MKdhtNifGexV_VRG~UGW!12}OYiF7%nBW>> zNnZGTc~$E3oH(u!5Y^p>5NyH6V%DO?+Tz5JH;G;yGM|5P36?}P;)f9xFn>DcGubi@ zIeuf(ZI>2;(GH&;A?kdhARbb=m!x{p~6*O0tSzbG0CJUFp$xi zvJ&)a9L*Rr>3JRKuvpr7A^4RjJzj*1%rNzY{MASOMzSI+m-Cq?iEeH6SycYP-mM{p zVW7I2&`SH(6>|)+G?ND?hSt?8Z!N#8z@c`NgW1wzq%NsOG^`j$+3Y)R3jV6pdpzHP zY;}yP_MX=K0;b2Gy)ceSQ5Q#3;q#Vi@cv%{AM{g@C)Z2jDV-S>x%&+#vakF|79<|k z;GRW7ox#DJ)C9Vzj=ZW&_8m9fKHZ?_?)rS{4CSSQpB3{tL<`wvoe2+Xb%M-DsjZHi zg}6T@X!h;Z-8o`6wf#TXtxYt8qG{C)NG6{RNhVcS$CRiP{}vxnmSsl< zjgq@_<5>_4KdLDnB#jGE=!zn73{$1YIjG)YzN>>vjpsKjdQOpbXh_{16%ZJ})&~;c zM^D}EOH1j@Kly^@oD!%9!1E|_UE@gmVSlJ^$1NQsv_r1X?ZOUf6m*94zEYFm_s zoG9_0uo%vyCOjQ5MzI)L{*dGd)%KtalERv;3Br@HvhH96EeE{IDG>j)OceW(5ucU`pZqF|&vtPu< zoNBI1P?-W_-Km~;eLs0Rn!G^aYDH6>q|iH~?ohiDV#0u_;+qlDqE-P~!ckpi?9kCc zF4hxDELvG&Vr3lEFGS7!R)4I2<<+-BCOMGkxwJPZobAVa+cx;N;ezbzi;bU@ZR<*7 zr|7vl8GMD-6=(4Ep7_F>(s44(sR3-OI-?Z~E8Zii&-ayDW0uOJrjj%R1XO*du>Q;f zWWaMPd&=F`0iNcOT>O3PPM8;rq5bqfg6WvO4`a&khRg{QbjlEsc@(5=6c_wCeQ<~7 zh|#?-3%qaTrx(r%Q}m~oWfW}H96k`<3Dfz9AUOZ1n1Cg~Ky0!vXzRFpC02&8bSX|g~FdVGaEOtpo zW($AJ%yuqJE<##GcE-qmmKZD`AS56Zanrj^k^MjeW@h$lWdo~7nDzbnBt|4o5tHI< zh;|sien^obzZ@k%B_v4^t&a{34(8YUUwU0Yq_4%v^Z1uhF#v9wq?7+I4(S6B37!n@ z3?@zWjU`RB<@n$BGAB}kfGBT$*UC^u@qB&1F@WrW0O~WLi+&z0=>Mx)fD)htU^(Cu zkSdT9PXj4Dh8%tb6EtSM|W>@S=k zTt-}X+!EXaJW4!qyfA!g0%U?XLUFKlO}3j=`Owh~b1$iqVy^h4F@ol1Y!Lg6V?U zhJTH z=>1#zUES?gPS#v>wQRd)E15zo-Ew$KzR~vwiZlo+6YBaiL548MWDGHrZ52p{ndKTx z!tCV`0}^NebnC{;kQ|3aGR=fM4y|>|ZKhjQR}0pJdA32zjjQ!6=h}Pn`#bwO>xgmX zfb)u@e)KkLXq*8V$icm3KBC#ES*>dEoZKSN*o4Mxa>wym~{Au26Z~aj+`UxVWz-i0G0GIj6k~=#|)XW@vDg^?AE@eGwLU( zZC4DEYlW&;tDYw}M|>(I z!=$ZFiU;xMo$Rsu^mGy5evgx+WJ>WtyY!LlF>aSS*1`Sujp>!cmCGj2+mi{pagGSI z+oNq2^~cdN%o>W@GX-l=S(c+Xs3Dei3Q@oIJ|3|_)Fqwr2ySW4-}s7-GuICN(iKe{ z_(B>EUJv8H*}g~RzvX++*3WZ1|ADB}Z#o_0jkY|g2T1KSKdW0O*gULPde<&#ieMJ$yIuU{yd%j$_cS4ksScAoeQWq93 z5mW>VyzTdgo#;C&4=1L0d!&l#1JHfcK739frazKi_ZDwIC@Y& zmqBxoNZhm))B-#UwZaJ`!hj!0w9n)T%MZA9bKs4g=?CKWy&c$%E*GZ*h#MJEkWmoPly(jXdo7nT6KmPM4m3nX?PWn{u2i zqoejB*q#>uO%ah!CUW+6#xS!S2MY2*u+VP3Gg1@~a?LgC^{XN=RBInx3PW{m)`XE^ z_*%zaW_s$qWhHSgwax-`v_#G=K1hZslN>%_Nmy$qFtPlXKp#zglc9X^!z_BnNcXc9 zm)wEWiXYU)X`;cgu}c_$kN*KkTaa&*!=a!%pX2?kI z_Q;o%X>V3IB_nt_Uu-Li$F>U0$Z|*|P<D9_kVV=QGF)D8K0wqdo)5g>53 zPglBET)r(D4^l1s6kuF>Vg@4(T-#(ZA_-KT=_v<}ihn0-$Xso%i9~+Wt)$2*H*GFA&s>-g@n}0qVSUbpi-E{em7lgSYoojBYotj-f4xKmmk7n-?&bXQ za7GvkU`@R?2M*HA8#L54a0_c^P2ri87(!icD)7Q3-wZ3L|{ak!xKt^Ako z6PuH%`jDo7+4@0`$>ohxXzoR2KI~P1n+ITvY?AB^|Cjy_y(b=Ol*lN~1>K%a1*KOv zgWAT0DYuP#>zOWF$^6lxYZ?2FniCjZp;f2yr_V*~E9MrM{0tOzJxYo_ z)byz&jHZ9}*qcuH9zL$dQ*?D)`l8vZHg^Hx)(tZz ztS@8^P(^V5hE1M^U-~R`2tDihdxe%~92`vB!I8S*!ywg!){M0_W4;q_<8Bun`FuHM z1>m;dBH&k%W#V5Y8&G zcR)SPU+K3Q*aF)CgIP^d*?wSL|17G?ev%PFza5pCW%1DTK1~Db2KJEC`TqR?@uG-m zmR$J|nFPFvD(&5L>7ln&DYF6-1zYEiEv7{Y308d;{lQy`r6V!mNFxQwDNsjOqH%pFkn`UZ{rb0xR&ADnF*3)rg zb#qjY2qzIN@e6C+v(gy(FI(_ZMHLoR^9E5&?|Y}e2)FJK%>D^Tg`p?A;Ol-$iub9V zJ5}NWY8YegE9+6?1>eREy?)@c&R&jteIzH6m~+0&P7nrH*uqZ#3k0X4iIV9Z+RRUi z3G7BEdESf|fxx-bmB%LxGFz=UOOirIbuVQu0re@~#UZ?-8HmXU5kG99j|1Zgk;47h zsvMGuAmk=r^vR%7XTLS~Zn0q_$M5nJfwM6ph>6K<+lo@-CEH*vHv8Z9q#<4OR=Tun zE3UB@owmm5(fZ%#h(G*zV$7ox1wx{K>&5P*pjpc|%Oj)4Pj&SCRQBY^C z2Qa1Bk;5b1>tjImR+Es*s)mqGIw`|=0rtQHgnOm{b`T=KUH;VKDB}pkGXq2OG4}o; zF>K&awjf241oTw=FHFU|Kz~-^I%dHg)Yo9CiM|;H$_HSPt$f#B`mwu2735&Imi;DdDS%QBC_G@l)(#2X0% zdI2`M`<|QqU!F8D{c{26?tg)V9YMt-G5UmVPoO2nHh}MU#$uu%nZ{ik#~oz*rf+U^ z@|D)97FBN+yMe3$cvMU%S1x!*f++x~kr4b1oU{&=$oaV!^E@O`qNO*SZHq`u$!$bf zymzaA3FH)%X_;wN>bv~cy^S{`13qC?pn?bYVVFkD#re_&A*8>b%{|&_?vFi?SSboW z(9T+V=EU>6Tl)!o;Otk}8SS00iI~7kd?8VT?(EQDt&j&|L6JcgCmoPiQGNv?GeY`r z?^4#MSU%4>1-*d6{}m$6ZP_gDpqv-##;fFcbs&R_3O z^B6GX3rT@_`*Urk$+jt6BwD)H+(GE zM2NvcN_AmcSVZD15X;vAR|s%Rmv)~rr!uA-$zj^CF1p2n0Uq!2F~OP<8JVCHe^6rS!&N{Mp$_uRJShU`FXMlm?E3>eE(wj za4)QXZw@{UKdtf4&RZB?@s1Un^8@$Af^u2Ew z-##OfmQRnD%lDR2{f;3vR>Ytv1)W_sm26b`O?!L&1u<{RIs&*x?Rw@Q43T%#y&`N~ z(5D?N>ySV+H1Uu_1qYcJ;1&vC3_HK?{<6B>`RJGPawX3$_^=5=3t^D1_c;(F8G+bJ zDBj%pRjf-VoOhe4o1+DxLxqNQuI;^4-{AeS)hr2HmPoR_{eR^-~ z?S+-Q&S87^va?mc+g@dn-3&d3itOR_i>xSHH)GRIks_?Vu~sfikl+640tjpGcE~eJ zH+AoKuw$oYHAiOWwQlaRaq=3--yE;7(^u!B)z2k(_BVQ`6)&#yT_lv}w@3%`ToEJNiu_N!L1?KEgMC!DqeUDkZ)MTxh z2ijtUJ0lG=J_HT6JPW5d#FkKQgs}=8dW=Hn3&i#j+fXBj?}AWaPVIl6SNJuiT8Y5Ae<(cdhC zx9wAV^P7A0K>5%Y#0TXQm;!`&d(|@^v=-%s9!o$C zOeX<(f(alT4C?YLCq$J;POQk>dAE}H`iPaBD0;#it!EGBg~&GG+&=c9nfYP0)v^G6 zOBx{>M}$?R4-WK(B^K_UZP8-b$zZSslHtQ~x@+Ey$7k57yZn@xtW{Ayge!%TfN`uR zXea)Rri><&-Y~Q>Hru;_M^AZwbRTovbtf|dlh=l7hXZc<%eb>Ngjo8F$_HJf1_)}jF=GdOwdN+1zapPs}-9XWpP7yAV>W|XsW@b;Mu zx&slWQ4mBL?;>M_w@=y!oeJTR@W(YSE3hnwbYtAJ9{y}2K{BLRJ(LgE?0H8x$fJu= zEw+OVeQFYkx&RhYOE7S}l~*FF&+FdNr>5DmV)!%=Ycwe#-Pg|8xQoo|UqsGRaN9h; z5m?E~4$Dcsl9q}rS29C!a8R7k^h!^jKTY>n#o=4MT)uBpdwEB}U#^cAVe&Mz+3^n_L0Up& z=(JL3>3h+>DFnMk>ZQKw78|f3MW}9BkYFM^IL1j>YJW_L%C!jLy}445Yx`9bShVR_BwDhn|Gl-%<{>&(@fm>sKa;?pTqHh#;xY*`4@jADUww<8_hehojvCyf=nm&ey zxnGD<6hXg*iMwsyEwQAzq~}PnUq|jf7-jO=UC!@*DwCw02M+|Z3PNwP z^vZ*?24H|=0adE74^y${N)B5QY!pq)NK5Mi#bm`G=arR84hSR#jg%Q$!bI#-S1m(1!4TLpg~KTNBd`g zFuovfgkyO&1y1_m>WBsV|CHA{pwiAaWwj2Q{V5PpgxzHd^iQHuky>kl5yk8>l?SJ! zM1Lj(Xvijc-Gmky2(k|rNpe8jkqeLi^1X05w()2dje%l{ntt@jRvr{13^8BsVg+;}Xit3*nttDDaKAR=!~TP4pEa%d+obpcF_ z^=3ThkLx}w-pkLtMT}#|jCt+ZtQ4fyu9r_dUmvq4PP;d`%ZX6hv9}1ss!#=%UG>(2 z>Zbdv#eX%Az_+`>&uoA0g8y;;5^N#E#w{h5kScZV#N84qu^z*^I@@nU`&x&cDPz+k zF~XH+%sV4m8h7itcGpL~KzN&#a8>mWS}n08zI{KwsG$9}I+tb==__>^m%n0X5sgtF|nl5jAMim^~Ncq+Egqr{e&RWH_~kB&TH_EhhW(E2?A!)Xt2;YKFJ(>oJ~YJ|sl?wn)__$v^~qh?)n*FChtf?8S;`)4W<8QdpJ1m-NU-JXyBOU2B8Xv@Wt-n%Qscj zH`3L#j|<~hpr8OBW*1VsBq4{3ye;&Y?A9*8dz|n#J%7lrj>7frDL)Wm`R9UY{uZM; zW;|3X#tAxC-ZiUyY#+Lgfqq8NcS^L^Z_Gz7!0eR`&X6cZZbdmOwM9QG4L88rf%;Vx z-bVe>)@yPfalPqDBm|^G3|@CfxJL+F6lxBgbr}SQokc3*9aom8w+uy{k5aVo$zKf= z9};VS5uV-SaS(UhJo2gKQjiy5O(U|1BsY4XcyCs#*$HGBWZ8urmOG=)?5PW_h~-(- zVz-~{U-SO_Y~x`VLa531gj*iv!NNxoIr%H~NT)acu2IwA_9)bwr$)L212cVH`MC)l zL(9B|s*PCVsjqP&L3xah@N#q(*H1*rMi!(DF}i{tOLApoHnRc!4*JZz7sk^ohi73s z4S)b~D+(APu}CFVa8+XnDBD<4#X<~gFvd>9;^6hk;qeXsfJQuwGsS?=EjWuIe@Pux32mKh^vN&{8Ly_p>mmckQ#D;Lg&2aO)^q zNPO+wAa@Q7Cijc<^0xsOgpCFml*^<@x#H%dk(F>p|U zbXZkFtE#H25l2zBzH!yuk#_shPQaLqEz=)~;8H@M$VJKQ!L~HycsfM6kR};)jxsiN z{5tqU!0^G-AU6A8Rw&bO+rGN9T#A*dmwf{kAkAk3g8~-~%2PHD%hb!Y%Rf^XZaOYs zE%&L!h?&;p37K3CU5tMXruR)k1;1H|i%yfzFi3|XN(Y|2@eo{K{*7co8Im(=^f$`b zpSW<+&tpw-(x88J)QGHiG4W$zXrMyN69IsOmZUKE<5FCfL8p)^7bx*hXXo5fH;+q| zD&+g#po=0VNUf*CY7GWDU_Q(V`{IYX=cAf^Tm5wh2MUjv^5P9sTt!SZ0$Sg?qYM$` zaT}HiwZ<*z2Iu2xQ_SEz8X8XfCJ8YbiX=UhOt;0(sqaRTiBFEt2}q=fO_@ho5&avS zA6eAU*y#FjIVVjQuPAuV8>zp1RPnYcev5V?RN^LBIqzp`?DZv<%REH6d0_Cz-$D~s0#uzJ5f*|d6E8T_^@RmCigBDPDaRg}&#VhE!Ggvfkv6(6>X zsge9L7sxuQSK*yq0y4SyPh{wGZ$A?5rjwVjuinH_Cf=QPS31pf)r|)QPB=51JO37q zn?d3(4fbK*3Grk^H2YDrG#vEg9?Q1T&mtF!TONq{w_ z?63Yo^EMW@EdCCUo4z}xN-i!vdNi0*lV7FbLkdt9V%RvZdF|?Dh_8hjG@;;BctESqd~MMwsrpbb zrxtJRit^|h6?UA3yi?4P20%?gl#${Kg-NV@3hm!bJ!#oFa=35vBH@;c3lt+bD6U$G z3u~eU|5R8Nhc>`S$x3@3w@Z0-pG&^pTOA$nXk5QijpXGInMKDIOLKfH7{@u04l%#6 zM(ks>i#7e^3X+>X$QnkY2f|1Yh-VfCyhCM6sy`-$Rr3{(!A(~3zwlf#^PZ$ChOE(F1i6B-`{88@()^R9kCMRi3xxE5!CFG&I;P&Z{61B!c_Z??5T2{2C28-@B@jmu zkzd9}(KzEVKyRrZq2wJD=@=)&^6z)Uir>Z7Lok5EdaVnydm7?qWL0pnuSM-&Rkd&> z{Q_2E6QruP;v>j!Ua1MWaf|y?5i_;Jvg}xAUJ>~Df7APnIVNQJN?rUoAg#8MB_ko(ddUIRTAO%%{dV^WVUz$q${bg(E`2n z!}JW$=r1BWBD{(TP!`YoDB-sqHjs9R=q>Z+E7!j&7^0E*>G>&;g%nAb!g9-wOzCzr zGtP$Go$52naXa$zsMEBdX&i12l<{bj)%{w*SGKtwe=m0)Hbu#o)%M1EIsN#6& zx|uQ3&z}uoc9UZ}g{Z(-L#m8uu?ESo-0GNFvL0rsIRcp17mg^-I{t@tBm5!R{?!R9 znYQ@kYgb})dS;)FFXR_koCEu?-;d_Hpm|;_Qv&xqH|#QuYTc*F<4zF?w1q`{ZXhqhjx4Qk^>J`7p0u27eJ z&FONje~X=d?RKC5M0gX$K?I)>S*N0;{Cw3qsIpZNrpy5D!h~)sn zjnyjZBZ5)QDc@b=4?+X*1Y7+HetRAWcz(V%S&SpsD;txj@pTqv?n^)|zb8PNO%-IF zW2_4b?0vgQxvKitXzHF*?=qWFXvg}+TNxoOYvnkx`^)TkG*_oUfQi7o1DJbjK zmhD=sH11ZR3SJCh5#{P-wkTZIf~tGwwW46Du|FefO2iQh;SFnBoo~q+Xpu9HKyg<@ zE@tUlw;C@P=1(DV!0nl2rKl#CSz<<>%rwl~0rx?R$9lZ{=8q6MP;cxD?`^_+#YyJR zN#1vk*wOuz(XZc)Jwj8WK!)$8R4&>wnQ9a=1?uuxar1ycG_hZoR9M_Q`uk?v0WtV; zL}uUx!pOB*_ORKmp#sWlZygIQH41zIc+bJW$EAJa*6XkX7|F5;88*p+VUXZ8$w&is zrAXM4bi3mwXeQ#M{5MtA9n<&V-IsjZmY18Y5YEa zo~~#=urW6sM+R15MF};oqI+fE zX@GZBqy-WK1MCsB)Ewl26B;8n1Fs;HLz+Ut*ok$LycEJwT&V2s_o!ZpO)oNg;dyY+ zFP=ZzjMr_7H!`CqjhH#5U#qW#eO=XaIvRD#Qs2;wMh%buA&7$#{OzD#iixuE6 zb8{LCPo$7X92FpIJ289+Gk|i}SWJn3N&P~o3n;7ctfl8(Hjf0$3G(+V)5E1=-w6<6 z!d9=OAF+{7oFgBpIkddHqUfjfO+Xjwb%y1~g{S>sQiK=q!hKs0o_%UJ^CO2BKM?){ z91E8X_j?QIZ5|t9SwH4+<@iG`ANT1wB}xN8+D!oKc`O`@Clr-k5Ipz-r8i+hCTPeI z&9j(tEtdO>0O*s>NpHKqX>N}yLwK*{JQ0k)ssmgh?3dYAzgYSm1V_!9MFQ!%0Bn@}L5`JK6D3Bi`Gxk~x8&tI$F<)JMM!6< z$SEoKJaLjx4YpW;%`9XO_vKw>)ofQk?>dYPGHhCW%8=*gX0_jZ%k#B>E#4uYRy%o+ z1+6B=xgJ?Oy%PzE7AxpILF!FaxdTCn;z__Z){~U=IP0XF9HhDMUqd)IJ}Y{?_pi&+ zJfHjbmQps=i@0exa?3CKCof*ss=@U=6OS9nY$zGxt3GbTs3Vg?6$!8yIuv_Pn6o@e zZ;5{mV+1B7l!CzW1l77gyu%ecgXw5mFa*w0QDH$`sVnbX41Q)pdL7c@`=k_9F$y_V z8(l$*$@}lK>@m36S#?9@2}(hb6gNlTbiIcC=W3Whn*?X*vrcQ_bT|oU;9i-f?H@wW08>`7i-pDYM4{lP1ruNFvt4aJ zn=AZ~b7#npD^letV=ZRh-NB3AM-LxD^^6Jeg`kr?3! z08Vsmu2iHql;+cKx6>LaEze7nW7g(2m$<{!`C3PoO_aeb*QjBxDG;qZYzoLdkiaRO z03(MhULh}FZ1#Pz-TIAIO=rJ${;}k__gN_no~4$e@n1XJUa{jEy4w@h$tJJueIDv@fg|F(GX3ZTGlp+5{(xf~W%HhIO{&qdZg>8eL7zteZLf7zdT)y!Hf z)^hKnr}pwAlIbqRKVjIlK7NW)10L0KK#t$h{kCS1bf&lC^hSc8>7n~1GSA$lMv`R@ zlxTo_WVH#Bkp%u0R2N$Yn5C87-fVw=fBN>wahh)F$VAI#1xH15{x$AThICM%t;XE^ zIXJ8CnAP34n(BDE^iJx7+c&ITwyvHd)|Uh8_2$R&Un(b`o(H62C8F?lEh&-SfSaXG zQa-Z*5Ehzy>^^+18c!4_if4>bb%N<3{?#-!1v*JXk`FP4z0fwYtG_;Iu#iI5#+67^ zHMH={lJm)+1_;)c8Qo++ZzMdp+JQ*@6NZyJUd>IueX}1z{4pVr-3pH|$+uEuHFLn= z5nEUq7I4w^Be=fk(Nhv)EUdveIpPfY zev{QsrEL&xeoF|D3GD#G_T15~rXbW^Wm`mc z%1H<45E()=_{u@1GQS9LP7Dv`Y`^E^w%grjv)yq2@jEke9&$_^7KoSL2(w(kO(qE; zKuIw3rVG&qxdw`%dx#9Ez^;(g1Y_B9Izar6C!_{sL|&5tg`(h3s>jHv!kKm`W=M8g z!T{O`+xvaA_tC`cX(dI~w)nEn2x@UR`8345^G3yp&?)-U*E~7MTF<(o?)PUWS0bor z2>&9uU8~kz5*_yiw}~nlYjR`;ywIeUtXwyXsm2taHb4jo)bVQn>+R*|&~&yIno&bW z`N`0+^WeChH-^bv`=U###i=&yk%jvK#fj}{>M z7kjt60D>zM3h70O(0L)XffIn`T&KpR7m-Qx~`pX&{^JEL12FU4#rwTV}1`gq3 zv9<|XubmREiJDo4f67$6(sGcF7(7Muv)X8Y0WHvE_ZQlJ`lC-zEWK{jt-ERZ+O89S z4wR$E?Ch~ydLm3*(-d@Qjt_eiujNi7%gNGB54C$M$!D}AX&4N-wly7*fdTMQZFCo3 zUl88Sw)NU$AGdS$-waBVzcJNxr_!vVuW&=2NUjA?wRk~SJk*wu6yqUSYr6xl*#AO6 z!>f#a8(v_9)aZ+f{*WuqA0cfYdrU`lLVXH#Nc}_r1eWyc$P;xra#4r+p5)hm{|WHU z)_3&2c#xV8DwPYo(p)Q)hkZ7gl8=_+yBhIc%YV0 zO9y@;TR4sj2fEA;9xfCfCR-=;!F2GUmX3Eo5EQhN*D8eBa86qJg=hPK@>Z13T1f)u zDq)xHMU(Hu{rf*^d1V zl1SiKo(`6DQ?r#QL{hz3-dg1zkf%bvb@Q9TAbX@RT-6-TG`cp*K%Ag-OdSb_^TMU{{XzmHbAZjPTOJoKHN8&9sYI~->XwrI&5~)CFgJ^hs)<>?yV=}ICUa9 z;5vQrxjs)ZA_Z$iifGzACYE~4-ZC4bWM7zKHKI%hb6)>yBo?gY`H7I6yFQI%B;b~t zX-LhGUvfm9+7|#s1P=Gro^L{GA6qXh+x9rX&hAse;}72uL|6@B8BJ0D(Zrbpn=ydn zm-Y`rU2`wD!*8<={p=todqa2s$p|9KIM>UMla?BQMTnG^OaU*4s+KKbSBfU;Kx&ls z3;am(ufhTxYuCVKGa%8oedKe&;D`)~ec$$PgxT$~n$Ak-Nm3d5QW<)Z=YAd=W*7l2 zu1i52xFM7`oABiC#5GAL%ox$fW&0suOivm}ji(_fl9Nru2++r6g`_|LIK9Bbtxeyd zK8Vhh)8V{U)KDEdNqEa73JS-H5iCpM97eoQl9194+I#Hu(sk_q!KOgtbn#O-<_Ncz zz~(vbR@$uVG_B`!#)@b1C9Rx(#JQHtr zRH#bgPH-n)l|&V>Dlkm!OaW8wjyo7lADIQemx&2hg+xPgG%YXJ?v(o?rp}vzGfB>) zBSJqW!%Qkn4Nh$AHsgrqB2L}P?gi05tb-CHG&_Um-52U^kVm>$$%`FPza|ngy9j@b zqW%}@U^Mc~U>eVdYqwT;l63MXQf?6rjiS`}z?1#wvpqqqD^rGJ6ySGl=Rk^mTG`8q zgEce+PebAjEi!oiH|hu>EdxI1SDC+D?uo{oqnywyPx94~`fRtj(7vb>?vm%}q*wjX z9@v8WLt2&=UvzY`276jJDPEy35fI6AN>Dp2uz=hraF)a_)QJSXZEW!G z^x6eUv8ybZPuk!|q>FWu^WgrB<5W8ds85T`uvueVxw2J`CU6KL45ZdJwf;w|VW~j5 zjS;5;mZvb+%W-w|cK;<$Ft9DzGM z?OcKlvmo{89>i2bTyu;r49BA$ijf34#P4cECd#c@3+11K0!=CC7vHUYU-FKn?-WY( zG!N)ht5_;l6i?L6>B&JjzsS}WUQRSXSDl>C`@WKkZ?zm~q4J`5!sQm4x0B7<*5re9 zPtbLntV%aJ{HtQ=iE&iEgT($73qcJrYK8<6P=khYba~x1ciM|<0_!uByQ=iy{h5p! zJ?4H*icf3jaH9?pJKx(CVR5cc;D@pyB|9A#g=S9)NUJ%$Ta6d*fp_cgSZrI(LUECd z^=dFXt;t_as6JReNUQ4jTg}R7&Ol$|j2l;FaBcpWN7yO94`mzgrK>+n!N~BS!pJi5 zWf|`cCJGujBI#VLkYx$cEAlw7g>9`DFG?E8g8>?JYp)OVBy2D zc)3PJL#_&$yw}RB7|$y!9{9A|^Nc9O2{ z3UkR@f;1=|vb}1vaL^@>Wyv<3yjP*kjRcMjJwwnsFa}GdqkWkqYaAcl?W5X-YKCMl5NfTGwa z%WM_Ck6BU3U`UTQ#+zd}&)l}#n|t?J1Tu|R=_#s$1rW`E0TbCjAGw4C(*;X^t7WAk;DA{rPCu-|HJJ0rVB8butp7iNx~M?Nzt|u+M@Z+eQmm z@5pFqI%Tdt8z@(tk{YzgL%hPg?ubNTJPGt53;y>}L%`@BF-r*M4QVHin-utp-e*vz z|hE8fQ1u zEU7$kEJkJPNx+;`VF-0FhLl88i-2JxE{1s02Q-vwA#QK-=C;kR!+uSz75w81NEED`d-cf%ptXtLK2}jz0e5V%&_7b!Qcn# zzbT5^^haxmminrrqQds>o#OpTxm69aX^)2y5|`<+BE%Iz&%O@wS?AujS0Aw))kjz_ zTOVQHTp!`Se0_xd1J*~_H`hl{;Iz)IFM!>@tDKTXicmqHNB2@0t&k8s*JL9gwMLVJ za6V7VHHF|M|BK2FB9&$ zGCNC4B;Xp+Bvs`lUU}o?M!KM~pxEw2H4@G1zl6SyKgq3eukYLQ&2ljzVsX{f`EZtC zib)rX9N6zQS~&m%FJ2~yZJ9vOaL=%Z;TE{@f+54(VRtu3L8Ra)Ps z;;yh|@yLBQg;TPk$eG71gtfXX*ENg`nhFN0D%c0r`yUYV3gB^G6`h!%5^lKJBpu}#MT>t# zw+NbDkvX7U-D$fSiUBI3l$w44Km^)iz- z-F23xX9WKEzO~v!YP>*b!itq!fM6(KZ4Qc`B@nGk`UyUp!VWk*oXYaYOj=#?aHgIyBr48FES`!}5I~;1^+*O}Ozvi z_~v3op|jdqTT*ExP|9#gJ!sS79mR8HB`sdLPo7Euq)1GY%l8XuMRq-fgnM|RFQXTs zs}=58U$sE0#b^yJEo=yA+Kz3wZ7?zuZh8{#q={%zBY$zP1zp0VG|Sayk!|)ECJHFd zTtYM`Gl>jvegjbfK_BG;$FA>H>7)5@!BtmcY~03@49Nzt_Q zL_P02HgJYnG|Tp*`bVbTul#@s_j5m3o_+U0^vBm%K=)iu{S^@GLz9S>{futoJSb<~ zeb6zH%>T4##Vz&lCa(idUa)+izW^HSa^Ul#Nt0P<_eJ>3XW%ng{TB-N!lXN4;=SZM z{rKSqR=Zz?k5t}@6yEW5h2K1k{mT_4!(P!3WUssb{-0*BOqR>&+t)vd_W_m5_0uCYWK68IYR=@$ z4o`If6mJi6?Vi?ECT|H?fd6%#7OL-_!_xJ4eIH+hzNatRJ@=1uMtJuF=&!DC;)kJ&iJR8Z z0fAvV@S^P!kl-7?JKX4;W+Pd~cJ~9#v05V59IFSh*94ZGN|{y?PiG2=n3E|aV~!rP zQ#ReiY4;5J%=Mpxu}g5tzAv(Uuj$S?+>`Ll4<#zG$QGiB@4-HYk&t)qR~2b>d3jkf zB*CzhH#%)^E9a?{a8A6p>AcFrYik6hcDgmnaejD#z!1nujr9(FaZ5|Z<7S;RsF@z+62*OLh zZK*OsvTEU$U_Hef3U9seKNS4-uX1d^p3(J_$H9LBsd070&)#;i`IH*~GqFTuO2Y0x?CwJRr7J3xOdJLbqxPxTKhy{!mEG8>Hk{L{ zMl~EWS}FEtpwAQBCU-xK+4-%`l)=H6f!er!1`T#hUO|N$H;9Zva*GcaOR_5zLeO9x z*+YqD{iGbqqQVWk`VL|b`VueGDm{s=``R6DE6Ga+5xsP!IujfUsxkU&7Gl-lZ6k-T z2x6!>-17IbNq7iO_%bF~6o{s&fKX*wv1Qo~DN$jJm^|A3SX`5J@w}+ZT3i%IPu_=2 zPh-0RgPqY`fpt=!HI3@ngNT(W)u#Q=jykiy*=H3U z01vPK3&8n9mb&|dkMU3c4906|`Nkz@_`zf^iw*s2#hfWIhWa#!U-4uSe^(U#hD3Y2 zBlIWuF>VFky~N%f9K+uJ_mP_o_d%Az&1;ygv1D_VmJ$|OC2P0_>s_506$v;v(%OiL z@uUR+*;VLr57ecT_@AP4_#G^li6eSEwwm_x6n^x;ir|tf+wFvcjbJR#Tjxs8zi)JM z|9#I3uLeQrbG~W#a~m?XEm|)5hamIg+y(9tu&pciorsa#7<8WjiabiuLSyI|#Avu!ss){qMVJ7UAb@)8*8|WQj%R!rr9{EH!iq0) zIl9Oa&tEh!HZCl{A;!z>&gXo^Si zN6P@yu#<=hD4hb9bMFN@^yxI>orD7#TPO#zLIg)ZygPPW5%H*Mh|2LXm-^h8jxF@{ zToI?$siv*I;~gQb2-O0;;~lC!H?5{|F^6QubtIWs?rQab%ilYyIQR1If$D0K2hiwx z7Ss1Jkj0;azMlhGjA1H^8-88KV4w7nOLRG1*wyZEoA7~BfGrQ&%pew3DbX9uf7O5Z zTrz#+enD=eRn?7`W7MgFH6J-*5^Mw1QkDLkZgdW-yrO0t+m7zqz^0UB$&IUOdJZt* zPwl)xw4OSd2-^3p=0LbwIox3#3|-WPSpLxT~@JKL3CF(hkJ^E;@!503&!5m%8YNUtET^ zQ={vD!tY|>h?@BCX8pV^(1^gW9!=)qWj~vh4gKD8i4ce+&fURV!*`^WEN( zV8V|`@XEK}&dz)@J2SgP^xVjjLCLR4A2l{;$ym@hMf1i>jb|ulyw!M?R*df&&(Vw2 zD~;2%l6t4{qOmsjOyexArbikt(Ng-0#>+IH{sv}ab^)so%1ew5V)R4f6lIN7jc4eM zQPFso%Eo7n=V;sbsd1XhsS}MCQ{B`jjkC0#ey#BmvGjY5mnob6N;~A!kR}w6OFeQ( zB7z**l*e45GR6iK6|(SWv`d0QrR!nUf~E_Jhgnbol7_-2WgcX5jJ`>qCQOHrRa_N9H5SKc`%FT z02)G_$5h#=suSJss(6#R?t8NC2R*?mW|>vl%}|QJT|b)oZmMHt5LePy*|%^4i#CBI zMi=HI%s#5)s?)}`8!N3fRFIBE5W2p{EYsR#Qg-=B`i|=%|6|Ks%RgzTk89DwBbqek z*+N+HFwu4#+zy>%zQj5y?>7AWZ!=H(xzJjCO6R)20z5`4RSs;A)M?_Rjq&Y3a@B&2 z_Q5bvE%;Ev<13lLPF&D%ilYV81&UN5Vy;A^kJ(mv3$@=7a7VE*6`N4j4LqWZ4wOf4 zin%$(5NH1Owlk+9oA%2P)fj(QHOd*jvFuNFxbj$|Lxm--U`EwPBAzOhFha1!c^E<# z!dIxcuJT<%zcg`sxAPCZLfYm6BA!SRyFw;%rNfRy zD1x!*u=qV-`+Ok&dI`)-rtP?4qS5lZGU9@UPlB>I)b$tO?EI8UZUJg z6bkIx#WfQ$ZOizWyM2Dv7fgl2S-p11xU6OzDTmckDYOH3C_^)J`*GZ*gF2G-Pno`t z@aZ1vU%9`S(*StdZO+F|BS8>=;lIX=%@9qFOU`ky0RsyQ20SKXat;kf&=O-17|uvM z$X@r2c$~#M%wZ3dRQjr_RjS6oi@)zg_%7aZDHsIE!z4(Ed@Kqmq=;flC?!l8Qz z=K8_CveflU)~md?s2#Dg`ab>tWYl-ucfvRByI>}j>nd~i?k1~(Ys$S!E8|cbDQ)iP zTUUkl9-sC7Lne^A(}C2p_SRyFh;KCL>P+qr|JsD(EczyVolk~cR1^RK00IC101p5F d00961007KAqR#*T0074MGEV>i007aqe4x=7ey;!k literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..618de99d480f9a5dfeabce556f3a94bd31de1a2c GIT binary patch literal 17344 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]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 rg(syp6t8!|axc .katex { + display: inline-block; + text-align: initial; +} +.katex { + font: normal 1.21em KaTeX_Main, Times New Roman, serif; + line-height: 1.2; + white-space: nowrap; + text-indent: 0; + text-rendering: auto; +} +.katex * { + -ms-high-contrast-adjust: none !important; +} +.katex .katex-html { + display: inline-block; +} +.katex .katex-mathml { + position: absolute; + clip: rect(1px, 1px, 1px, 1px); + padding: 0; + border: 0; + height: 1px; + width: 1px; + overflow: hidden; +} +.katex .base { + position: relative; + display: inline-block; +} +.katex .strut { + display: inline-block; +} +.katex .mathrm { + font-style: normal; +} +.katex .textit { + font-style: italic; +} +.katex .mathit { + font-family: KaTeX_Math; + font-style: italic; +} +.katex .mathbf { + font-family: KaTeX_Main; + font-weight: bold; +} +.katex .amsrm { + font-family: KaTeX_AMS; +} +.katex .mathbb { + font-family: KaTeX_AMS; +} +.katex .mathcal { + font-family: KaTeX_Caligraphic; +} +.katex .mathfrak { + font-family: KaTeX_Fraktur; +} +.katex .mathtt { + font-family: KaTeX_Typewriter; +} +.katex .mathscr { + font-family: KaTeX_Script; +} +.katex .mathsf { + font-family: KaTeX_SansSerif; +} +.katex .mainit { + font-family: KaTeX_Main; + font-style: italic; +} +.katex .mainrm { + font-family: KaTeX_Main; + font-style: normal; +} +.katex .mord + .mop { + margin-left: 0.16667em; +} +.katex .mord + .mbin { + margin-left: 0.22222em; +} +.katex .mord + .mrel { + margin-left: 0.27778em; +} +.katex .mord + .minner { + margin-left: 0.16667em; +} +.katex .mop + .mord { + margin-left: 0.16667em; +} +.katex .mop + .mop { + margin-left: 0.16667em; +} +.katex .mop + .mrel { + margin-left: 0.27778em; +} +.katex .mop + .minner { + margin-left: 0.16667em; +} +.katex .mbin + .mord { + margin-left: 0.22222em; +} +.katex .mbin + .mop { + margin-left: 0.22222em; +} +.katex .mbin + .mopen { + margin-left: 0.22222em; +} +.katex .mbin + .minner { + margin-left: 0.22222em; +} +.katex .mrel + .mord { + margin-left: 0.27778em; +} +.katex .mrel + .mop { + margin-left: 0.27778em; +} +.katex .mrel + .mopen { + margin-left: 0.27778em; +} +.katex .mrel + .minner { + margin-left: 0.27778em; +} +.katex .mclose + .mop { + margin-left: 0.16667em; +} +.katex .mclose + .mbin { + margin-left: 0.22222em; +} +.katex .mclose + .mrel { + margin-left: 0.27778em; +} +.katex .mclose + .minner { + margin-left: 0.16667em; +} +.katex .mpunct + .mord { + margin-left: 0.16667em; +} +.katex .mpunct + .mop { + margin-left: 0.16667em; +} +.katex .mpunct + .mrel { + margin-left: 0.16667em; +} +.katex .mpunct + .mopen { + margin-left: 0.16667em; +} +.katex .mpunct + .mclose { + margin-left: 0.16667em; +} +.katex .mpunct + .mpunct { + margin-left: 0.16667em; +} +.katex .mpunct + .minner { + margin-left: 0.16667em; +} +.katex .minner + .mord { + margin-left: 0.16667em; +} +.katex .minner + .mop { + margin-left: 0.16667em; +} +.katex .minner + .mbin { + margin-left: 0.22222em; +} +.katex .minner + .mrel { + margin-left: 0.27778em; +} +.katex .minner + .mopen { + margin-left: 0.16667em; +} +.katex .minner + .mpunct { + margin-left: 0.16667em; +} +.katex .minner + .minner { + margin-left: 0.16667em; +} +.katex .mord.mtight { + margin-left: 0; +} +.katex .mop.mtight { + margin-left: 0; +} +.katex .mbin.mtight { + margin-left: 0; +} +.katex .mrel.mtight { + margin-left: 0; +} +.katex .mopen.mtight { + margin-left: 0; +} +.katex .mclose.mtight { + margin-left: 0; +} +.katex .mpunct.mtight { + margin-left: 0; +} +.katex .minner.mtight { + margin-left: 0; +} +.katex .mord + .mop.mtight { + margin-left: 0.16667em; +} +.katex .mop + .mord.mtight { + margin-left: 0.16667em; +} +.katex .mop + .mop.mtight { + margin-left: 0.16667em; +} +.katex .mclose + .mop.mtight { + margin-left: 0.16667em; +} +.katex .minner + .mop.mtight { + margin-left: 0.16667em; +} +.katex .vlist-t { + display: inline-table; + table-layout: fixed; +} +.katex .vlist-r { + display: table-row; +} +.katex .vlist { + display: table-cell; + vertical-align: bottom; + position: relative; +} +.katex .vlist > span { + display: block; + height: 0; + position: relative; +} +.katex .vlist > span > span { + display: inline-block; +} +.katex .vlist > span > .pstrut { + overflow: hidden; + width: 0; +} +.katex .vlist-t2 { + margin-right: -2px; +} +.katex .vlist-s { + display: table-cell; + vertical-align: bottom; + font-size: 1px; + width: 2px; +} +.katex .msupsub { + text-align: left; +} +.katex .mfrac > span > span { + text-align: center; +} +.katex .mfrac .frac-line { + display: inline-block; + width: 100%; + border-bottom-style: solid; +} +.katex .mspace { + display: inline-block; +} +.katex .mspace.negativethinspace { + margin-left: -0.16667em; +} +.katex .mspace.thinspace { + width: 0.16667em; +} +.katex .mspace.negativemediumspace { + margin-left: -0.22222em; +} +.katex .mspace.mediumspace { + width: 0.22222em; +} +.katex .mspace.thickspace { + width: 0.27778em; +} +.katex .mspace.sixmuspace { + width: 0.333333em; +} +.katex .mspace.eightmuspace { + width: 0.444444em; +} +.katex .mspace.enspace { + width: 0.5em; +} +.katex .mspace.twelvemuspace { + width: 0.666667em; +} +.katex .mspace.quad { + width: 1em; +} +.katex .mspace.qquad { + width: 2em; +} +.katex .llap, +.katex .rlap { + width: 0; + position: relative; +} +.katex .llap > .inner, +.katex .rlap > .inner { + position: absolute; +} +.katex .llap > .fix, +.katex .rlap > .fix { + display: inline-block; +} +.katex .llap > .inner { + right: 0; +} +.katex .rlap > .inner { + left: 0; +} +.katex .katex-logo .a { + font-size: 0.75em; + margin-left: -0.32em; + position: relative; + top: -0.2em; +} +.katex .katex-logo .t { + margin-left: -0.23em; +} +.katex .katex-logo .e { + margin-left: -0.1667em; + position: relative; + top: 0.2155em; +} +.katex .katex-logo .x { + margin-left: -0.125em; +} +.katex .rule { + display: inline-block; + border: solid 0; + position: relative; +} +.katex .overline .overline-line, +.katex .underline .underline-line { + display: inline-block; + width: 100%; + border-bottom-style: solid; +} +.katex .sqrt > .root { + margin-left: 0.27777778em; + margin-right: -0.55555556em; +} +.katex .sizing, +.katex .fontsize-ensurer { + display: inline-block; +} +.katex .sizing.reset-size1.size1, +.katex .fontsize-ensurer.reset-size1.size1 { + font-size: 1em; +} +.katex .sizing.reset-size1.size2, +.katex .fontsize-ensurer.reset-size1.size2 { + font-size: 1.2em; +} +.katex .sizing.reset-size1.size3, +.katex .fontsize-ensurer.reset-size1.size3 { + font-size: 1.4em; +} +.katex .sizing.reset-size1.size4, +.katex .fontsize-ensurer.reset-size1.size4 { + font-size: 1.6em; +} +.katex .sizing.reset-size1.size5, +.katex .fontsize-ensurer.reset-size1.size5 { + font-size: 1.8em; +} +.katex .sizing.reset-size1.size6, +.katex .fontsize-ensurer.reset-size1.size6 { + font-size: 2em; +} +.katex .sizing.reset-size1.size7, +.katex .fontsize-ensurer.reset-size1.size7 { + font-size: 2.4em; +} +.katex .sizing.reset-size1.size8, +.katex .fontsize-ensurer.reset-size1.size8 { + font-size: 2.88em; +} +.katex .sizing.reset-size1.size9, +.katex .fontsize-ensurer.reset-size1.size9 { + font-size: 3.456em; +} +.katex .sizing.reset-size1.size10, +.katex .fontsize-ensurer.reset-size1.size10 { + font-size: 4.148em; +} +.katex .sizing.reset-size1.size11, +.katex .fontsize-ensurer.reset-size1.size11 { + font-size: 4.976em; +} +.katex .sizing.reset-size2.size1, +.katex .fontsize-ensurer.reset-size2.size1 { + font-size: 0.83333333em; +} +.katex .sizing.reset-size2.size2, +.katex .fontsize-ensurer.reset-size2.size2 { + font-size: 1em; +} +.katex .sizing.reset-size2.size3, +.katex .fontsize-ensurer.reset-size2.size3 { + font-size: 1.16666667em; +} +.katex .sizing.reset-size2.size4, +.katex .fontsize-ensurer.reset-size2.size4 { + font-size: 1.33333333em; +} +.katex .sizing.reset-size2.size5, +.katex .fontsize-ensurer.reset-size2.size5 { + font-size: 1.5em; +} +.katex .sizing.reset-size2.size6, +.katex .fontsize-ensurer.reset-size2.size6 { + font-size: 1.66666667em; +} +.katex .sizing.reset-size2.size7, +.katex .fontsize-ensurer.reset-size2.size7 { + font-size: 2em; +} +.katex .sizing.reset-size2.size8, +.katex .fontsize-ensurer.reset-size2.size8 { + font-size: 2.4em; +} +.katex .sizing.reset-size2.size9, +.katex .fontsize-ensurer.reset-size2.size9 { + font-size: 2.88em; +} +.katex .sizing.reset-size2.size10, +.katex .fontsize-ensurer.reset-size2.size10 { + font-size: 3.45666667em; +} +.katex .sizing.reset-size2.size11, +.katex .fontsize-ensurer.reset-size2.size11 { + font-size: 4.14666667em; +} +.katex .sizing.reset-size3.size1, +.katex .fontsize-ensurer.reset-size3.size1 { + font-size: 0.71428571em; +} +.katex .sizing.reset-size3.size2, +.katex .fontsize-ensurer.reset-size3.size2 { + font-size: 0.85714286em; +} +.katex .sizing.reset-size3.size3, +.katex .fontsize-ensurer.reset-size3.size3 { + font-size: 1em; +} +.katex .sizing.reset-size3.size4, +.katex .fontsize-ensurer.reset-size3.size4 { + font-size: 1.14285714em; +} +.katex .sizing.reset-size3.size5, +.katex .fontsize-ensurer.reset-size3.size5 { + font-size: 1.28571429em; +} +.katex .sizing.reset-size3.size6, +.katex .fontsize-ensurer.reset-size3.size6 { + font-size: 1.42857143em; +} +.katex .sizing.reset-size3.size7, +.katex .fontsize-ensurer.reset-size3.size7 { + font-size: 1.71428571em; +} +.katex .sizing.reset-size3.size8, +.katex .fontsize-ensurer.reset-size3.size8 { + font-size: 2.05714286em; +} +.katex .sizing.reset-size3.size9, +.katex .fontsize-ensurer.reset-size3.size9 { + font-size: 2.46857143em; +} +.katex .sizing.reset-size3.size10, +.katex .fontsize-ensurer.reset-size3.size10 { + font-size: 2.96285714em; +} +.katex .sizing.reset-size3.size11, +.katex .fontsize-ensurer.reset-size3.size11 { + font-size: 3.55428571em; +} +.katex .sizing.reset-size4.size1, +.katex .fontsize-ensurer.reset-size4.size1 { + font-size: 0.625em; +} +.katex .sizing.reset-size4.size2, +.katex .fontsize-ensurer.reset-size4.size2 { + font-size: 0.75em; +} +.katex .sizing.reset-size4.size3, +.katex .fontsize-ensurer.reset-size4.size3 { + font-size: 0.875em; +} +.katex .sizing.reset-size4.size4, +.katex .fontsize-ensurer.reset-size4.size4 { + font-size: 1em; +} +.katex .sizing.reset-size4.size5, +.katex .fontsize-ensurer.reset-size4.size5 { + font-size: 1.125em; +} +.katex .sizing.reset-size4.size6, +.katex .fontsize-ensurer.reset-size4.size6 { + font-size: 1.25em; +} +.katex .sizing.reset-size4.size7, +.katex .fontsize-ensurer.reset-size4.size7 { + font-size: 1.5em; +} +.katex .sizing.reset-size4.size8, +.katex .fontsize-ensurer.reset-size4.size8 { + font-size: 1.8em; +} +.katex .sizing.reset-size4.size9, +.katex .fontsize-ensurer.reset-size4.size9 { + font-size: 2.16em; +} +.katex .sizing.reset-size4.size10, +.katex .fontsize-ensurer.reset-size4.size10 { + font-size: 2.5925em; +} +.katex .sizing.reset-size4.size11, +.katex .fontsize-ensurer.reset-size4.size11 { + font-size: 3.11em; +} +.katex .sizing.reset-size5.size1, +.katex .fontsize-ensurer.reset-size5.size1 { + font-size: 0.55555556em; +} +.katex .sizing.reset-size5.size2, +.katex .fontsize-ensurer.reset-size5.size2 { + font-size: 0.66666667em; +} +.katex .sizing.reset-size5.size3, +.katex .fontsize-ensurer.reset-size5.size3 { + font-size: 0.77777778em; +} +.katex .sizing.reset-size5.size4, +.katex .fontsize-ensurer.reset-size5.size4 { + font-size: 0.88888889em; +} +.katex .sizing.reset-size5.size5, +.katex .fontsize-ensurer.reset-size5.size5 { + font-size: 1em; +} +.katex .sizing.reset-size5.size6, +.katex .fontsize-ensurer.reset-size5.size6 { + font-size: 1.11111111em; +} +.katex .sizing.reset-size5.size7, +.katex .fontsize-ensurer.reset-size5.size7 { + font-size: 1.33333333em; +} +.katex .sizing.reset-size5.size8, +.katex .fontsize-ensurer.reset-size5.size8 { + font-size: 1.6em; +} +.katex .sizing.reset-size5.size9, +.katex .fontsize-ensurer.reset-size5.size9 { + font-size: 1.92em; +} +.katex .sizing.reset-size5.size10, +.katex .fontsize-ensurer.reset-size5.size10 { + font-size: 2.30444444em; +} +.katex .sizing.reset-size5.size11, +.katex .fontsize-ensurer.reset-size5.size11 { + font-size: 2.76444444em; +} +.katex .sizing.reset-size6.size1, +.katex .fontsize-ensurer.reset-size6.size1 { + font-size: 0.5em; +} +.katex .sizing.reset-size6.size2, +.katex .fontsize-ensurer.reset-size6.size2 { + font-size: 0.6em; +} +.katex .sizing.reset-size6.size3, +.katex .fontsize-ensurer.reset-size6.size3 { + font-size: 0.7em; +} +.katex .sizing.reset-size6.size4, +.katex .fontsize-ensurer.reset-size6.size4 { + font-size: 0.8em; +} +.katex .sizing.reset-size6.size5, +.katex .fontsize-ensurer.reset-size6.size5 { + font-size: 0.9em; +} +.katex .sizing.reset-size6.size6, +.katex .fontsize-ensurer.reset-size6.size6 { + font-size: 1em; +} +.katex .sizing.reset-size6.size7, +.katex .fontsize-ensurer.reset-size6.size7 { + font-size: 1.2em; +} +.katex .sizing.reset-size6.size8, +.katex .fontsize-ensurer.reset-size6.size8 { + font-size: 1.44em; +} +.katex .sizing.reset-size6.size9, +.katex .fontsize-ensurer.reset-size6.size9 { + font-size: 1.728em; +} +.katex .sizing.reset-size6.size10, +.katex .fontsize-ensurer.reset-size6.size10 { + font-size: 2.074em; +} +.katex .sizing.reset-size6.size11, +.katex .fontsize-ensurer.reset-size6.size11 { + font-size: 2.488em; +} +.katex .sizing.reset-size7.size1, +.katex .fontsize-ensurer.reset-size7.size1 { + font-size: 0.41666667em; +} +.katex .sizing.reset-size7.size2, +.katex .fontsize-ensurer.reset-size7.size2 { + font-size: 0.5em; +} +.katex .sizing.reset-size7.size3, +.katex .fontsize-ensurer.reset-size7.size3 { + font-size: 0.58333333em; +} +.katex .sizing.reset-size7.size4, +.katex .fontsize-ensurer.reset-size7.size4 { + font-size: 0.66666667em; +} +.katex .sizing.reset-size7.size5, +.katex .fontsize-ensurer.reset-size7.size5 { + font-size: 0.75em; +} +.katex .sizing.reset-size7.size6, +.katex .fontsize-ensurer.reset-size7.size6 { + font-size: 0.83333333em; +} +.katex .sizing.reset-size7.size7, +.katex .fontsize-ensurer.reset-size7.size7 { + font-size: 1em; +} +.katex .sizing.reset-size7.size8, +.katex .fontsize-ensurer.reset-size7.size8 { + font-size: 1.2em; +} +.katex .sizing.reset-size7.size9, +.katex .fontsize-ensurer.reset-size7.size9 { + font-size: 1.44em; +} +.katex .sizing.reset-size7.size10, +.katex .fontsize-ensurer.reset-size7.size10 { + font-size: 1.72833333em; +} +.katex .sizing.reset-size7.size11, +.katex .fontsize-ensurer.reset-size7.size11 { + font-size: 2.07333333em; +} +.katex .sizing.reset-size8.size1, +.katex .fontsize-ensurer.reset-size8.size1 { + font-size: 0.34722222em; +} +.katex .sizing.reset-size8.size2, +.katex .fontsize-ensurer.reset-size8.size2 { + font-size: 0.41666667em; +} +.katex .sizing.reset-size8.size3, +.katex .fontsize-ensurer.reset-size8.size3 { + font-size: 0.48611111em; +} +.katex .sizing.reset-size8.size4, +.katex .fontsize-ensurer.reset-size8.size4 { + font-size: 0.55555556em; +} +.katex .sizing.reset-size8.size5, +.katex .fontsize-ensurer.reset-size8.size5 { + font-size: 0.625em; +} +.katex .sizing.reset-size8.size6, +.katex .fontsize-ensurer.reset-size8.size6 { + font-size: 0.69444444em; +} +.katex .sizing.reset-size8.size7, +.katex .fontsize-ensurer.reset-size8.size7 { + font-size: 0.83333333em; +} +.katex .sizing.reset-size8.size8, +.katex .fontsize-ensurer.reset-size8.size8 { + font-size: 1em; +} +.katex .sizing.reset-size8.size9, +.katex .fontsize-ensurer.reset-size8.size9 { + font-size: 1.2em; +} +.katex .sizing.reset-size8.size10, +.katex .fontsize-ensurer.reset-size8.size10 { + font-size: 1.44027778em; +} +.katex .sizing.reset-size8.size11, +.katex .fontsize-ensurer.reset-size8.size11 { + font-size: 1.72777778em; +} +.katex .sizing.reset-size9.size1, +.katex .fontsize-ensurer.reset-size9.size1 { + font-size: 0.28935185em; +} +.katex .sizing.reset-size9.size2, +.katex .fontsize-ensurer.reset-size9.size2 { + font-size: 0.34722222em; +} +.katex .sizing.reset-size9.size3, +.katex .fontsize-ensurer.reset-size9.size3 { + font-size: 0.40509259em; +} +.katex .sizing.reset-size9.size4, +.katex .fontsize-ensurer.reset-size9.size4 { + font-size: 0.46296296em; +} +.katex .sizing.reset-size9.size5, +.katex .fontsize-ensurer.reset-size9.size5 { + font-size: 0.52083333em; +} +.katex .sizing.reset-size9.size6, +.katex .fontsize-ensurer.reset-size9.size6 { + font-size: 0.5787037em; +} +.katex .sizing.reset-size9.size7, +.katex .fontsize-ensurer.reset-size9.size7 { + font-size: 0.69444444em; +} +.katex .sizing.reset-size9.size8, +.katex .fontsize-ensurer.reset-size9.size8 { + font-size: 0.83333333em; +} +.katex .sizing.reset-size9.size9, +.katex .fontsize-ensurer.reset-size9.size9 { + font-size: 1em; +} +.katex .sizing.reset-size9.size10, +.katex .fontsize-ensurer.reset-size9.size10 { + font-size: 1.20023148em; +} +.katex .sizing.reset-size9.size11, +.katex .fontsize-ensurer.reset-size9.size11 { + font-size: 1.43981481em; +} +.katex .sizing.reset-size10.size1, +.katex .fontsize-ensurer.reset-size10.size1 { + font-size: 0.24108004em; +} +.katex .sizing.reset-size10.size2, +.katex .fontsize-ensurer.reset-size10.size2 { + font-size: 0.28929605em; +} +.katex .sizing.reset-size10.size3, +.katex .fontsize-ensurer.reset-size10.size3 { + font-size: 0.33751205em; +} +.katex .sizing.reset-size10.size4, +.katex .fontsize-ensurer.reset-size10.size4 { + font-size: 0.38572806em; +} +.katex .sizing.reset-size10.size5, +.katex .fontsize-ensurer.reset-size10.size5 { + font-size: 0.43394407em; +} +.katex .sizing.reset-size10.size6, +.katex .fontsize-ensurer.reset-size10.size6 { + font-size: 0.48216008em; +} +.katex .sizing.reset-size10.size7, +.katex .fontsize-ensurer.reset-size10.size7 { + font-size: 0.57859209em; +} +.katex .sizing.reset-size10.size8, +.katex .fontsize-ensurer.reset-size10.size8 { + font-size: 0.69431051em; +} +.katex .sizing.reset-size10.size9, +.katex .fontsize-ensurer.reset-size10.size9 { + font-size: 0.83317261em; +} +.katex .sizing.reset-size10.size10, +.katex .fontsize-ensurer.reset-size10.size10 { + font-size: 1em; +} +.katex .sizing.reset-size10.size11, +.katex .fontsize-ensurer.reset-size10.size11 { + font-size: 1.19961427em; +} +.katex .sizing.reset-size11.size1, +.katex .fontsize-ensurer.reset-size11.size1 { + font-size: 0.20096463em; +} +.katex .sizing.reset-size11.size2, +.katex .fontsize-ensurer.reset-size11.size2 { + font-size: 0.24115756em; +} +.katex .sizing.reset-size11.size3, +.katex .fontsize-ensurer.reset-size11.size3 { + font-size: 0.28135048em; +} +.katex .sizing.reset-size11.size4, +.katex .fontsize-ensurer.reset-size11.size4 { + font-size: 0.32154341em; +} +.katex .sizing.reset-size11.size5, +.katex .fontsize-ensurer.reset-size11.size5 { + font-size: 0.36173633em; +} +.katex .sizing.reset-size11.size6, +.katex .fontsize-ensurer.reset-size11.size6 { + font-size: 0.40192926em; +} +.katex .sizing.reset-size11.size7, +.katex .fontsize-ensurer.reset-size11.size7 { + font-size: 0.48231511em; +} +.katex .sizing.reset-size11.size8, +.katex .fontsize-ensurer.reset-size11.size8 { + font-size: 0.57877814em; +} +.katex .sizing.reset-size11.size9, +.katex .fontsize-ensurer.reset-size11.size9 { + font-size: 0.69453376em; +} +.katex .sizing.reset-size11.size10, +.katex .fontsize-ensurer.reset-size11.size10 { + font-size: 0.83360129em; +} +.katex .sizing.reset-size11.size11, +.katex .fontsize-ensurer.reset-size11.size11 { + font-size: 1em; +} +.katex .delimsizing.size1 { + font-family: KaTeX_Size1; +} +.katex .delimsizing.size2 { + font-family: KaTeX_Size2; +} +.katex .delimsizing.size3 { + font-family: KaTeX_Size3; +} +.katex .delimsizing.size4 { + font-family: KaTeX_Size4; +} +.katex .delimsizing.mult .delim-size1 > span { + font-family: KaTeX_Size1; +} +.katex .delimsizing.mult .delim-size4 > span { + font-family: KaTeX_Size4; +} +.katex .nulldelimiter { + display: inline-block; + width: 0.12em; +} +.katex .delimcenter { + position: relative; +} +.katex .op-symbol { + position: relative; +} +.katex .op-symbol.small-op { + font-family: KaTeX_Size1; +} +.katex .op-symbol.large-op { + font-family: KaTeX_Size2; +} +.katex .op-limits > .vlist-t { + text-align: center; +} +.katex .accent > .vlist-t { + text-align: center; +} +.katex .accent .accent-body > span { + width: 0; +} +.katex .accent .accent-body.accent-vec > span { + position: relative; + left: 0.326em; +} +.katex .accent .accent-body.accent-hungarian > span { + position: relative; + left: 0.250em; +} +.katex .mtable .vertical-separator { + display: inline-block; + margin: 0 -0.025em; + border-right: 0.05em solid black; +} +.katex .mtable .arraycolsep { + display: inline-block; +} +.katex .mtable .col-align-c > .vlist-t { + text-align: center; +} +.katex .mtable .col-align-l > .vlist-t { + text-align: left; +} +.katex .mtable .col-align-r > .vlist-t { + text-align: right; +} +.katex .svg-align { + text-align: left; +} +.katex svg { + display: block; + position: absolute; + width: 100%; +} +.katex svg path { + fill: currentColor; +} +.katex svg line { + stroke: currentColor; +} +.katex .stretchy { + width: 100%; + display: block; +} +.katex .stretchy:before, +.katex .stretchy:after { + content: ""; +} +.katex .x-arrow-pad { + padding: 0 0.5em; +} +.katex .x-arrow, +.katex .mover, +.katex .munder { + text-align: center; +} +.katex .boxpad { + padding: 0 0.3em 0 0.3em; +} +.katex .fbox { + box-sizing: border-box; + border: 0.04em solid black; +} +.katex .cancel-pad { + padding: 0 0.2em 0 0.2em; +} +.katex .mord + .cancel-lap, +.katex .mbin + .cancel-lap { + margin-left: -0.2em; +} +.katex .cancel-lap + .mord, +.katex .cancel-lap + .mbin, +.katex .cancel-lap + .msupsub { + margin-left: -0.2em; +} +.katex .sout { + border-bottom-style: solid; + border-bottom-width: 0.08em; +} diff --git a/static/katex/katex.js b/static/katex/katex.js new file mode 100644 index 00000000..7e018746 --- /dev/null +++ b/static/katex/katex.js @@ -0,0 +1,10788 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.katex = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 0; --i) { + tok = expansion[i]; + if (tok.text === "#") { + if (i === 0) { + throw new _ParseError2.default("Incomplete placeholder at end of macro body", tok); + } + tok = expansion[--i]; // next token on stack + if (tok.text === "#") { + // ## → # + expansion.splice(i + 1, 1); // drop first # + } else if (/^[1-9]$/.test(tok.text)) { + // expansion.splice(i, 2, arg[0], arg[1], …) + // to replace placeholder with the indicated argument. + // TODO: use spread once we move to ES2015 + expansion.splice.apply(expansion, [i, 2].concat(args[tok.text - 1])); + } else { + throw new _ParseError2.default("Not a valid argument number", tok); + } + } + } + } + this.stack = this.stack.concat(expansion); + } + } + }, { + key: "get", + value: function get(ignoreSpace) { + this.discardedWhiteSpace = []; + var token = this.nextToken(); + if (ignoreSpace) { + while (token.text === " ") { + this.discardedWhiteSpace.push(token); + token = this.nextToken(); + } + } + return token; + } + + /** + * Undo the effect of the preceding call to the get method. + * A call to this method MUST be immediately preceded and immediately followed + * by a call to get. Only used during mode switching, i.e. after one token + * was got in the old mode but should get got again in a new mode + * with possibly different whitespace handling. + */ + + }, { + key: "unget", + value: function unget(token) { + this.stack.push(token); + while (this.discardedWhiteSpace.length !== 0) { + this.stack.push(this.discardedWhiteSpace.pop()); + } + } + }]); + return MacroExpander; +}(); + +module.exports = MacroExpander; + +},{"./Lexer":26,"./ParseError":29,"./macros":44,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5,"object-assign":25}],28:[function(require,module,exports){ +"use strict"; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _fontMetrics2 = require("./fontMetrics"); + +var _fontMetrics3 = _interopRequireDefault(_fontMetrics2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var BASESIZE = 6; /** + * This file contains information about the options that the Parser carries + * around with it while parsing. Data is held in an `Options` object, and when + * recursing, a new `Options` object can be created with the `.with*` and + * `.reset` functions. + */ + +var sizeStyleMap = [ +// Each element contains [textsize, scriptsize, scriptscriptsize]. +// The size mappings are taken from TeX with \normalsize=10pt. +[1, 1, 1], // size1: [5, 5, 5] \tiny +[2, 1, 1], // size2: [6, 5, 5] +[3, 1, 1], // size3: [7, 5, 5] \scriptsize +[4, 2, 1], // size4: [8, 6, 5] \footnotesize +[5, 2, 1], // size5: [9, 6, 5] \small +[6, 3, 1], // size6: [10, 7, 5] \normalsize +[7, 4, 2], // size7: [12, 8, 6] \large +[8, 6, 3], // size8: [14.4, 10, 7] \Large +[9, 7, 6], // size9: [17.28, 12, 10] \LARGE +[10, 8, 7], // size10: [20.74, 14.4, 12] \huge +[11, 10, 9]]; + +var sizeMultipliers = [ +// fontMetrics.js:getFontMetrics also uses size indexes, so if +// you change size indexes, change that function. +0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488]; + +var sizeAtStyle = function sizeAtStyle(size, style) { + return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1]; +}; + +/** + * This is the main options class. It contains the current style, size, color, + * and font. + * + * Options objects should not be modified. To create a new Options with + * different properties, call a `.having*` method. + */ + +var Options = function () { + function Options(data) { + (0, _classCallCheck3.default)(this, Options); + + this.style = data.style; + this.color = data.color; + this.size = data.size || BASESIZE; + this.textSize = data.textSize || this.size; + this.phantom = data.phantom; + this.font = data.font; + this.sizeMultiplier = sizeMultipliers[this.size - 1]; + this._fontMetrics = null; + } + + /** + * Returns a new options object with the same properties as "this". Properties + * from "extension" will be copied to the new options object. + */ + + + (0, _createClass3.default)(Options, [{ + key: "extend", + value: function extend(extension) { + var data = { + style: this.style, + size: this.size, + textSize: this.textSize, + color: this.color, + phantom: this.phantom, + font: this.font + }; + + for (var key in extension) { + if (extension.hasOwnProperty(key)) { + data[key] = extension[key]; + } + } + + return new Options(data); + } + + /** + * Return an options object with the given style. If `this.style === style`, + * returns `this`. + */ + + }, { + key: "havingStyle", + value: function havingStyle(style) { + if (this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: sizeAtStyle(this.textSize, style) + }); + } + } + + /** + * Return an options object with a cramped version of the current style. If + * the current style is cramped, returns `this`. + */ + + }, { + key: "havingCrampedStyle", + value: function havingCrampedStyle() { + return this.havingStyle(this.style.cramp()); + } + + /** + * Return an options object with the given size and in at least `\textstyle`. + * Returns `this` if appropriate. + */ + + }, { + key: "havingSize", + value: function havingSize(size) { + if (this.size === size && this.textSize === size) { + return this; + } else { + return this.extend({ + style: this.style.text(), + size: size, + textSize: size + }); + } + } + + /** + * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, + * changes to at least `\textstyle`. + */ + + }, { + key: "havingBaseStyle", + value: function havingBaseStyle(style) { + style = style || this.style.text(); + var wantSize = sizeAtStyle(BASESIZE, style); + if (this.size === wantSize && this.textSize === BASESIZE && this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: wantSize, + baseSize: BASESIZE + }); + } + } + + /** + * Create a new options object with the given color. + */ + + }, { + key: "withColor", + value: function withColor(color) { + return this.extend({ + color: color + }); + } + + /** + * Create a new options object with "phantom" set to true. + */ + + }, { + key: "withPhantom", + value: function withPhantom() { + return this.extend({ + phantom: true + }); + } + + /** + * Create a new options objects with the give font. + */ + + }, { + key: "withFont", + value: function withFont(font) { + return this.extend({ + font: font || this.font + }); + } + + /** + * Return the CSS sizing classes required to switch from enclosing options + * `oldOptions` to `this`. Returns an array of classes. + */ + + }, { + key: "sizingClasses", + value: function sizingClasses(oldOptions) { + if (oldOptions.size !== this.size) { + return ["sizing", "reset-size" + oldOptions.size, "size" + this.size]; + } else { + return []; + } + } + + /** + * Return the CSS sizing classes required to switch to the base size. Like + * `this.havingSize(BASESIZE).sizingClasses(this)`. + */ + + }, { + key: "baseSizingClasses", + value: function baseSizingClasses() { + if (this.size !== BASESIZE) { + return ["sizing", "reset-size" + this.size, "size" + BASESIZE]; + } else { + return []; + } + } + + /** + * Return the font metrics for this size. + */ + + }, { + key: "fontMetrics", + value: function fontMetrics() { + if (!this._fontMetrics) { + this._fontMetrics = _fontMetrics3.default.getFontMetrics(this.size); + } + return this._fontMetrics; + } + + /** + * A map of color names to CSS colors. + * TODO(emily): Remove this when we have real macros + */ + + }, { + key: "getColor", + + + /** + * Gets the CSS color of the current options object, accounting for the + * `colorMap`. + */ + value: function getColor() { + if (this.phantom) { + return "transparent"; + } else { + return Options.colorMap[this.color] || this.color; + } + } + }]); + return Options; +}(); + +/** + * The base size index. + */ + + +Options.colorMap = { + "katex-blue": "#6495ed", + "katex-orange": "#ffa500", + "katex-pink": "#ff00af", + "katex-red": "#df0030", + "katex-green": "#28ae7b", + "katex-gray": "gray", + "katex-purple": "#9d38bd", + "katex-blueA": "#ccfaff", + "katex-blueB": "#80f6ff", + "katex-blueC": "#63d9ea", + "katex-blueD": "#11accd", + "katex-blueE": "#0c7f99", + "katex-tealA": "#94fff5", + "katex-tealB": "#26edd5", + "katex-tealC": "#01d1c1", + "katex-tealD": "#01a995", + "katex-tealE": "#208170", + "katex-greenA": "#b6ffb0", + "katex-greenB": "#8af281", + "katex-greenC": "#74cf70", + "katex-greenD": "#1fab54", + "katex-greenE": "#0d923f", + "katex-goldA": "#ffd0a9", + "katex-goldB": "#ffbb71", + "katex-goldC": "#ff9c39", + "katex-goldD": "#e07d10", + "katex-goldE": "#a75a05", + "katex-redA": "#fca9a9", + "katex-redB": "#ff8482", + "katex-redC": "#f9685d", + "katex-redD": "#e84d39", + "katex-redE": "#bc2612", + "katex-maroonA": "#ffbde0", + "katex-maroonB": "#ff92c6", + "katex-maroonC": "#ed5fa6", + "katex-maroonD": "#ca337c", + "katex-maroonE": "#9e034e", + "katex-purpleA": "#ddd7ff", + "katex-purpleB": "#c6b9fc", + "katex-purpleC": "#aa87ff", + "katex-purpleD": "#7854ab", + "katex-purpleE": "#543b78", + "katex-mintA": "#f5f9e8", + "katex-mintB": "#edf2df", + "katex-mintC": "#e0e5cc", + "katex-grayA": "#f6f7f7", + "katex-grayB": "#f0f1f2", + "katex-grayC": "#e3e5e6", + "katex-grayD": "#d6d8da", + "katex-grayE": "#babec2", + "katex-grayF": "#888d93", + "katex-grayG": "#626569", + "katex-grayH": "#3b3e40", + "katex-grayI": "#21242c", + "katex-kaBlue": "#314453", + "katex-kaGreen": "#71B307" +}; +Options.BASESIZE = BASESIZE; + +module.exports = Options; + +},{"./fontMetrics":41,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],29:[function(require,module,exports){ +"use strict"; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This is the ParseError class, which is the main error thrown by KaTeX + * functions when something has gone wrong. This is used to distinguish internal + * errors from errors in the expression that the user provided. + * + * If possible, a caller should provide a Token or ParseNode with information + * about where in the source string the problem occurred. + * + * @param {string} message The error message + * @param {(Token|ParseNode)=} token An object providing position information + */ +var ParseError = function ParseError(message, token) { + (0, _classCallCheck3.default)(this, ParseError); + + var error = "KaTeX parse error: " + message; + var start = void 0; + var end = void 0; + + if (token && token.lexer && token.start <= token.end) { + // If we have the input and a position, make the error a bit fancier + + // Get the input + var input = token.lexer.input; + + // Prepend some information + start = token.start; + end = token.end; + if (start === input.length) { + error += " at end of input: "; + } else { + error += " at position " + (start + 1) + ": "; + } + + // Underline token in question using combining underscores + var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); + + // Extract some context from the input and add it to the error + var left = void 0; + if (start > 15) { + left = "…" + input.slice(start - 15, start); + } else { + left = input.slice(0, start); + } + var right = void 0; + if (end + 15 < input.length) { + right = input.slice(end, end + 15) + "…"; + } else { + right = input.slice(end); + } + error += left + underlined + right; + } + + // Some hackery to make ParseError a prototype of Error + // See http://stackoverflow.com/a/8460753 + var self = new Error(error); + self.name = "ParseError"; + self.__proto__ = ParseError.prototype; + + self.position = start; + return self; +}; + +// More hackery + + +ParseError.prototype.__proto__ = Error.prototype; + +module.exports = ParseError; + +},{"babel-runtime/helpers/classCallCheck":4}],30:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The resulting parse tree nodes of the parse tree. + * + * It is possible to provide position information, so that a ParseNode can + * fulfil a role similar to a Token in error reporting. + * For details on the corresponding properties see Token constructor. + * Providing such information can lead to better error reporting. + * + * @param {string} type type of node, like e.g. "ordgroup" + * @param {?object} value type-specific representation of the node + * @param {string} mode parse mode in action for this node, + * "math" or "text" + * @param {Token=} firstToken first token of the input for this node, + * will omit position information if unset + * @param {Token=} lastToken last token of the input for this node, + * will default to firstToken if unset + */ +var ParseNode = function ParseNode(type, value, mode, firstToken, lastToken) { + (0, _classCallCheck3.default)(this, ParseNode); + + this.type = type; + this.value = value; + this.mode = mode; + if (firstToken && (!lastToken || lastToken.lexer === firstToken.lexer)) { + this.lexer = firstToken.lexer; + this.start = firstToken.start; + this.end = (lastToken || firstToken).end; + } +}; + +exports.default = ParseNode; + +},{"babel-runtime/helpers/classCallCheck":4}],31:[function(require,module,exports){ +"use strict"; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _functions = require("./functions"); + +var _functions2 = _interopRequireDefault(_functions); + +var _environments = require("./environments"); + +var _environments2 = _interopRequireDefault(_environments); + +var _MacroExpander = require("./MacroExpander"); + +var _MacroExpander2 = _interopRequireDefault(_MacroExpander); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _units = require("./units"); + +var _units2 = _interopRequireDefault(_units); + +var _unicodeRegexes = require("./unicodeRegexes"); + +var _ParseNode = require("./ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This file contains the parser used to parse out a TeX expression from the + * input. Since TeX isn't context-free, standard parsers don't work particularly + * well. + * + * The strategy of this parser is as such: + * + * The main functions (the `.parse...` ones) take a position in the current + * parse string to parse tokens from. The lexer (found in Lexer.js, stored at + * this.lexer) also supports pulling out tokens at arbitrary places. When + * individual tokens are needed at a position, the lexer is called to pull out a + * token, which is then used. + * + * The parser has a property called "mode" indicating the mode that + * the parser is currently in. Currently it has to be one of "math" or + * "text", which denotes whether the current environment is a math-y + * one or a text-y one (e.g. inside \text). Currently, this serves to + * limit the functions which can be used in text mode. + * + * The main functions then return an object which contains the useful data that + * was parsed at its given point, and a new position at the end of the parsed + * data. The main functions can call each other and continue the parsing by + * using the returned position as a new starting point. + * + * There are also extra `.handle...` functions, which pull out some reused + * functionality into self-contained functions. + * + * The earlier functions return ParseNodes. + * The later functions (which are called deeper in the parse) sometimes return + * ParseFuncOrArgument, which contain a ParseNode as well as some data about + * whether the parsed object is a function which is missing some arguments, or a + * standalone object which can be used as an argument to another function. + */ + +/** + * An initial function (without its arguments), or an argument to a function. + * The `result` argument should be a ParseNode. + */ +function ParseFuncOrArgument(result, isFunction, token) { + this.result = result; + // Is this a function (i.e. is it something defined in functions.js)? + this.isFunction = isFunction; + this.token = token; +} /* eslint no-constant-condition:0 */ + +var Parser = function () { + function Parser(input, settings) { + (0, _classCallCheck3.default)(this, Parser); + + // Create a new macro expander (gullet) and (indirectly via that) also a + // new lexer (mouth) for this parser (stomach, in the language of TeX) + this.gullet = new _MacroExpander2.default(input, settings.macros); + // Use old \color behavior (same as LaTeX's \textcolor) if requested. + // We do this after the macros object has been copied by MacroExpander. + if (settings.colorIsTextColor) { + this.gullet.macros["\\color"] = "\\textcolor"; + } + // Store the settings for use in parsing + this.settings = settings; + // Count leftright depth (for \middle errors) + this.leftrightDepth = 0; + } + + /** + * Checks a result to make sure it has the right type, and throws an + * appropriate error otherwise. + * + * @param {boolean=} consume whether to consume the expected token, + * defaults to true + */ + + + (0, _createClass3.default)(Parser, [{ + key: "expect", + value: function expect(text, consume) { + if (this.nextToken.text !== text) { + throw new _ParseError2.default("Expected '" + text + "', got '" + this.nextToken.text + "'", this.nextToken); + } + if (consume !== false) { + this.consume(); + } + } + + /** + * Considers the current look ahead token as consumed, + * and fetches the one after that as the new look ahead. + */ + + }, { + key: "consume", + value: function consume() { + this.nextToken = this.gullet.get(this.mode === "math"); + } + }, { + key: "switchMode", + value: function switchMode(newMode) { + this.gullet.unget(this.nextToken); + this.mode = newMode; + this.consume(); + } + + /** + * Main parsing function, which parses an entire input. + * + * @return {?Array.} + */ + + }, { + key: "parse", + value: function parse() { + // Try to parse the input + this.mode = "math"; + this.consume(); + var parse = this.parseInput(); + return parse; + } + + /** + * Parses an entire input tree. + */ + + }, { + key: "parseInput", + value: function parseInput() { + // Parse an expression + var expression = this.parseExpression(false); + // If we succeeded, make sure there's an EOF at the end + this.expect("EOF", false); + return expression; + } + }, { + key: "parseExpression", + + + /** + * Parses an "expression", which is a list of atoms. + * + * @param {boolean} breakOnInfix Should the parsing stop when we hit infix + * nodes? This happens when functions have higher precendence + * than infix nodes in implicit parses. + * + * @param {?string} breakOnTokenText The text of the token that the expression + * should end with, or `null` if something else should end the + * expression. + * + * @return {ParseNode} + */ + value: function parseExpression(breakOnInfix, breakOnTokenText) { + var body = []; + // Keep adding atoms to the body until we can't parse any more atoms (either + // we reached the end, a }, or a \right) + while (true) { + var lex = this.nextToken; + if (Parser.endOfExpression.indexOf(lex.text) !== -1) { + break; + } + if (breakOnTokenText && lex.text === breakOnTokenText) { + break; + } + if (breakOnInfix && _functions2.default[lex.text] && _functions2.default[lex.text].infix) { + break; + } + var atom = this.parseAtom(); + if (!atom) { + if (!this.settings.throwOnError && lex.text[0] === "\\") { + var errorNode = this.handleUnsupportedCmd(); + body.push(errorNode); + continue; + } + + break; + } + body.push(atom); + } + return this.handleInfixNodes(body); + } + + /** + * Rewrites infix operators such as \over with corresponding commands such + * as \frac. + * + * There can only be one infix operator per group. If there's more than one + * then the expression is ambiguous. This can be resolved by adding {}. + * + * @returns {Array} + */ + + }, { + key: "handleInfixNodes", + value: function handleInfixNodes(body) { + var overIndex = -1; + var funcName = void 0; + + for (var i = 0; i < body.length; i++) { + var node = body[i]; + if (node.type === "infix") { + if (overIndex !== -1) { + throw new _ParseError2.default("only one infix operator per group", node.value.token); + } + overIndex = i; + funcName = node.value.replaceWith; + } + } + + if (overIndex !== -1) { + var numerNode = void 0; + var denomNode = void 0; + + var numerBody = body.slice(0, overIndex); + var denomBody = body.slice(overIndex + 1); + + if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { + numerNode = numerBody[0]; + } else { + numerNode = new _ParseNode2.default("ordgroup", numerBody, this.mode); + } + + if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { + denomNode = denomBody[0]; + } else { + denomNode = new _ParseNode2.default("ordgroup", denomBody, this.mode); + } + + var value = this.callFunction(funcName, [numerNode, denomNode], null); + return [new _ParseNode2.default(value.type, value, this.mode)]; + } else { + return body; + } + } + + // The greediness of a superscript or subscript + + }, { + key: "handleSupSubscript", + + + /** + * Handle a subscript or superscript with nice errors. + */ + value: function handleSupSubscript(name) { + var symbolToken = this.nextToken; + var symbol = symbolToken.text; + this.consume(); + var group = this.parseGroup(); + + if (!group) { + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + return this.handleUnsupportedCmd(); + } else { + throw new _ParseError2.default("Expected group after '" + symbol + "'", symbolToken); + } + } else if (group.isFunction) { + // ^ and _ have a greediness, so handle interactions with functions' + // greediness + var funcGreediness = _functions2.default[group.result].greediness; + if (funcGreediness > Parser.SUPSUB_GREEDINESS) { + return this.parseFunction(group); + } else { + throw new _ParseError2.default("Got function '" + group.result + "' with no arguments " + "as " + name, symbolToken); + } + } else { + return group.result; + } + } + + /** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + + }, { + key: "handleUnsupportedCmd", + value: function handleUnsupportedCmd() { + var text = this.nextToken.text; + var textordArray = []; + + for (var i = 0; i < text.length; i++) { + textordArray.push(new _ParseNode2.default("textord", text[i], "text")); + } + + var textNode = new _ParseNode2.default("text", { + body: textordArray, + type: "text" + }, this.mode); + + var colorNode = new _ParseNode2.default("color", { + color: this.settings.errorColor, + value: [textNode], + type: "color" + }, this.mode); + + this.consume(); + return colorNode; + } + + /** + * Parses a group with optional super/subscripts. + * + * @return {?ParseNode} + */ + + }, { + key: "parseAtom", + value: function parseAtom() { + // The body of an atom is an implicit group, so that things like + // \left(x\right)^2 work correctly. + var base = this.parseImplicitGroup(); + + // In text mode, we don't have superscripts or subscripts + if (this.mode === "text") { + return base; + } + + // Note that base may be empty (i.e. null) at this point. + + var superscript = void 0; + var subscript = void 0; + while (true) { + // Lex the first token + var lex = this.nextToken; + + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + if (!base || base.type !== "op") { + throw new _ParseError2.default("Limit controls must follow a math operator", lex); + } else { + var limits = lex.text === "\\limits"; + base.value.limits = limits; + base.value.alwaysHandleSupSub = true; + } + this.consume(); + } else if (lex.text === "^") { + // We got a superscript start + if (superscript) { + throw new _ParseError2.default("Double superscript", lex); + } + superscript = this.handleSupSubscript("superscript"); + } else if (lex.text === "_") { + // We got a subscript start + if (subscript) { + throw new _ParseError2.default("Double subscript", lex); + } + subscript = this.handleSupSubscript("subscript"); + } else if (lex.text === "'") { + // We got a prime + if (superscript) { + throw new _ParseError2.default("Double superscript", lex); + } + var prime = new _ParseNode2.default("textord", "\\prime", this.mode); + + // Many primes can be grouped together, so we handle this here + var primes = [prime]; + this.consume(); + // Keep lexing tokens until we get something that's not a prime + while (this.nextToken.text === "'") { + // For each one, add another prime to the list + primes.push(prime); + this.consume(); + } + // If there's a superscript following the primes, combine that + // superscript in with the primes. + if (this.nextToken.text === "^") { + primes.push(this.handleSupSubscript("superscript")); + } + // Put everything into an ordgroup as the superscript + superscript = new _ParseNode2.default("ordgroup", primes, this.mode); + } else { + // If it wasn't ^, _, or ', stop parsing super/subscripts + break; + } + } + + if (superscript || subscript) { + // If we got either a superscript or subscript, create a supsub + return new _ParseNode2.default("supsub", { + base: base, + sup: superscript, + sub: subscript + }, this.mode); + } else { + // Otherwise return the original body + return base; + } + } + + // A list of the size-changing functions, for use in parseImplicitGroup + + + // A list of the style-changing functions, for use in parseImplicitGroup + + + // Old font functions + + }, { + key: "parseImplicitGroup", + + + /** + * Parses an implicit group, which is a group that starts at the end of a + * specified, and ends right before a higher explicit group ends, or at EOL. It + * is used for functions that appear to affect the current style, like \Large or + * \textrm, where instead of keeping a style we just pretend that there is an + * implicit grouping after it until the end of the group. E.g. + * small text {\Large large text} small text again + * It is also used for \left and \right to get the correct grouping. + * + * @return {?ParseNode} + */ + value: function parseImplicitGroup() { + var start = this.parseSymbol(); + + if (start == null) { + // If we didn't get anything we handle, fall back to parseFunction + return this.parseFunction(); + } + + var func = start.result; + + if (func === "\\left") { + // If we see a left: + // Parse the entire left function (including the delimiter) + var left = this.parseFunction(start); + // Parse out the implicit body + ++this.leftrightDepth; + var body = this.parseExpression(false); + --this.leftrightDepth; + // Check the next token + this.expect("\\right", false); + var right = this.parseFunction(); + return new _ParseNode2.default("leftright", { + body: body, + left: left.value.value, + right: right.value.value + }, this.mode); + } else if (func === "\\begin") { + // begin...end is similar to left...right + var begin = this.parseFunction(start); + var envName = begin.value.name; + if (!_environments2.default.hasOwnProperty(envName)) { + throw new _ParseError2.default("No such environment: " + envName, begin.value.nameGroup); + } + // Build the environment object. Arguments and other information will + // be made available to the begin and end methods using properties. + var env = _environments2.default[envName]; + var args = this.parseArguments("\\begin{" + envName + "}", env); + var context = { + mode: this.mode, + envName: envName, + parser: this, + positions: args.pop() + }; + var result = env.handler(context, args); + this.expect("\\end", false); + var endNameToken = this.nextToken; + var end = this.parseFunction(); + if (end.value.name !== envName) { + throw new _ParseError2.default("Mismatch: \\begin{" + envName + "} matched " + "by \\end{" + end.value.name + "}", endNameToken); + } + result.position = end.position; + return result; + } else if (_utils2.default.contains(Parser.sizeFuncs, func)) { + // If we see a sizing function, parse out the implicit body + this.consumeSpaces(); + var _body = this.parseExpression(false); + return new _ParseNode2.default("sizing", { + // Figure out what size to use based on the list of functions above + size: _utils2.default.indexOf(Parser.sizeFuncs, func) + 1, + value: _body + }, this.mode); + } else if (_utils2.default.contains(Parser.styleFuncs, func)) { + // If we see a styling function, parse out the implicit body + this.consumeSpaces(); + var _body2 = this.parseExpression(true); + return new _ParseNode2.default("styling", { + // Figure out what style to use by pulling out the style from + // the function name + style: func.slice(1, func.length - 5), + value: _body2 + }, this.mode); + } else if (func in Parser.oldFontFuncs) { + var style = Parser.oldFontFuncs[func]; + // If we see an old font function, parse out the implicit body + this.consumeSpaces(); + var _body3 = this.parseExpression(true); + if (style.slice(0, 4) === 'text') { + return new _ParseNode2.default("text", { + style: style, + body: new _ParseNode2.default("ordgroup", _body3, this.mode) + }, this.mode); + } else { + return new _ParseNode2.default("font", { + font: style, + body: new _ParseNode2.default("ordgroup", _body3, this.mode) + }, this.mode); + } + } else if (func === "\\color") { + // If we see a styling function, parse out the implicit body + var color = this.parseColorGroup(false); + if (!color) { + throw new _ParseError2.default("\\color not followed by color"); + } + var _body4 = this.parseExpression(true); + return new _ParseNode2.default("color", { + type: "color", + color: color.result.value, + value: _body4 + }, this.mode); + } else if (func === "$") { + if (this.mode === "math") { + throw new _ParseError2.default("$ within math mode"); + } + this.consume(); + var outerMode = this.mode; + this.switchMode("math"); + var _body5 = this.parseExpression(false, "$"); + this.expect("$", true); + this.switchMode(outerMode); + return new _ParseNode2.default("styling", { + style: "text", + value: _body5 + }, "math"); + } else { + // Defer to parseFunction if it's not a function we handle + return this.parseFunction(start); + } + } + + /** + * Parses an entire function, including its base and all of its arguments. + * The base might either have been parsed already, in which case + * it is provided as an argument, or it's the next group in the input. + * + * @param {ParseFuncOrArgument=} baseGroup optional as described above + * @return {?ParseNode} + */ + + }, { + key: "parseFunction", + value: function parseFunction(baseGroup) { + if (!baseGroup) { + baseGroup = this.parseGroup(); + } + + if (baseGroup) { + if (baseGroup.isFunction) { + var func = baseGroup.result; + var funcData = _functions2.default[func]; + if (this.mode === "text" && !funcData.allowedInText) { + throw new _ParseError2.default("Can't use function '" + func + "' in text mode", baseGroup.token); + } else if (this.mode === "math" && funcData.allowedInMath === false) { + throw new _ParseError2.default("Can't use function '" + func + "' in math mode", baseGroup.token); + } + + var args = this.parseArguments(func, funcData); + var token = baseGroup.token; + var result = this.callFunction(func, args, args.pop(), token); + return new _ParseNode2.default(result.type, result, this.mode); + } else { + return baseGroup.result; + } + } else { + return null; + } + } + + /** + * Call a function handler with a suitable context and arguments. + */ + + }, { + key: "callFunction", + value: function callFunction(name, args, positions, token) { + var context = { + funcName: name, + parser: this, + positions: positions, + token: token + }; + return _functions2.default[name].handler(context, args); + } + + /** + * Parses the arguments of a function or environment + * + * @param {string} func "\name" or "\begin{name}" + * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData + * @return the array of arguments, with the list of positions as last element + */ + + }, { + key: "parseArguments", + value: function parseArguments(func, funcData) { + var totalArgs = funcData.numArgs + funcData.numOptionalArgs; + if (totalArgs === 0) { + return [[this.pos]]; + } + + var baseGreediness = funcData.greediness; + var positions = [this.pos]; + var args = []; + + for (var i = 0; i < totalArgs; i++) { + var nextToken = this.nextToken; + var argType = funcData.argTypes && funcData.argTypes[i]; + var arg = void 0; + if (i < funcData.numOptionalArgs) { + if (argType) { + arg = this.parseGroupOfType(argType, true); + } else { + arg = this.parseGroup(true); + } + if (!arg) { + args.push(null); + positions.push(this.pos); + continue; + } + } else { + if (argType) { + arg = this.parseGroupOfType(argType); + } else { + arg = this.parseGroup(); + } + if (!arg) { + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + arg = new ParseFuncOrArgument(this.handleUnsupportedCmd(this.nextToken.text), false); + } else { + throw new _ParseError2.default("Expected group after '" + func + "'", nextToken); + } + } + } + var argNode = void 0; + if (arg.isFunction) { + var argGreediness = _functions2.default[arg.result].greediness; + if (argGreediness > baseGreediness) { + argNode = this.parseFunction(arg); + } else { + throw new _ParseError2.default("Got function '" + arg.result + "' as " + "argument to '" + func + "'", nextToken); + } + } else { + argNode = arg.result; + } + args.push(argNode); + positions.push(this.pos); + } + + args.push(positions); + + return args; + } + + /** + * Parses a group when the mode is changing. + * + * @return {?ParseFuncOrArgument} + */ + + }, { + key: "parseGroupOfType", + value: function parseGroupOfType(innerMode, optional) { + var outerMode = this.mode; + // Handle `original` argTypes + if (innerMode === "original") { + innerMode = outerMode; + } + + if (innerMode === "color") { + return this.parseColorGroup(optional); + } + if (innerMode === "size") { + return this.parseSizeGroup(optional); + } + + this.switchMode(innerMode); + if (innerMode === "text") { + // text mode is special because it should ignore the whitespace before + // it + this.consumeSpaces(); + } + // By the time we get here, innerMode is one of "text" or "math". + // We switch the mode of the parser, recurse, then restore the old mode. + var res = this.parseGroup(optional); + this.switchMode(outerMode); + return res; + } + }, { + key: "consumeSpaces", + value: function consumeSpaces() { + while (this.nextToken.text === " ") { + this.consume(); + } + } + + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information. + * + * @param {string} modeName Used to describe the mode in error messages + * @param {boolean=} optional Whether the group is optional or required + */ + + }, { + key: "parseStringGroup", + value: function parseStringGroup(modeName, optional) { + if (optional && this.nextToken.text !== "[") { + return null; + } + var outerMode = this.mode; + this.mode = "text"; + this.expect(optional ? "[" : "{"); + var str = ""; + var firstToken = this.nextToken; + var lastToken = firstToken; + while (this.nextToken.text !== (optional ? "]" : "}")) { + if (this.nextToken.text === "EOF") { + throw new _ParseError2.default("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); + } + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + this.mode = outerMode; + this.expect(optional ? "]" : "}"); + return firstToken.range(lastToken, str); + } + + /** + * Parses a regex-delimited group: the largest sequence of tokens + * whose concatenated strings match `regex`. Returns the string + * formed by the tokens plus some position information. + * + * @param {RegExp} regex + * @param {string} modeName Used to describe the mode in error messages + */ + + }, { + key: "parseRegexGroup", + value: function parseRegexGroup(regex, modeName) { + var outerMode = this.mode; + this.mode = "text"; + var firstToken = this.nextToken; + var lastToken = firstToken; + var str = ""; + while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) { + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + if (str === "") { + throw new _ParseError2.default("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken); + } + this.mode = outerMode; + return firstToken.range(lastToken, str); + } + + /** + * Parses a color description. + */ + + }, { + key: "parseColorGroup", + value: function parseColorGroup(optional) { + var res = this.parseStringGroup("color", optional); + if (!res) { + return null; + } + var match = /^(#[a-z0-9]+|[a-z]+)$/i.exec(res.text); + if (!match) { + throw new _ParseError2.default("Invalid color: '" + res.text + "'", res); + } + return new ParseFuncOrArgument(new _ParseNode2.default("color", match[0], this.mode), false); + } + + /** + * Parses a size specification, consisting of magnitude and unit. + */ + + }, { + key: "parseSizeGroup", + value: function parseSizeGroup(optional) { + var res = void 0; + if (!optional && this.nextToken.text !== "{") { + res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); + } else { + res = this.parseStringGroup("size", optional); + } + if (!res) { + return null; + } + var match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text); + if (!match) { + throw new _ParseError2.default("Invalid size: '" + res.text + "'", res); + } + var data = { + number: +(match[1] + match[2]), // sign + magnitude, cast to number + unit: match[3] + }; + if (!_units2.default.validUnit(data)) { + throw new _ParseError2.default("Invalid unit: '" + data.unit + "'", res); + } + return new ParseFuncOrArgument(new _ParseNode2.default("size", data, this.mode), false); + } + + /** + * If the argument is false or absent, this parses an ordinary group, + * which is either a single nucleus (like "x") or an expression + * in braces (like "{x+y}"). + * If the argument is true, it parses either a bracket-delimited expression + * (like "[x+y]") or returns null to indicate the absence of a + * bracket-enclosed group. + * + * @param {boolean=} optional Whether the group is optional or required + * @return {?ParseFuncOrArgument} + */ + + }, { + key: "parseGroup", + value: function parseGroup(optional) { + var firstToken = this.nextToken; + // Try to parse an open brace + if (this.nextToken.text === (optional ? "[" : "{")) { + // If we get a brace, parse an expression + this.consume(); + var expression = this.parseExpression(false, optional ? "]" : null); + var lastToken = this.nextToken; + // Make sure we get a close brace + this.expect(optional ? "]" : "}"); + if (this.mode === "text") { + this.formLigatures(expression); + } + return new ParseFuncOrArgument(new _ParseNode2.default("ordgroup", expression, this.mode, firstToken, lastToken), false); + } else { + // Otherwise, just return a nucleus, or nothing for an optional group + return optional ? null : this.parseSymbol(); + } + } + + /** + * Form ligature-like combinations of characters for text mode. + * This includes inputs like "--", "---", "``" and "''". + * The result will simply replace multiple textord nodes with a single + * character in each value by a single textord node having multiple + * characters in its value. The representation is still ASCII source. + * + * @param {Array.} group the nodes of this group, + * list will be moified in place + */ + + }, { + key: "formLigatures", + value: function formLigatures(group) { + var n = group.length - 1; + for (var i = 0; i < n; ++i) { + var a = group[i]; + var v = a.value; + if (v === "-" && group[i + 1].value === "-") { + if (i + 1 < n && group[i + 2].value === "-") { + group.splice(i, 3, new _ParseNode2.default("textord", "---", "text", a, group[i + 2])); + n -= 2; + } else { + group.splice(i, 2, new _ParseNode2.default("textord", "--", "text", a, group[i + 1])); + n -= 1; + } + } + if ((v === "'" || v === "`") && group[i + 1].value === v) { + group.splice(i, 2, new _ParseNode2.default("textord", v + v, "text", a, group[i + 1])); + n -= 1; + } + } + } + + /** + * Parse a single symbol out of the string. Here, we handle both the functions + * we have defined, as well as the single character symbols + * + * @return {?ParseFuncOrArgument} + */ + + }, { + key: "parseSymbol", + value: function parseSymbol() { + var nucleus = this.nextToken; + + if (_functions2.default[nucleus.text]) { + this.consume(); + // If there exists a function with this name, we return the function and + // say that it is a function. + return new ParseFuncOrArgument(nucleus.text, true, nucleus); + } else if (_symbols2.default[this.mode][nucleus.text]) { + this.consume(); + // Otherwise if this is a no-argument function, find the type it + // corresponds to in the symbols map + return new ParseFuncOrArgument(new _ParseNode2.default(_symbols2.default[this.mode][nucleus.text].group, nucleus.text, this.mode, nucleus), false, nucleus); + } else if (this.mode === "text" && _unicodeRegexes.cjkRegex.test(nucleus.text)) { + this.consume(); + return new ParseFuncOrArgument(new _ParseNode2.default("textord", nucleus.text, this.mode, nucleus), false, nucleus); + } else if (nucleus.text === "$") { + return new ParseFuncOrArgument(nucleus.text, false, nucleus); + } else { + return null; + } + } + }]); + return Parser; +}(); + +Parser.endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"]; +Parser.SUPSUB_GREEDINESS = 1; +Parser.sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; +Parser.styleFuncs = ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"]; +Parser.oldFontFuncs = { + "\\rm": "mathrm", + "\\sf": "mathsf", + "\\tt": "mathtt", + "\\bf": "mathbf", + "\\it": "mathit" +}; + + +Parser.prototype.ParseNode = _ParseNode2.default; + +module.exports = Parser; + +},{"./MacroExpander":27,"./ParseError":29,"./ParseNode":30,"./environments":40,"./functions":43,"./symbols":48,"./unicodeRegexes":49,"./units":50,"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],32:[function(require,module,exports){ +"use strict"; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The main Settings object + * + * The current options stored are: + * - displayMode: Whether the expression should be typeset as inline math + * (false, the default), meaning that the math starts in + * \textstyle and is placed in an inline-block); or as display + * math (true), meaning that the math starts in \displaystyle + * and is placed in a block with vertical margin. + */ +var Settings = function Settings(options) { + (0, _classCallCheck3.default)(this, Settings); + + // allow null options + options = options || {}; + this.displayMode = _utils2.default.deflt(options.displayMode, false); + this.throwOnError = _utils2.default.deflt(options.throwOnError, true); + this.errorColor = _utils2.default.deflt(options.errorColor, "#cc0000"); + this.macros = options.macros || {}; + this.colorIsTextColor = _utils2.default.deflt(options.colorIsTextColor, false); +}; /** + * This is a module for storing settings passed into KaTeX. It correctly handles + * default settings. + */ + +module.exports = Settings; + +},{"./utils":51,"babel-runtime/helpers/classCallCheck":4}],33:[function(require,module,exports){ +"use strict"; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This file contains information and classes for the various kinds of styles + * used in TeX. It provides a generic `Style` class, which holds information + * about a specific style. It then provides instances of all the different kinds + * of styles possible, and provides functions to move between them and get + * information about them. + */ + +/** + * The main style class. Contains a unique id for the style, a size (which is + * the same for cramped and uncramped version of a style), and a cramped flag. + */ +var Style = function () { + function Style(id, size, cramped) { + (0, _classCallCheck3.default)(this, Style); + + this.id = id; + this.size = size; + this.cramped = cramped; + } + + /** + * Get the style of a superscript given a base in the current style. + */ + + + (0, _createClass3.default)(Style, [{ + key: "sup", + value: function sup() { + return styles[_sup[this.id]]; + } + + /** + * Get the style of a subscript given a base in the current style. + */ + + }, { + key: "sub", + value: function sub() { + return styles[_sub[this.id]]; + } + + /** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ + + }, { + key: "fracNum", + value: function fracNum() { + return styles[_fracNum[this.id]]; + } + + /** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ + + }, { + key: "fracDen", + value: function fracDen() { + return styles[_fracDen[this.id]]; + } + + /** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ + + }, { + key: "cramp", + value: function cramp() { + return styles[_cramp[this.id]]; + } + + /** + * Get a text or display version of this style. + */ + + }, { + key: "text", + value: function text() { + return styles[_text[this.id]]; + } + + /** + * Return if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ + + }, { + key: "isTight", + value: function isTight() { + return this.size >= 2; + } + }]); + return Style; +}(); + +// IDs of the different styles + + +var D = 0; +var Dc = 1; +var T = 2; +var Tc = 3; +var S = 4; +var Sc = 5; +var SS = 6; +var SSc = 7; + +// Instances of the different styles +var styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; + +// Lookup tables for switching from one style to another +var _sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; +var _sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; +var _fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; +var _fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; +var _cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; +var _text = [D, Dc, T, Tc, T, Tc, T, Tc]; + +// We only export some of the styles. Also, we don't export the `Style` class so +// no more styles can be generated. +module.exports = { + DISPLAY: styles[D], + TEXT: styles[T], + SCRIPT: styles[S], + SCRIPTSCRIPT: styles[SS] +}; + +},{"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],34:[function(require,module,exports){ +"use strict"; + +var _domTree = require("./domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _fontMetrics = require("./fontMetrics"); + +var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// The following have to be loaded from Main-Italic font, using class mainit +/* eslint no-console:0 */ +/** + * This module contains general functions that can be used for building + * different kinds of domTree nodes in a consistent manner. + */ + +var mainitLetters = ["\\imath", // dotless i +"\\jmath", // dotless j +"\\pounds"]; + +/** + * Looks up the given symbol in fontMetrics, after applying any symbol + * replacements defined in symbol.js + */ +var lookupSymbol = function lookupSymbol(value, fontFamily, mode) { + // Replace the value with its replaced value from symbol.js + if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { + value = _symbols2.default[mode][value].replace; + } + return { + value: value, + metrics: _fontMetrics2.default.getCharacterMetrics(value, fontFamily) + }; +}; + +/** + * Makes a symbolNode after translation via the list of symbols in symbols.js. + * Correctly pulls out metrics for the character, and optionally takes a list of + * classes to be attached to the node. + * + * TODO: make argument order closer to makeSpan + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ +var makeSymbol = function makeSymbol(value, fontFamily, mode, options, classes) { + var lookup = lookupSymbol(value, fontFamily, mode); + var metrics = lookup.metrics; + value = lookup.value; + + var symbolNode = void 0; + if (metrics) { + var italic = metrics.italic; + if (mode === "text") { + italic = 0; + } + symbolNode = new _domTree2.default.symbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, classes); + } else { + // TODO(emily): Figure out a good way to only print this in development + typeof console !== "undefined" && console.warn("No character metrics for '" + value + "' in style '" + fontFamily + "'"); + symbolNode = new _domTree2.default.symbolNode(value, 0, 0, 0, 0, classes); + } + + if (options) { + symbolNode.maxFontSize = options.sizeMultiplier; + if (options.style.isTight()) { + symbolNode.classes.push("mtight"); + } + if (options.getColor()) { + symbolNode.style.color = options.getColor(); + } + } + + return symbolNode; +}; + +/** + * Makes a symbol in Main-Regular or AMS-Regular. + * Used for rel, bin, open, close, inner, and punct. + */ +var mathsym = function mathsym(value, mode, options, classes) { + // Decide what font to render the symbol in by its entry in the symbols + // table. + // Have a special case for when the value = \ because the \ is used as a + // textord in unsupported command errors but cannot be parsed as a regular + // text ordinal and is therefore not present as a symbol in the symbols + // table for text + if (value === "\\" || _symbols2.default[mode][value].font === "main") { + return makeSymbol(value, "Main-Regular", mode, options, classes); + } else { + return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); + } +}; + +/** + * Makes a symbol in the default font for mathords and textords. + */ +var mathDefault = function mathDefault(value, mode, options, classes, type) { + if (type === "mathord") { + var fontLookup = mathit(value, mode, options, classes); + return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass])); + } else if (type === "textord") { + var font = _symbols2.default[mode][value] && _symbols2.default[mode][value].font; + if (font === "ams") { + return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); + } else { + // if (font === "main") { + return makeSymbol(value, "Main-Regular", mode, options, classes.concat(["mathrm"])); + } + } else { + throw new Error("unexpected type: " + type + " in mathDefault"); + } +}; + +/** + * Determines which of the two font names (Main-Italic and Math-Italic) and + * corresponding style tags (mainit or mathit) to use for font "mathit", + * depending on the symbol. Use this function instead of fontMap for font + * "mathit". + */ +var mathit = function mathit(value, mode, options, classes) { + if (/[0-9]/.test(value.charAt(0)) || + // glyphs for \imath and \jmath do not exist in Math-Italic so we + // need to use Main-Italic instead + _utils2.default.contains(mainitLetters, value)) { + return { + fontName: "Main-Italic", + fontClass: "mainit" + }; + } else { + return { + fontName: "Math-Italic", + fontClass: "mathit" + }; + } +}; + +/** + * Makes either a mathord or textord in the correct font and color. + */ +var makeOrd = function makeOrd(group, options, type) { + var mode = group.mode; + var value = group.value; + + var classes = ["mord"]; + + var font = options.font; + if (font) { + var fontLookup = void 0; + if (font === "mathit" || _utils2.default.contains(mainitLetters, value)) { + fontLookup = mathit(value, mode, options, classes); + } else { + fontLookup = fontMap[font]; + } + if (lookupSymbol(value, fontLookup.fontName, mode).metrics) { + return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass || font])); + } else { + return mathDefault(value, mode, options, classes, type); + } + } else { + return mathDefault(value, mode, options, classes, type); + } +}; + +/** + * Calculate the height, depth, and maxFontSize of an element based on its + * children. + */ +var sizeElementFromChildren = function sizeElementFromChildren(elem) { + var height = 0; + var depth = 0; + var maxFontSize = 0; + + if (elem.children) { + for (var i = 0; i < elem.children.length; i++) { + if (elem.children[i].height > height) { + height = elem.children[i].height; + } + if (elem.children[i].depth > depth) { + depth = elem.children[i].depth; + } + if (elem.children[i].maxFontSize > maxFontSize) { + maxFontSize = elem.children[i].maxFontSize; + } + } + } + + elem.height = height; + elem.depth = depth; + elem.maxFontSize = maxFontSize; +}; + +/** + * Makes a span with the given list of classes, list of children, and options. + * + * TODO: Ensure that `options` is always provided (currently some call sites + * don't pass it). + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ +var makeSpan = function makeSpan(classes, children, options) { + var span = new _domTree2.default.span(classes, children, options); + + sizeElementFromChildren(span); + + return span; +}; + +/** + * Prepends the given children to the given span, updating height, depth, and + * maxFontSize. + */ +var prependChildren = function prependChildren(span, children) { + span.children = children.concat(span.children); + + sizeElementFromChildren(span); +}; + +/** + * Makes a document fragment with the given list of children. + */ +var makeFragment = function makeFragment(children) { + var fragment = new _domTree2.default.documentFragment(children); + + sizeElementFromChildren(fragment); + + return fragment; +}; + +/** + * Makes a vertical list by stacking elements and kerns on top of each other. + * Allows for many different ways of specifying the positioning method. + * + * Arguments: + * - children: A list of child or kern nodes to be stacked on top of each other + * (i.e. the first element will be at the bottom, and the last at + * the top). Element nodes are specified as + * {type: "elem", elem: node} + * while kern nodes are specified as + * {type: "kern", size: size} + * - positionType: The method by which the vlist should be positioned. Valid + * values are: + * - "individualShift": The children list only contains elem + * nodes, and each node contains an extra + * "shift" value of how much it should be + * shifted (note that shifting is always + * moving downwards). positionData is + * ignored. + * - "top": The positionData specifies the topmost point of + * the vlist (note this is expected to be a height, + * so positive values move up) + * - "bottom": The positionData specifies the bottommost point + * of the vlist (note this is expected to be a + * depth, so positive values move down + * - "shift": The vlist will be positioned such that its + * baseline is positionData away from the baseline + * of the first child. Positive values move + * downwards. + * - "firstBaseline": The vlist will be positioned such that + * its baseline is aligned with the + * baseline of the first child. + * positionData is ignored. (this is + * equivalent to "shift" with + * positionData=0) + * - positionData: Data used in different ways depending on positionType + * - options: An Options object + * + */ +var makeVList = function makeVList(children, positionType, positionData, options) { + var depth = void 0; + var currPos = void 0; + var i = void 0; + if (positionType === "individualShift") { + var oldChildren = children; + children = [oldChildren[0]]; + + // Add in kerns to the list of children to get each element to be + // shifted to the correct specified shift + depth = -oldChildren[0].shift - oldChildren[0].elem.depth; + currPos = depth; + for (i = 1; i < oldChildren.length; i++) { + var diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth; + var size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth); + + currPos = currPos + diff; + + children.push({ type: "kern", size: size }); + children.push(oldChildren[i]); + } + } else if (positionType === "top") { + // We always start at the bottom, so calculate the bottom by adding up + // all the sizes + var bottom = positionData; + for (i = 0; i < children.length; i++) { + if (children[i].type === "kern") { + bottom -= children[i].size; + } else { + bottom -= children[i].elem.height + children[i].elem.depth; + } + } + depth = bottom; + } else if (positionType === "bottom") { + depth = -positionData; + } else if (positionType === "shift") { + depth = -children[0].elem.depth - positionData; + } else if (positionType === "firstBaseline") { + depth = -children[0].elem.depth; + } else { + depth = 0; + } + + // Create a strut that is taller than any list item. The strut is added to + // each item, where it will determine the item's baseline. Since it has + // `overflow:hidden`, the strut's top edge will sit on the item's line box's + // top edge and the strut's bottom edge will sit on the item's baseline, + // with no additional line-height spacing. This allows the item baseline to + // be positioned precisely without worrying about font ascent and + // line-height. + var pstrutSize = 0; + for (i = 0; i < children.length; i++) { + if (children[i].type === "elem") { + var child = children[i].elem; + pstrutSize = Math.max(pstrutSize, child.maxFontSize, child.height); + } + } + pstrutSize += 2; + var pstrut = makeSpan(["pstrut"], []); + pstrut.style.height = pstrutSize + "em"; + + // Create a new list of actual children at the correct offsets + var realChildren = []; + var minPos = depth; + var maxPos = depth; + currPos = depth; + for (i = 0; i < children.length; i++) { + if (children[i].type === "kern") { + currPos += children[i].size; + } else { + var _child = children[i].elem; + + var childWrap = makeSpan([], [pstrut, _child]); + childWrap.style.top = -pstrutSize - currPos - _child.depth + "em"; + if (children[i].marginLeft) { + childWrap.style.marginLeft = children[i].marginLeft; + } + if (children[i].marginRight) { + childWrap.style.marginRight = children[i].marginRight; + } + + realChildren.push(childWrap); + currPos += _child.height + _child.depth; + } + minPos = Math.min(minPos, currPos); + maxPos = Math.max(maxPos, currPos); + } + + // The vlist contents go in a table-cell with `vertical-align:bottom`. + // This cell's bottom edge will determine the containing table's baseline + // without overly expanding the containing line-box. + var vlist = makeSpan(["vlist"], realChildren); + vlist.style.height = maxPos + "em"; + + // A second row is used if necessary to represent the vlist's depth. + var rows = void 0; + if (minPos < 0) { + var depthStrut = makeSpan(["vlist"], []); + depthStrut.style.height = -minPos + "em"; + + // Safari wants the first row to have inline content; otherwise it + // puts the bottom of the *second* row on the baseline. + var topStrut = makeSpan(["vlist-s"], [new _domTree2.default.symbolNode("\u200B")]); + + rows = [makeSpan(["vlist-r"], [vlist, topStrut]), makeSpan(["vlist-r"], [depthStrut])]; + } else { + rows = [makeSpan(["vlist-r"], [vlist])]; + } + + var vtable = makeSpan(["vlist-t"], rows); + if (rows.length === 2) { + vtable.classes.push("vlist-t2"); + } + vtable.height = maxPos; + vtable.depth = -minPos; + return vtable; +}; + +// A map of spacing functions to their attributes, like size and corresponding +// CSS class +var spacingFunctions = { + "\\qquad": { + size: "2em", + className: "qquad" + }, + "\\quad": { + size: "1em", + className: "quad" + }, + "\\enspace": { + size: "0.5em", + className: "enspace" + }, + "\\;": { + size: "0.277778em", + className: "thickspace" + }, + "\\:": { + size: "0.22222em", + className: "mediumspace" + }, + "\\,": { + size: "0.16667em", + className: "thinspace" + }, + "\\!": { + size: "-0.16667em", + className: "negativethinspace" + } +}; + +/** + * Maps TeX font commands to objects containing: + * - variant: string used for "mathvariant" attribute in buildMathML.js + * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics + */ +// A map between tex font commands an MathML mathvariant attribute values +var fontMap = { + // styles + "mathbf": { + variant: "bold", + fontName: "Main-Bold" + }, + "mathrm": { + variant: "normal", + fontName: "Main-Regular" + }, + "textit": { + variant: "italic", + fontName: "Main-Italic" + }, + + // "mathit" is missing because it requires the use of two fonts: Main-Italic + // and Math-Italic. This is handled by a special case in makeOrd which ends + // up calling mathit. + + // families + "mathbb": { + variant: "double-struck", + fontName: "AMS-Regular" + }, + "mathcal": { + variant: "script", + fontName: "Caligraphic-Regular" + }, + "mathfrak": { + variant: "fraktur", + fontName: "Fraktur-Regular" + }, + "mathscr": { + variant: "script", + fontName: "Script-Regular" + }, + "mathsf": { + variant: "sans-serif", + fontName: "SansSerif-Regular" + }, + "mathtt": { + variant: "monospace", + fontName: "Typewriter-Regular" + } +}; + +module.exports = { + fontMap: fontMap, + makeSymbol: makeSymbol, + mathsym: mathsym, + makeSpan: makeSpan, + makeFragment: makeFragment, + makeVList: makeVList, + makeOrd: makeOrd, + prependChildren: prependChildren, + spacingFunctions: spacingFunctions +}; + +},{"./domTree":39,"./fontMetrics":41,"./symbols":48,"./utils":51}],35:[function(require,module,exports){ +"use strict"; + +var _stringify = require("babel-runtime/core-js/json/stringify"); + +var _stringify2 = _interopRequireDefault(_stringify); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _delimiter = require("./delimiter"); + +var _delimiter2 = _interopRequireDefault(_delimiter); + +var _domTree = require("./domTree"); + +var _domTree2 = _interopRequireDefault(_domTree); + +var _units = require("./units"); + +var _units2 = _interopRequireDefault(_units); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _stretchy = require("./stretchy"); + +var _stretchy2 = _interopRequireDefault(_stretchy); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint no-console:0 */ +/** + * This file does the main work of building a domTree structure from a parse + * tree. The entry point is the `buildHTML` function, which takes a parse tree. + * Then, the buildExpression, buildGroup, and various groupTypes functions are + * called, to produce a final HTML tree. + */ + +var isSpace = function isSpace(node) { + return node instanceof _domTree2.default.span && node.classes[0] === "mspace"; +}; + +// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`) +// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6, +// and the text before Rule 19. +var isBin = function isBin(node) { + return node && node.classes[0] === "mbin"; +}; + +var isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) { + // TODO: This code assumes that a node's math class is the first element + // of its `classes` array. A later cleanup should ensure this, for + // instance by changing the signature of `makeSpan`. + if (node) { + return _utils2.default.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], node.classes[0]); + } else { + return isRealGroup; + } +}; + +var isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) { + if (node) { + return _utils2.default.contains(["mrel", "mclose", "mpunct"], node.classes[0]); + } else { + return isRealGroup; + } +}; + +/** + * Splice out any spaces from `children` starting at position `i`, and return + * the spliced-out array. Returns null if `children[i]` does not exist or is not + * a space. + */ +var spliceSpaces = function spliceSpaces(children, i) { + var j = i; + while (j < children.length && isSpace(children[j])) { + j++; + } + if (j === i) { + return null; + } else { + return children.splice(i, j - i); + } +}; + +/** + * Take a list of nodes, build them in order, and return a list of the built + * nodes. documentFragments are flattened into their contents, so the + * returned list contains no fragments. `isRealGroup` is true if `expression` + * is a real group (no atoms will be added on either side), as opposed to + * a partial group (e.g. one created by \color). + */ +var buildExpression = function buildExpression(expression, options, isRealGroup) { + // Parse expressions into `groups`. + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + var output = buildGroup(group, options); + if (output instanceof _domTree2.default.documentFragment) { + Array.prototype.push.apply(groups, output.children); + } else { + groups.push(output); + } + } + // At this point `groups` consists entirely of `symbolNode`s and `span`s. + + // Explicit spaces (e.g., \;, \,) should be ignored with respect to atom + // spacing (e.g., "add thick space between mord and mrel"). Since CSS + // adjacency rules implement atom spacing, spaces should be invisible to + // CSS. So we splice them out of `groups` and into the atoms themselves. + for (var _i = 0; _i < groups.length; _i++) { + var spaces = spliceSpaces(groups, _i); + if (spaces) { + // Splicing of spaces may have removed all remaining groups. + if (_i < groups.length) { + // If there is a following group, move space within it. + if (groups[_i] instanceof _domTree2.default.symbolNode) { + groups[_i] = (0, _buildCommon.makeSpan)([].concat(groups[_i].classes), [groups[_i]]); + } + _buildCommon2.default.prependChildren(groups[_i], spaces); + } else { + // Otherwise, put any spaces back at the end of the groups. + Array.prototype.push.apply(groups, spaces); + break; + } + } + } + + // Binary operators change to ordinary symbols in some contexts. + for (var _i2 = 0; _i2 < groups.length; _i2++) { + if (isBin(groups[_i2]) && (isBinLeftCanceller(groups[_i2 - 1], isRealGroup) || isBinRightCanceller(groups[_i2 + 1], isRealGroup))) { + groups[_i2].classes[0] = "mord"; + } + } + + // Process \\not commands within the group. + // TODO(kevinb): Handle multiple \\not commands in a row. + // TODO(kevinb): Handle \\not{abc} correctly. The \\not should appear over + // the 'a' instead of the 'c'. + for (var _i3 = 0; _i3 < groups.length; _i3++) { + if (groups[_i3].value === "\u0338" && _i3 + 1 < groups.length) { + var children = groups.slice(_i3, _i3 + 2); + + children[0].classes = ["mainrm"]; + // \u0338 is a combining glyph so we could reorder the children so + // that it comes after the other glyph. This works correctly on + // most browsers except for Safari. Instead we absolutely position + // the glyph and set its right side to match that of the other + // glyph which is visually equivalent. + children[0].style.position = "absolute"; + children[0].style.right = "0"; + + // Copy the classes from the second glyph to the new container. + // This is so it behaves the same as though there was no \\not. + var classes = groups[_i3 + 1].classes; + var container = (0, _buildCommon.makeSpan)(classes, children); + + // LaTeX adds a space between ords separated by a \\not. + if (classes.indexOf("mord") !== -1) { + // \glue(\thickmuskip) 2.77771 plus 2.77771 + container.style.paddingLeft = "0.277771em"; + } + + // Ensure that the \u0338 is positioned relative to the container. + container.style.position = "relative"; + groups.splice(_i3, 2, container); + } + } + + return groups; +}; + +// Return math atom class (mclass) of a domTree. +var getTypeOfDomTree = function getTypeOfDomTree(node) { + if (node instanceof _domTree2.default.documentFragment) { + if (node.children.length) { + return getTypeOfDomTree(node.children[node.children.length - 1]); + } + } else { + if (_utils2.default.contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose", "mpunct", "minner"], node.classes[0])) { + return node.classes[0]; + } + } + return null; +}; + +/** + * Sometimes, groups perform special rules when they have superscripts or + * subscripts attached to them. This function lets the `supsub` group know that + * its inner element should handle the superscripts and subscripts instead of + * handling them itself. + */ +var shouldHandleSupSub = function shouldHandleSupSub(group, options) { + if (!group.value.base) { + return false; + } else { + var base = group.value.base; + if (base.type === "op") { + // Operators handle supsubs differently when they have limits + // (e.g. `\displaystyle\sum_2^3`) + return base.value.limits && (options.style.size === _Style2.default.DISPLAY.size || base.value.alwaysHandleSupSub); + } else if (base.type === "accent") { + return isCharacterBox(base.value.base); + } else if (base.type === "horizBrace") { + var isSup = group.value.sub ? false : true; + return isSup === base.value.isOver; + } else { + return null; + } + } +}; + +/** + * Sometimes we want to pull out the innermost element of a group. In most + * cases, this will just be the group itself, but when ordgroups and colors have + * a single element, we want to pull that out. + */ +var getBaseElem = function getBaseElem(group) { + if (!group) { + return false; + } else if (group.type === "ordgroup") { + if (group.value.length === 1) { + return getBaseElem(group.value[0]); + } else { + return group; + } + } else if (group.type === "color") { + if (group.value.value.length === 1) { + return getBaseElem(group.value.value[0]); + } else { + return group; + } + } else if (group.type === "font") { + return getBaseElem(group.value.body); + } else { + return group; + } +}; + +/** + * TeXbook algorithms often reference "character boxes", which are simply groups + * with a single character in them. To decide if something is a character box, + * we find its innermost group, and see if it is a single character. + */ +var isCharacterBox = function isCharacterBox(group) { + var baseElem = getBaseElem(group); + + // These are all they types of groups which hold single characters + return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "bin" || baseElem.type === "rel" || baseElem.type === "inner" || baseElem.type === "open" || baseElem.type === "close" || baseElem.type === "punct"; +}; + +var makeNullDelimiter = function makeNullDelimiter(options, classes) { + var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses()); + return (0, _buildCommon.makeSpan)(classes.concat(moreClasses)); +}; + +/** + * This is a map of group types to the function used to handle that type. + * Simpler types come at the beginning, while complicated types come afterwards. + */ +var groupTypes = {}; + +groupTypes.mathord = function (group, options) { + return _buildCommon2.default.makeOrd(group, options, "mathord"); +}; + +groupTypes.textord = function (group, options) { + return _buildCommon2.default.makeOrd(group, options, "textord"); +}; + +groupTypes.bin = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mbin"]); +}; + +groupTypes.rel = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mrel"]); +}; + +groupTypes.open = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mopen"]); +}; + +groupTypes.close = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mclose"]); +}; + +groupTypes.inner = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["minner"]); +}; + +groupTypes.punct = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mpunct"]); +}; + +groupTypes.ordgroup = function (group, options) { + return (0, _buildCommon.makeSpan)(["mord"], buildExpression(group.value, options, true), options); +}; + +groupTypes.text = function (group, options) { + var newOptions = options.withFont(group.value.style); + var inner = buildExpression(group.value.body, newOptions, true); + for (var i = 0; i < inner.length - 1; i++) { + if (inner[i].tryCombine(inner[i + 1])) { + inner.splice(i + 1, 1); + i--; + } + } + return (0, _buildCommon.makeSpan)(["mord", "text"], inner, newOptions); +}; + +groupTypes.color = function (group, options) { + var elements = buildExpression(group.value.value, options.withColor(group.value.color), false); + + // \color isn't supposed to affect the type of the elements it contains. + // To accomplish this, we wrap the results in a fragment, so the inner + // elements will be able to directly interact with their neighbors. For + // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3` + return new _buildCommon2.default.makeFragment(elements); +}; + +groupTypes.supsub = function (group, options) { + // Superscript and subscripts are handled in the TeXbook on page + // 445-446, rules 18(a-f). + + // Here is where we defer to the inner group if it should handle + // superscripts and subscripts itself. + if (shouldHandleSupSub(group, options)) { + return groupTypes[group.value.base.type](group, options); + } + + var base = buildGroup(group.value.base, options); + var supm = void 0; + var subm = void 0; + + var metrics = options.fontMetrics(); + var newOptions = void 0; + + // Rule 18a + var supShift = 0; + var subShift = 0; + + if (group.value.sup) { + newOptions = options.havingStyle(options.style.sup()); + supm = buildGroup(group.value.sup, newOptions, options); + if (!isCharacterBox(group.value.base)) { + supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + if (group.value.sub) { + newOptions = options.havingStyle(options.style.sub()); + subm = buildGroup(group.value.sub, newOptions, options); + if (!isCharacterBox(group.value.base)) { + subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + // Rule 18c + var minSupShift = void 0; + if (options.style === _Style2.default.DISPLAY) { + minSupShift = metrics.sup1; + } else if (options.style.cramped) { + minSupShift = metrics.sup3; + } else { + minSupShift = metrics.sup2; + } + + // scriptspace is a font-size-independent size, so scale it + // appropriately + var multiplier = options.sizeMultiplier; + var scriptspace = 0.5 / metrics.ptPerEm / multiplier + "em"; + + var supsub = void 0; + if (!group.value.sup) { + // Rule 18b + subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); + + var vlistElem = [{ type: "elem", elem: subm, marginRight: scriptspace }]; + // Subscripts shouldn't be shifted by the base's italic correction. + // Account for that by shifting the subscript back the appropriate + // amount. Note we only do this when the base is a single symbol. + if (base instanceof _domTree2.default.symbolNode) { + vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = _buildCommon2.default.makeVList(vlistElem, "shift", subShift, options); + } else if (!group.value.sub) { + // Rule 18c, d + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + + supsub = _buildCommon2.default.makeVList([{ type: "elem", elem: supm, marginRight: scriptspace }], "shift", -supShift, options); + } else { + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + subShift = Math.max(subShift, metrics.sub2); + + var ruleWidth = metrics.defaultRuleThickness; + + // Rule 18e + if (supShift - supm.depth - (subm.height - subShift) < 4 * ruleWidth) { + subShift = 4 * ruleWidth - (supShift - supm.depth) + subm.height; + var psi = 0.8 * metrics.xHeight - (supShift - supm.depth); + if (psi > 0) { + supShift += psi; + subShift -= psi; + } + } + + var _vlistElem = [{ type: "elem", elem: subm, shift: subShift, marginRight: scriptspace }, { type: "elem", elem: supm, shift: -supShift, marginRight: scriptspace }]; + // See comment above about subscripts not being shifted + if (base instanceof _domTree2.default.symbolNode) { + _vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = _buildCommon2.default.makeVList(_vlistElem, "individualShift", null, options); + } + + // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align + var mclass = getTypeOfDomTree(base) || "mord"; + return (0, _buildCommon.makeSpan)([mclass], [base, (0, _buildCommon.makeSpan)(["msupsub"], [supsub])], options); +}; + +groupTypes.genfrac = function (group, options) { + // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e). + // Figure out what style this fraction should be in based on the + // function used + var style = options.style; + if (group.value.size === "display") { + style = _Style2.default.DISPLAY; + } else if (group.value.size === "text") { + style = _Style2.default.TEXT; + } + + var nstyle = style.fracNum(); + var dstyle = style.fracDen(); + var newOptions = void 0; + + newOptions = options.havingStyle(nstyle); + var numerm = buildGroup(group.value.numer, newOptions, options); + + newOptions = options.havingStyle(dstyle); + var denomm = buildGroup(group.value.denom, newOptions, options); + + var rule = void 0; + var ruleWidth = void 0; + var ruleSpacing = void 0; + if (group.value.hasBarLine) { + rule = makeLineSpan("frac-line", options); + ruleWidth = rule.height; + ruleSpacing = rule.height; + } else { + rule = null; + ruleWidth = 0; + ruleSpacing = options.fontMetrics().defaultRuleThickness; + } + + // Rule 15b + var numShift = void 0; + var clearance = void 0; + var denomShift = void 0; + if (style.size === _Style2.default.DISPLAY.size) { + numShift = options.fontMetrics().num1; + if (ruleWidth > 0) { + clearance = 3 * ruleSpacing; + } else { + clearance = 7 * ruleSpacing; + } + denomShift = options.fontMetrics().denom1; + } else { + if (ruleWidth > 0) { + numShift = options.fontMetrics().num2; + clearance = ruleSpacing; + } else { + numShift = options.fontMetrics().num3; + clearance = 3 * ruleSpacing; + } + denomShift = options.fontMetrics().denom2; + } + + var frac = void 0; + if (ruleWidth === 0) { + // Rule 15c + var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift); + if (candidateClearance < clearance) { + numShift += 0.5 * (clearance - candidateClearance); + denomShift += 0.5 * (clearance - candidateClearance); + } + + frac = _buildCommon2.default.makeVList([{ type: "elem", elem: denomm, shift: denomShift }, { type: "elem", elem: numerm, shift: -numShift }], "individualShift", null, options); + } else { + // Rule 15d + var axisHeight = options.fontMetrics().axisHeight; + + if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) { + numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth)); + } + + if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) { + denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift)); + } + + var midShift = -(axisHeight - 0.5 * ruleWidth); + + frac = _buildCommon2.default.makeVList([{ type: "elem", elem: denomm, shift: denomShift }, { type: "elem", elem: rule, shift: midShift }, { type: "elem", elem: numerm, shift: -numShift }], "individualShift", null, options); + } + + // Since we manually change the style sometimes (with \dfrac or \tfrac), + // account for the possible size change here. + newOptions = options.havingStyle(style); + frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier; + frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier; + + // Rule 15e + var delimSize = void 0; + if (style.size === _Style2.default.DISPLAY.size) { + delimSize = options.fontMetrics().delim1; + } else { + delimSize = options.fontMetrics().delim2; + } + + var leftDelim = void 0; + var rightDelim = void 0; + if (group.value.leftDelim == null) { + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + leftDelim = _delimiter2.default.customSizedDelim(group.value.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]); + } + if (group.value.rightDelim == null) { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = _delimiter2.default.customSizedDelim(group.value.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]); + } + + return (0, _buildCommon.makeSpan)(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, (0, _buildCommon.makeSpan)(["mfrac"], [frac]), rightDelim], options); +}; + +groupTypes.array = function (group, options) { + var r = void 0; + var c = void 0; + var nr = group.value.body.length; + var nc = 0; + var body = new Array(nr); + + // Horizontal spacing + var pt = 1 / options.fontMetrics().ptPerEm; + var arraycolsep = 5 * pt; // \arraycolsep in article.cls + + // Vertical spacing + var baselineskip = 12 * pt; // see size10.clo + // Default \jot from ltmath.dtx + // TODO(edemaine): allow overriding \jot via \setlength (#687) + var jot = 3 * pt; + // Default \arraystretch from lttab.dtx + // TODO(gagern): may get redefined once we have user-defined macros + var arraystretch = _utils2.default.deflt(group.value.arraystretch, 1); + var arrayskip = arraystretch * baselineskip; + var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and + var arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx + + var totalHeight = 0; + for (r = 0; r < group.value.body.length; ++r) { + var inrow = group.value.body[r]; + var height = arstrutHeight; // \@array adds an \@arstrut + var depth = arstrutDepth; // to each tow (via the template) + + if (nc < inrow.length) { + nc = inrow.length; + } + + var outrow = new Array(inrow.length); + for (c = 0; c < inrow.length; ++c) { + var elt = buildGroup(inrow[c], options); + if (depth < elt.depth) { + depth = elt.depth; + } + if (height < elt.height) { + height = elt.height; + } + outrow[c] = elt; + } + + var gap = 0; + if (group.value.rowGaps[r]) { + gap = _units2.default.calculateSize(group.value.rowGaps[r].value, options); + if (gap > 0) { + // \@argarraycr + gap += arstrutDepth; + if (depth < gap) { + depth = gap; // \@xargarraycr + } + gap = 0; + } + } + // In AMS multiline environments such as aligned and gathered, rows + // correspond to lines that have additional \jot added to the + // \baselineskip via \openup. + if (group.value.addJot) { + depth += jot; + } + + outrow.height = height; + outrow.depth = depth; + totalHeight += height; + outrow.pos = totalHeight; + totalHeight += depth + gap; // \@yargarraycr + body[r] = outrow; + } + + var offset = totalHeight / 2 + options.fontMetrics().axisHeight; + var colDescriptions = group.value.cols || []; + var cols = []; + var colSep = void 0; + var colDescrNum = void 0; + for (c = 0, colDescrNum = 0; + // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) { + + var colDescr = colDescriptions[colDescrNum] || {}; + + var firstSeparator = true; + while (colDescr.type === "separator") { + // If there is more than one separator in a row, add a space + // between them. + if (!firstSeparator) { + colSep = (0, _buildCommon.makeSpan)(["arraycolsep"], []); + colSep.style.width = options.fontMetrics().doubleRuleSep + "em"; + cols.push(colSep); + } + + if (colDescr.separator === "|") { + var separator = (0, _buildCommon.makeSpan)(["vertical-separator"], []); + separator.style.height = totalHeight + "em"; + separator.style.verticalAlign = -(totalHeight - offset) + "em"; + + cols.push(separator); + } else { + throw new _ParseError2.default("Invalid separator type: " + colDescr.separator); + } + + colDescrNum++; + colDescr = colDescriptions[colDescrNum] || {}; + firstSeparator = false; + } + + if (c >= nc) { + continue; + } + + var sepwidth = void 0; + if (c > 0 || group.value.hskipBeforeAndAfter) { + sepwidth = _utils2.default.deflt(colDescr.pregap, arraycolsep); + if (sepwidth !== 0) { + colSep = (0, _buildCommon.makeSpan)(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + + var col = []; + for (r = 0; r < nr; ++r) { + var row = body[r]; + var elem = row[c]; + if (!elem) { + continue; + } + var shift = row.pos - offset; + elem.depth = row.depth; + elem.height = row.height; + col.push({ type: "elem", elem: elem, shift: shift }); + } + + col = _buildCommon2.default.makeVList(col, "individualShift", null, options); + col = (0, _buildCommon.makeSpan)(["col-align-" + (colDescr.align || "c")], [col]); + cols.push(col); + + if (c < nc - 1 || group.value.hskipBeforeAndAfter) { + sepwidth = _utils2.default.deflt(colDescr.postgap, arraycolsep); + if (sepwidth !== 0) { + colSep = (0, _buildCommon.makeSpan)(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + } + body = (0, _buildCommon.makeSpan)(["mtable"], cols); + return (0, _buildCommon.makeSpan)(["mord"], [body], options); +}; + +groupTypes.spacing = function (group, options) { + if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { + // Spaces are generated by adding an actual space. Each of these + // things has an entry in the symbols table, so these will be turned + // into appropriate outputs. + if (group.mode === "text") { + return _buildCommon2.default.makeOrd(group, options, "textord"); + } else { + return (0, _buildCommon.makeSpan)(["mspace"], [_buildCommon2.default.mathsym(group.value, group.mode, options)], options); + } + } else { + // Other kinds of spaces are of arbitrary width. We use CSS to + // generate these. + return (0, _buildCommon.makeSpan)(["mspace", _buildCommon2.default.spacingFunctions[group.value].className], [], options); + } +}; + +groupTypes.llap = function (group, options) { + var inner = (0, _buildCommon.makeSpan)(["inner"], [buildGroup(group.value.body, options)]); + var fix = (0, _buildCommon.makeSpan)(["fix"], []); + return (0, _buildCommon.makeSpan)(["mord", "llap"], [inner, fix], options); +}; + +groupTypes.rlap = function (group, options) { + var inner = (0, _buildCommon.makeSpan)(["inner"], [buildGroup(group.value.body, options)]); + var fix = (0, _buildCommon.makeSpan)(["fix"], []); + return (0, _buildCommon.makeSpan)(["mord", "rlap"], [inner, fix], options); +}; + +groupTypes.op = function (group, options) { + // Operators are handled in the TeXbook pg. 443-444, rule 13(a). + var supGroup = void 0; + var subGroup = void 0; + var hasLimits = false; + if (group.type === "supsub") { + // If we have limits, supsub will pass us its group to handle. Pull + // out the superscript and subscript and set the group to the op in + // its base. + supGroup = group.value.sup; + subGroup = group.value.sub; + group = group.value.base; + hasLimits = true; + } + + var style = options.style; + + // Most operators have a large successor symbol, but these don't. + var noSuccessor = ["\\smallint"]; + + var large = false; + if (style.size === _Style2.default.DISPLAY.size && group.value.symbol && !_utils2.default.contains(noSuccessor, group.value.body)) { + + // Most symbol operators get larger in displaystyle (rule 13) + large = true; + } + + var base = void 0; + if (group.value.symbol) { + // If this is a symbol, create the symbol. + var fontName = large ? "Size2-Regular" : "Size1-Regular"; + base = _buildCommon2.default.makeSymbol(group.value.body, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]); + } else if (group.value.value) { + // If this is a list, compose that list. + var inner = buildExpression(group.value.value, options, true); + if (inner.length === 1 && inner[0] instanceof _domTree2.default.symbolNode) { + base = inner[0]; + base.classes[0] = "mop"; // replace old mclass + } else { + base = (0, _buildCommon.makeSpan)(["mop"], inner, options); + } + } else { + // Otherwise, this is a text operator. Build the text from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup + var output = []; + for (var i = 1; i < group.value.body.length; i++) { + output.push(_buildCommon2.default.mathsym(group.value.body[i], group.mode)); + } + base = (0, _buildCommon.makeSpan)(["mop"], output, options); + } + + // If content of op is a single symbol, shift it vertically. + var baseShift = 0; + var slant = 0; + if (base instanceof _domTree2.default.symbolNode) { + // Shift the symbol so its center lies on the axis (rule 13). It + // appears that our fonts have the centers of the symbols already + // almost on the axis, so these numbers are very small. Note we + // don't actually apply this here, but instead it is used either in + // the vlist creation or separately when there are no limits. + baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; + + // The slant of the symbol is just its italic correction. + slant = base.italic; + } + + if (hasLimits) { + // IE 8 clips \int if it is in a display: inline-block. We wrap it + // in a new span so it is an inline, and works. + base = (0, _buildCommon.makeSpan)([], [base]); + + var supm = void 0; + var supKern = void 0; + var subm = void 0; + var subKern = void 0; + var newOptions = void 0; + // We manually have to handle the superscripts and subscripts. This, + // aside from the kern calculations, is copied from supsub. + if (supGroup) { + newOptions = options.havingStyle(style.sup()); + supm = buildGroup(supGroup, newOptions, options); + + supKern = Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - supm.depth); + } + + if (subGroup) { + newOptions = options.havingStyle(style.sub()); + subm = buildGroup(subGroup, newOptions, options); + + subKern = Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - subm.height); + } + + // Build the final group as a vlist of the possible subscript, base, + // and possible superscript. + var finalGroup = void 0; + var top = void 0; + var bottom = void 0; + if (!supGroup) { + top = base.height - baseShift; + + // Shift the limits by the slant of the symbol. Note + // that we are supposed to shift the limits by 1/2 of the slant, + // but since we are centering the limits adding a full slant of + // margin will shift by 1/2 that. + finalGroup = _buildCommon2.default.makeVList([{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: subm, marginLeft: -slant + "em" }, { type: "kern", size: subKern }, { type: "elem", elem: base }], "top", top, options); + } else if (!subGroup) { + bottom = base.depth + baseShift; + + finalGroup = _buildCommon2.default.makeVList([{ type: "elem", elem: base }, { type: "kern", size: supKern }, { type: "elem", elem: supm, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }], "bottom", bottom, options); + } else if (!supGroup && !subGroup) { + // This case probably shouldn't occur (this would mean the + // supsub was sending us a group with no superscript or + // subscript) but be safe. + return base; + } else { + bottom = options.fontMetrics().bigOpSpacing5 + subm.height + subm.depth + subKern + base.depth + baseShift; + + finalGroup = _buildCommon2.default.makeVList([{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: subm, marginLeft: -slant + "em" }, { type: "kern", size: subKern }, { type: "elem", elem: base }, { type: "kern", size: supKern }, { type: "elem", elem: supm, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }], "bottom", bottom, options); + } + + return (0, _buildCommon.makeSpan)(["mop", "op-limits"], [finalGroup], options); + } else { + if (baseShift) { + base.style.position = "relative"; + base.style.top = baseShift + "em"; + } + + return base; + } +}; + +groupTypes.mod = function (group, options) { + var inner = []; + + if (group.value.modType === "bmod") { + // “\nonscript\mskip-\medmuskip\mkern5mu” + if (!options.style.isTight()) { + inner.push((0, _buildCommon.makeSpan)(["mspace", "negativemediumspace"], [], options)); + } + inner.push((0, _buildCommon.makeSpan)(["mspace", "thickspace"], [], options)); + } else if (options.style.size === _Style2.default.DISPLAY.size) { + inner.push((0, _buildCommon.makeSpan)(["mspace", "quad"], [], options)); + } else if (group.value.modType === "mod") { + inner.push((0, _buildCommon.makeSpan)(["mspace", "twelvemuspace"], [], options)); + } else { + inner.push((0, _buildCommon.makeSpan)(["mspace", "eightmuspace"], [], options)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(_buildCommon2.default.mathsym("(", group.mode)); + } + + if (group.value.modType !== "pod") { + var modInner = [_buildCommon2.default.mathsym("m", group.mode), _buildCommon2.default.mathsym("o", group.mode), _buildCommon2.default.mathsym("d", group.mode)]; + if (group.value.modType === "bmod") { + inner.push((0, _buildCommon.makeSpan)(["mbin"], modInner, options)); + // “\mkern5mu\nonscript\mskip-\medmuskip” + inner.push((0, _buildCommon.makeSpan)(["mspace", "thickspace"], [], options)); + if (!options.style.isTight()) { + inner.push((0, _buildCommon.makeSpan)(["mspace", "negativemediumspace"], [], options)); + } + } else { + Array.prototype.push.apply(inner, modInner); + inner.push((0, _buildCommon.makeSpan)(["mspace", "sixmuspace"], [], options)); + } + } + + if (group.value.value) { + Array.prototype.push.apply(inner, buildExpression(group.value.value, options, false)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(_buildCommon2.default.mathsym(")", group.mode)); + } + + return _buildCommon2.default.makeFragment(inner); +}; + +groupTypes.katex = function (group, options) { + // The KaTeX logo. The offsets for the K and a were chosen to look + // good, but the offsets for the T, E, and X were taken from the + // definition of \TeX in TeX (see TeXbook pg. 356) + var k = (0, _buildCommon.makeSpan)(["k"], [_buildCommon2.default.mathsym("K", group.mode)], options); + var a = (0, _buildCommon.makeSpan)(["a"], [_buildCommon2.default.mathsym("A", group.mode)], options); + + a.height = (a.height + 0.2) * 0.75; + a.depth = (a.height - 0.2) * 0.75; + + var t = (0, _buildCommon.makeSpan)(["t"], [_buildCommon2.default.mathsym("T", group.mode)], options); + var e = (0, _buildCommon.makeSpan)(["e"], [_buildCommon2.default.mathsym("E", group.mode)], options); + + e.height = e.height - 0.2155; + e.depth = e.depth + 0.2155; + + var x = (0, _buildCommon.makeSpan)(["x"], [_buildCommon2.default.mathsym("X", group.mode)], options); + + return (0, _buildCommon.makeSpan)(["mord", "katex-logo"], [k, a, t, e, x], options); +}; + +var makeLineSpan = function makeLineSpan(className, options, thickness) { + var line = (0, _buildCommon.makeSpan)([className], [], options); + line.height = thickness || options.fontMetrics().defaultRuleThickness; + line.style.borderBottomWidth = line.height + "em"; + line.maxFontSize = 1.0; + return line; +}; + +groupTypes.overline = function (group, options) { + // Overlines are handled in the TeXbook pg 443, Rule 9. + + // Build the inner group in the cramped style. + var innerGroup = buildGroup(group.value.body, options.havingCrampedStyle()); + + // Create the line above the body + var line = makeLineSpan("overline-line", options); + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: innerGroup }, { type: "kern", size: 3 * line.height }, { type: "elem", elem: line }, { type: "kern", size: line.height }], "firstBaseline", null, options); + + return (0, _buildCommon.makeSpan)(["mord", "overline"], [vlist], options); +}; + +groupTypes.underline = function (group, options) { + // Underlines are handled in the TeXbook pg 443, Rule 10. + // Build the inner group. + var innerGroup = buildGroup(group.value.body, options); + + // Create the line above the body + var line = makeLineSpan("underline-line", options); + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList([{ type: "kern", size: line.height }, { type: "elem", elem: line }, { type: "kern", size: 3 * line.height }, { type: "elem", elem: innerGroup }], "top", innerGroup.height, options); + + return (0, _buildCommon.makeSpan)(["mord", "underline"], [vlist], options); +}; + +groupTypes.sqrt = function (group, options) { + // Square roots are handled in the TeXbook pg. 443, Rule 11. + + // First, we do the same steps as in overline to build the inner group + // and line + var inner = buildGroup(group.value.body, options.havingCrampedStyle()); + + // Some groups can return document fragments. Handle those by wrapping + // them in a span. + if (inner instanceof _domTree2.default.documentFragment) { + inner = (0, _buildCommon.makeSpan)([], [inner], options); + } + + // Calculate the minimum size for the \surd delimiter + var metrics = options.fontMetrics(); + var theta = metrics.defaultRuleThickness; + + var phi = theta; + if (options.style.id < _Style2.default.TEXT.id) { + phi = options.fontMetrics().xHeight; + } + + // Calculate the clearance between the body and line + var lineClearance = theta + phi / 4; + + var minDelimiterHeight = (inner.height + inner.depth + lineClearance + theta) * options.sizeMultiplier; + + // Create a sqrt SVG of the required minimum size + var img = _delimiter2.default.customSizedDelim("\\surd", minDelimiterHeight, false, options, group.mode); + + // Calculate the actual line width. + // This actually should depend on the chosen font -- e.g. \boldmath + // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and + // have thicker rules. + var ruleWidth = options.fontMetrics().sqrtRuleThickness * img.sizeMultiplier; + + var delimDepth = img.height - ruleWidth; + + // Adjust the clearance based on the delimiter size + if (delimDepth > inner.height + inner.depth + lineClearance) { + lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2; + } + + // Shift the sqrt image + var imgShift = img.height - inner.height - lineClearance - ruleWidth; + + // We add a special case here, because even when `inner` is empty, we + // still get a line. So, we use a simple heuristic to decide if we + // should omit the body entirely. (note this doesn't work for something + // like `\sqrt{\rlap{x}}`, but if someone is doing that they deserve for + // it not to work. + var body = void 0; + if (inner.height === 0 && inner.depth === 0) { + body = (0, _buildCommon.makeSpan)(); + } else { + inner.style.paddingLeft = img.surdWidth + "em"; + + // Overlay the image and the argument. + body = _buildCommon2.default.makeVList([{ type: "elem", elem: inner }, { type: "kern", size: -(inner.height + imgShift) }, { type: "elem", elem: img }, { type: "kern", size: ruleWidth }], "firstBaseline", null, options); + body.children[0].children[0].classes.push("svg-align"); + } + + if (!group.value.index) { + return (0, _buildCommon.makeSpan)(["mord", "sqrt"], [body], options); + } else { + // Handle the optional root index + + // The index is always in scriptscript style + var newOptions = options.havingStyle(_Style2.default.SCRIPTSCRIPT); + var rootm = buildGroup(group.value.index, newOptions, options); + + // The amount the index is shifted by. This is taken from the TeX + // source, in the definition of `\r@@t`. + var toShift = 0.6 * (body.height - body.depth); + + // Build a VList with the superscript shifted up correctly + var rootVList = _buildCommon2.default.makeVList([{ type: "elem", elem: rootm }], "shift", -toShift, options); + // Add a class surrounding it so we can add on the appropriate + // kerning + var rootVListWrap = (0, _buildCommon.makeSpan)(["root"], [rootVList]); + + return (0, _buildCommon.makeSpan)(["mord", "sqrt"], [rootVListWrap, body], options); + } +}; + +function sizingGroup(value, options, baseOptions) { + var inner = buildExpression(value, options, false); + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + + // Add size-resetting classes to the inner list and set maxFontSize + // manually. Handle nested size changes. + for (var i = 0; i < inner.length; i++) { + var pos = _utils2.default.indexOf(inner[i].classes, "sizing"); + if (pos < 0) { + Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions)); + } else if (inner[i].classes[pos + 1] === "reset-size" + options.size) { + // This is a nested size change: e.g., inner[i] is the "b" in + // `\Huge a \small b`. Override the old size (the `reset-` class) + // but not the new size. + inner[i].classes[pos + 1] = "reset-size" + baseOptions.size; + } + + inner[i].height *= multiplier; + inner[i].depth *= multiplier; + } + + return _buildCommon2.default.makeFragment(inner); +} + +groupTypes.sizing = function (group, options) { + // Handle sizing operators like \Huge. Real TeX doesn't actually allow + // these functions inside of math expressions, so we do some special + // handling. + var newOptions = options.havingSize(group.value.size); + return sizingGroup(group.value.value, newOptions, options); +}; + +groupTypes.styling = function (group, options) { + // Style changes are handled in the TeXbook on pg. 442, Rule 3. + + // Figure out what style we're changing to. + var styleMap = { + "display": _Style2.default.DISPLAY, + "text": _Style2.default.TEXT, + "script": _Style2.default.SCRIPT, + "scriptscript": _Style2.default.SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + return sizingGroup(group.value.value, newOptions, options); +}; + +groupTypes.font = function (group, options) { + var font = group.value.font; + return buildGroup(group.value.body, options.withFont(font)); +}; + +groupTypes.delimsizing = function (group, options) { + var delim = group.value.value; + + if (delim === ".") { + // Empty delimiters still count as elements, even though they don't + // show anything. + return (0, _buildCommon.makeSpan)([group.value.mclass]); + } + + // Use delimiter.sizedDelim to generate the delimiter. + return _delimiter2.default.sizedDelim(delim, group.value.size, options, group.mode, [group.value.mclass]); +}; + +groupTypes.leftright = function (group, options) { + // Build the inner expression + var inner = buildExpression(group.value.body, options, true); + + var innerHeight = 0; + var innerDepth = 0; + var hadMiddle = false; + + // Calculate its height and depth + for (var i = 0; i < inner.length; i++) { + if (inner[i].isMiddle) { + hadMiddle = true; + } else { + innerHeight = Math.max(inner[i].height, innerHeight); + innerDepth = Math.max(inner[i].depth, innerDepth); + } + } + + // The size of delimiters is the same, regardless of what style we are + // in. Thus, to correctly calculate the size of delimiter we need around + // a group, we scale down the inner size based on the size. + innerHeight *= options.sizeMultiplier; + innerDepth *= options.sizeMultiplier; + + var leftDelim = void 0; + if (group.value.left === ".") { + // Empty delimiters in \left and \right make null delimiter spaces. + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + // Otherwise, use leftRightDelim to generate the correct sized + // delimiter. + leftDelim = _delimiter2.default.leftRightDelim(group.value.left, innerHeight, innerDepth, options, group.mode, ["mopen"]); + } + // Add it to the beginning of the expression + inner.unshift(leftDelim); + + // Handle middle delimiters + if (hadMiddle) { + for (var _i4 = 1; _i4 < inner.length; _i4++) { + var middleDelim = inner[_i4]; + if (middleDelim.isMiddle) { + // Apply the options that were active when \middle was called + inner[_i4] = _delimiter2.default.leftRightDelim(middleDelim.isMiddle.value, innerHeight, innerDepth, middleDelim.isMiddle.options, group.mode, []); + // Add back spaces shifted into the delimiter + var spaces = spliceSpaces(middleDelim.children, 0); + if (spaces) { + _buildCommon2.default.prependChildren(inner[_i4], spaces); + } + } + } + } + + var rightDelim = void 0; + // Same for the right delimiter + if (group.value.right === ".") { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = _delimiter2.default.leftRightDelim(group.value.right, innerHeight, innerDepth, options, group.mode, ["mclose"]); + } + // Add it to the end of the expression. + inner.push(rightDelim); + + return (0, _buildCommon.makeSpan)(["minner"], inner, options); +}; + +groupTypes.middle = function (group, options) { + var middleDelim = void 0; + if (group.value.value === ".") { + middleDelim = makeNullDelimiter(options, []); + } else { + middleDelim = _delimiter2.default.sizedDelim(group.value.value, 1, options, group.mode, []); + middleDelim.isMiddle = { value: group.value.value, options: options }; + } + return middleDelim; +}; + +groupTypes.rule = function (group, options) { + // Make an empty span for the rule + var rule = (0, _buildCommon.makeSpan)(["mord", "rule"], [], options); + + // Calculate the shift, width, and height of the rule, and account for units + var shift = 0; + if (group.value.shift) { + shift = _units2.default.calculateSize(group.value.shift, options); + } + + var width = _units2.default.calculateSize(group.value.width, options); + var height = _units2.default.calculateSize(group.value.height, options); + + // Style the rule to the right size + rule.style.borderRightWidth = width + "em"; + rule.style.borderTopWidth = height + "em"; + rule.style.bottom = shift + "em"; + + // Record the height and width + rule.width = width; + rule.height = height + shift; + rule.depth = -shift; + // Font size is the number large enough that the browser will + // reserve at least `absHeight` space above the baseline. + // The 1.125 factor was empirically determined + rule.maxFontSize = height * 1.125 * options.sizeMultiplier; + + return rule; +}; + +groupTypes.kern = function (group, options) { + // Make an empty span for the rule + var rule = (0, _buildCommon.makeSpan)(["mord", "rule"], [], options); + + if (group.value.dimension) { + var dimension = _units2.default.calculateSize(group.value.dimension, options); + rule.style.marginLeft = dimension + "em"; + } + + return rule; +}; + +groupTypes.accent = function (group, options) { + // Accents are handled in the TeXbook pg. 443, rule 12. + var base = group.value.base; + + var supsubGroup = void 0; + if (group.type === "supsub") { + // If our base is a character box, and we have superscripts and + // subscripts, the supsub will defer to us. In particular, we want + // to attach the superscripts and subscripts to the inner body (so + // that the position of the superscripts and subscripts won't be + // affected by the height of the accent). We accomplish this by + // sticking the base of the accent into the base of the supsub, and + // rendering that, while keeping track of where the accent is. + + // The supsub group is the group that was passed in + var supsub = group; + // The real accent group is the base of the supsub group + group = supsub.value.base; + // The character box is the base of the accent group + base = group.value.base; + // Stick the character box into the base of the supsub group + supsub.value.base = base; + + // Rerender the supsub group with its new base, and store that + // result. + supsubGroup = buildGroup(supsub, options); + } + + // Build the base group + var body = buildGroup(base, options.havingCrampedStyle()); + + // Does the accent need to shift for the skew of a character? + var mustShift = group.value.isShifty && isCharacterBox(base); + + // Calculate the skew of the accent. This is based on the line "If the + // nucleus is not a single character, let s = 0; otherwise set s to the + // kern amount for the nucleus followed by the \skewchar of its font." + // Note that our skew metrics are just the kern between each character + // and the skewchar. + var skew = 0; + if (mustShift) { + // If the base is a character box, then we want the skew of the + // innermost character. To do that, we find the innermost character: + var baseChar = getBaseElem(base); + // Then, we render its group to get the symbol inside it + var baseGroup = buildGroup(baseChar, options.havingCrampedStyle()); + // Finally, we pull the skew off of the symbol. + skew = baseGroup.skew; + // Note that we now throw away baseGroup, because the layers we + // removed with getBaseElem might contain things like \color which + // we can't get rid of. + // TODO(emily): Find a better way to get the skew + } + + // calculate the amount of space between the body and the accent + var clearance = Math.min(body.height, options.fontMetrics().xHeight); + + // Build the accent + var accentBody = void 0; + if (!group.value.isStretchy) { + var accent = _buildCommon2.default.makeSymbol(group.value.label, "Main-Regular", group.mode, options); + // Remove the italic correction of the accent, because it only serves to + // shift the accent over to a place we don't want. + accent.italic = 0; + + // The \vec character that the fonts use is a combining character, and + // thus shows up much too far to the left. To account for this, we add a + // specific class which shifts the accent over to where we want it. + // TODO(emily): Fix this in a better way, like by changing the font + // Similarly, text accent \H is a combining character and + // requires a different adjustment. + var accentClass = null; + if (group.value.label === "\\vec") { + accentClass = "accent-vec"; + } else if (group.value.label === '\\H') { + accentClass = "accent-hungarian"; + } + + accentBody = (0, _buildCommon.makeSpan)([], [accent]); + accentBody = (0, _buildCommon.makeSpan)(["accent-body", accentClass], [accentBody]); + + // Shift the accent over by the skew. Note we shift by twice the skew + // because we are centering the accent, so by adding 2*skew to the left, + // we shift it to the right by 1*skew. + accentBody.style.marginLeft = 2 * skew + "em"; + + accentBody = _buildCommon2.default.makeVList([{ type: "elem", elem: body }, { type: "kern", size: -clearance }, { type: "elem", elem: accentBody }], "firstBaseline", null, options); + } else { + accentBody = _stretchy2.default.svgSpan(group, options); + + accentBody = _buildCommon2.default.makeVList([{ type: "elem", elem: body }, { type: "elem", elem: accentBody }], "firstBaseline", null, options); + + var styleSpan = accentBody.children[0].children[0].children[1]; + styleSpan.classes.push("svg-align"); // text-align: left; + if (skew > 0) { + // Shorten the accent and nudge it to the right. + styleSpan.style.width = "calc(100% - " + 2 * skew + "em)"; + styleSpan.style.marginLeft = 2 * skew + "em"; + } + } + + var accentWrap = (0, _buildCommon.makeSpan)(["mord", "accent"], [accentBody], options); + + if (supsubGroup) { + // Here, we replace the "base" child of the supsub with our newly + // generated accent. + supsubGroup.children[0] = accentWrap; + + // Since we don't rerun the height calculation after replacing the + // accent, we manually recalculate height. + supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height); + + // Accents should always be ords, even when their innards are not. + supsubGroup.classes[0] = "mord"; + + return supsubGroup; + } else { + return accentWrap; + } +}; + +groupTypes.horizBrace = function (group, options) { + var style = options.style; + + var hasSupSub = group.type === "supsub"; + var supSubGroup = void 0; + var newOptions = void 0; + if (hasSupSub) { + // Ref: LaTeX source2e: }}}}\limits} + // i.e. LaTeX treats the brace similar to an op and passes it + // with \limits, so we need to assign supsub style. + if (group.value.sup) { + newOptions = options.havingStyle(style.sup()); + supSubGroup = buildGroup(group.value.sup, newOptions, options); + } else { + newOptions = options.havingStyle(style.sub()); + supSubGroup = buildGroup(group.value.sub, newOptions, options); + } + group = group.value.base; + } + + // Build the base group + var body = buildGroup(group.value.base, options.havingBaseStyle(_Style2.default.DISPLAY)); + + // Create the stretchy element + var braceBody = _stretchy2.default.svgSpan(group, options); + + // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓ + // This first vlist contains the subject matter and the brace: equation + var vlist = void 0; + if (group.value.isOver) { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: body }, { type: "kern", size: 0.1 }, { type: "elem", elem: braceBody }], "firstBaseline", null, options); + vlist.children[0].children[0].children[1].classes.push("svg-align"); + } else { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: braceBody }, { type: "kern", size: 0.1 }, { type: "elem", elem: body }], "bottom", body.depth + 0.1 + braceBody.height, options); + vlist.children[0].children[0].children[0].classes.push("svg-align"); + } + + if (hasSupSub) { + // In order to write the supsub, wrap the first vlist in another vlist: + // They can't all go in the same vlist, because the note might be wider + // than the equation. We want the equation to control the brace width. + + // note long note long note + // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓ + // equation eqn eqn + + var vSpan = (0, _buildCommon.makeSpan)(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); + + if (group.value.isOver) { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: vSpan }, { type: "kern", size: 0.2 }, { type: "elem", elem: supSubGroup }], "firstBaseline", null, options); + } else { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: supSubGroup }, { type: "kern", size: 0.2 }, { type: "elem", elem: vSpan }], "bottom", vSpan.depth + 0.2 + supSubGroup.height, options); + } + } + + return (0, _buildCommon.makeSpan)(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); +}; + +groupTypes.accentUnder = function (group, options) { + // Treat under accents much like underlines. + var innerGroup = buildGroup(group.value.body, options); + + var accentBody = _stretchy2.default.svgSpan(group, options); + var kern = /tilde/.test(group.value.label) ? 0.12 : 0; + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: accentBody }, { type: "kern", size: kern }, { type: "elem", elem: innerGroup }], "bottom", accentBody.height + kern, options); + + vlist.children[0].children[0].children[0].classes.push("svg-align"); + + return (0, _buildCommon.makeSpan)(["mord", "accentunder"], [vlist], options); +}; + +groupTypes.enclose = function (group, options) { + // \cancel, \bcancel, \xcancel, \sout, \fbox + var inner = buildGroup(group.value.body, options); + + var label = group.value.label.substr(1); + var scale = options.sizeMultiplier; + var img = void 0; + var pad = 0; + var imgShift = 0; + + if (label === "sout") { + img = (0, _buildCommon.makeSpan)(["stretchy", "sout"]); + img.height = options.fontMetrics().defaultRuleThickness / scale; + imgShift = -0.5 * options.fontMetrics().xHeight; + } else { + // Add horizontal padding + inner.classes.push(label === "fbox" ? "boxpad" : "cancel-pad"); + + // Add vertical padding + var isCharBox = isCharacterBox(group.value.body); + // ref: LaTeX source2e: \fboxsep = 3pt; \fboxrule = .4pt + // ref: cancel package: \advance\totalheight2\p@ % "+2" + pad = label === "fbox" ? 0.34 : isCharBox ? 0.2 : 0; + imgShift = inner.depth + pad; + + img = _stretchy2.default.encloseSpan(inner, label, pad, options); + } + + var vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: inner, shift: 0 }, { type: "elem", elem: img, shift: imgShift }], "individualShift", null, options); + + if (label !== "fbox") { + vlist.children[0].children[0].children[1].classes.push("svg-align"); + } + + if (/cancel/.test(label)) { + // cancel does not create horiz space for its line extension. + // That is, not when adjacent to a mord. + return (0, _buildCommon.makeSpan)(["mord", "cancel-lap"], [vlist], options); + } else { + return (0, _buildCommon.makeSpan)(["mord"], [vlist], options); + } +}; + +groupTypes.xArrow = function (group, options) { + var style = options.style; + + // Build the argument groups in the appropriate style. + // Ref: amsmath.dtx: \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% + + var newOptions = options.havingStyle(style.sup()); + var upperGroup = buildGroup(group.value.body, newOptions, options); + upperGroup.classes.push("x-arrow-pad"); + + var lowerGroup = void 0; + if (group.value.below) { + // Build the lower group + newOptions = options.havingStyle(style.sub()); + lowerGroup = buildGroup(group.value.below, newOptions, options); + lowerGroup.classes.push("x-arrow-pad"); + } + + var arrowBody = _stretchy2.default.svgSpan(group, options); + + var arrowShift = -options.fontMetrics().axisHeight + arrowBody.depth; + var upperShift = -options.fontMetrics().axisHeight - arrowBody.height - 0.111; // 2 mu. Ref: amsmath.dtx: #7\if0#2\else\mkern#2mu\fi + + // Generate the vlist + var vlist = void 0; + if (group.value.below) { + var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + arrowBody.height + 0.111; + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }, { type: "elem", elem: lowerGroup, shift: lowerShift }], "individualShift", null, options); + } else { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }], "individualShift", null, options); + } + + vlist.children[0].children[0].children[1].classes.push("svg-align"); + + return (0, _buildCommon.makeSpan)(["mrel", "x-arrow"], [vlist], options); +}; + +groupTypes.phantom = function (group, options) { + var elements = buildExpression(group.value.value, options.withPhantom(), false); + + // \phantom isn't supposed to affect the elements it contains. + // See "color" for more details. + return new _buildCommon2.default.makeFragment(elements); +}; + +groupTypes.mclass = function (group, options) { + var elements = buildExpression(group.value.value, options, true); + + return (0, _buildCommon.makeSpan)([group.value.mclass], elements, options); +}; + +/** + * buildGroup is the function that takes a group and calls the correct groupType + * function for it. It also handles the interaction of size and style changes + * between parents and children. + */ +var buildGroup = function buildGroup(group, options, baseOptions) { + if (!group) { + return (0, _buildCommon.makeSpan)(); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var groupNode = groupTypes[group.type](group, options); + + // If the size changed between the parent and the current group, account + // for that size difference. + if (baseOptions && options.size !== baseOptions.size) { + groupNode = (0, _buildCommon.makeSpan)(options.sizingClasses(baseOptions), [groupNode], options); + + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + + groupNode.height *= multiplier; + groupNode.depth *= multiplier; + } + + return groupNode; + } else { + throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); + } +}; + +/** + * Take an entire parse tree, and build it into an appropriate set of HTML + * nodes. + */ +var buildHTML = function buildHTML(tree, options) { + // buildExpression is destructive, so we need to make a clone + // of the incoming tree so that it isn't accidentally changed + tree = JSON.parse((0, _stringify2.default)(tree)); + + // Build the expression contained in the tree + var expression = buildExpression(tree, options, true); + var body = (0, _buildCommon.makeSpan)(["base"], expression, options); + + // Add struts, which ensure that the top of the HTML element falls at the + // height of the expression, and the bottom of the HTML element falls at the + // depth of the expression. + var topStrut = (0, _buildCommon.makeSpan)(["strut"]); + var bottomStrut = (0, _buildCommon.makeSpan)(["strut", "bottom"]); + + topStrut.style.height = body.height + "em"; + bottomStrut.style.height = body.height + body.depth + "em"; + // We'd like to use `vertical-align: top` but in IE 9 this lowers the + // baseline of the box to the bottom of this strut (instead staying in the + // normal place) so we use an absolute value for vertical-align instead + bottomStrut.style.verticalAlign = -body.depth + "em"; + + // Wrap the struts and body together + var htmlNode = (0, _buildCommon.makeSpan)(["katex-html"], [topStrut, bottomStrut, body]); + + htmlNode.setAttribute("aria-hidden", "true"); + + return htmlNode; +}; + +module.exports = buildHTML; + +},{"./ParseError":29,"./Style":33,"./buildCommon":34,"./delimiter":38,"./domTree":39,"./stretchy":47,"./units":50,"./utils":51,"babel-runtime/core-js/json/stringify":2}],36:[function(require,module,exports){ +"use strict"; + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _fontMetrics = require("./fontMetrics"); + +var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + +var _mathMLTree = require("./mathMLTree"); + +var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _stretchy = require("./stretchy"); + +var _stretchy2 = _interopRequireDefault(_stretchy); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Takes a symbol and converts it into a MathML text node after performing + * optional replacement from symbols.js. + */ +/** + * This file converts a parse tree into a cooresponding MathML tree. The main + * entry point is the `buildMathML` function, which takes a parse tree from the + * parser. + */ + +var makeText = function makeText(text, mode) { + if (_symbols2.default[mode][text] && _symbols2.default[mode][text].replace) { + text = _symbols2.default[mode][text].replace; + } + + return new _mathMLTree2.default.TextNode(text); +}; + +/** + * Returns the math variant as a string or null if none is required. + */ +var getVariant = function getVariant(group, options) { + var font = options.font; + if (!font) { + return null; + } + + var mode = group.mode; + if (font === "mathit") { + return "italic"; + } + + var value = group.value; + if (_utils2.default.contains(["\\imath", "\\jmath"], value)) { + return null; + } + + if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { + value = _symbols2.default[mode][value].replace; + } + + var fontName = _buildCommon.fontMap[font].fontName; + if (_fontMetrics2.default.getCharacterMetrics(value, fontName)) { + return _buildCommon.fontMap[options.font].variant; + } + + return null; +}; + +/** + * Functions for handling the different types of groups found in the parse + * tree. Each function should take a parse group and return a MathML node. + */ +var groupTypes = {}; + +var defaultVariant = { + "mi": "italic", + "mn": "normal", + "mtext": "normal" +}; + +groupTypes.mathord = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mi", [makeText(group.value, group.mode)]); + + var variant = getVariant(group, options) || "italic"; + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + return node; +}; + +groupTypes.textord = function (group, options) { + var text = makeText(group.value, group.mode); + + var variant = getVariant(group, options) || "normal"; + + var node = void 0; + if (group.mode === 'text') { + node = new _mathMLTree2.default.MathNode("mtext", [text]); + } else if (/[0-9]/.test(group.value)) { + // TODO(kevinb) merge adjacent nodes + // do it as a post processing step + node = new _mathMLTree2.default.MathNode("mn", [text]); + } else if (group.value === "\\prime") { + node = new _mathMLTree2.default.MathNode("mo", [text]); + } else { + node = new _mathMLTree2.default.MathNode("mi", [text]); + } + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + + return node; +}; + +groupTypes.bin = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.rel = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.open = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.close = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.inner = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes.punct = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + node.setAttribute("separator", "true"); + + return node; +}; + +groupTypes.ordgroup = function (group, options) { + var inner = buildExpression(group.value, options); + + var node = new _mathMLTree2.default.MathNode("mrow", inner); + + return node; +}; + +groupTypes.text = function (group, options) { + var body = group.value.body; + + // Convert each element of the body into MathML, and combine consecutive + // outputs into a single tag. In this way, we don't + // nest non-text items (e.g., $nested-math$) within an . + var inner = []; + var currentText = null; + for (var i = 0; i < body.length; i++) { + var _group = buildGroup(body[i], options); + if (_group.type === 'mtext' && currentText != null) { + Array.prototype.push.apply(currentText.children, _group.children); + } else { + inner.push(_group); + if (_group.type === 'mtext') { + currentText = _group; + } + } + } + + // If there is a single tag in the end (presumably ), + // just return it. Otherwise, wrap them in an . + if (inner.length === 1) { + return inner[0]; + } else { + return new _mathMLTree2.default.MathNode("mrow", inner); + } +}; + +groupTypes.color = function (group, options) { + var inner = buildExpression(group.value.value, options); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + node.setAttribute("mathcolor", group.value.color); + + return node; +}; + +groupTypes.supsub = function (group, options) { + // Is the inner group a relevant horizonal brace? + var isBrace = false; + var isOver = void 0; + var isSup = void 0; + if (group.value.base) { + if (group.value.base.value.type === "horizBrace") { + isSup = group.value.sup ? true : false; + if (isSup === group.value.base.value.isOver) { + isBrace = true; + isOver = group.value.base.value.isOver; + } + } + } + + var removeUnnecessaryRow = true; + var children = [buildGroup(group.value.base, options, removeUnnecessaryRow)]; + + if (group.value.sub) { + children.push(buildGroup(group.value.sub, options, removeUnnecessaryRow)); + } + + if (group.value.sup) { + children.push(buildGroup(group.value.sup, options, removeUnnecessaryRow)); + } + + var nodeType = void 0; + if (isBrace) { + nodeType = isOver ? "mover" : "munder"; + } else if (!group.value.sub) { + nodeType = "msup"; + } else if (!group.value.sup) { + nodeType = "msub"; + } else { + var base = group.value.base; + if (base && base.value.limits && options.style === _Style2.default.DISPLAY) { + nodeType = "munderover"; + } else { + nodeType = "msubsup"; + } + } + + var node = new _mathMLTree2.default.MathNode(nodeType, children); + + return node; +}; + +groupTypes.genfrac = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mfrac", [buildGroup(group.value.numer, options), buildGroup(group.value.denom, options)]); + + if (!group.value.hasBarLine) { + node.setAttribute("linethickness", "0px"); + } + + if (group.value.leftDelim != null || group.value.rightDelim != null) { + var withDelims = []; + + if (group.value.leftDelim != null) { + var leftOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.leftDelim)]); + + leftOp.setAttribute("fence", "true"); + + withDelims.push(leftOp); + } + + withDelims.push(node); + + if (group.value.rightDelim != null) { + var rightOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.rightDelim)]); + + rightOp.setAttribute("fence", "true"); + + withDelims.push(rightOp); + } + + var outerNode = new _mathMLTree2.default.MathNode("mrow", withDelims); + + return outerNode; + } + + return node; +}; + +groupTypes.array = function (group, options) { + return new _mathMLTree2.default.MathNode("mtable", group.value.body.map(function (row) { + return new _mathMLTree2.default.MathNode("mtr", row.map(function (cell) { + return new _mathMLTree2.default.MathNode("mtd", [buildGroup(cell, options)]); + })); + })); +}; + +groupTypes.sqrt = function (group, options) { + var node = void 0; + if (group.value.index) { + node = new _mathMLTree2.default.MathNode("mroot", [buildGroup(group.value.body, options), buildGroup(group.value.index, options)]); + } else { + node = new _mathMLTree2.default.MathNode("msqrt", [buildGroup(group.value.body, options)]); + } + + return node; +}; + +groupTypes.leftright = function (group, options) { + var inner = buildExpression(group.value.body, options); + + if (group.value.left !== ".") { + var leftNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.left, group.mode)]); + + leftNode.setAttribute("fence", "true"); + + inner.unshift(leftNode); + } + + if (group.value.right !== ".") { + var rightNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.right, group.mode)]); + + rightNode.setAttribute("fence", "true"); + + inner.push(rightNode); + } + + var outerNode = new _mathMLTree2.default.MathNode("mrow", inner); + + return outerNode; +}; + +groupTypes.middle = function (group, options) { + var middleNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.middle, group.mode)]); + middleNode.setAttribute("fence", "true"); + return middleNode; +}; + +groupTypes.accent = function (group, options) { + var accentNode = void 0; + if (group.value.isStretchy) { + accentNode = _stretchy2.default.mathMLnode(group.value.label); + } else { + accentNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.label, group.mode)]); + } + + var node = new _mathMLTree2.default.MathNode("mover", [buildGroup(group.value.base, options), accentNode]); + + node.setAttribute("accent", "true"); + + return node; +}; + +groupTypes.spacing = function (group) { + var node = void 0; + + if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { + node = new _mathMLTree2.default.MathNode("mtext", [new _mathMLTree2.default.TextNode("\xA0")]); + } else { + node = new _mathMLTree2.default.MathNode("mspace"); + + node.setAttribute("width", _buildCommon2.default.spacingFunctions[group.value].size); + } + + return node; +}; + +groupTypes.op = function (group, options) { + var node = void 0; + + // TODO(emily): handle big operators using the `largeop` attribute + + if (group.value.symbol) { + // This is a symbol. Just add the symbol. + node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.body, group.mode)]); + } else if (group.value.value) { + // This is an operator with children. Add them. + node = new _mathMLTree2.default.MathNode("mo", buildExpression(group.value.value, options)); + } else { + // This is a text operator. Add all of the characters from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup. + node = new _mathMLTree2.default.MathNode("mi", [new _mathMLTree2.default.TextNode(group.value.body.slice(1))]); + } + + return node; +}; + +groupTypes.mod = function (group, options) { + var inner = []; + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [makeText("(", group.mode)])); + } + if (group.value.modType !== "pod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [makeText("mod", group.mode)])); + } + if (group.value.value) { + var space = new _mathMLTree2.default.MathNode("mspace"); + space.setAttribute("width", "0.333333em"); + inner.push(space); + inner = inner.concat(buildExpression(group.value.value, options)); + } + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [makeText(")", group.mode)])); + } + + return new _mathMLTree2.default.MathNode("mo", inner); +}; + +groupTypes.katex = function (group) { + var node = new _mathMLTree2.default.MathNode("mtext", [new _mathMLTree2.default.TextNode("KaTeX")]); + + return node; +}; + +groupTypes.font = function (group, options) { + var font = group.value.font; + return buildGroup(group.value.body, options.withFont(font)); +}; + +groupTypes.delimsizing = function (group) { + var children = []; + + if (group.value.value !== ".") { + children.push(makeText(group.value.value, group.mode)); + } + + var node = new _mathMLTree2.default.MathNode("mo", children); + + if (group.value.mclass === "mopen" || group.value.mclass === "mclose") { + // Only some of the delimsizing functions act as fences, and they + // return "mopen" or "mclose" mclass. + node.setAttribute("fence", "true"); + } else { + // Explicitly disable fencing if it's not a fence, to override the + // defaults. + node.setAttribute("fence", "false"); + } + + return node; +}; + +groupTypes.styling = function (group, options) { + // Figure out what style we're changing to. + // TODO(kevinb): dedupe this with buildHTML.js + // This will be easier of handling of styling nodes is in the same file. + var styleMap = { + "display": _Style2.default.DISPLAY, + "text": _Style2.default.TEXT, + "script": _Style2.default.SCRIPT, + "scriptscript": _Style2.default.SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + + var inner = buildExpression(group.value.value, newOptions); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + var styleAttributes = { + "display": ["0", "true"], + "text": ["0", "false"], + "script": ["1", "false"], + "scriptscript": ["2", "false"] + }; + + var attr = styleAttributes[group.value.style]; + + node.setAttribute("scriptlevel", attr[0]); + node.setAttribute("displaystyle", attr[1]); + + return node; +}; + +groupTypes.sizing = function (group, options) { + var newOptions = options.havingSize(group.value.size); + var inner = buildExpression(group.value.value, newOptions); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + // TODO(emily): This doesn't produce the correct size for nested size + // changes, because we don't keep state of what style we're currently + // in, so we can't reset the size to normal before changing it. Now + // that we're passing an options parameter we should be able to fix + // this. + node.setAttribute("mathsize", newOptions.sizeMultiplier + "em"); + + return node; +}; + +groupTypes.overline = function (group, options) { + var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); + + var node = new _mathMLTree2.default.MathNode("mover", [buildGroup(group.value.body, options), operator]); + node.setAttribute("accent", "true"); + + return node; +}; + +groupTypes.underline = function (group, options) { + var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); + + var node = new _mathMLTree2.default.MathNode("munder", [buildGroup(group.value.body, options), operator]); + node.setAttribute("accentunder", "true"); + + return node; +}; + +groupTypes.accentUnder = function (group, options) { + var accentNode = _stretchy2.default.mathMLnode(group.value.label); + var node = new _mathMLTree2.default.MathNode("munder", [buildGroup(group.value.body, options), accentNode]); + node.setAttribute("accentunder", "true"); + return node; +}; + +groupTypes.enclose = function (group, options) { + var node = new _mathMLTree2.default.MathNode("menclose", [buildGroup(group.value.body, options)]); + var notation = ""; + switch (group.value.label) { + case "\\bcancel": + notation = "downdiagonalstrike"; + break; + case "\\sout": + notation = "horizontalstrike"; + break; + case "\\fbox": + notation = "box"; + break; + default: + notation = "updiagonalstrike"; + } + node.setAttribute("notation", notation); + return node; +}; + +groupTypes.horizBrace = function (group, options) { + var accentNode = _stretchy2.default.mathMLnode(group.value.label); + return new _mathMLTree2.default.MathNode(group.value.isOver ? "mover" : "munder", [buildGroup(group.value.base, options), accentNode]); +}; + +groupTypes.xArrow = function (group, options) { + var arrowNode = _stretchy2.default.mathMLnode(group.value.label); + var node = void 0; + var lowerNode = void 0; + + if (group.value.body) { + var upperNode = buildGroup(group.value.body, options); + if (group.value.below) { + lowerNode = buildGroup(group.value.below, options); + node = new _mathMLTree2.default.MathNode("munderover", [arrowNode, lowerNode, upperNode]); + } else { + node = new _mathMLTree2.default.MathNode("mover", [arrowNode, upperNode]); + } + } else if (group.value.below) { + lowerNode = buildGroup(group.value.below, options); + node = new _mathMLTree2.default.MathNode("munder", [arrowNode, lowerNode]); + } else { + node = new _mathMLTree2.default.MathNode("mover", [arrowNode]); + } + return node; +}; + +groupTypes.rule = function (group) { + // TODO(emily): Figure out if there's an actual way to draw black boxes + // in MathML. + var node = new _mathMLTree2.default.MathNode("mrow"); + + return node; +}; + +groupTypes.kern = function (group) { + // TODO(kevin): Figure out if there's a way to add space in MathML + var node = new _mathMLTree2.default.MathNode("mrow"); + + return node; +}; + +groupTypes.llap = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mpadded", [buildGroup(group.value.body, options)]); + + node.setAttribute("lspace", "-1width"); + node.setAttribute("width", "0px"); + + return node; +}; + +groupTypes.rlap = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mpadded", [buildGroup(group.value.body, options)]); + + node.setAttribute("width", "0px"); + + return node; +}; + +groupTypes.phantom = function (group, options) { + var inner = buildExpression(group.value.value, options); + return new _mathMLTree2.default.MathNode("mphantom", inner); +}; + +groupTypes.mclass = function (group, options) { + var inner = buildExpression(group.value.value, options); + return new _mathMLTree2.default.MathNode("mstyle", inner); +}; + +/** + * Takes a list of nodes, builds them, and returns a list of the generated + * MathML nodes. A little simpler than the HTML version because we don't do any + * previous-node handling. + */ +var buildExpression = function buildExpression(expression, options) { + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + groups.push(buildGroup(group, options)); + } + + // TODO(kevinb): combine \\not with mrels and mords + + return groups; +}; + +/** + * Takes a group from the parser and calls the appropriate groupTypes function + * on it to produce a MathML node. + */ +// TODO(kevinb): determine if removeUnnecessaryRow should always be true +var buildGroup = function buildGroup(group, options) { + var removeUnnecessaryRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!group) { + return new _mathMLTree2.default.MathNode("mrow"); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var result = groupTypes[group.type](group, options); + if (removeUnnecessaryRow) { + if (result.type === "mrow" && result.children.length === 1) { + return result.children[0]; + } + } + return result; + } else { + throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); + } +}; + +/** + * Takes a full parse tree and settings and builds a MathML representation of + * it. In particular, we put the elements from building the parse tree into a + * tag so we can also include that TeX source as an annotation. + * + * Note that we actually return a domTree element with a `` inside it so + * we can do appropriate styling. + */ +var buildMathML = function buildMathML(tree, texExpression, options) { + var expression = buildExpression(tree, options); + + // Wrap up the expression in an mrow so it is presented in the semantics + // tag correctly. + var wrapper = new _mathMLTree2.default.MathNode("mrow", expression); + + // Build a TeX annotation of the source + var annotation = new _mathMLTree2.default.MathNode("annotation", [new _mathMLTree2.default.TextNode(texExpression)]); + + annotation.setAttribute("encoding", "application/x-tex"); + + var semantics = new _mathMLTree2.default.MathNode("semantics", [wrapper, annotation]); + + var math = new _mathMLTree2.default.MathNode("math", [semantics]); + + // You can't style nodes, so we wrap the node in a span. + return (0, _buildCommon.makeSpan)(["katex-mathml"], [math]); +}; + +module.exports = buildMathML; + +},{"./ParseError":29,"./Style":33,"./buildCommon":34,"./fontMetrics":41,"./mathMLTree":45,"./stretchy":47,"./symbols":48,"./utils":51}],37:[function(require,module,exports){ +"use strict"; + +var _buildHTML = require("./buildHTML"); + +var _buildHTML2 = _interopRequireDefault(_buildHTML); + +var _buildMathML = require("./buildMathML"); + +var _buildMathML2 = _interopRequireDefault(_buildMathML); + +var _buildCommon = require("./buildCommon"); + +var _Options = require("./Options"); + +var _Options2 = _interopRequireDefault(_Options); + +var _Settings = require("./Settings"); + +var _Settings2 = _interopRequireDefault(_Settings); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var buildTree = function buildTree(tree, expression, settings) { + settings = settings || new _Settings2.default({}); + + var startStyle = _Style2.default.TEXT; + if (settings.displayMode) { + startStyle = _Style2.default.DISPLAY; + } + + // Setup the default options + var options = new _Options2.default({ + style: startStyle + }); + + // `buildHTML` sometimes messes with the parse tree (like turning bins -> + // ords), so we build the MathML version first. + var mathMLNode = (0, _buildMathML2.default)(tree, expression, options); + var htmlNode = (0, _buildHTML2.default)(tree, options); + + var katexNode = (0, _buildCommon.makeSpan)(["katex"], [mathMLNode, htmlNode]); + + if (settings.displayMode) { + return (0, _buildCommon.makeSpan)(["katex-display"], [katexNode]); + } else { + return katexNode; + } +}; + +module.exports = buildTree; + +},{"./Options":28,"./Settings":32,"./Style":33,"./buildCommon":34,"./buildHTML":35,"./buildMathML":36}],38:[function(require,module,exports){ +"use strict"; + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _Style = require("./Style"); + +var _Style2 = _interopRequireDefault(_Style); + +var _buildCommon = require("./buildCommon"); + +var _buildCommon2 = _interopRequireDefault(_buildCommon); + +var _fontMetrics = require("./fontMetrics"); + +var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + +var _symbols = require("./symbols"); + +var _symbols2 = _interopRequireDefault(_symbols); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Get the metrics for a given symbol and font, after transformation (i.e. + * after following replacement from symbols.js) + */ +/** + * This file deals with creating delimiters of various sizes. The TeXbook + * discusses these routines on page 441-442, in the "Another subroutine sets box + * x to a specified variable delimiter" paragraph. + * + * There are three main routines here. `makeSmallDelim` makes a delimiter in the + * normal font, but in either text, script, or scriptscript style. + * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1, + * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of + * smaller pieces that are stacked on top of one another. + * + * The functions take a parameter `center`, which determines if the delimiter + * should be centered around the axis. + * + * Then, there are three exposed functions. `sizedDelim` makes a delimiter in + * one of the given sizes. This is used for things like `\bigl`. + * `customSizedDelim` makes a delimiter with a given total height+depth. It is + * called in places like `\sqrt`. `leftRightDelim` makes an appropriate + * delimiter which surrounds an expression of a given height an depth. It is + * used in `\left` and `\right`. + */ + +var getMetrics = function getMetrics(symbol, font) { + if (_symbols2.default.math[symbol] && _symbols2.default.math[symbol].replace) { + return _fontMetrics2.default.getCharacterMetrics(_symbols2.default.math[symbol].replace, font); + } else { + return _fontMetrics2.default.getCharacterMetrics(symbol, font); + } +}; + +/** + * Puts a delimiter span in a given style, and adds appropriate height, depth, + * and maxFontSizes. + */ +var styleWrap = function styleWrap(delim, toStyle, options, classes) { + var newOptions = options.havingBaseStyle(toStyle); + + var span = (0, _buildCommon.makeSpan)((classes || []).concat(newOptions.sizingClasses(options)), [delim], options); + + span.delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + span.height *= span.delimSizeMultiplier; + span.depth *= span.delimSizeMultiplier; + span.maxFontSize = newOptions.sizeMultiplier; + + return span; +}; + +var centerSpan = function centerSpan(span, options, style) { + var newOptions = options.havingBaseStyle(style); + var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight; + + span.classes.push("delimcenter"); + span.style.top = shift + "em"; + span.height -= shift; + span.depth += shift; +}; + +/** + * Makes a small delimiter. This is a delimiter that comes in the Main-Regular + * font, but is restyled to either be in textstyle, scriptstyle, or + * scriptscriptstyle. + */ +var makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) { + var text = _buildCommon2.default.makeSymbol(delim, "Main-Regular", mode, options); + var span = styleWrap(text, style, options, classes); + if (center) { + centerSpan(span, options, style); + } + return span; +}; + +/** + * Builds a symbol in the given font size (note size is an integer) + */ +var mathrmSize = function mathrmSize(value, size, mode, options) { + return _buildCommon2.default.makeSymbol(value, "Size" + size + "-Regular", mode, options); +}; + +/** + * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2, + * Size3, or Size4 fonts. It is always rendered in textstyle. + */ +var makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) { + var inner = mathrmSize(delim, size, mode, options); + var span = styleWrap((0, _buildCommon.makeSpan)(["delimsizing", "size" + size], [inner], options), _Style2.default.TEXT, options, classes); + if (center) { + centerSpan(span, options, _Style2.default.TEXT); + } + return span; +}; + +/** + * Make an inner span with the given offset and in the given font. This is used + * in `makeStackedDelim` to make the stacking pieces for the delimiter. + */ +var makeInner = function makeInner(symbol, font, mode) { + var sizeClass = void 0; + // Apply the correct CSS class to choose the right font. + if (font === "Size1-Regular") { + sizeClass = "delim-size1"; + } else if (font === "Size4-Regular") { + sizeClass = "delim-size4"; + } + + var inner = (0, _buildCommon.makeSpan)(["delimsizinginner", sizeClass], [(0, _buildCommon.makeSpan)([], [_buildCommon2.default.makeSymbol(symbol, font, mode)])]); + + // Since this will be passed into `makeVList` in the end, wrap the element + // in the appropriate tag that VList uses. + return { type: "elem", elem: inner }; +}; + +/** + * Make a stacked delimiter out of a given delimiter, with the total height at + * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook. + */ +var makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) { + // There are four parts, the top, an optional middle, a repeated part, and a + // bottom. + var top = void 0; + var middle = void 0; + var repeat = void 0; + var bottom = void 0; + top = repeat = bottom = delim; + middle = null; + // Also keep track of what font the delimiters are in + var font = "Size1-Regular"; + + // We set the parts and font based on the symbol. Note that we use + // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the + // repeats of the arrows + if (delim === "\\uparrow") { + repeat = bottom = "\u23D0"; + } else if (delim === "\\Uparrow") { + repeat = bottom = "\u2016"; + } else if (delim === "\\downarrow") { + top = repeat = "\u23D0"; + } else if (delim === "\\Downarrow") { + top = repeat = "\u2016"; + } else if (delim === "\\updownarrow") { + top = "\\uparrow"; + repeat = "\u23D0"; + bottom = "\\downarrow"; + } else if (delim === "\\Updownarrow") { + top = "\\Uparrow"; + repeat = "\u2016"; + bottom = "\\Downarrow"; + } else if (delim === "[" || delim === "\\lbrack") { + top = "\u23A1"; + repeat = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "]" || delim === "\\rbrack") { + top = "\u23A4"; + repeat = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\lfloor") { + repeat = top = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "\\lceil") { + top = "\u23A1"; + repeat = bottom = "\u23A2"; + font = "Size4-Regular"; + } else if (delim === "\\rfloor") { + repeat = top = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\rceil") { + top = "\u23A4"; + repeat = bottom = "\u23A5"; + font = "Size4-Regular"; + } else if (delim === "(") { + top = "\u239B"; + repeat = "\u239C"; + bottom = "\u239D"; + font = "Size4-Regular"; + } else if (delim === ")") { + top = "\u239E"; + repeat = "\u239F"; + bottom = "\u23A0"; + font = "Size4-Regular"; + } else if (delim === "\\{" || delim === "\\lbrace") { + top = "\u23A7"; + middle = "\u23A8"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\}" || delim === "\\rbrace") { + top = "\u23AB"; + middle = "\u23AC"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lgroup") { + top = "\u23A7"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rgroup") { + top = "\u23AB"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lmoustache") { + top = "\u23A7"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rmoustache") { + top = "\u23AB"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } + + // Get the metrics of the four sections + var topMetrics = getMetrics(top, font); + var topHeightTotal = topMetrics.height + topMetrics.depth; + var repeatMetrics = getMetrics(repeat, font); + var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; + var bottomMetrics = getMetrics(bottom, font); + var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; + var middleHeightTotal = 0; + var middleFactor = 1; + if (middle !== null) { + var middleMetrics = getMetrics(middle, font); + middleHeightTotal = middleMetrics.height + middleMetrics.depth; + middleFactor = 2; // repeat symmetrically above and below middle + } + + // Calcuate the minimal height that the delimiter can have. + // It is at least the size of the top, bottom, and optional middle combined. + var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; + + // Compute the number of copies of the repeat symbol we will need + var repeatCount = Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)); + + // Compute the total height of the delimiter including all the symbols + var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; + + // The center of the delimiter is placed at the center of the axis. Note + // that in this context, "center" means that the delimiter should be + // centered around the axis in the current style, while normally it is + // centered around the axis in textstyle. + var axisHeight = options.fontMetrics().axisHeight; + if (center) { + axisHeight *= options.sizeMultiplier; + } + // Calculate the depth + var depth = realHeightTotal / 2 - axisHeight; + + // Now, we start building the pieces that will go into the vlist + + // Keep a list of the inner pieces + var inners = []; + + // Add the bottom symbol + inners.push(makeInner(bottom, font, mode)); + + if (middle === null) { + // Add that many symbols + for (var i = 0; i < repeatCount; i++) { + inners.push(makeInner(repeat, font, mode)); + } + } else { + // When there is a middle bit, we need the middle part and two repeated + // sections + for (var _i = 0; _i < repeatCount; _i++) { + inners.push(makeInner(repeat, font, mode)); + } + inners.push(makeInner(middle, font, mode)); + for (var _i2 = 0; _i2 < repeatCount; _i2++) { + inners.push(makeInner(repeat, font, mode)); + } + } + + // Add the top symbol + inners.push(makeInner(top, font, mode)); + + // Finally, build the vlist + var newOptions = options.havingBaseStyle(_Style2.default.TEXT); + var inner = _buildCommon2.default.makeVList(inners, "bottom", depth, newOptions); + + return styleWrap((0, _buildCommon.makeSpan)(["delimsizing", "mult"], [inner], newOptions), _Style2.default.TEXT, options, classes); +}; + +var sqrtInnerSVG = { + // The main path geometry is from glyph U221A in the font KaTeX Main + main: "", + + // size1 is from glyph U221A in the font KaTeX_Size1-Regular + 1: "", + + // size2 is from glyph U221A in the font KaTeX_Size2-Regular + 2: "", + + // size3 is from glyph U221A in the font KaTeX_Size3-Regular + 3: "", + + // size4 is from glyph U221A in the font KaTeX_Size4-Regular + 4: "", + + // tall is from glyph U23B7 in the font KaTeX_Size4-Regular + tall: "l-4 4-4 4c-.667.667-2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1h\n-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170c-4-3.333-8.333\n-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 219 661 l218 661z\nM702 0H400000v40H742z'/>" +}; + +var sqrtSpan = function sqrtSpan(height, delim, options) { + // Create a span containing an SVG image of a sqrt symbol. + var span = _buildCommon2.default.makeSpan([], [], options); + var sizeMultiplier = options.sizeMultiplier; // default + + if (delim.type === "small") { + // Get an SVG that is derived from glyph U+221A in font KaTeX-Main. + var newOptions = options.havingBaseStyle(delim.style); + sizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + + span.height = 1 * sizeMultiplier; + span.style.height = span.height + "em"; + span.surdWidth = 0.833 * sizeMultiplier; // from the font. + //In the font, the glyph is 1000 units tall. The font scale is 1:1000. + + span.innerHTML = "\n " + sqrtInnerSVG['main'] + ""; + } else if (delim.type === "large") { + // These SVGs come from fonts: KaTeX_Size1, _Size2, etc. + // Get sqrt height from font data + span.height = sizeToMaxHeight[delim.size] / sizeMultiplier; + span.style.height = span.height + "em"; + span.surdWidth = 1.0 / sizeMultiplier; // from the font + + span.innerHTML = "\n " + sqrtInnerSVG[delim.size] + ""; + } else { + // Tall sqrt. In TeX, this would be stacked using multiple glyphs. + // We'll use a single SVG to accomplish the same thing. + span.height = height / sizeMultiplier; + span.style.height = span.height + "em"; + span.surdWidth = 1.056 / sizeMultiplier; + var viewBoxHeight = Math.floor(span.height * 1000); // scale = 1:1000 + var vertSegment = viewBoxHeight - 54; + + // This \sqrt is customized in both height and width. We set the + // height now. Then CSS will stretch the image to the correct width. + // This SVG path comes from glyph U+23B7, font KaTeX_Size4-Regular. + span.innerHTML = "\n \n "; + } + + span.sizeMultiplier = sizeMultiplier; + + return span; +}; + +// There are three kinds of delimiters, delimiters that stack when they become +// too large +var stackLargeDelimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "\\surd"]; + +// delimiters that always stack +var stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"]; + +// and delimiters that never stack +var stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; + +// Metrics of the different sizes. Found by looking at TeX's output of +// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$ +// Used to create stacked delimiters of appropriate sizes in makeSizedDelim. +var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0]; + +/** + * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4. + */ +var makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) { + // < and > turn into \langle and \rangle in delimiters + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Sized delimiters are never centered. + if (_utils2.default.contains(stackLargeDelimiters, delim) || _utils2.default.contains(stackNeverDelimiters, delim)) { + return makeLargeDelim(delim, size, false, options, mode, classes); + } else if (_utils2.default.contains(stackAlwaysDelimiters, delim)) { + return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes); + } else { + throw new _ParseError2.default("Illegal delimiter: '" + delim + "'"); + } +}; + +/** + * There are three different sequences of delimiter sizes that the delimiters + * follow depending on the kind of delimiter. This is used when creating custom + * sized delimiters to decide whether to create a small, large, or stacked + * delimiter. + * + * In real TeX, these sequences aren't explicitly defined, but are instead + * defined inside the font metrics. Since there are only three sequences that + * are possible for the delimiters that TeX defines, it is easier to just encode + * them explicitly here. + */ + +// Delimiters that never stack try small delimiters and large delimiters only +var stackNeverDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }]; + +// Delimiters that always stack try the small delimiters first, then stack +var stackAlwaysDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "stack" }]; + +// Delimiters that stack when large try the small and then large delimiters, and +// stack afterwards +var stackLargeDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }]; + +/** + * Get the font used in a delimiter based on what kind of delimiter it is. + */ +var delimTypeToFont = function delimTypeToFont(type) { + if (type.type === "small") { + return "Main-Regular"; + } else if (type.type === "large") { + return "Size" + type.size + "-Regular"; + } else if (type.type === "stack") { + return "Size4-Regular"; + } +}; + +/** + * Traverse a sequence of types of delimiters to decide what kind of delimiter + * should be used to create a delimiter of the given height+depth. + */ +var traverseSequence = function traverseSequence(delim, height, sequence, options) { + // Here, we choose the index we should start at in the sequences. In smaller + // sizes (which correspond to larger numbers in style.size) we start earlier + // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts + // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2 + var start = Math.min(2, 3 - options.style.size); + for (var i = start; i < sequence.length; i++) { + if (sequence[i].type === "stack") { + // This is always the last delimiter, so we just break the loop now. + break; + } + + var metrics = getMetrics(delim, delimTypeToFont(sequence[i])); + var heightDepth = metrics.height + metrics.depth; + + // Small delimiters are scaled down versions of the same font, so we + // account for the style change size. + + if (sequence[i].type === "small") { + var newOptions = options.havingBaseStyle(sequence[i].style); + heightDepth *= newOptions.sizeMultiplier; + } + + // Check if the delimiter at this size works for the given height. + if (heightDepth > height) { + return sequence[i]; + } + } + + // If we reached the end of the sequence, return the last sequence element. + return sequence[sequence.length - 1]; +}; + +/** + * Make a delimiter of a given height+depth, with optional centering. Here, we + * traverse the sequences, and create a delimiter that the sequence tells us to. + */ +var makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) { + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Decide what sequence to use + var sequence = void 0; + if (_utils2.default.contains(stackNeverDelimiters, delim)) { + sequence = stackNeverDelimiterSequence; + } else if (_utils2.default.contains(stackLargeDelimiters, delim)) { + sequence = stackLargeDelimiterSequence; + } else { + sequence = stackAlwaysDelimiterSequence; + } + + // Look through the sequence + var delimType = traverseSequence(delim, height, sequence, options); + + if (delim === "\\surd") { + // Get an SVG image for + return sqrtSpan(height, delimType, options); + } else { + // Get the delimiter from font glyphs. + // Depending on the sequence element we decided on, call the + // appropriate function. + if (delimType.type === "small") { + return makeSmallDelim(delim, delimType.style, center, options, mode, classes); + } else if (delimType.type === "large") { + return makeLargeDelim(delim, delimType.size, center, options, mode, classes); + } else if (delimType.type === "stack") { + return makeStackedDelim(delim, height, center, options, mode, classes); + } + } +}; + +/** + * Make a delimiter for use with `\left` and `\right`, given a height and depth + * of an expression that the delimiters surround. + */ +var makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) { + // We always center \left/\right delimiters, so the axis is always shifted + var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; + + // Taken from TeX source, tex.web, function make_left_right + var delimiterFactor = 901; + var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm; + + var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight); + + var totalHeight = Math.max( + // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); + + // Finally, we defer to `makeCustomSizedDelim` with our calculated total + // height + return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes); +}; + +module.exports = { + sizedDelim: makeSizedDelim, + customSizedDelim: makeCustomSizedDelim, + leftRightDelim: makeLeftRightDelim +}; + +},{"./ParseError":29,"./Style":33,"./buildCommon":34,"./fontMetrics":41,"./symbols":48,"./utils":51}],39:[function(require,module,exports){ +"use strict"; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _unicodeRegexes = require("./unicodeRegexes"); + +var _unicodeRegexes2 = _interopRequireDefault(_unicodeRegexes); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Create an HTML className based on a list of classes. In addition to joining + * with spaces, we also remove null or empty classes. + */ +/** + * These objects store the data about the DOM nodes we create, as well as some + * extra data. They can then be transformed into real DOM nodes with the + * `toNode` function or HTML markup using `toMarkup`. They are useful for both + * storing extra properties on the nodes, as well as providing a way to easily + * work with the DOM. + * + * Similar functions for working with MathML nodes exist in mathMLTree.js. + */ +var createClass = function createClass(classes) { + classes = classes.slice(); + for (var i = classes.length - 1; i >= 0; i--) { + if (!classes[i]) { + classes.splice(i, 1); + } + } + + return classes.join(" "); +}; + +/** + * This node represents a span node, with a className, a list of children, and + * an inline style. It also contains information about its height, depth, and + * maxFontSize. + */ + +var span = function () { + function span(classes, children, options) { + (0, _classCallCheck3.default)(this, span); + + this.classes = classes || []; + this.children = children || []; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + this.style = {}; + this.attributes = {}; + this.innerHTML; // used for inline SVG code. + if (options) { + if (options.style.isTight()) { + this.classes.push("mtight"); + } + if (options.getColor()) { + this.style.color = options.getColor(); + } + } + } + + /** + * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all + * browsers support attributes the same, and having too many custom attributes + * is probably bad. + */ + + + (0, _createClass3.default)(span, [{ + key: "setAttribute", + value: function setAttribute(attribute, value) { + this.attributes[attribute] = value; + } + }, { + key: "tryCombine", + value: function tryCombine(sibling) { + return false; + } + + /** + * Convert the span into an HTML node + */ + + }, { + key: "toNode", + value: function toNode() { + var span = document.createElement("span"); + + // Apply the class + span.className = createClass(this.classes); + + // Apply inline styles + for (var style in this.style) { + if (Object.prototype.hasOwnProperty.call(this.style, style)) { + span.style[style] = this.style[style]; + } + } + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + span.setAttribute(attr, this.attributes[attr]); + } + } + + if (this.innerHTML) { + span.innerHTML = this.innerHTML; + } + + // Append the children, also as HTML nodes + for (var i = 0; i < this.children.length; i++) { + span.appendChild(this.children[i].toNode()); + } + + return span; + } + + /** + * Convert the span into an HTML markup string + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = " 0 || createClass(this.classes) !== createClass(sibling.classes) || this.skew !== sibling.skew || this.maxFontSize !== sibling.maxFontSize) { + return false; + } + for (var style in this.style) { + if (this.style.hasOwnProperty(style) && this.style[style] !== sibling.style[style]) { + return false; + } + } + for (var _style in sibling.style) { + if (sibling.style.hasOwnProperty(_style) && this.style[_style] !== sibling.style[_style]) { + return false; + } + } + this.value += sibling.value; + this.height = Math.max(this.height, sibling.height); + this.depth = Math.max(this.depth, sibling.depth); + this.italic = sibling.italic; + return true; + } + + /** + * Creates a text node or span from a symbol node. Note that a span is only + * created if it is needed. + */ + + }, { + key: "toNode", + value: function toNode() { + var node = document.createTextNode(this.value); + var span = null; + + if (this.italic > 0) { + span = document.createElement("span"); + span.style.marginRight = this.italic + "em"; + } + + if (this.classes.length > 0) { + span = span || document.createElement("span"); + span.className = createClass(this.classes); + } + + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + span = span || document.createElement("span"); + span.style[style] = this.style[style]; + } + } + + if (span) { + span.appendChild(node); + return span; + } else { + return node; + } + } + + /** + * Creates markup for a symbol node. + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + // TODO(alpert): More duplication than I'd like from + // span.prototype.toMarkup and symbolNode.prototype.toNode... + var needsSpan = false; + + var markup = " 0) { + styles += "margin-right:" + this.italic + "em;"; + } + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + } + } + + if (styles) { + needsSpan = true; + markup += " style=\"" + _utils2.default.escape(styles) + "\""; + } + + var escaped = _utils2.default.escape(this.value); + if (needsSpan) { + markup += ">"; + markup += escaped; + markup += ""; + return markup; + } else { + return escaped; + } + } + }]); + return symbolNode; +}(); + +module.exports = { + span: span, + documentFragment: documentFragment, + symbolNode: symbolNode +}; + +},{"./unicodeRegexes":49,"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],40:[function(require,module,exports){ +"use strict"; + +var _ParseNode = require("./ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Parse the body of the environment, with rows delimited by \\ and + * columns delimited by &, and create a nested list in row-major order + * with one group per cell. If given an optional argument style + * ("text", "display", etc.), then each cell is cast into that style. + */ +/* eslint no-constant-condition:0 */ +function parseArray(parser, result, style) { + var row = []; + var body = [row]; + var rowGaps = []; + while (true) { + var cell = parser.parseExpression(false, null); + cell = new _ParseNode2.default("ordgroup", cell, parser.mode); + if (style) { + cell = new _ParseNode2.default("styling", { + style: style, + value: [cell] + }, parser.mode); + } + row.push(cell); + var next = parser.nextToken.text; + if (next === "&") { + parser.consume(); + } else if (next === "\\end") { + break; + } else if (next === "\\\\" || next === "\\cr") { + var cr = parser.parseFunction(); + rowGaps.push(cr.value.size); + row = []; + body.push(row); + } else { + throw new _ParseError2.default("Expected & or \\\\ or \\end", parser.nextToken); + } + } + result.body = body; + result.rowGaps = rowGaps; + return new _ParseNode2.default(result.type, result, parser.mode); +} + +/* + * An environment definition is very similar to a function definition: + * it is declared with a name or a list of names, a set of properties + * and a handler containing the actual implementation. + * + * The properties include: + * - numArgs: The number of arguments after the \begin{name} function. + * - argTypes: (optional) Just like for a function + * - allowedInText: (optional) Whether or not the environment is allowed inside + * text mode (default false) (not enforced yet) + * - numOptionalArgs: (optional) Just like for a function + * A bare number instead of that object indicates the numArgs value. + * + * The handler function will receive two arguments + * - context: information and references provided by the parser + * - args: an array of arguments passed to \begin{name} + * The context contains the following properties: + * - envName: the name of the environment, one of the listed names. + * - parser: the parser object + * - lexer: the lexer object + * - positions: the positions associated with these arguments from args. + * The handler must return a ParseResult. + */ +function defineEnvironment(names, props, handler) { + if (typeof names === "string") { + names = [names]; + } + if (typeof props === "number") { + props = { numArgs: props }; + } + // Set default values of environments + var data = { + numArgs: props.numArgs || 0, + argTypes: props.argTypes, + greediness: 1, + allowedInText: !!props.allowedInText, + numOptionalArgs: props.numOptionalArgs || 0, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + module.exports[names[i]] = data; + } +} + +// Decides on a style for cells in an array according to whether the given +// environment name starts with the letter 'd'. +function dCellStyle(envName) { + if (envName.substr(0, 1) === "d") { + return "display"; + } else { + return "text"; + } +} + +// Arrays are part of LaTeX, defined in lttab.dtx so its documentation +// is part of the source2e.pdf file of LaTeX2e source documentation. +// {darray} is an {array} environment where cells are set in \displaystyle, +// as defined in nccmath.sty. +defineEnvironment(["array", "darray"], { + numArgs: 1 +}, function (context, args) { + var colalign = args[0]; + colalign = colalign.value.map ? colalign.value : [colalign]; + var cols = colalign.map(function (node) { + var ca = node.value; + if ("lcr".indexOf(ca) !== -1) { + return { + type: "align", + align: ca + }; + } else if (ca === "|") { + return { + type: "separator", + separator: "|" + }; + } + throw new _ParseError2.default("Unknown column alignment: " + node.value, node); + }); + var res = { + type: "array", + cols: cols, + hskipBeforeAndAfter: true }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + return res; +}); + +// The matrix environments of amsmath builds on the array environment +// of LaTeX, which is discussed above. +defineEnvironment(["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"], {}, function (context) { + var delimiters = { + "matrix": null, + "pmatrix": ["(", ")"], + "bmatrix": ["[", "]"], + "Bmatrix": ["\\{", "\\}"], + "vmatrix": ["|", "|"], + "Vmatrix": ["\\Vert", "\\Vert"] + }[context.envName]; + var res = { + type: "array", + hskipBeforeAndAfter: false }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + if (delimiters) { + res = new _ParseNode2.default("leftright", { + body: [res], + left: delimiters[0], + right: delimiters[1] + }, context.mode); + } + return res; +}); + +// A cases environment (in amsmath.sty) is almost equivalent to +// \def\arraystretch{1.2}% +// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. +// {dcases} is a {cases} environment where cells are set in \displaystyle, +// as defined in mathtools.sty. +defineEnvironment(["cases", "dcases"], {}, function (context) { + var res = { + type: "array", + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: 1.0 }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + res = new _ParseNode2.default("leftright", { + body: [res], + left: "\\{", + right: "." + }, context.mode); + return res; +}); + +// An aligned environment is like the align* environment +// except it operates within math mode. +// Note that we assume \nomallineskiplimit to be zero, +// so that \strut@ is the same as \strut. +defineEnvironment("aligned", {}, function (context) { + var res = { + type: "array", + cols: [], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + // Count number of columns = maximum number of cells in each row. + // At the same time, prepend empty group {} at beginning of every second + // cell in each row (starting with second cell) so that operators become + // binary. This behavior is implemented in amsmath's \start@aligned. + var emptyGroup = new _ParseNode2.default("ordgroup", [], context.mode); + var numCols = 0; + res.value.body.forEach(function (row) { + for (var i = 1; i < row.length; i += 2) { + // Modify ordgroup node within styling node + var ordgroup = row[i].value.value[0]; + ordgroup.value.unshift(emptyGroup); + } + if (numCols < row.length) { + numCols = row.length; + } + }); + for (var i = 0; i < numCols; ++i) { + var align = "r"; + var pregap = 0; + if (i % 2 === 1) { + align = "l"; + } else if (i > 0) { + pregap = 2; // one \qquad between columns + } + res.value.cols[i] = { + type: "align", + align: align, + pregap: pregap, + postgap: 0 + }; + } + return res; +}); + +// A gathered environment is like an array environment with one centered +// column, but where rows are considered lines so get \jot line spacing +// and contents are set in \displaystyle. +defineEnvironment("gathered", {}, function (context) { + var res = { + type: "array", + cols: [{ + type: "align", + align: "c" + }], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + return res; +}); + +},{"./ParseError":29,"./ParseNode":30}],41:[function(require,module,exports){ +"use strict"; + +var _unicodeRegexes = require("./unicodeRegexes"); + +var _fontMetricsData = require("./fontMetricsData"); + +var _fontMetricsData2 = _interopRequireDefault(_fontMetricsData); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This file contains metrics regarding fonts and individual symbols. The sigma + * and xi variables, as well as the metricMap map contain data extracted from + * TeX, TeX font metrics, and the TTF files. These data are then exposed via the + * `metrics` variable and the getCharacterMetrics function. + */ + +// In TeX, there are actually three sets of dimensions, one for each of +// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4: +// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are +// provided in the the arrays below, in that order. +// +// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively. +// This was determined by running the following script: +// +// latex -interaction=nonstopmode \ +// '\documentclass{article}\usepackage{amsmath}\begin{document}' \ +// '$a$ \expandafter\show\the\textfont2' \ +// '\expandafter\show\the\scriptfont2' \ +// '\expandafter\show\the\scriptscriptfont2' \ +// '\stop' +// +// The metrics themselves were retreived using the following commands: +// +// tftopl cmsy10 +// tftopl cmsy7 +// tftopl cmsy5 +// +// The output of each of these commands is quite lengthy. The only part we +// care about is the FONTDIMEN section. Each value is measured in EMs. +var sigmasAndXis = { + slant: [0.250, 0.250, 0.250], // sigma1 + space: [0.000, 0.000, 0.000], // sigma2 + stretch: [0.000, 0.000, 0.000], // sigma3 + shrink: [0.000, 0.000, 0.000], // sigma4 + xHeight: [0.431, 0.431, 0.431], // sigma5 + quad: [1.000, 1.171, 1.472], // sigma6 + extraSpace: [0.000, 0.000, 0.000], // sigma7 + num1: [0.677, 0.732, 0.925], // sigma8 + num2: [0.394, 0.384, 0.387], // sigma9 + num3: [0.444, 0.471, 0.504], // sigma10 + denom1: [0.686, 0.752, 1.025], // sigma11 + denom2: [0.345, 0.344, 0.532], // sigma12 + sup1: [0.413, 0.503, 0.504], // sigma13 + sup2: [0.363, 0.431, 0.404], // sigma14 + sup3: [0.289, 0.286, 0.294], // sigma15 + sub1: [0.150, 0.143, 0.200], // sigma16 + sub2: [0.247, 0.286, 0.400], // sigma17 + supDrop: [0.386, 0.353, 0.494], // sigma18 + subDrop: [0.050, 0.071, 0.100], // sigma19 + delim1: [2.390, 1.700, 1.980], // sigma20 + delim2: [1.010, 1.157, 1.420], // sigma21 + axisHeight: [0.250, 0.250, 0.250], // sigma22 + + // These font metrics are extracted from TeX by using tftopl on cmex10.tfm; + // they correspond to the font parameters of the extension fonts (family 3). + // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to + // match cmex7, we'd use cmex7.tfm values for script and scriptscript + // values. + defaultRuleThickness: [0.04, 0.049, 0.049], // xi8; cmex7: 0.049 + bigOpSpacing1: [0.111, 0.111, 0.111], // xi9 + bigOpSpacing2: [0.166, 0.166, 0.166], // xi10 + bigOpSpacing3: [0.2, 0.2, 0.2], // xi11 + bigOpSpacing4: [0.6, 0.611, 0.611], // xi12; cmex7: 0.611 + bigOpSpacing5: [0.1, 0.143, 0.143], // xi13; cmex7: 0.143 + + // The \sqrt rule width is taken from the height of the surd character. + // Since we use the same font at all sizes, this thickness doesn't scale. + sqrtRuleThickness: [0.04, 0.04, 0.04], + + // This value determines how large a pt is, for metrics which are defined + // in terms of pts. + // This value is also used in katex.less; if you change it make sure the + // values match. + ptPerEm: [10.0, 10.0, 10.0], + + // The space between adjacent `|` columns in an array definition. From + // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm. + doubleRuleSep: [0.2, 0.2, 0.2] +}; + +// This map contains a mapping from font name and character code to character +// metrics, including height, depth, italic correction, and skew (kern from the +// character to the corresponding \skewchar) +// This map is generated via `make metrics`. It should not be changed manually. + + +// These are very rough approximations. We default to Times New Roman which +// should have Latin-1 and Cyrillic characters, but may not depending on the +// operating system. The metrics do not account for extra height from the +// accents. In the case of Cyrillic characters which have both ascenders and +// descenders we prefer approximations with ascenders, primarily to prevent +// the fraction bar or root line from intersecting the glyph. +// TODO(kevinb) allow union of multiple glyph metrics for better accuracy. +var extraCharacterMap = { + // Latin-1 + 'À': 'A', + 'Á': 'A', + 'Â': 'A', + 'Ã': 'A', + 'Ä': 'A', + 'Å': 'A', + 'Æ': 'A', + 'Ç': 'C', + 'È': 'E', + 'É': 'E', + 'Ê': 'E', + 'Ë': 'E', + 'Ì': 'I', + 'Í': 'I', + 'Î': 'I', + 'Ï': 'I', + 'Ð': 'D', + 'Ñ': 'N', + 'Ò': 'O', + 'Ó': 'O', + 'Ô': 'O', + 'Õ': 'O', + 'Ö': 'O', + 'Ø': 'O', + 'Ù': 'U', + 'Ú': 'U', + 'Û': 'U', + 'Ü': 'U', + 'Ý': 'Y', + 'Þ': 'o', + 'ß': 'B', + 'à': 'a', + 'á': 'a', + 'â': 'a', + 'ã': 'a', + 'ä': 'a', + 'å': 'a', + 'æ': 'a', + 'ç': 'c', + 'è': 'e', + 'é': 'e', + 'ê': 'e', + 'ë': 'e', + 'ì': 'i', + 'í': 'i', + 'î': 'i', + 'ï': 'i', + 'ð': 'd', + 'ñ': 'n', + 'ò': 'o', + 'ó': 'o', + 'ô': 'o', + 'õ': 'o', + 'ö': 'o', + 'ø': 'o', + 'ù': 'u', + 'ú': 'u', + 'û': 'u', + 'ü': 'u', + 'ý': 'y', + 'þ': 'o', + 'ÿ': 'y', + + // Cyrillic + 'А': 'A', + 'Б': 'B', + 'В': 'B', + 'Г': 'F', + 'Д': 'A', + 'Е': 'E', + 'Ж': 'K', + 'З': '3', + 'И': 'N', + 'Й': 'N', + 'К': 'K', + 'Л': 'N', + 'М': 'M', + 'Н': 'H', + 'О': 'O', + 'П': 'N', + 'Р': 'P', + 'С': 'C', + 'Т': 'T', + 'У': 'y', + 'Ф': 'O', + 'Х': 'X', + 'Ц': 'U', + 'Ч': 'h', + 'Ш': 'W', + 'Щ': 'W', + 'Ъ': 'B', + 'Ы': 'X', + 'Ь': 'B', + 'Э': '3', + 'Ю': 'X', + 'Я': 'R', + 'а': 'a', + 'б': 'b', + 'в': 'a', + 'г': 'r', + 'д': 'y', + 'е': 'e', + 'ж': 'm', + 'з': 'e', + 'и': 'n', + 'й': 'n', + 'к': 'n', + 'л': 'n', + 'м': 'm', + 'н': 'n', + 'о': 'o', + 'п': 'n', + 'р': 'p', + 'с': 'c', + 'т': 'o', + 'у': 'y', + 'ф': 'b', + 'х': 'x', + 'ц': 'n', + 'ч': 'n', + 'ш': 'w', + 'щ': 'w', + 'ъ': 'a', + 'ы': 'm', + 'ь': 'a', + 'э': 'e', + 'ю': 'm', + 'я': 'r' +}; + +/** + * This function is a convenience function for looking up information in the + * metricMap table. It takes a character as a string, and a style. + * + * Note: the `width` property may be undefined if fontMetricsData.js wasn't + * built using `Make extended_metrics`. + */ +var getCharacterMetrics = function getCharacterMetrics(character, style) { + var ch = character.charCodeAt(0); + if (character[0] in extraCharacterMap) { + ch = extraCharacterMap[character[0]].charCodeAt(0); + } else if (_unicodeRegexes.cjkRegex.test(character[0])) { + ch = 'M'.charCodeAt(0); + } + var metrics = _fontMetricsData2.default[style][ch]; + if (metrics) { + return { + depth: metrics[0], + height: metrics[1], + italic: metrics[2], + skew: metrics[3], + width: metrics[4] + }; + } +}; + +var fontMetricsBySizeIndex = {}; + +/** + * Get the font metrics for a given size. + */ +var getFontMetrics = function getFontMetrics(size) { + var sizeIndex = void 0; + if (size >= 5) { + sizeIndex = 0; + } else if (size >= 3) { + sizeIndex = 1; + } else { + sizeIndex = 2; + } + if (!fontMetricsBySizeIndex[sizeIndex]) { + var metrics = fontMetricsBySizeIndex[sizeIndex] = {}; + for (var key in sigmasAndXis) { + if (sigmasAndXis.hasOwnProperty(key)) { + metrics[key] = sigmasAndXis[key][sizeIndex]; + } + } + metrics.cssEmPerMu = metrics.quad / 18; + } + return fontMetricsBySizeIndex[sizeIndex]; +}; + +module.exports = { + getFontMetrics: getFontMetrics, + getCharacterMetrics: getCharacterMetrics +}; + +},{"./fontMetricsData":42,"./unicodeRegexes":49}],42:[function(require,module,exports){ +"use strict"; + +module.exports = { + "AMS-Regular": { + "65": [0, 0.68889, 0, 0], + "66": [0, 0.68889, 0, 0], + "67": [0, 0.68889, 0, 0], + "68": [0, 0.68889, 0, 0], + "69": [0, 0.68889, 0, 0], + "70": [0, 0.68889, 0, 0], + "71": [0, 0.68889, 0, 0], + "72": [0, 0.68889, 0, 0], + "73": [0, 0.68889, 0, 0], + "74": [0.16667, 0.68889, 0, 0], + "75": [0, 0.68889, 0, 0], + "76": [0, 0.68889, 0, 0], + "77": [0, 0.68889, 0, 0], + "78": [0, 0.68889, 0, 0], + "79": [0.16667, 0.68889, 0, 0], + "80": [0, 0.68889, 0, 0], + "81": [0.16667, 0.68889, 0, 0], + "82": [0, 0.68889, 0, 0], + "83": [0, 0.68889, 0, 0], + "84": [0, 0.68889, 0, 0], + "85": [0, 0.68889, 0, 0], + "86": [0, 0.68889, 0, 0], + "87": [0, 0.68889, 0, 0], + "88": [0, 0.68889, 0, 0], + "89": [0, 0.68889, 0, 0], + "90": [0, 0.68889, 0, 0], + "107": [0, 0.68889, 0, 0], + "165": [0, 0.675, 0.025, 0], + "174": [0.15559, 0.69224, 0, 0], + "240": [0, 0.68889, 0, 0], + "295": [0, 0.68889, 0, 0], + "710": [0, 0.825, 0, 0], + "732": [0, 0.9, 0, 0], + "770": [0, 0.825, 0, 0], + "771": [0, 0.9, 0, 0], + "989": [0.08167, 0.58167, 0, 0], + "1008": [0, 0.43056, 0.04028, 0], + "8245": [0, 0.54986, 0, 0], + "8463": [0, 0.68889, 0, 0], + "8487": [0, 0.68889, 0, 0], + "8498": [0, 0.68889, 0, 0], + "8502": [0, 0.68889, 0, 0], + "8503": [0, 0.68889, 0, 0], + "8504": [0, 0.68889, 0, 0], + "8513": [0, 0.68889, 0, 0], + "8592": [-0.03598, 0.46402, 0, 0], + "8594": [-0.03598, 0.46402, 0, 0], + "8602": [-0.13313, 0.36687, 0, 0], + "8603": [-0.13313, 0.36687, 0, 0], + "8606": [0.01354, 0.52239, 0, 0], + "8608": [0.01354, 0.52239, 0, 0], + "8610": [0.01354, 0.52239, 0, 0], + "8611": [0.01354, 0.52239, 0, 0], + "8619": [0, 0.54986, 0, 0], + "8620": [0, 0.54986, 0, 0], + "8621": [-0.13313, 0.37788, 0, 0], + "8622": [-0.13313, 0.36687, 0, 0], + "8624": [0, 0.69224, 0, 0], + "8625": [0, 0.69224, 0, 0], + "8630": [0, 0.43056, 0, 0], + "8631": [0, 0.43056, 0, 0], + "8634": [0.08198, 0.58198, 0, 0], + "8635": [0.08198, 0.58198, 0, 0], + "8638": [0.19444, 0.69224, 0, 0], + "8639": [0.19444, 0.69224, 0, 0], + "8642": [0.19444, 0.69224, 0, 0], + "8643": [0.19444, 0.69224, 0, 0], + "8644": [0.1808, 0.675, 0, 0], + "8646": [0.1808, 0.675, 0, 0], + "8647": [0.1808, 0.675, 0, 0], + "8648": [0.19444, 0.69224, 0, 0], + "8649": [0.1808, 0.675, 0, 0], + "8650": [0.19444, 0.69224, 0, 0], + "8651": [0.01354, 0.52239, 0, 0], + "8652": [0.01354, 0.52239, 0, 0], + "8653": [-0.13313, 0.36687, 0, 0], + "8654": [-0.13313, 0.36687, 0, 0], + "8655": [-0.13313, 0.36687, 0, 0], + "8666": [0.13667, 0.63667, 0, 0], + "8667": [0.13667, 0.63667, 0, 0], + "8669": [-0.13313, 0.37788, 0, 0], + "8672": [-0.064, 0.437, 0, 0], + "8674": [-0.064, 0.437, 0, 0], + "8705": [0, 0.825, 0, 0], + "8708": [0, 0.68889, 0, 0], + "8709": [0.08167, 0.58167, 0, 0], + "8717": [0, 0.43056, 0, 0], + "8722": [-0.03598, 0.46402, 0, 0], + "8724": [0.08198, 0.69224, 0, 0], + "8726": [0.08167, 0.58167, 0, 0], + "8733": [0, 0.69224, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8737": [0, 0.69224, 0, 0], + "8738": [0.03517, 0.52239, 0, 0], + "8739": [0.08167, 0.58167, 0, 0], + "8740": [0.25142, 0.74111, 0, 0], + "8741": [0.08167, 0.58167, 0, 0], + "8742": [0.25142, 0.74111, 0, 0], + "8756": [0, 0.69224, 0, 0], + "8757": [0, 0.69224, 0, 0], + "8764": [-0.13313, 0.36687, 0, 0], + "8765": [-0.13313, 0.37788, 0, 0], + "8769": [-0.13313, 0.36687, 0, 0], + "8770": [-0.03625, 0.46375, 0, 0], + "8774": [0.30274, 0.79383, 0, 0], + "8776": [-0.01688, 0.48312, 0, 0], + "8778": [0.08167, 0.58167, 0, 0], + "8782": [0.06062, 0.54986, 0, 0], + "8783": [0.06062, 0.54986, 0, 0], + "8785": [0.08198, 0.58198, 0, 0], + "8786": [0.08198, 0.58198, 0, 0], + "8787": [0.08198, 0.58198, 0, 0], + "8790": [0, 0.69224, 0, 0], + "8791": [0.22958, 0.72958, 0, 0], + "8796": [0.08198, 0.91667, 0, 0], + "8806": [0.25583, 0.75583, 0, 0], + "8807": [0.25583, 0.75583, 0, 0], + "8808": [0.25142, 0.75726, 0, 0], + "8809": [0.25142, 0.75726, 0, 0], + "8812": [0.25583, 0.75583, 0, 0], + "8814": [0.20576, 0.70576, 0, 0], + "8815": [0.20576, 0.70576, 0, 0], + "8816": [0.30274, 0.79383, 0, 0], + "8817": [0.30274, 0.79383, 0, 0], + "8818": [0.22958, 0.72958, 0, 0], + "8819": [0.22958, 0.72958, 0, 0], + "8822": [0.1808, 0.675, 0, 0], + "8823": [0.1808, 0.675, 0, 0], + "8828": [0.13667, 0.63667, 0, 0], + "8829": [0.13667, 0.63667, 0, 0], + "8830": [0.22958, 0.72958, 0, 0], + "8831": [0.22958, 0.72958, 0, 0], + "8832": [0.20576, 0.70576, 0, 0], + "8833": [0.20576, 0.70576, 0, 0], + "8840": [0.30274, 0.79383, 0, 0], + "8841": [0.30274, 0.79383, 0, 0], + "8842": [0.13597, 0.63597, 0, 0], + "8843": [0.13597, 0.63597, 0, 0], + "8847": [0.03517, 0.54986, 0, 0], + "8848": [0.03517, 0.54986, 0, 0], + "8858": [0.08198, 0.58198, 0, 0], + "8859": [0.08198, 0.58198, 0, 0], + "8861": [0.08198, 0.58198, 0, 0], + "8862": [0, 0.675, 0, 0], + "8863": [0, 0.675, 0, 0], + "8864": [0, 0.675, 0, 0], + "8865": [0, 0.675, 0, 0], + "8872": [0, 0.69224, 0, 0], + "8873": [0, 0.69224, 0, 0], + "8874": [0, 0.69224, 0, 0], + "8876": [0, 0.68889, 0, 0], + "8877": [0, 0.68889, 0, 0], + "8878": [0, 0.68889, 0, 0], + "8879": [0, 0.68889, 0, 0], + "8882": [0.03517, 0.54986, 0, 0], + "8883": [0.03517, 0.54986, 0, 0], + "8884": [0.13667, 0.63667, 0, 0], + "8885": [0.13667, 0.63667, 0, 0], + "8888": [0, 0.54986, 0, 0], + "8890": [0.19444, 0.43056, 0, 0], + "8891": [0.19444, 0.69224, 0, 0], + "8892": [0.19444, 0.69224, 0, 0], + "8901": [0, 0.54986, 0, 0], + "8903": [0.08167, 0.58167, 0, 0], + "8905": [0.08167, 0.58167, 0, 0], + "8906": [0.08167, 0.58167, 0, 0], + "8907": [0, 0.69224, 0, 0], + "8908": [0, 0.69224, 0, 0], + "8909": [-0.03598, 0.46402, 0, 0], + "8910": [0, 0.54986, 0, 0], + "8911": [0, 0.54986, 0, 0], + "8912": [0.03517, 0.54986, 0, 0], + "8913": [0.03517, 0.54986, 0, 0], + "8914": [0, 0.54986, 0, 0], + "8915": [0, 0.54986, 0, 0], + "8916": [0, 0.69224, 0, 0], + "8918": [0.0391, 0.5391, 0, 0], + "8919": [0.0391, 0.5391, 0, 0], + "8920": [0.03517, 0.54986, 0, 0], + "8921": [0.03517, 0.54986, 0, 0], + "8922": [0.38569, 0.88569, 0, 0], + "8923": [0.38569, 0.88569, 0, 0], + "8926": [0.13667, 0.63667, 0, 0], + "8927": [0.13667, 0.63667, 0, 0], + "8928": [0.30274, 0.79383, 0, 0], + "8929": [0.30274, 0.79383, 0, 0], + "8934": [0.23222, 0.74111, 0, 0], + "8935": [0.23222, 0.74111, 0, 0], + "8936": [0.23222, 0.74111, 0, 0], + "8937": [0.23222, 0.74111, 0, 0], + "8938": [0.20576, 0.70576, 0, 0], + "8939": [0.20576, 0.70576, 0, 0], + "8940": [0.30274, 0.79383, 0, 0], + "8941": [0.30274, 0.79383, 0, 0], + "8994": [0.19444, 0.69224, 0, 0], + "8995": [0.19444, 0.69224, 0, 0], + "9416": [0.15559, 0.69224, 0, 0], + "9484": [0, 0.69224, 0, 0], + "9488": [0, 0.69224, 0, 0], + "9492": [0, 0.37788, 0, 0], + "9496": [0, 0.37788, 0, 0], + "9585": [0.19444, 0.68889, 0, 0], + "9586": [0.19444, 0.74111, 0, 0], + "9632": [0, 0.675, 0, 0], + "9633": [0, 0.675, 0, 0], + "9650": [0, 0.54986, 0, 0], + "9651": [0, 0.54986, 0, 0], + "9654": [0.03517, 0.54986, 0, 0], + "9660": [0, 0.54986, 0, 0], + "9661": [0, 0.54986, 0, 0], + "9664": [0.03517, 0.54986, 0, 0], + "9674": [0.11111, 0.69224, 0, 0], + "9733": [0.19444, 0.69224, 0, 0], + "10003": [0, 0.69224, 0, 0], + "10016": [0, 0.69224, 0, 0], + "10731": [0.11111, 0.69224, 0, 0], + "10846": [0.19444, 0.75583, 0, 0], + "10877": [0.13667, 0.63667, 0, 0], + "10878": [0.13667, 0.63667, 0, 0], + "10885": [0.25583, 0.75583, 0, 0], + "10886": [0.25583, 0.75583, 0, 0], + "10887": [0.13597, 0.63597, 0, 0], + "10888": [0.13597, 0.63597, 0, 0], + "10889": [0.26167, 0.75726, 0, 0], + "10890": [0.26167, 0.75726, 0, 0], + "10891": [0.48256, 0.98256, 0, 0], + "10892": [0.48256, 0.98256, 0, 0], + "10901": [0.13667, 0.63667, 0, 0], + "10902": [0.13667, 0.63667, 0, 0], + "10933": [0.25142, 0.75726, 0, 0], + "10934": [0.25142, 0.75726, 0, 0], + "10935": [0.26167, 0.75726, 0, 0], + "10936": [0.26167, 0.75726, 0, 0], + "10937": [0.26167, 0.75726, 0, 0], + "10938": [0.26167, 0.75726, 0, 0], + "10949": [0.25583, 0.75583, 0, 0], + "10950": [0.25583, 0.75583, 0, 0], + "10955": [0.28481, 0.79383, 0, 0], + "10956": [0.28481, 0.79383, 0, 0], + "57350": [0.08167, 0.58167, 0, 0], + "57351": [0.08167, 0.58167, 0, 0], + "57352": [0.08167, 0.58167, 0, 0], + "57353": [0, 0.43056, 0.04028, 0], + "57356": [0.25142, 0.75726, 0, 0], + "57357": [0.25142, 0.75726, 0, 0], + "57358": [0.41951, 0.91951, 0, 0], + "57359": [0.30274, 0.79383, 0, 0], + "57360": [0.30274, 0.79383, 0, 0], + "57361": [0.41951, 0.91951, 0, 0], + "57366": [0.25142, 0.75726, 0, 0], + "57367": [0.25142, 0.75726, 0, 0], + "57368": [0.25142, 0.75726, 0, 0], + "57369": [0.25142, 0.75726, 0, 0], + "57370": [0.13597, 0.63597, 0, 0], + "57371": [0.13597, 0.63597, 0, 0] + }, + "Caligraphic-Regular": { + "48": [0, 0.43056, 0, 0], + "49": [0, 0.43056, 0, 0], + "50": [0, 0.43056, 0, 0], + "51": [0.19444, 0.43056, 0, 0], + "52": [0.19444, 0.43056, 0, 0], + "53": [0.19444, 0.43056, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0.19444, 0.43056, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0.19444, 0.43056, 0, 0], + "65": [0, 0.68333, 0, 0.19445], + "66": [0, 0.68333, 0.03041, 0.13889], + "67": [0, 0.68333, 0.05834, 0.13889], + "68": [0, 0.68333, 0.02778, 0.08334], + "69": [0, 0.68333, 0.08944, 0.11111], + "70": [0, 0.68333, 0.09931, 0.11111], + "71": [0.09722, 0.68333, 0.0593, 0.11111], + "72": [0, 0.68333, 0.00965, 0.11111], + "73": [0, 0.68333, 0.07382, 0], + "74": [0.09722, 0.68333, 0.18472, 0.16667], + "75": [0, 0.68333, 0.01445, 0.05556], + "76": [0, 0.68333, 0, 0.13889], + "77": [0, 0.68333, 0, 0.13889], + "78": [0, 0.68333, 0.14736, 0.08334], + "79": [0, 0.68333, 0.02778, 0.11111], + "80": [0, 0.68333, 0.08222, 0.08334], + "81": [0.09722, 0.68333, 0, 0.11111], + "82": [0, 0.68333, 0, 0.08334], + "83": [0, 0.68333, 0.075, 0.13889], + "84": [0, 0.68333, 0.25417, 0], + "85": [0, 0.68333, 0.09931, 0.08334], + "86": [0, 0.68333, 0.08222, 0], + "87": [0, 0.68333, 0.08222, 0.08334], + "88": [0, 0.68333, 0.14643, 0.13889], + "89": [0.09722, 0.68333, 0.08222, 0.08334], + "90": [0, 0.68333, 0.07944, 0.13889] + }, + "Fraktur-Regular": { + "33": [0, 0.69141, 0, 0], + "34": [0, 0.69141, 0, 0], + "38": [0, 0.69141, 0, 0], + "39": [0, 0.69141, 0, 0], + "40": [0.24982, 0.74947, 0, 0], + "41": [0.24982, 0.74947, 0, 0], + "42": [0, 0.62119, 0, 0], + "43": [0.08319, 0.58283, 0, 0], + "44": [0, 0.10803, 0, 0], + "45": [0.08319, 0.58283, 0, 0], + "46": [0, 0.10803, 0, 0], + "47": [0.24982, 0.74947, 0, 0], + "48": [0, 0.47534, 0, 0], + "49": [0, 0.47534, 0, 0], + "50": [0, 0.47534, 0, 0], + "51": [0.18906, 0.47534, 0, 0], + "52": [0.18906, 0.47534, 0, 0], + "53": [0.18906, 0.47534, 0, 0], + "54": [0, 0.69141, 0, 0], + "55": [0.18906, 0.47534, 0, 0], + "56": [0, 0.69141, 0, 0], + "57": [0.18906, 0.47534, 0, 0], + "58": [0, 0.47534, 0, 0], + "59": [0.12604, 0.47534, 0, 0], + "61": [-0.13099, 0.36866, 0, 0], + "63": [0, 0.69141, 0, 0], + "65": [0, 0.69141, 0, 0], + "66": [0, 0.69141, 0, 0], + "67": [0, 0.69141, 0, 0], + "68": [0, 0.69141, 0, 0], + "69": [0, 0.69141, 0, 0], + "70": [0.12604, 0.69141, 0, 0], + "71": [0, 0.69141, 0, 0], + "72": [0.06302, 0.69141, 0, 0], + "73": [0, 0.69141, 0, 0], + "74": [0.12604, 0.69141, 0, 0], + "75": [0, 0.69141, 0, 0], + "76": [0, 0.69141, 0, 0], + "77": [0, 0.69141, 0, 0], + "78": [0, 0.69141, 0, 0], + "79": [0, 0.69141, 0, 0], + "80": [0.18906, 0.69141, 0, 0], + "81": [0.03781, 0.69141, 0, 0], + "82": [0, 0.69141, 0, 0], + "83": [0, 0.69141, 0, 0], + "84": [0, 0.69141, 0, 0], + "85": [0, 0.69141, 0, 0], + "86": [0, 0.69141, 0, 0], + "87": [0, 0.69141, 0, 0], + "88": [0, 0.69141, 0, 0], + "89": [0.18906, 0.69141, 0, 0], + "90": [0.12604, 0.69141, 0, 0], + "91": [0.24982, 0.74947, 0, 0], + "93": [0.24982, 0.74947, 0, 0], + "94": [0, 0.69141, 0, 0], + "97": [0, 0.47534, 0, 0], + "98": [0, 0.69141, 0, 0], + "99": [0, 0.47534, 0, 0], + "100": [0, 0.62119, 0, 0], + "101": [0, 0.47534, 0, 0], + "102": [0.18906, 0.69141, 0, 0], + "103": [0.18906, 0.47534, 0, 0], + "104": [0.18906, 0.69141, 0, 0], + "105": [0, 0.69141, 0, 0], + "106": [0, 0.69141, 0, 0], + "107": [0, 0.69141, 0, 0], + "108": [0, 0.69141, 0, 0], + "109": [0, 0.47534, 0, 0], + "110": [0, 0.47534, 0, 0], + "111": [0, 0.47534, 0, 0], + "112": [0.18906, 0.52396, 0, 0], + "113": [0.18906, 0.47534, 0, 0], + "114": [0, 0.47534, 0, 0], + "115": [0, 0.47534, 0, 0], + "116": [0, 0.62119, 0, 0], + "117": [0, 0.47534, 0, 0], + "118": [0, 0.52396, 0, 0], + "119": [0, 0.52396, 0, 0], + "120": [0.18906, 0.47534, 0, 0], + "121": [0.18906, 0.47534, 0, 0], + "122": [0.18906, 0.47534, 0, 0], + "8216": [0, 0.69141, 0, 0], + "8217": [0, 0.69141, 0, 0], + "58112": [0, 0.62119, 0, 0], + "58113": [0, 0.62119, 0, 0], + "58114": [0.18906, 0.69141, 0, 0], + "58115": [0.18906, 0.69141, 0, 0], + "58116": [0.18906, 0.47534, 0, 0], + "58117": [0, 0.69141, 0, 0], + "58118": [0, 0.62119, 0, 0], + "58119": [0, 0.47534, 0, 0] + }, + "Main-Bold": { + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.13333, 0.63333, 0, 0], + "44": [0.19444, 0.15556, 0, 0], + "45": [0, 0.44444, 0, 0], + "46": [0, 0.15556, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.64444, 0, 0], + "49": [0, 0.64444, 0, 0], + "50": [0, 0.64444, 0, 0], + "51": [0, 0.64444, 0, 0], + "52": [0, 0.64444, 0, 0], + "53": [0, 0.64444, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0, 0.64444, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0, 0.64444, 0, 0], + "58": [0, 0.44444, 0, 0], + "59": [0.19444, 0.44444, 0, 0], + "60": [0.08556, 0.58556, 0, 0], + "61": [-0.10889, 0.39111, 0, 0], + "62": [0.08556, 0.58556, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.68611, 0, 0], + "66": [0, 0.68611, 0, 0], + "67": [0, 0.68611, 0, 0], + "68": [0, 0.68611, 0, 0], + "69": [0, 0.68611, 0, 0], + "70": [0, 0.68611, 0, 0], + "71": [0, 0.68611, 0, 0], + "72": [0, 0.68611, 0, 0], + "73": [0, 0.68611, 0, 0], + "74": [0, 0.68611, 0, 0], + "75": [0, 0.68611, 0, 0], + "76": [0, 0.68611, 0, 0], + "77": [0, 0.68611, 0, 0], + "78": [0, 0.68611, 0, 0], + "79": [0, 0.68611, 0, 0], + "80": [0, 0.68611, 0, 0], + "81": [0.19444, 0.68611, 0, 0], + "82": [0, 0.68611, 0, 0], + "83": [0, 0.68611, 0, 0], + "84": [0, 0.68611, 0, 0], + "85": [0, 0.68611, 0, 0], + "86": [0, 0.68611, 0.01597, 0], + "87": [0, 0.68611, 0.01597, 0], + "88": [0, 0.68611, 0, 0], + "89": [0, 0.68611, 0.02875, 0], + "90": [0, 0.68611, 0, 0], + "91": [0.25, 0.75, 0, 0], + "92": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.31, 0.13444, 0.03194, 0], + "96": [0, 0.69444, 0, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0, 0.69444, 0.10903, 0], + "103": [0.19444, 0.44444, 0.01597, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.69444, 0, 0], + "106": [0.19444, 0.69444, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0, 0], + "114": [0, 0.44444, 0, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.63492, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.01597, 0], + "119": [0, 0.44444, 0.01597, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.01597, 0], + "122": [0, 0.44444, 0, 0], + "123": [0.25, 0.75, 0, 0], + "124": [0.25, 0.75, 0, 0], + "125": [0.25, 0.75, 0, 0], + "126": [0.35, 0.34444, 0, 0], + "168": [0, 0.69444, 0, 0], + "172": [0, 0.44444, 0, 0], + "175": [0, 0.59611, 0, 0], + "176": [0, 0.69444, 0, 0], + "177": [0.13333, 0.63333, 0, 0], + "180": [0, 0.69444, 0, 0], + "215": [0.13333, 0.63333, 0, 0], + "247": [0.13333, 0.63333, 0, 0], + "305": [0, 0.44444, 0, 0], + "567": [0.19444, 0.44444, 0, 0], + "710": [0, 0.69444, 0, 0], + "711": [0, 0.63194, 0, 0], + "713": [0, 0.59611, 0, 0], + "714": [0, 0.69444, 0, 0], + "715": [0, 0.69444, 0, 0], + "728": [0, 0.69444, 0, 0], + "729": [0, 0.69444, 0, 0], + "730": [0, 0.69444, 0, 0], + "732": [0, 0.69444, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.69444, 0, 0], + "772": [0, 0.59611, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.69444, 0, 0], + "776": [0, 0.69444, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.63194, 0, 0], + "824": [0.19444, 0.69444, 0, 0], + "915": [0, 0.68611, 0, 0], + "916": [0, 0.68611, 0, 0], + "920": [0, 0.68611, 0, 0], + "923": [0, 0.68611, 0, 0], + "926": [0, 0.68611, 0, 0], + "928": [0, 0.68611, 0, 0], + "931": [0, 0.68611, 0, 0], + "933": [0, 0.68611, 0, 0], + "934": [0, 0.68611, 0, 0], + "936": [0, 0.68611, 0, 0], + "937": [0, 0.68611, 0, 0], + "8211": [0, 0.44444, 0.03194, 0], + "8212": [0, 0.44444, 0.03194, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0], + "8224": [0.19444, 0.69444, 0, 0], + "8225": [0.19444, 0.69444, 0, 0], + "8242": [0, 0.55556, 0, 0], + "8407": [0, 0.72444, 0.15486, 0], + "8463": [0, 0.69444, 0, 0], + "8465": [0, 0.69444, 0, 0], + "8467": [0, 0.69444, 0, 0], + "8472": [0.19444, 0.44444, 0, 0], + "8476": [0, 0.69444, 0, 0], + "8501": [0, 0.69444, 0, 0], + "8592": [-0.10889, 0.39111, 0, 0], + "8593": [0.19444, 0.69444, 0, 0], + "8594": [-0.10889, 0.39111, 0, 0], + "8595": [0.19444, 0.69444, 0, 0], + "8596": [-0.10889, 0.39111, 0, 0], + "8597": [0.25, 0.75, 0, 0], + "8598": [0.19444, 0.69444, 0, 0], + "8599": [0.19444, 0.69444, 0, 0], + "8600": [0.19444, 0.69444, 0, 0], + "8601": [0.19444, 0.69444, 0, 0], + "8636": [-0.10889, 0.39111, 0, 0], + "8637": [-0.10889, 0.39111, 0, 0], + "8640": [-0.10889, 0.39111, 0, 0], + "8641": [-0.10889, 0.39111, 0, 0], + "8656": [-0.10889, 0.39111, 0, 0], + "8657": [0.19444, 0.69444, 0, 0], + "8658": [-0.10889, 0.39111, 0, 0], + "8659": [0.19444, 0.69444, 0, 0], + "8660": [-0.10889, 0.39111, 0, 0], + "8661": [0.25, 0.75, 0, 0], + "8704": [0, 0.69444, 0, 0], + "8706": [0, 0.69444, 0.06389, 0], + "8707": [0, 0.69444, 0, 0], + "8709": [0.05556, 0.75, 0, 0], + "8711": [0, 0.68611, 0, 0], + "8712": [0.08556, 0.58556, 0, 0], + "8715": [0.08556, 0.58556, 0, 0], + "8722": [0.13333, 0.63333, 0, 0], + "8723": [0.13333, 0.63333, 0, 0], + "8725": [0.25, 0.75, 0, 0], + "8726": [0.25, 0.75, 0, 0], + "8727": [-0.02778, 0.47222, 0, 0], + "8728": [-0.02639, 0.47361, 0, 0], + "8729": [-0.02639, 0.47361, 0, 0], + "8730": [0.18, 0.82, 0, 0], + "8733": [0, 0.44444, 0, 0], + "8734": [0, 0.44444, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8739": [0.25, 0.75, 0, 0], + "8741": [0.25, 0.75, 0, 0], + "8743": [0, 0.55556, 0, 0], + "8744": [0, 0.55556, 0, 0], + "8745": [0, 0.55556, 0, 0], + "8746": [0, 0.55556, 0, 0], + "8747": [0.19444, 0.69444, 0.12778, 0], + "8764": [-0.10889, 0.39111, 0, 0], + "8768": [0.19444, 0.69444, 0, 0], + "8771": [0.00222, 0.50222, 0, 0], + "8776": [0.02444, 0.52444, 0, 0], + "8781": [0.00222, 0.50222, 0, 0], + "8801": [0.00222, 0.50222, 0, 0], + "8804": [0.19667, 0.69667, 0, 0], + "8805": [0.19667, 0.69667, 0, 0], + "8810": [0.08556, 0.58556, 0, 0], + "8811": [0.08556, 0.58556, 0, 0], + "8826": [0.08556, 0.58556, 0, 0], + "8827": [0.08556, 0.58556, 0, 0], + "8834": [0.08556, 0.58556, 0, 0], + "8835": [0.08556, 0.58556, 0, 0], + "8838": [0.19667, 0.69667, 0, 0], + "8839": [0.19667, 0.69667, 0, 0], + "8846": [0, 0.55556, 0, 0], + "8849": [0.19667, 0.69667, 0, 0], + "8850": [0.19667, 0.69667, 0, 0], + "8851": [0, 0.55556, 0, 0], + "8852": [0, 0.55556, 0, 0], + "8853": [0.13333, 0.63333, 0, 0], + "8854": [0.13333, 0.63333, 0, 0], + "8855": [0.13333, 0.63333, 0, 0], + "8856": [0.13333, 0.63333, 0, 0], + "8857": [0.13333, 0.63333, 0, 0], + "8866": [0, 0.69444, 0, 0], + "8867": [0, 0.69444, 0, 0], + "8868": [0, 0.69444, 0, 0], + "8869": [0, 0.69444, 0, 0], + "8900": [-0.02639, 0.47361, 0, 0], + "8901": [-0.02639, 0.47361, 0, 0], + "8902": [-0.02778, 0.47222, 0, 0], + "8968": [0.25, 0.75, 0, 0], + "8969": [0.25, 0.75, 0, 0], + "8970": [0.25, 0.75, 0, 0], + "8971": [0.25, 0.75, 0, 0], + "8994": [-0.13889, 0.36111, 0, 0], + "8995": [-0.13889, 0.36111, 0, 0], + "9651": [0.19444, 0.69444, 0, 0], + "9657": [-0.02778, 0.47222, 0, 0], + "9661": [0.19444, 0.69444, 0, 0], + "9667": [-0.02778, 0.47222, 0, 0], + "9711": [0.19444, 0.69444, 0, 0], + "9824": [0.12963, 0.69444, 0, 0], + "9825": [0.12963, 0.69444, 0, 0], + "9826": [0.12963, 0.69444, 0, 0], + "9827": [0.12963, 0.69444, 0, 0], + "9837": [0, 0.75, 0, 0], + "9838": [0.19444, 0.69444, 0, 0], + "9839": [0.19444, 0.69444, 0, 0], + "10216": [0.25, 0.75, 0, 0], + "10217": [0.25, 0.75, 0, 0], + "10815": [0, 0.68611, 0, 0], + "10927": [0.19667, 0.69667, 0, 0], + "10928": [0.19667, 0.69667, 0, 0] + }, + "Main-Italic": { + "33": [0, 0.69444, 0.12417, 0], + "34": [0, 0.69444, 0.06961, 0], + "35": [0.19444, 0.69444, 0.06616, 0], + "37": [0.05556, 0.75, 0.13639, 0], + "38": [0, 0.69444, 0.09694, 0], + "39": [0, 0.69444, 0.12417, 0], + "40": [0.25, 0.75, 0.16194, 0], + "41": [0.25, 0.75, 0.03694, 0], + "42": [0, 0.75, 0.14917, 0], + "43": [0.05667, 0.56167, 0.03694, 0], + "44": [0.19444, 0.10556, 0, 0], + "45": [0, 0.43056, 0.02826, 0], + "46": [0, 0.10556, 0, 0], + "47": [0.25, 0.75, 0.16194, 0], + "48": [0, 0.64444, 0.13556, 0], + "49": [0, 0.64444, 0.13556, 0], + "50": [0, 0.64444, 0.13556, 0], + "51": [0, 0.64444, 0.13556, 0], + "52": [0.19444, 0.64444, 0.13556, 0], + "53": [0, 0.64444, 0.13556, 0], + "54": [0, 0.64444, 0.13556, 0], + "55": [0.19444, 0.64444, 0.13556, 0], + "56": [0, 0.64444, 0.13556, 0], + "57": [0, 0.64444, 0.13556, 0], + "58": [0, 0.43056, 0.0582, 0], + "59": [0.19444, 0.43056, 0.0582, 0], + "61": [-0.13313, 0.36687, 0.06616, 0], + "63": [0, 0.69444, 0.1225, 0], + "64": [0, 0.69444, 0.09597, 0], + "65": [0, 0.68333, 0, 0], + "66": [0, 0.68333, 0.10257, 0], + "67": [0, 0.68333, 0.14528, 0], + "68": [0, 0.68333, 0.09403, 0], + "69": [0, 0.68333, 0.12028, 0], + "70": [0, 0.68333, 0.13305, 0], + "71": [0, 0.68333, 0.08722, 0], + "72": [0, 0.68333, 0.16389, 0], + "73": [0, 0.68333, 0.15806, 0], + "74": [0, 0.68333, 0.14028, 0], + "75": [0, 0.68333, 0.14528, 0], + "76": [0, 0.68333, 0, 0], + "77": [0, 0.68333, 0.16389, 0], + "78": [0, 0.68333, 0.16389, 0], + "79": [0, 0.68333, 0.09403, 0], + "80": [0, 0.68333, 0.10257, 0], + "81": [0.19444, 0.68333, 0.09403, 0], + "82": [0, 0.68333, 0.03868, 0], + "83": [0, 0.68333, 0.11972, 0], + "84": [0, 0.68333, 0.13305, 0], + "85": [0, 0.68333, 0.16389, 0], + "86": [0, 0.68333, 0.18361, 0], + "87": [0, 0.68333, 0.18361, 0], + "88": [0, 0.68333, 0.15806, 0], + "89": [0, 0.68333, 0.19383, 0], + "90": [0, 0.68333, 0.14528, 0], + "91": [0.25, 0.75, 0.1875, 0], + "93": [0.25, 0.75, 0.10528, 0], + "94": [0, 0.69444, 0.06646, 0], + "95": [0.31, 0.12056, 0.09208, 0], + "97": [0, 0.43056, 0.07671, 0], + "98": [0, 0.69444, 0.06312, 0], + "99": [0, 0.43056, 0.05653, 0], + "100": [0, 0.69444, 0.10333, 0], + "101": [0, 0.43056, 0.07514, 0], + "102": [0.19444, 0.69444, 0.21194, 0], + "103": [0.19444, 0.43056, 0.08847, 0], + "104": [0, 0.69444, 0.07671, 0], + "105": [0, 0.65536, 0.1019, 0], + "106": [0.19444, 0.65536, 0.14467, 0], + "107": [0, 0.69444, 0.10764, 0], + "108": [0, 0.69444, 0.10333, 0], + "109": [0, 0.43056, 0.07671, 0], + "110": [0, 0.43056, 0.07671, 0], + "111": [0, 0.43056, 0.06312, 0], + "112": [0.19444, 0.43056, 0.06312, 0], + "113": [0.19444, 0.43056, 0.08847, 0], + "114": [0, 0.43056, 0.10764, 0], + "115": [0, 0.43056, 0.08208, 0], + "116": [0, 0.61508, 0.09486, 0], + "117": [0, 0.43056, 0.07671, 0], + "118": [0, 0.43056, 0.10764, 0], + "119": [0, 0.43056, 0.10764, 0], + "120": [0, 0.43056, 0.12042, 0], + "121": [0.19444, 0.43056, 0.08847, 0], + "122": [0, 0.43056, 0.12292, 0], + "126": [0.35, 0.31786, 0.11585, 0], + "163": [0, 0.69444, 0, 0], + "305": [0, 0.43056, 0, 0.02778], + "567": [0.19444, 0.43056, 0, 0.08334], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0.09694, 0], + "770": [0, 0.69444, 0.06646, 0], + "771": [0, 0.66786, 0.11585, 0], + "772": [0, 0.56167, 0.10333, 0], + "774": [0, 0.69444, 0.10806, 0], + "775": [0, 0.66786, 0.11752, 0], + "776": [0, 0.66786, 0.10474, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0.1225, 0], + "780": [0, 0.62847, 0.08295, 0], + "915": [0, 0.68333, 0.13305, 0], + "916": [0, 0.68333, 0, 0], + "920": [0, 0.68333, 0.09403, 0], + "923": [0, 0.68333, 0, 0], + "926": [0, 0.68333, 0.15294, 0], + "928": [0, 0.68333, 0.16389, 0], + "931": [0, 0.68333, 0.12028, 0], + "933": [0, 0.68333, 0.11111, 0], + "934": [0, 0.68333, 0.05986, 0], + "936": [0, 0.68333, 0.11111, 0], + "937": [0, 0.68333, 0.10257, 0], + "8211": [0, 0.43056, 0.09208, 0], + "8212": [0, 0.43056, 0.09208, 0], + "8216": [0, 0.69444, 0.12417, 0], + "8217": [0, 0.69444, 0.12417, 0], + "8220": [0, 0.69444, 0.1685, 0], + "8221": [0, 0.69444, 0.06961, 0], + "8463": [0, 0.68889, 0, 0] + }, + "Main-Regular": { + "32": [0, 0, 0, 0], + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.08333, 0.58333, 0, 0], + "44": [0.19444, 0.10556, 0, 0], + "45": [0, 0.43056, 0, 0], + "46": [0, 0.10556, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.64444, 0, 0], + "49": [0, 0.64444, 0, 0], + "50": [0, 0.64444, 0, 0], + "51": [0, 0.64444, 0, 0], + "52": [0, 0.64444, 0, 0], + "53": [0, 0.64444, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0, 0.64444, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0, 0.64444, 0, 0], + "58": [0, 0.43056, 0, 0], + "59": [0.19444, 0.43056, 0, 0], + "60": [0.0391, 0.5391, 0, 0], + "61": [-0.13313, 0.36687, 0, 0], + "62": [0.0391, 0.5391, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.68333, 0, 0], + "66": [0, 0.68333, 0, 0], + "67": [0, 0.68333, 0, 0], + "68": [0, 0.68333, 0, 0], + "69": [0, 0.68333, 0, 0], + "70": [0, 0.68333, 0, 0], + "71": [0, 0.68333, 0, 0], + "72": [0, 0.68333, 0, 0], + "73": [0, 0.68333, 0, 0], + "74": [0, 0.68333, 0, 0], + "75": [0, 0.68333, 0, 0], + "76": [0, 0.68333, 0, 0], + "77": [0, 0.68333, 0, 0], + "78": [0, 0.68333, 0, 0], + "79": [0, 0.68333, 0, 0], + "80": [0, 0.68333, 0, 0], + "81": [0.19444, 0.68333, 0, 0], + "82": [0, 0.68333, 0, 0], + "83": [0, 0.68333, 0, 0], + "84": [0, 0.68333, 0, 0], + "85": [0, 0.68333, 0, 0], + "86": [0, 0.68333, 0.01389, 0], + "87": [0, 0.68333, 0.01389, 0], + "88": [0, 0.68333, 0, 0], + "89": [0, 0.68333, 0.025, 0], + "90": [0, 0.68333, 0, 0], + "91": [0.25, 0.75, 0, 0], + "92": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.31, 0.12056, 0.02778, 0], + "96": [0, 0.69444, 0, 0], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.43056, 0, 0], + "102": [0, 0.69444, 0.07778, 0], + "103": [0.19444, 0.43056, 0.01389, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.66786, 0, 0], + "106": [0.19444, 0.66786, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0], + "112": [0.19444, 0.43056, 0, 0], + "113": [0.19444, 0.43056, 0, 0], + "114": [0, 0.43056, 0, 0], + "115": [0, 0.43056, 0, 0], + "116": [0, 0.61508, 0, 0], + "117": [0, 0.43056, 0, 0], + "118": [0, 0.43056, 0.01389, 0], + "119": [0, 0.43056, 0.01389, 0], + "120": [0, 0.43056, 0, 0], + "121": [0.19444, 0.43056, 0.01389, 0], + "122": [0, 0.43056, 0, 0], + "123": [0.25, 0.75, 0, 0], + "124": [0.25, 0.75, 0, 0], + "125": [0.25, 0.75, 0, 0], + "126": [0.35, 0.31786, 0, 0], + "160": [0, 0, 0, 0], + "168": [0, 0.66786, 0, 0], + "172": [0, 0.43056, 0, 0], + "175": [0, 0.56778, 0, 0], + "176": [0, 0.69444, 0, 0], + "177": [0.08333, 0.58333, 0, 0], + "180": [0, 0.69444, 0, 0], + "215": [0.08333, 0.58333, 0, 0], + "247": [0.08333, 0.58333, 0, 0], + "305": [0, 0.43056, 0, 0], + "567": [0.19444, 0.43056, 0, 0], + "710": [0, 0.69444, 0, 0], + "711": [0, 0.62847, 0, 0], + "713": [0, 0.56778, 0, 0], + "714": [0, 0.69444, 0, 0], + "715": [0, 0.69444, 0, 0], + "728": [0, 0.69444, 0, 0], + "729": [0, 0.66786, 0, 0], + "730": [0, 0.69444, 0, 0], + "732": [0, 0.66786, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.66786, 0, 0], + "772": [0, 0.56778, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.66786, 0, 0], + "776": [0, 0.66786, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.62847, 0, 0], + "824": [0.19444, 0.69444, 0, 0], + "915": [0, 0.68333, 0, 0], + "916": [0, 0.68333, 0, 0], + "920": [0, 0.68333, 0, 0], + "923": [0, 0.68333, 0, 0], + "926": [0, 0.68333, 0, 0], + "928": [0, 0.68333, 0, 0], + "931": [0, 0.68333, 0, 0], + "933": [0, 0.68333, 0, 0], + "934": [0, 0.68333, 0, 0], + "936": [0, 0.68333, 0, 0], + "937": [0, 0.68333, 0, 0], + "8211": [0, 0.43056, 0.02778, 0], + "8212": [0, 0.43056, 0.02778, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0], + "8224": [0.19444, 0.69444, 0, 0], + "8225": [0.19444, 0.69444, 0, 0], + "8230": [0, 0.12, 0, 0], + "8242": [0, 0.55556, 0, 0], + "8407": [0, 0.71444, 0.15382, 0], + "8463": [0, 0.68889, 0, 0], + "8465": [0, 0.69444, 0, 0], + "8467": [0, 0.69444, 0, 0.11111], + "8472": [0.19444, 0.43056, 0, 0.11111], + "8476": [0, 0.69444, 0, 0], + "8501": [0, 0.69444, 0, 0], + "8592": [-0.13313, 0.36687, 0, 0], + "8593": [0.19444, 0.69444, 0, 0], + "8594": [-0.13313, 0.36687, 0, 0], + "8595": [0.19444, 0.69444, 0, 0], + "8596": [-0.13313, 0.36687, 0, 0], + "8597": [0.25, 0.75, 0, 0], + "8598": [0.19444, 0.69444, 0, 0], + "8599": [0.19444, 0.69444, 0, 0], + "8600": [0.19444, 0.69444, 0, 0], + "8601": [0.19444, 0.69444, 0, 0], + "8614": [0.011, 0.511, 0, 0], + "8617": [0.011, 0.511, 0, 0], + "8618": [0.011, 0.511, 0, 0], + "8636": [-0.13313, 0.36687, 0, 0], + "8637": [-0.13313, 0.36687, 0, 0], + "8640": [-0.13313, 0.36687, 0, 0], + "8641": [-0.13313, 0.36687, 0, 0], + "8652": [0.011, 0.671, 0, 0], + "8656": [-0.13313, 0.36687, 0, 0], + "8657": [0.19444, 0.69444, 0, 0], + "8658": [-0.13313, 0.36687, 0, 0], + "8659": [0.19444, 0.69444, 0, 0], + "8660": [-0.13313, 0.36687, 0, 0], + "8661": [0.25, 0.75, 0, 0], + "8704": [0, 0.69444, 0, 0], + "8706": [0, 0.69444, 0.05556, 0.08334], + "8707": [0, 0.69444, 0, 0], + "8709": [0.05556, 0.75, 0, 0], + "8711": [0, 0.68333, 0, 0], + "8712": [0.0391, 0.5391, 0, 0], + "8715": [0.0391, 0.5391, 0, 0], + "8722": [0.08333, 0.58333, 0, 0], + "8723": [0.08333, 0.58333, 0, 0], + "8725": [0.25, 0.75, 0, 0], + "8726": [0.25, 0.75, 0, 0], + "8727": [-0.03472, 0.46528, 0, 0], + "8728": [-0.05555, 0.44445, 0, 0], + "8729": [-0.05555, 0.44445, 0, 0], + "8730": [0.2, 0.8, 0, 0], + "8733": [0, 0.43056, 0, 0], + "8734": [0, 0.43056, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8739": [0.25, 0.75, 0, 0], + "8741": [0.25, 0.75, 0, 0], + "8743": [0, 0.55556, 0, 0], + "8744": [0, 0.55556, 0, 0], + "8745": [0, 0.55556, 0, 0], + "8746": [0, 0.55556, 0, 0], + "8747": [0.19444, 0.69444, 0.11111, 0], + "8764": [-0.13313, 0.36687, 0, 0], + "8768": [0.19444, 0.69444, 0, 0], + "8771": [-0.03625, 0.46375, 0, 0], + "8773": [-0.022, 0.589, 0, 0], + "8776": [-0.01688, 0.48312, 0, 0], + "8781": [-0.03625, 0.46375, 0, 0], + "8784": [-0.133, 0.67, 0, 0], + "8800": [0.215, 0.716, 0, 0], + "8801": [-0.03625, 0.46375, 0, 0], + "8804": [0.13597, 0.63597, 0, 0], + "8805": [0.13597, 0.63597, 0, 0], + "8810": [0.0391, 0.5391, 0, 0], + "8811": [0.0391, 0.5391, 0, 0], + "8826": [0.0391, 0.5391, 0, 0], + "8827": [0.0391, 0.5391, 0, 0], + "8834": [0.0391, 0.5391, 0, 0], + "8835": [0.0391, 0.5391, 0, 0], + "8838": [0.13597, 0.63597, 0, 0], + "8839": [0.13597, 0.63597, 0, 0], + "8846": [0, 0.55556, 0, 0], + "8849": [0.13597, 0.63597, 0, 0], + "8850": [0.13597, 0.63597, 0, 0], + "8851": [0, 0.55556, 0, 0], + "8852": [0, 0.55556, 0, 0], + "8853": [0.08333, 0.58333, 0, 0], + "8854": [0.08333, 0.58333, 0, 0], + "8855": [0.08333, 0.58333, 0, 0], + "8856": [0.08333, 0.58333, 0, 0], + "8857": [0.08333, 0.58333, 0, 0], + "8866": [0, 0.69444, 0, 0], + "8867": [0, 0.69444, 0, 0], + "8868": [0, 0.69444, 0, 0], + "8869": [0, 0.69444, 0, 0], + "8872": [0.249, 0.75, 0, 0], + "8900": [-0.05555, 0.44445, 0, 0], + "8901": [-0.05555, 0.44445, 0, 0], + "8902": [-0.03472, 0.46528, 0, 0], + "8904": [0.005, 0.505, 0, 0], + "8942": [0.03, 0.9, 0, 0], + "8943": [-0.19, 0.31, 0, 0], + "8945": [-0.1, 0.82, 0, 0], + "8968": [0.25, 0.75, 0, 0], + "8969": [0.25, 0.75, 0, 0], + "8970": [0.25, 0.75, 0, 0], + "8971": [0.25, 0.75, 0, 0], + "8994": [-0.14236, 0.35764, 0, 0], + "8995": [-0.14236, 0.35764, 0, 0], + "9136": [0.244, 0.744, 0, 0], + "9137": [0.244, 0.744, 0, 0], + "9651": [0.19444, 0.69444, 0, 0], + "9657": [-0.03472, 0.46528, 0, 0], + "9661": [0.19444, 0.69444, 0, 0], + "9667": [-0.03472, 0.46528, 0, 0], + "9711": [0.19444, 0.69444, 0, 0], + "9824": [0.12963, 0.69444, 0, 0], + "9825": [0.12963, 0.69444, 0, 0], + "9826": [0.12963, 0.69444, 0, 0], + "9827": [0.12963, 0.69444, 0, 0], + "9837": [0, 0.75, 0, 0], + "9838": [0.19444, 0.69444, 0, 0], + "9839": [0.19444, 0.69444, 0, 0], + "10216": [0.25, 0.75, 0, 0], + "10217": [0.25, 0.75, 0, 0], + "10222": [0.244, 0.744, 0, 0], + "10223": [0.244, 0.744, 0, 0], + "10229": [0.011, 0.511, 0, 0], + "10230": [0.011, 0.511, 0, 0], + "10231": [0.011, 0.511, 0, 0], + "10232": [0.024, 0.525, 0, 0], + "10233": [0.024, 0.525, 0, 0], + "10234": [0.024, 0.525, 0, 0], + "10236": [0.011, 0.511, 0, 0], + "10815": [0, 0.68333, 0, 0], + "10927": [0.13597, 0.63597, 0, 0], + "10928": [0.13597, 0.63597, 0, 0] + }, + "Math-BoldItalic": { + "47": [0.19444, 0.69444, 0, 0], + "65": [0, 0.68611, 0, 0], + "66": [0, 0.68611, 0.04835, 0], + "67": [0, 0.68611, 0.06979, 0], + "68": [0, 0.68611, 0.03194, 0], + "69": [0, 0.68611, 0.05451, 0], + "70": [0, 0.68611, 0.15972, 0], + "71": [0, 0.68611, 0, 0], + "72": [0, 0.68611, 0.08229, 0], + "73": [0, 0.68611, 0.07778, 0], + "74": [0, 0.68611, 0.10069, 0], + "75": [0, 0.68611, 0.06979, 0], + "76": [0, 0.68611, 0, 0], + "77": [0, 0.68611, 0.11424, 0], + "78": [0, 0.68611, 0.11424, 0], + "79": [0, 0.68611, 0.03194, 0], + "80": [0, 0.68611, 0.15972, 0], + "81": [0.19444, 0.68611, 0, 0], + "82": [0, 0.68611, 0.00421, 0], + "83": [0, 0.68611, 0.05382, 0], + "84": [0, 0.68611, 0.15972, 0], + "85": [0, 0.68611, 0.11424, 0], + "86": [0, 0.68611, 0.25555, 0], + "87": [0, 0.68611, 0.15972, 0], + "88": [0, 0.68611, 0.07778, 0], + "89": [0, 0.68611, 0.25555, 0], + "90": [0, 0.68611, 0.06979, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0.19444, 0.69444, 0.11042, 0], + "103": [0.19444, 0.44444, 0.03704, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.69326, 0, 0], + "106": [0.19444, 0.69326, 0.0622, 0], + "107": [0, 0.69444, 0.01852, 0], + "108": [0, 0.69444, 0.0088, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0.03704, 0], + "114": [0, 0.44444, 0.03194, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.63492, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.03704, 0], + "119": [0, 0.44444, 0.02778, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.03704, 0], + "122": [0, 0.44444, 0.04213, 0], + "915": [0, 0.68611, 0.15972, 0], + "916": [0, 0.68611, 0, 0], + "920": [0, 0.68611, 0.03194, 0], + "923": [0, 0.68611, 0, 0], + "926": [0, 0.68611, 0.07458, 0], + "928": [0, 0.68611, 0.08229, 0], + "931": [0, 0.68611, 0.05451, 0], + "933": [0, 0.68611, 0.15972, 0], + "934": [0, 0.68611, 0, 0], + "936": [0, 0.68611, 0.11653, 0], + "937": [0, 0.68611, 0.04835, 0], + "945": [0, 0.44444, 0, 0], + "946": [0.19444, 0.69444, 0.03403, 0], + "947": [0.19444, 0.44444, 0.06389, 0], + "948": [0, 0.69444, 0.03819, 0], + "949": [0, 0.44444, 0, 0], + "950": [0.19444, 0.69444, 0.06215, 0], + "951": [0.19444, 0.44444, 0.03704, 0], + "952": [0, 0.69444, 0.03194, 0], + "953": [0, 0.44444, 0, 0], + "954": [0, 0.44444, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.44444, 0, 0], + "957": [0, 0.44444, 0.06898, 0], + "958": [0.19444, 0.69444, 0.03021, 0], + "959": [0, 0.44444, 0, 0], + "960": [0, 0.44444, 0.03704, 0], + "961": [0.19444, 0.44444, 0, 0], + "962": [0.09722, 0.44444, 0.07917, 0], + "963": [0, 0.44444, 0.03704, 0], + "964": [0, 0.44444, 0.13472, 0], + "965": [0, 0.44444, 0.03704, 0], + "966": [0.19444, 0.44444, 0, 0], + "967": [0.19444, 0.44444, 0, 0], + "968": [0.19444, 0.69444, 0.03704, 0], + "969": [0, 0.44444, 0.03704, 0], + "977": [0, 0.69444, 0, 0], + "981": [0.19444, 0.69444, 0, 0], + "982": [0, 0.44444, 0.03194, 0], + "1009": [0.19444, 0.44444, 0, 0], + "1013": [0, 0.44444, 0, 0] + }, + "Math-Italic": { + "47": [0.19444, 0.69444, 0, 0], + "65": [0, 0.68333, 0, 0.13889], + "66": [0, 0.68333, 0.05017, 0.08334], + "67": [0, 0.68333, 0.07153, 0.08334], + "68": [0, 0.68333, 0.02778, 0.05556], + "69": [0, 0.68333, 0.05764, 0.08334], + "70": [0, 0.68333, 0.13889, 0.08334], + "71": [0, 0.68333, 0, 0.08334], + "72": [0, 0.68333, 0.08125, 0.05556], + "73": [0, 0.68333, 0.07847, 0.11111], + "74": [0, 0.68333, 0.09618, 0.16667], + "75": [0, 0.68333, 0.07153, 0.05556], + "76": [0, 0.68333, 0, 0.02778], + "77": [0, 0.68333, 0.10903, 0.08334], + "78": [0, 0.68333, 0.10903, 0.08334], + "79": [0, 0.68333, 0.02778, 0.08334], + "80": [0, 0.68333, 0.13889, 0.08334], + "81": [0.19444, 0.68333, 0, 0.08334], + "82": [0, 0.68333, 0.00773, 0.08334], + "83": [0, 0.68333, 0.05764, 0.08334], + "84": [0, 0.68333, 0.13889, 0.08334], + "85": [0, 0.68333, 0.10903, 0.02778], + "86": [0, 0.68333, 0.22222, 0], + "87": [0, 0.68333, 0.13889, 0], + "88": [0, 0.68333, 0.07847, 0.08334], + "89": [0, 0.68333, 0.22222, 0], + "90": [0, 0.68333, 0.07153, 0.08334], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0.05556], + "100": [0, 0.69444, 0, 0.16667], + "101": [0, 0.43056, 0, 0.05556], + "102": [0.19444, 0.69444, 0.10764, 0.16667], + "103": [0.19444, 0.43056, 0.03588, 0.02778], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.65952, 0, 0], + "106": [0.19444, 0.65952, 0.05724, 0], + "107": [0, 0.69444, 0.03148, 0], + "108": [0, 0.69444, 0.01968, 0.08334], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0.05556], + "112": [0.19444, 0.43056, 0, 0.08334], + "113": [0.19444, 0.43056, 0.03588, 0.08334], + "114": [0, 0.43056, 0.02778, 0.05556], + "115": [0, 0.43056, 0, 0.05556], + "116": [0, 0.61508, 0, 0.08334], + "117": [0, 0.43056, 0, 0.02778], + "118": [0, 0.43056, 0.03588, 0.02778], + "119": [0, 0.43056, 0.02691, 0.08334], + "120": [0, 0.43056, 0, 0.02778], + "121": [0.19444, 0.43056, 0.03588, 0.05556], + "122": [0, 0.43056, 0.04398, 0.05556], + "915": [0, 0.68333, 0.13889, 0.08334], + "916": [0, 0.68333, 0, 0.16667], + "920": [0, 0.68333, 0.02778, 0.08334], + "923": [0, 0.68333, 0, 0.16667], + "926": [0, 0.68333, 0.07569, 0.08334], + "928": [0, 0.68333, 0.08125, 0.05556], + "931": [0, 0.68333, 0.05764, 0.08334], + "933": [0, 0.68333, 0.13889, 0.05556], + "934": [0, 0.68333, 0, 0.08334], + "936": [0, 0.68333, 0.11, 0.05556], + "937": [0, 0.68333, 0.05017, 0.08334], + "945": [0, 0.43056, 0.0037, 0.02778], + "946": [0.19444, 0.69444, 0.05278, 0.08334], + "947": [0.19444, 0.43056, 0.05556, 0], + "948": [0, 0.69444, 0.03785, 0.05556], + "949": [0, 0.43056, 0, 0.08334], + "950": [0.19444, 0.69444, 0.07378, 0.08334], + "951": [0.19444, 0.43056, 0.03588, 0.05556], + "952": [0, 0.69444, 0.02778, 0.08334], + "953": [0, 0.43056, 0, 0.05556], + "954": [0, 0.43056, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.43056, 0, 0.02778], + "957": [0, 0.43056, 0.06366, 0.02778], + "958": [0.19444, 0.69444, 0.04601, 0.11111], + "959": [0, 0.43056, 0, 0.05556], + "960": [0, 0.43056, 0.03588, 0], + "961": [0.19444, 0.43056, 0, 0.08334], + "962": [0.09722, 0.43056, 0.07986, 0.08334], + "963": [0, 0.43056, 0.03588, 0], + "964": [0, 0.43056, 0.1132, 0.02778], + "965": [0, 0.43056, 0.03588, 0.02778], + "966": [0.19444, 0.43056, 0, 0.08334], + "967": [0.19444, 0.43056, 0, 0.05556], + "968": [0.19444, 0.69444, 0.03588, 0.11111], + "969": [0, 0.43056, 0.03588, 0], + "977": [0, 0.69444, 0, 0.08334], + "981": [0.19444, 0.69444, 0, 0.08334], + "982": [0, 0.43056, 0.02778, 0], + "1009": [0.19444, 0.43056, 0, 0.08334], + "1013": [0, 0.43056, 0, 0.05556] + }, + "Math-Regular": { + "65": [0, 0.68333, 0, 0.13889], + "66": [0, 0.68333, 0.05017, 0.08334], + "67": [0, 0.68333, 0.07153, 0.08334], + "68": [0, 0.68333, 0.02778, 0.05556], + "69": [0, 0.68333, 0.05764, 0.08334], + "70": [0, 0.68333, 0.13889, 0.08334], + "71": [0, 0.68333, 0, 0.08334], + "72": [0, 0.68333, 0.08125, 0.05556], + "73": [0, 0.68333, 0.07847, 0.11111], + "74": [0, 0.68333, 0.09618, 0.16667], + "75": [0, 0.68333, 0.07153, 0.05556], + "76": [0, 0.68333, 0, 0.02778], + "77": [0, 0.68333, 0.10903, 0.08334], + "78": [0, 0.68333, 0.10903, 0.08334], + "79": [0, 0.68333, 0.02778, 0.08334], + "80": [0, 0.68333, 0.13889, 0.08334], + "81": [0.19444, 0.68333, 0, 0.08334], + "82": [0, 0.68333, 0.00773, 0.08334], + "83": [0, 0.68333, 0.05764, 0.08334], + "84": [0, 0.68333, 0.13889, 0.08334], + "85": [0, 0.68333, 0.10903, 0.02778], + "86": [0, 0.68333, 0.22222, 0], + "87": [0, 0.68333, 0.13889, 0], + "88": [0, 0.68333, 0.07847, 0.08334], + "89": [0, 0.68333, 0.22222, 0], + "90": [0, 0.68333, 0.07153, 0.08334], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0.05556], + "100": [0, 0.69444, 0, 0.16667], + "101": [0, 0.43056, 0, 0.05556], + "102": [0.19444, 0.69444, 0.10764, 0.16667], + "103": [0.19444, 0.43056, 0.03588, 0.02778], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.65952, 0, 0], + "106": [0.19444, 0.65952, 0.05724, 0], + "107": [0, 0.69444, 0.03148, 0], + "108": [0, 0.69444, 0.01968, 0.08334], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0.05556], + "112": [0.19444, 0.43056, 0, 0.08334], + "113": [0.19444, 0.43056, 0.03588, 0.08334], + "114": [0, 0.43056, 0.02778, 0.05556], + "115": [0, 0.43056, 0, 0.05556], + "116": [0, 0.61508, 0, 0.08334], + "117": [0, 0.43056, 0, 0.02778], + "118": [0, 0.43056, 0.03588, 0.02778], + "119": [0, 0.43056, 0.02691, 0.08334], + "120": [0, 0.43056, 0, 0.02778], + "121": [0.19444, 0.43056, 0.03588, 0.05556], + "122": [0, 0.43056, 0.04398, 0.05556], + "915": [0, 0.68333, 0.13889, 0.08334], + "916": [0, 0.68333, 0, 0.16667], + "920": [0, 0.68333, 0.02778, 0.08334], + "923": [0, 0.68333, 0, 0.16667], + "926": [0, 0.68333, 0.07569, 0.08334], + "928": [0, 0.68333, 0.08125, 0.05556], + "931": [0, 0.68333, 0.05764, 0.08334], + "933": [0, 0.68333, 0.13889, 0.05556], + "934": [0, 0.68333, 0, 0.08334], + "936": [0, 0.68333, 0.11, 0.05556], + "937": [0, 0.68333, 0.05017, 0.08334], + "945": [0, 0.43056, 0.0037, 0.02778], + "946": [0.19444, 0.69444, 0.05278, 0.08334], + "947": [0.19444, 0.43056, 0.05556, 0], + "948": [0, 0.69444, 0.03785, 0.05556], + "949": [0, 0.43056, 0, 0.08334], + "950": [0.19444, 0.69444, 0.07378, 0.08334], + "951": [0.19444, 0.43056, 0.03588, 0.05556], + "952": [0, 0.69444, 0.02778, 0.08334], + "953": [0, 0.43056, 0, 0.05556], + "954": [0, 0.43056, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.43056, 0, 0.02778], + "957": [0, 0.43056, 0.06366, 0.02778], + "958": [0.19444, 0.69444, 0.04601, 0.11111], + "959": [0, 0.43056, 0, 0.05556], + "960": [0, 0.43056, 0.03588, 0], + "961": [0.19444, 0.43056, 0, 0.08334], + "962": [0.09722, 0.43056, 0.07986, 0.08334], + "963": [0, 0.43056, 0.03588, 0], + "964": [0, 0.43056, 0.1132, 0.02778], + "965": [0, 0.43056, 0.03588, 0.02778], + "966": [0.19444, 0.43056, 0, 0.08334], + "967": [0.19444, 0.43056, 0, 0.05556], + "968": [0.19444, 0.69444, 0.03588, 0.11111], + "969": [0, 0.43056, 0.03588, 0], + "977": [0, 0.69444, 0, 0.08334], + "981": [0.19444, 0.69444, 0, 0.08334], + "982": [0, 0.43056, 0.02778, 0], + "1009": [0.19444, 0.43056, 0, 0.08334], + "1013": [0, 0.43056, 0, 0.05556] + }, + "SansSerif-Regular": { + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.08333, 0.58333, 0, 0], + "44": [0.125, 0.08333, 0, 0], + "45": [0, 0.44444, 0, 0], + "46": [0, 0.08333, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.65556, 0, 0], + "49": [0, 0.65556, 0, 0], + "50": [0, 0.65556, 0, 0], + "51": [0, 0.65556, 0, 0], + "52": [0, 0.65556, 0, 0], + "53": [0, 0.65556, 0, 0], + "54": [0, 0.65556, 0, 0], + "55": [0, 0.65556, 0, 0], + "56": [0, 0.65556, 0, 0], + "57": [0, 0.65556, 0, 0], + "58": [0, 0.44444, 0, 0], + "59": [0.125, 0.44444, 0, 0], + "61": [-0.13, 0.37, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.69444, 0, 0], + "66": [0, 0.69444, 0, 0], + "67": [0, 0.69444, 0, 0], + "68": [0, 0.69444, 0, 0], + "69": [0, 0.69444, 0, 0], + "70": [0, 0.69444, 0, 0], + "71": [0, 0.69444, 0, 0], + "72": [0, 0.69444, 0, 0], + "73": [0, 0.69444, 0, 0], + "74": [0, 0.69444, 0, 0], + "75": [0, 0.69444, 0, 0], + "76": [0, 0.69444, 0, 0], + "77": [0, 0.69444, 0, 0], + "78": [0, 0.69444, 0, 0], + "79": [0, 0.69444, 0, 0], + "80": [0, 0.69444, 0, 0], + "81": [0.125, 0.69444, 0, 0], + "82": [0, 0.69444, 0, 0], + "83": [0, 0.69444, 0, 0], + "84": [0, 0.69444, 0, 0], + "85": [0, 0.69444, 0, 0], + "86": [0, 0.69444, 0.01389, 0], + "87": [0, 0.69444, 0.01389, 0], + "88": [0, 0.69444, 0, 0], + "89": [0, 0.69444, 0.025, 0], + "90": [0, 0.69444, 0, 0], + "91": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.35, 0.09444, 0.02778, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0, 0.69444, 0.06944, 0], + "103": [0.19444, 0.44444, 0.01389, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.67937, 0, 0], + "106": [0.19444, 0.67937, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0, 0], + "114": [0, 0.44444, 0.01389, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.57143, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.01389, 0], + "119": [0, 0.44444, 0.01389, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.01389, 0], + "122": [0, 0.44444, 0, 0], + "126": [0.35, 0.32659, 0, 0], + "305": [0, 0.44444, 0, 0], + "567": [0.19444, 0.44444, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.67659, 0, 0], + "772": [0, 0.60889, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.67937, 0, 0], + "776": [0, 0.67937, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.63194, 0, 0], + "915": [0, 0.69444, 0, 0], + "916": [0, 0.69444, 0, 0], + "920": [0, 0.69444, 0, 0], + "923": [0, 0.69444, 0, 0], + "926": [0, 0.69444, 0, 0], + "928": [0, 0.69444, 0, 0], + "931": [0, 0.69444, 0, 0], + "933": [0, 0.69444, 0, 0], + "934": [0, 0.69444, 0, 0], + "936": [0, 0.69444, 0, 0], + "937": [0, 0.69444, 0, 0], + "8211": [0, 0.44444, 0.02778, 0], + "8212": [0, 0.44444, 0.02778, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0] + }, + "Script-Regular": { + "65": [0, 0.7, 0.22925, 0], + "66": [0, 0.7, 0.04087, 0], + "67": [0, 0.7, 0.1689, 0], + "68": [0, 0.7, 0.09371, 0], + "69": [0, 0.7, 0.18583, 0], + "70": [0, 0.7, 0.13634, 0], + "71": [0, 0.7, 0.17322, 0], + "72": [0, 0.7, 0.29694, 0], + "73": [0, 0.7, 0.19189, 0], + "74": [0.27778, 0.7, 0.19189, 0], + "75": [0, 0.7, 0.31259, 0], + "76": [0, 0.7, 0.19189, 0], + "77": [0, 0.7, 0.15981, 0], + "78": [0, 0.7, 0.3525, 0], + "79": [0, 0.7, 0.08078, 0], + "80": [0, 0.7, 0.08078, 0], + "81": [0, 0.7, 0.03305, 0], + "82": [0, 0.7, 0.06259, 0], + "83": [0, 0.7, 0.19189, 0], + "84": [0, 0.7, 0.29087, 0], + "85": [0, 0.7, 0.25815, 0], + "86": [0, 0.7, 0.27523, 0], + "87": [0, 0.7, 0.27523, 0], + "88": [0, 0.7, 0.26006, 0], + "89": [0, 0.7, 0.2939, 0], + "90": [0, 0.7, 0.24037, 0] + }, + "Size1-Regular": { + "40": [0.35001, 0.85, 0, 0], + "41": [0.35001, 0.85, 0, 0], + "47": [0.35001, 0.85, 0, 0], + "91": [0.35001, 0.85, 0, 0], + "92": [0.35001, 0.85, 0, 0], + "93": [0.35001, 0.85, 0, 0], + "123": [0.35001, 0.85, 0, 0], + "125": [0.35001, 0.85, 0, 0], + "710": [0, 0.72222, 0, 0], + "732": [0, 0.72222, 0, 0], + "770": [0, 0.72222, 0, 0], + "771": [0, 0.72222, 0, 0], + "8214": [-0.00099, 0.601, 0, 0], + "8593": [1e-05, 0.6, 0, 0], + "8595": [1e-05, 0.6, 0, 0], + "8657": [1e-05, 0.6, 0, 0], + "8659": [1e-05, 0.6, 0, 0], + "8719": [0.25001, 0.75, 0, 0], + "8720": [0.25001, 0.75, 0, 0], + "8721": [0.25001, 0.75, 0, 0], + "8730": [0.35001, 0.85, 0, 0], + "8739": [-0.00599, 0.606, 0, 0], + "8741": [-0.00599, 0.606, 0, 0], + "8747": [0.30612, 0.805, 0.19445, 0], + "8748": [0.306, 0.805, 0.19445, 0], + "8749": [0.306, 0.805, 0.19445, 0], + "8750": [0.30612, 0.805, 0.19445, 0], + "8896": [0.25001, 0.75, 0, 0], + "8897": [0.25001, 0.75, 0, 0], + "8898": [0.25001, 0.75, 0, 0], + "8899": [0.25001, 0.75, 0, 0], + "8968": [0.35001, 0.85, 0, 0], + "8969": [0.35001, 0.85, 0, 0], + "8970": [0.35001, 0.85, 0, 0], + "8971": [0.35001, 0.85, 0, 0], + "9168": [-0.00099, 0.601, 0, 0], + "10216": [0.35001, 0.85, 0, 0], + "10217": [0.35001, 0.85, 0, 0], + "10752": [0.25001, 0.75, 0, 0], + "10753": [0.25001, 0.75, 0, 0], + "10754": [0.25001, 0.75, 0, 0], + "10756": [0.25001, 0.75, 0, 0], + "10758": [0.25001, 0.75, 0, 0] + }, + "Size2-Regular": { + "40": [0.65002, 1.15, 0, 0], + "41": [0.65002, 1.15, 0, 0], + "47": [0.65002, 1.15, 0, 0], + "91": [0.65002, 1.15, 0, 0], + "92": [0.65002, 1.15, 0, 0], + "93": [0.65002, 1.15, 0, 0], + "123": [0.65002, 1.15, 0, 0], + "125": [0.65002, 1.15, 0, 0], + "710": [0, 0.75, 0, 0], + "732": [0, 0.75, 0, 0], + "770": [0, 0.75, 0, 0], + "771": [0, 0.75, 0, 0], + "8719": [0.55001, 1.05, 0, 0], + "8720": [0.55001, 1.05, 0, 0], + "8721": [0.55001, 1.05, 0, 0], + "8730": [0.65002, 1.15, 0, 0], + "8747": [0.86225, 1.36, 0.44445, 0], + "8748": [0.862, 1.36, 0.44445, 0], + "8749": [0.862, 1.36, 0.44445, 0], + "8750": [0.86225, 1.36, 0.44445, 0], + "8896": [0.55001, 1.05, 0, 0], + "8897": [0.55001, 1.05, 0, 0], + "8898": [0.55001, 1.05, 0, 0], + "8899": [0.55001, 1.05, 0, 0], + "8968": [0.65002, 1.15, 0, 0], + "8969": [0.65002, 1.15, 0, 0], + "8970": [0.65002, 1.15, 0, 0], + "8971": [0.65002, 1.15, 0, 0], + "10216": [0.65002, 1.15, 0, 0], + "10217": [0.65002, 1.15, 0, 0], + "10752": [0.55001, 1.05, 0, 0], + "10753": [0.55001, 1.05, 0, 0], + "10754": [0.55001, 1.05, 0, 0], + "10756": [0.55001, 1.05, 0, 0], + "10758": [0.55001, 1.05, 0, 0] + }, + "Size3-Regular": { + "40": [0.95003, 1.45, 0, 0], + "41": [0.95003, 1.45, 0, 0], + "47": [0.95003, 1.45, 0, 0], + "91": [0.95003, 1.45, 0, 0], + "92": [0.95003, 1.45, 0, 0], + "93": [0.95003, 1.45, 0, 0], + "123": [0.95003, 1.45, 0, 0], + "125": [0.95003, 1.45, 0, 0], + "710": [0, 0.75, 0, 0], + "732": [0, 0.75, 0, 0], + "770": [0, 0.75, 0, 0], + "771": [0, 0.75, 0, 0], + "8730": [0.95003, 1.45, 0, 0], + "8968": [0.95003, 1.45, 0, 0], + "8969": [0.95003, 1.45, 0, 0], + "8970": [0.95003, 1.45, 0, 0], + "8971": [0.95003, 1.45, 0, 0], + "10216": [0.95003, 1.45, 0, 0], + "10217": [0.95003, 1.45, 0, 0] + }, + "Size4-Regular": { + "40": [1.25003, 1.75, 0, 0], + "41": [1.25003, 1.75, 0, 0], + "47": [1.25003, 1.75, 0, 0], + "91": [1.25003, 1.75, 0, 0], + "92": [1.25003, 1.75, 0, 0], + "93": [1.25003, 1.75, 0, 0], + "123": [1.25003, 1.75, 0, 0], + "125": [1.25003, 1.75, 0, 0], + "710": [0, 0.825, 0, 0], + "732": [0, 0.825, 0, 0], + "770": [0, 0.825, 0, 0], + "771": [0, 0.825, 0, 0], + "8730": [1.25003, 1.75, 0, 0], + "8968": [1.25003, 1.75, 0, 0], + "8969": [1.25003, 1.75, 0, 0], + "8970": [1.25003, 1.75, 0, 0], + "8971": [1.25003, 1.75, 0, 0], + "9115": [0.64502, 1.155, 0, 0], + "9116": [1e-05, 0.6, 0, 0], + "9117": [0.64502, 1.155, 0, 0], + "9118": [0.64502, 1.155, 0, 0], + "9119": [1e-05, 0.6, 0, 0], + "9120": [0.64502, 1.155, 0, 0], + "9121": [0.64502, 1.155, 0, 0], + "9122": [-0.00099, 0.601, 0, 0], + "9123": [0.64502, 1.155, 0, 0], + "9124": [0.64502, 1.155, 0, 0], + "9125": [-0.00099, 0.601, 0, 0], + "9126": [0.64502, 1.155, 0, 0], + "9127": [1e-05, 0.9, 0, 0], + "9128": [0.65002, 1.15, 0, 0], + "9129": [0.90001, 0, 0, 0], + "9130": [0, 0.3, 0, 0], + "9131": [1e-05, 0.9, 0, 0], + "9132": [0.65002, 1.15, 0, 0], + "9133": [0.90001, 0, 0, 0], + "9143": [0.88502, 0.915, 0, 0], + "10216": [1.25003, 1.75, 0, 0], + "10217": [1.25003, 1.75, 0, 0], + "57344": [-0.00499, 0.605, 0, 0], + "57345": [-0.00499, 0.605, 0, 0], + "57680": [0, 0.12, 0, 0], + "57681": [0, 0.12, 0, 0], + "57682": [0, 0.12, 0, 0], + "57683": [0, 0.12, 0, 0] + }, + "Typewriter-Regular": { + "33": [0, 0.61111, 0, 0], + "34": [0, 0.61111, 0, 0], + "35": [0, 0.61111, 0, 0], + "36": [0.08333, 0.69444, 0, 0], + "37": [0.08333, 0.69444, 0, 0], + "38": [0, 0.61111, 0, 0], + "39": [0, 0.61111, 0, 0], + "40": [0.08333, 0.69444, 0, 0], + "41": [0.08333, 0.69444, 0, 0], + "42": [0, 0.52083, 0, 0], + "43": [-0.08056, 0.53055, 0, 0], + "44": [0.13889, 0.125, 0, 0], + "45": [-0.08056, 0.53055, 0, 0], + "46": [0, 0.125, 0, 0], + "47": [0.08333, 0.69444, 0, 0], + "48": [0, 0.61111, 0, 0], + "49": [0, 0.61111, 0, 0], + "50": [0, 0.61111, 0, 0], + "51": [0, 0.61111, 0, 0], + "52": [0, 0.61111, 0, 0], + "53": [0, 0.61111, 0, 0], + "54": [0, 0.61111, 0, 0], + "55": [0, 0.61111, 0, 0], + "56": [0, 0.61111, 0, 0], + "57": [0, 0.61111, 0, 0], + "58": [0, 0.43056, 0, 0], + "59": [0.13889, 0.43056, 0, 0], + "60": [-0.05556, 0.55556, 0, 0], + "61": [-0.19549, 0.41562, 0, 0], + "62": [-0.05556, 0.55556, 0, 0], + "63": [0, 0.61111, 0, 0], + "64": [0, 0.61111, 0, 0], + "65": [0, 0.61111, 0, 0], + "66": [0, 0.61111, 0, 0], + "67": [0, 0.61111, 0, 0], + "68": [0, 0.61111, 0, 0], + "69": [0, 0.61111, 0, 0], + "70": [0, 0.61111, 0, 0], + "71": [0, 0.61111, 0, 0], + "72": [0, 0.61111, 0, 0], + "73": [0, 0.61111, 0, 0], + "74": [0, 0.61111, 0, 0], + "75": [0, 0.61111, 0, 0], + "76": [0, 0.61111, 0, 0], + "77": [0, 0.61111, 0, 0], + "78": [0, 0.61111, 0, 0], + "79": [0, 0.61111, 0, 0], + "80": [0, 0.61111, 0, 0], + "81": [0.13889, 0.61111, 0, 0], + "82": [0, 0.61111, 0, 0], + "83": [0, 0.61111, 0, 0], + "84": [0, 0.61111, 0, 0], + "85": [0, 0.61111, 0, 0], + "86": [0, 0.61111, 0, 0], + "87": [0, 0.61111, 0, 0], + "88": [0, 0.61111, 0, 0], + "89": [0, 0.61111, 0, 0], + "90": [0, 0.61111, 0, 0], + "91": [0.08333, 0.69444, 0, 0], + "92": [0.08333, 0.69444, 0, 0], + "93": [0.08333, 0.69444, 0, 0], + "94": [0, 0.61111, 0, 0], + "95": [0.09514, 0, 0, 0], + "96": [0, 0.61111, 0, 0], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.61111, 0, 0], + "99": [0, 0.43056, 0, 0], + "100": [0, 0.61111, 0, 0], + "101": [0, 0.43056, 0, 0], + "102": [0, 0.61111, 0, 0], + "103": [0.22222, 0.43056, 0, 0], + "104": [0, 0.61111, 0, 0], + "105": [0, 0.61111, 0, 0], + "106": [0.22222, 0.61111, 0, 0], + "107": [0, 0.61111, 0, 0], + "108": [0, 0.61111, 0, 0], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0], + "112": [0.22222, 0.43056, 0, 0], + "113": [0.22222, 0.43056, 0, 0], + "114": [0, 0.43056, 0, 0], + "115": [0, 0.43056, 0, 0], + "116": [0, 0.55358, 0, 0], + "117": [0, 0.43056, 0, 0], + "118": [0, 0.43056, 0, 0], + "119": [0, 0.43056, 0, 0], + "120": [0, 0.43056, 0, 0], + "121": [0.22222, 0.43056, 0, 0], + "122": [0, 0.43056, 0, 0], + "123": [0.08333, 0.69444, 0, 0], + "124": [0.08333, 0.69444, 0, 0], + "125": [0.08333, 0.69444, 0, 0], + "126": [0, 0.61111, 0, 0], + "127": [0, 0.61111, 0, 0], + "305": [0, 0.43056, 0, 0], + "567": [0.22222, 0.43056, 0, 0], + "768": [0, 0.61111, 0, 0], + "769": [0, 0.61111, 0, 0], + "770": [0, 0.61111, 0, 0], + "771": [0, 0.61111, 0, 0], + "772": [0, 0.56555, 0, 0], + "774": [0, 0.61111, 0, 0], + "776": [0, 0.61111, 0, 0], + "778": [0, 0.61111, 0, 0], + "780": [0, 0.56597, 0, 0], + "915": [0, 0.61111, 0, 0], + "916": [0, 0.61111, 0, 0], + "920": [0, 0.61111, 0, 0], + "923": [0, 0.61111, 0, 0], + "926": [0, 0.61111, 0, 0], + "928": [0, 0.61111, 0, 0], + "931": [0, 0.61111, 0, 0], + "933": [0, 0.61111, 0, 0], + "934": [0, 0.61111, 0, 0], + "936": [0, 0.61111, 0, 0], + "937": [0, 0.61111, 0, 0], + "2018": [0, 0.61111, 0, 0], + "2019": [0, 0.61111, 0, 0], + "8242": [0, 0.61111, 0, 0] + } +}; + +},{}],43:[function(require,module,exports){ +"use strict"; + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +var _ParseNode = require("./ParseNode"); + +var _ParseNode2 = _interopRequireDefault(_ParseNode); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* This file contains a list of functions that we parse, identified by + * the calls to defineFunction. + * + * The first argument to defineFunction is a single name or a list of names. + * All functions named in such a list will share a single implementation. + * + * Each declared function can have associated properties, which + * include the following: + * + * - numArgs: The number of arguments the function takes. + * If this is the only property, it can be passed as a number + * instead of an element of a properties object. + * - argTypes: (optional) An array corresponding to each argument of the + * function, giving the type of argument that should be parsed. Its + * length should be equal to `numArgs + numOptionalArgs`. Valid + * types: + * - "size": A size-like thing, such as "1em" or "5ex" + * - "color": An html color, like "#abc" or "blue" + * - "original": The same type as the environment that the + * function being parsed is in (e.g. used for the + * bodies of functions like \textcolor where the + * first argument is special and the second + * argument is parsed normally) + * Other possible types (probably shouldn't be used) + * - "text": Text-like (e.g. \text) + * - "math": Normal math + * If undefined, this will be treated as an appropriate length + * array of "original" strings + * - greediness: (optional) The greediness of the function to use ungrouped + * arguments. + * + * E.g. if you have an expression + * \sqrt \frac 1 2 + * since \frac has greediness=2 vs \sqrt's greediness=1, \frac + * will use the two arguments '1' and '2' as its two arguments, + * then that whole function will be used as the argument to + * \sqrt. On the other hand, the expressions + * \frac \frac 1 2 3 + * and + * \frac \sqrt 1 2 + * will fail because \frac and \frac have equal greediness + * and \sqrt has a lower greediness than \frac respectively. To + * make these parse, we would have to change them to: + * \frac {\frac 1 2} 3 + * and + * \frac {\sqrt 1} 2 + * + * The default value is `1` + * - allowedInText: (optional) Whether or not the function is allowed inside + * text mode (default false) + * - numOptionalArgs: (optional) The number of optional arguments the function + * should parse. If the optional arguments aren't found, + * `null` will be passed to the handler in their place. + * (default 0) + * - infix: (optional) Must be true if the function is an infix operator. + * + * The last argument is that implementation, the handler for the function(s). + * It is called to handle these functions and their arguments. + * It receives two arguments: + * - context contains information and references provided by the parser + * - args is an array of arguments obtained from TeX input + * The context contains the following properties: + * - funcName: the text (i.e. name) of the function, including \ + * - parser: the parser object + * - lexer: the lexer object + * - positions: the positions in the overall string of the function + * and the arguments. + * The latter three should only be used to produce error messages. + * + * The function should return an object with the following keys: + * - type: The type of element that this is. This is then used in + * buildHTML/buildMathML to determine which function + * should be called to build this node into a DOM node + * Any other data can be added to the object, which will be passed + * in to the function in buildHTML/buildMathML as `group.value`. + */ + +function defineFunction(names, props, handler) { + if (typeof names === "string") { + names = [names]; + } + if (typeof props === "number") { + props = { numArgs: props }; + } + // Set default values of functions + var data = { + numArgs: props.numArgs, + argTypes: props.argTypes, + greediness: props.greediness === undefined ? 1 : props.greediness, + allowedInText: !!props.allowedInText, + allowedInMath: props.allowedInMath, + numOptionalArgs: props.numOptionalArgs || 0, + infix: !!props.infix, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + module.exports[names[i]] = data; + } +} + +// Since the corresponding buildHTML/buildMathML function expects a +// list of elements, we normalize for different kinds of arguments +var ordargument = function ordargument(arg) { + if (arg.type === "ordgroup") { + return arg.value; + } else { + return [arg]; + } +}; + +// A normal square root +defineFunction("\\sqrt", { + numArgs: 1, + numOptionalArgs: 1 +}, function (context, args) { + var index = args[0]; + var body = args[1]; + return { + type: "sqrt", + body: body, + index: index + }; +}); + +// Non-mathy text, possibly in a font +var textFunctionStyles = { + "\\text": undefined, "\\textrm": "mathrm", "\\textsf": "mathsf", + "\\texttt": "mathtt", "\\textnormal": "mathrm", "\\textbf": "mathbf", + "\\textit": "textit" +}; + +defineFunction(["\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", "\\textbf", "\\textit"], { + numArgs: 1, + argTypes: ["text"], + greediness: 2, + allowedInText: true +}, function (context, args) { + var body = args[0]; + return { + type: "text", + body: ordargument(body), + style: textFunctionStyles[context.funcName] + }; +}); + +// A two-argument custom color +defineFunction("\\textcolor", { + numArgs: 2, + allowedInText: true, + greediness: 3, + argTypes: ["color", "original"] +}, function (context, args) { + var color = args[0]; + var body = args[1]; + return { + type: "color", + color: color.value, + value: ordargument(body) + }; +}); + +// \color is handled in Parser.js's parseImplicitGroup +defineFunction("\\color", { + numArgs: 1, + allowedInText: true, + greediness: 3, + argTypes: ["color"] +}, null); + +// An overline +defineFunction("\\overline", { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "overline", + body: body + }; +}); + +// An underline +defineFunction("\\underline", { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "underline", + body: body + }; +}); + +// A box of the width and height +defineFunction("\\rule", { + numArgs: 2, + numOptionalArgs: 1, + argTypes: ["size", "size", "size"] +}, function (context, args) { + var shift = args[0]; + var width = args[1]; + var height = args[2]; + return { + type: "rule", + shift: shift && shift.value, + width: width.value, + height: height.value + }; +}); + +// TODO: In TeX, \mkern only accepts mu-units, and \kern does not accept +// mu-units. In current KaTeX we relax this; both commands accept any unit. +defineFunction(["\\kern", "\\mkern"], { + numArgs: 1, + argTypes: ["size"] +}, function (context, args) { + return { + type: "kern", + dimension: args[0].value + }; +}); + +// A KaTeX logo +defineFunction("\\KaTeX", { + numArgs: 0 +}, function (context) { + return { + type: "katex" + }; +}); + +defineFunction("\\phantom", { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "phantom", + value: ordargument(body) + }; +}); + +// Math class commands except \mathop +defineFunction(["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "mclass", + mclass: "m" + context.funcName.substr(5), + value: ordargument(body) + }; +}); + +// Build a relation by placing one symbol on top of another +defineFunction("\\stackrel", { + numArgs: 2 +}, function (context, args) { + var top = args[0]; + var bottom = args[1]; + + var bottomop = new _ParseNode2.default("op", { + type: "op", + limits: true, + alwaysHandleSupSub: true, + symbol: false, + value: ordargument(bottom) + }, bottom.mode); + + var supsub = new _ParseNode2.default("supsub", { + base: bottomop, + sup: top, + sub: null + }, top.mode); + + return { + type: "mclass", + mclass: "mrel", + value: [supsub] + }; +}); + +// \mod-type functions +defineFunction("\\bmod", { + numArgs: 0 +}, function (context, args) { + return { + type: "mod", + modType: "bmod", + value: null + }; +}); + +defineFunction(["\\pod", "\\pmod", "\\mod"], { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "mod", + modType: context.funcName.substr(1), + value: ordargument(body) + }; +}); + +// Extra data needed for the delimiter handler down below +var delimiterSizes = { + "\\bigl": { mclass: "mopen", size: 1 }, + "\\Bigl": { mclass: "mopen", size: 2 }, + "\\biggl": { mclass: "mopen", size: 3 }, + "\\Biggl": { mclass: "mopen", size: 4 }, + "\\bigr": { mclass: "mclose", size: 1 }, + "\\Bigr": { mclass: "mclose", size: 2 }, + "\\biggr": { mclass: "mclose", size: 3 }, + "\\Biggr": { mclass: "mclose", size: 4 }, + "\\bigm": { mclass: "mrel", size: 1 }, + "\\Bigm": { mclass: "mrel", size: 2 }, + "\\biggm": { mclass: "mrel", size: 3 }, + "\\Biggm": { mclass: "mrel", size: 4 }, + "\\big": { mclass: "mord", size: 1 }, + "\\Big": { mclass: "mord", size: 2 }, + "\\bigg": { mclass: "mord", size: 3 }, + "\\Bigg": { mclass: "mord", size: 4 } +}; + +var delimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "<", ">", "\\langle", "\\rangle", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; + +var fontAliases = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak" +}; + +// Single-argument color functions +defineFunction(["\\blue", "\\orange", "\\pink", "\\red", "\\green", "\\gray", "\\purple", "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", "\\mintA", "\\mintB", "\\mintC", "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", "\\grayF", "\\grayG", "\\grayH", "\\grayI", "\\kaBlue", "\\kaGreen"], { + numArgs: 1, + allowedInText: true, + greediness: 3 +}, function (context, args) { + var body = args[0]; + return { + type: "color", + color: "katex-" + context.funcName.slice(1), + value: ordargument(body) + }; +}); + +// There are 2 flags for operators; whether they produce limits in +// displaystyle, and whether they are symbols and should grow in +// displaystyle. These four groups cover the four possible choices. + +// No limits, not symbols +defineFunction(["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"], { + numArgs: 0 +}, function (context) { + return { + type: "op", + limits: false, + symbol: false, + body: context.funcName + }; +}); + +// Limits, not symbols +defineFunction(["\\det", "\\gcd", "\\inf", "\\lim", "\\liminf", "\\limsup", "\\max", "\\min", "\\Pr", "\\sup"], { + numArgs: 0 +}, function (context) { + return { + type: "op", + limits: true, + symbol: false, + body: context.funcName + }; +}); + +// No limits, symbols +defineFunction(["\\int", "\\iint", "\\iiint", "\\oint"], { + numArgs: 0 +}, function (context) { + return { + type: "op", + limits: false, + symbol: true, + body: context.funcName + }; +}); + +// Limits, symbols +defineFunction(["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint"], { + numArgs: 0 +}, function (context) { + return { + type: "op", + limits: true, + symbol: true, + body: context.funcName + }; +}); + +// \mathop class command +defineFunction("\\mathop", { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "op", + limits: false, + symbol: false, + value: ordargument(body) + }; +}); + +// Fractions +defineFunction(["\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac"], { + numArgs: 2, + greediness: 2 +}, function (context, args) { + var numer = args[0]; + var denom = args[1]; + var hasBarLine = void 0; + var leftDelim = null; + var rightDelim = null; + var size = "auto"; + + switch (context.funcName) { + case "\\dfrac": + case "\\frac": + case "\\tfrac": + hasBarLine = true; + break; + case "\\\\atopfrac": + hasBarLine = false; + break; + case "\\dbinom": + case "\\binom": + case "\\tbinom": + hasBarLine = false; + leftDelim = "("; + rightDelim = ")"; + break; + default: + throw new Error("Unrecognized genfrac command"); + } + + switch (context.funcName) { + case "\\dfrac": + case "\\dbinom": + size = "display"; + break; + case "\\tfrac": + case "\\tbinom": + size = "text"; + break; + } + + return { + type: "genfrac", + numer: numer, + denom: denom, + hasBarLine: hasBarLine, + leftDelim: leftDelim, + rightDelim: rightDelim, + size: size + }; +}); + +// Left and right overlap functions +defineFunction(["\\llap", "\\rlap"], { + numArgs: 1, + allowedInText: true +}, function (context, args) { + var body = args[0]; + return { + type: context.funcName.slice(1), + body: body + }; +}); + +// Delimiter functions +var checkDelimiter = function checkDelimiter(delim, context) { + if (_utils2.default.contains(delimiters, delim.value)) { + return delim; + } else { + throw new _ParseError2.default("Invalid delimiter: '" + delim.value + "' after '" + context.funcName + "'", delim); + } +}; + +defineFunction(["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], { + numArgs: 1 +}, function (context, args) { + var delim = checkDelimiter(args[0], context); + + return { + type: "delimsizing", + size: delimiterSizes[context.funcName].size, + mclass: delimiterSizes[context.funcName].mclass, + value: delim.value + }; +}); + +defineFunction(["\\left", "\\right"], { + numArgs: 1 +}, function (context, args) { + var delim = checkDelimiter(args[0], context); + + // \left and \right are caught somewhere in Parser.js, which is + // why this data doesn't match what is in buildHTML. + return { + type: "leftright", + value: delim.value + }; +}); + +defineFunction("\\middle", { + numArgs: 1 +}, function (context, args) { + var delim = checkDelimiter(args[0], context); + if (!context.parser.leftrightDepth) { + throw new _ParseError2.default("\\middle without preceding \\left", delim); + } + + return { + type: "middle", + value: delim.value + }; +}); + +// Sizing functions (handled in Parser.js explicitly, hence no handler) +defineFunction(["\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"], 0, null); + +// Style changing functions (handled in Parser.js explicitly, hence no +// handler) +defineFunction(["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], 0, null); + +// Old font changing functions +defineFunction(["\\rm", "\\sf", "\\tt", "\\bf", "\\it"], 0, null); + +defineFunction([ +// styles +"\\mathrm", "\\mathit", "\\mathbf", + +// families +"\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", + +// aliases +"\\Bbb", "\\bold", "\\frak"], { + numArgs: 1, + greediness: 2 +}, function (context, args) { + var body = args[0]; + var func = context.funcName; + if (func in fontAliases) { + func = fontAliases[func]; + } + return { + type: "font", + font: func.slice(1), + body: body + }; +}); + +// Accents +defineFunction(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], { + numArgs: 1 +}, function (context, args) { + var base = args[0]; + + var isStretchy = !_utils2.default.contains(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot"], context.funcName); + + var isShifty = !isStretchy || _utils2.default.contains(["\\widehat", "\\widetilde"], context.funcName); + + return { + type: "accent", + label: context.funcName, + isStretchy: isStretchy, + isShifty: isShifty, + value: ordargument(base), + base: base + }; +}); + +// Text-mode accents +defineFunction(["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v"], { + numArgs: 1, + allowedInText: true, + allowedInMath: false +}, function (context, args) { + var base = args[0]; + + return { + type: "accent", + label: context.funcName, + isStretchy: false, + isShifty: true, + value: ordargument(base), + base: base + }; +}); + +// Horizontal stretchy braces +defineFunction(["\\overbrace", "\\underbrace"], { + numArgs: 1 +}, function (context, args) { + var base = args[0]; + return { + type: "horizBrace", + label: context.funcName, + isOver: /^\\over/.test(context.funcName), + base: base + }; +}); + +// Stretchy accents under the body +defineFunction(["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\undertilde"], { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "accentUnder", + label: context.funcName, + value: ordargument(body), + body: body + }; +}); + +// Stretchy arrows with an optional argument +defineFunction(["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xLongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xLongequal", "\\xtofrom"], { + numArgs: 1, + numOptionalArgs: 1 +}, function (context, args) { + var below = args[0]; + var body = args[1]; + return { + type: "xArrow", // x for extensible + label: context.funcName, + body: body, + below: below + }; +}); + +// enclose +defineFunction(["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\fbox"], { + numArgs: 1 +}, function (context, args) { + var body = args[0]; + return { + type: "enclose", + label: context.funcName, + body: body + }; +}); + +// Infix generalized fractions +defineFunction(["\\over", "\\choose", "\\atop"], { + numArgs: 0, + infix: true +}, function (context) { + var replaceWith = void 0; + switch (context.funcName) { + case "\\over": + replaceWith = "\\frac"; + break; + case "\\choose": + replaceWith = "\\binom"; + break; + case "\\atop": + replaceWith = "\\\\atopfrac"; + break; + default: + throw new Error("Unrecognized infix genfrac command"); + } + return { + type: "infix", + replaceWith: replaceWith, + token: context.token + }; +}); + +// Row breaks for aligned data +defineFunction(["\\\\", "\\cr"], { + numArgs: 0, + numOptionalArgs: 1, + argTypes: ["size"] +}, function (context, args) { + var size = args[0]; + return { + type: "cr", + size: size + }; +}); + +// Environment delimiters +defineFunction(["\\begin", "\\end"], { + numArgs: 1, + argTypes: ["text"] +}, function (context, args) { + var nameGroup = args[0]; + if (nameGroup.type !== "ordgroup") { + throw new _ParseError2.default("Invalid environment name", nameGroup); + } + var name = ""; + for (var i = 0; i < nameGroup.value.length; ++i) { + name += nameGroup.value[i].value; + } + return { + type: "environment", + name: name, + nameGroup: nameGroup + }; +}); + +},{"./ParseError":29,"./ParseNode":30,"./utils":51}],44:[function(require,module,exports){ +"use strict"; + +/** + * Predefined macros for KaTeX. + * This can be used to define some commands in terms of others. + */ + +// This function might one day accept additional argument and do more things. +function defineMacro(name, body) { + module.exports[name] = body; +} + +////////////////////////////////////////////////////////////////////// +// basics +defineMacro("\\bgroup", "{"); +defineMacro("\\egroup", "}"); +defineMacro("\\begingroup", "{"); +defineMacro("\\endgroup", "}"); + +// We don't distinguish between math and nonmath kerns. +// (In TeX, the mu unit works only with \mkern.) +defineMacro("\\mkern", "\\kern"); + +////////////////////////////////////////////////////////////////////// +// amsmath.sty + +// \def\overset#1#2{\binrel@{#2}\binrel@@{\mathop{\kern\z@#2}\limits^{#1}}} +defineMacro("\\overset", "\\mathop{#2}\\limits^{#1}"); +defineMacro("\\underset", "\\mathop{#2}\\limits_{#1}"); + +// \newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}} +defineMacro("\\boxed", "\\fbox{\\displaystyle{#1}}"); + +//TODO: When implementing \dots, should ideally add the \DOTSB indicator +// into the macro, to indicate these are binary operators. +// \def\iff{\DOTSB\;\Longleftrightarrow\;} +// \def\implies{\DOTSB\;\Longrightarrow\;} +// \def\impliedby{\DOTSB\;\Longleftarrow\;} +defineMacro("\\iff", "\\;\\Longleftrightarrow\\;"); +defineMacro("\\implies", "\\;\\Longrightarrow\\;"); +defineMacro("\\impliedby", "\\;\\Longleftarrow\\;"); + +////////////////////////////////////////////////////////////////////// +// mathtools.sty + +//\providecommand\ordinarycolon{:} +defineMacro("\\ordinarycolon", ":"); +//\def\vcentcolon{\mathrel{\mathop\ordinarycolon}} +//TODO(edemaine): Not yet centered. Fix via \raisebox or #726 +defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); +// \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon} +defineMacro("\\dblcolon", "\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon"); +// \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=} +defineMacro("\\coloneqq", "\\vcentcolon\\mathrel{\\mkern-1.2mu}="); +// \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=} +defineMacro("\\Coloneqq", "\\dblcolon\\mathrel{\\mkern-1.2mu}="); +// \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}} +defineMacro("\\coloneq", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"); +// \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}} +defineMacro("\\Coloneq", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"); +// \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon} +defineMacro("\\eqqcolon", "=\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +// \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon} +defineMacro("\\Eqqcolon", "=\\mathrel{\\mkern-1.2mu}\\dblcolon"); +// \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon} +defineMacro("\\eqcolon", "\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +// \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon} +defineMacro("\\Eqcolon", "\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon"); +// \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx} +defineMacro("\\colonapprox", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx"); +// \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx} +defineMacro("\\Colonapprox", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx"); +// \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim} +defineMacro("\\colonsim", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim"); +// \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim} +defineMacro("\\Colonsim", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim"); + +////////////////////////////////////////////////////////////////////// +// colonequals.sty + +// Alternate names for mathtools's macros: +defineMacro("\\ratio", "\\vcentcolon"); +defineMacro("\\coloncolon", "\\dblcolon"); +defineMacro("\\colonequals", "\\coloneqq"); +defineMacro("\\coloncolonequals", "\\Coloneqq"); +defineMacro("\\equalscolon", "\\eqqcolon"); +defineMacro("\\equalscoloncolon", "\\Eqqcolon"); +defineMacro("\\colonminus", "\\coloneq"); +defineMacro("\\coloncolonminus", "\\Coloneq"); +defineMacro("\\minuscolon", "\\eqcolon"); +defineMacro("\\minuscoloncolon", "\\Eqcolon"); +// \colonapprox name is same in mathtools and colonequals. +defineMacro("\\coloncolonapprox", "\\Colonapprox"); +// \colonsim name is same in mathtools and colonequals. +defineMacro("\\coloncolonsim", "\\Colonsim"); + +// Additional macros, implemented by analogy with mathtools definitions: +defineMacro("\\simcolon", "\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +defineMacro("\\simcoloncolon", "\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon"); +defineMacro("\\approxcolon", "\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon"); +defineMacro("\\approxcoloncolon", "\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon"); + +},{}],45:[function(require,module,exports){ +"use strict"; + +var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require("babel-runtime/helpers/createClass"); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _utils = require("./utils"); + +var _utils2 = _interopRequireDefault(_utils); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * This node represents a general purpose MathML node of any type. The + * constructor requires the type of node to create (for example, `"mo"` or + * `"mspace"`, corresponding to `` and `` tags). + */ +var MathNode = function () { + function MathNode(type, children) { + (0, _classCallCheck3.default)(this, MathNode); + + this.type = type; + this.attributes = {}; + this.children = children || []; + } + + /** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ + + + (0, _createClass3.default)(MathNode, [{ + key: "setAttribute", + value: function setAttribute(name, value) { + this.attributes[name] = value; + } + + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + + }, { + key: "toNode", + value: function toNode() { + var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); + + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + for (var i = 0; i < this.children.length; i++) { + node.appendChild(this.children[i].toNode()); + } + + return node; + } + + /** + * Converts the math node into an HTML markup string. + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<" + this.type; + + // Add the attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "=\""; + markup += _utils2.default.escape(this.attributes[attr]); + markup += "\""; + } + } + + markup += ">"; + + for (var i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += ""; + + return markup; + } + }]); + return MathNode; +}(); + +/** + * This node represents a piece of text. + */ +/** + * These objects store data about MathML nodes. This is the MathML equivalent + * of the types in domTree.js. Since MathML handles its own rendering, and + * since we're mainly using MathML to improve accessibility, we don't manage + * any of the styling state that the plain DOM nodes do. + * + * The `toNode` and `toMarkup` functions work simlarly to how they do in + * domTree.js, creating namespaced DOM nodes and HTML text markup respectively. + */ + +var TextNode = function () { + function TextNode(text) { + (0, _classCallCheck3.default)(this, TextNode); + + this.text = text; + } + + /** + * Converts the text node into a DOM text node. + */ + + + (0, _createClass3.default)(TextNode, [{ + key: "toNode", + value: function toNode() { + return document.createTextNode(this.text); + } + + /** + * Converts the text node into HTML markup (which is just the text itself). + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + return _utils2.default.escape(this.text); + } + }]); + return TextNode; +}(); + +module.exports = { + MathNode: MathNode, + TextNode: TextNode +}; + +},{"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],46:[function(require,module,exports){ +'use strict'; + +var _Parser = require('./Parser'); + +var _Parser2 = _interopRequireDefault(_Parser); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Parses an expression using a Parser, then returns the parsed result. + */ +var parseTree = function parseTree(toParse, settings) { + if (!(typeof toParse === 'string' || toParse instanceof String)) { + throw new TypeError('KaTeX can only parse string typed expression'); + } + var parser = new _Parser2.default(toParse, settings); + + return parser.parse(); +}; /** + * Provides a single function for parsing an expression using a Parser + * TODO(emily): Remove this + */ + +module.exports = parseTree; + +},{"./Parser":31}],47:[function(require,module,exports){ +"use strict"; + +/** + * This file provides support to buildMathML.js and buildHTML.js + * for stretchy wide elements rendered from SVG files + * and other CSS trickery. + */ + +var buildCommon = require("./buildCommon"); +var mathMLTree = require("./mathMLTree"); +var utils = require("./utils"); + +var stretchyCodePoint = { + widehat: "^", + widetilde: "~", + undertilde: "~", + overleftarrow: "\u2190", + underleftarrow: "\u2190", + xleftarrow: "\u2190", + overrightarrow: "\u2192", + underrightarrow: "\u2192", + xrightarrow: "\u2192", + underbrace: "\u23B5", + overbrace: "\u23DE", + overleftrightarrow: "\u2194", + underleftrightarrow: "\u2194", + xleftrightarrow: "\u2194", + Overrightarrow: "\u21D2", + xRightarrow: "\u21D2", + overleftharpoon: "\u21BC", + xleftharpoonup: "\u21BC", + overrightharpoon: "\u21C0", + xrightharpoonup: "\u21C0", + xLeftarrow: "\u21D0", + xLeftrightarrow: "\u21D4", + xhookleftarrow: "\u21A9", + xhookrightarrow: "\u21AA", + xmapsto: "\u21A6", + xrightharpoondown: "\u21C1", + xleftharpoondown: "\u21BD", + xrightleftharpoons: "\u21CC", + xleftrightharpoons: "\u21CB", + xtwoheadleftarrow: "\u219E", + xtwoheadrightarrow: "\u21A0", + xLongequal: "=", + xtofrom: "\u21C4" +}; + +var mathMLnode = function mathMLnode(label) { + var node = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(stretchyCodePoint[label.substr(1)])]); + node.setAttribute("stretchy", "true"); + return node; +}; + +// In the katexImagesData object just below, the dimensions all +// correspond to path geometry inside the relevant SVG. +// For example, \rightarrow uses the same arrowhead as glyph U+2192 +// from the KaTeX Main font. The scaling factor is 1000. +// That is, inside the font, that arrowhead is 522 units tall, which +// corresponds to 0.522 em inside the document. +// And for extensible arrows, we split that distance around the math axis. + +var katexImagesData = { + // height, depth, imageName, minWidth + overleftarrow: [0.522, 0, "leftarrow", 0.5], + underleftarrow: [0.522, 0, "leftarrow", 0.5], + xleftarrow: [0.261, 0.261, "leftarrow", 0.783], + overrightarrow: [0.522, 0, "rightarrow", 0.5], + underrightarrow: [0.522, 0, "rightarrow", 0.5], + xrightarrow: [0.261, 0.261, "rightarrow", 0.783], + overbrace: [0.548, 0, "overbrace", 1.6], + underbrace: [0.548, 0, "underbrace", 1.6], + overleftrightarrow: [0.522, 0, "leftrightarrow", 0.5], + underleftrightarrow: [0.522, 0, "leftrightarrow", 0.5], + xleftrightarrow: [0.261, 0.261, "leftrightarrow", 0.783], + Overrightarrow: [0.56, 0, "doublerightarrow", 0.5], + xLeftarrow: [0.28, 0.28, "doubleleftarrow", 0.783], + xRightarrow: [0.28, 0.28, "doublerightarrow", 0.783], + xLeftrightarrow: [0.28, 0.28, "doubleleftrightarrow", 0.955], + overleftharpoon: [0.522, 0, "leftharpoon", 0.5], + overrightharpoon: [0.522, 0, "rightharpoon", 0.5], + xleftharpoonup: [0.261, 0.261, "leftharpoon", 0.783], + xrightharpoonup: [0.261, 0.261, "rightharpoon", 0.783], + xhookleftarrow: [0.261, 0.261, "hookleftarrow", 0.87], + xhookrightarrow: [0.261, 0.261, "hookrightarrow", 0.87], + overlinesegment: [0.414, 0, "linesegment", 0.5], + underlinesegment: [0.414, 0, "linesegment", 0.5], + xmapsto: [0.261, 0.261, "mapsto", 0.783], + xrightharpoondown: [0.261, 0.261, "rightharpoondown", 0.783], + xleftharpoondown: [0.261, 0.261, "leftharpoondown", 0.783], + xrightleftharpoons: [0.358, 0.358, "rightleftharpoons", 0.716], + xleftrightharpoons: [0.358, 0.358, "leftrightharpoons", 0.716], + overgroup: [0.342, 0, "overgroup", 0.87], + undergroup: [0.342, 0, "undergroup", 0.87], + xtwoheadleftarrow: [0.167, 0.167, "twoheadleftarrow", 0.86], + xtwoheadrightarrow: [0.167, 0.167, "twoheadrightarrow", 0.86], + xLongequal: [0.167, 0.167, "longequal", 0.5], + xtofrom: [0.264, 0.264, "tofrom", 0.86] +}; + +// Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts. +// Copyright (c) 2009-2010, Design Science, Inc. () +// Copyright (c) 2014-2017 Khan Academy () +// Licensed under the SIL Open Font License, Version 1.1. +// See \nhttp://scripts.sil.org/OFL + +// Nested SVGs +// Many of the KaTeX SVG images contain a nested SVG. This is done to +// achieve a stretchy image while avoiding distortion of arrowheads or +// brace corners. + +// The inner SVG typically contains a very long (400 em) arrow. + +// The outer SVG acts like a window that exposes only part of the inner SVG. +// The outer SVG will grow or shrink to match the dimensions set by CSS. + +// The inner SVG always has a longer, thinner aspect ratio than the outer +// SVG. After the inner SVG fills 100% of the height of the outer SVG, +// there is a long arrow shaft left over. That left-over shaft is not shown. +// Instead, it is sliced off because the inner SVG is set to +// "preserveAspectRatio='... slice'". + +// Thus, the reader sees an arrow that matches the subject matter width +// without distortion. + +// Some functions, such as \cancel, need to vary their aspect ratio. These +// functions do not get the nested SVG treatment. + +// Second Brush Stroke +// Low resolution monitors struggle to display images in fine detail. +// So browsers apply anti-aliasing. A long straight arrow shaft therefore +// will sometimes appear as if it has a blurred edge. + +// To mitigate this, these SVG files contain a second "brush-stroke" on the +// arrow shafts. That is, a second long thin rectangular SVG path has been +// written directly on top of each arrow shaft. This reinforcement causes +// some of the screen pixels to display as black instead of the anti-aliased +// gray pixel that a single path would generate. So we get arrow shafts +// whose edges appear to be sharper. + +var svgPath = { + doubleleftarrow: "", + + doublerightarrow: "", + + leftarrow: "", + + rightarrow: "" +}; + +var innerSVG = { + // Since bcancel's SVG is inline and it omits the viewBox attribute, + // it's stroke-width will not vary with span area. + bcancel: "", + + cancel: "", + + // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main + doubleleftarrow: ">" + svgPath["doubleleftarrow"] + "", + + // doubleleftrightarrow is from glyph U+21D4 in font KaTeX Main + doubleleftrightarrow: ">" + svgPath["doubleleftarrow"] + "\n" + svgPath["doublerightarrow"] + "", + + // doublerightarrow is from glyph U+21D2 in font KaTeX Main + doublerightarrow: ">" + svgPath["doublerightarrow"] + "", + + // hookleftarrow is from glyph U+21A9 in font KaTeX Main + hookleftarrow: ">" + svgPath["leftarrow"] + "\n", + + // hookrightarrow is from glyph U+21AA in font KaTeX Main + hookrightarrow: ">" + svgPath["rightarrow"] + "", + + // leftarrow is from glyph U+2190 in font KaTeX Main + leftarrow: ">" + svgPath["leftarrow"] + "", + + // leftharpoon is from glyph U+21BD in font KaTeX Main + leftharpoon: ">", + + // leftharpoondown is from glyph U+21BD in font KaTeX Main + leftharpoondown: ">", + + // leftrightarrow is from glyph U+2194 in font KaTeX Main + leftrightarrow: ">" + svgPath["leftarrow"] + "\n" + svgPath["rightarrow"] + "", + + // leftrightharpoons is from glyphs U+21BC/21B1 in font KaTeX Main + leftrightharpoons: ">\n", + + linesegment: ">\n", + + longequal: " viewBox='0 0 100 334' preserveAspectRatio='none'>\n", + + // mapsto is from glyph U+21A6 in font KaTeX Main + mapsto: ">" + svgPath["rightarrow"] + "", + + // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + overbrace: ">\n", + + // overgroup is from the MnSymbol package (public domain) + overgroup: ">", + + // rightarrow is from glyph U+2192 in font KaTeX Main + rightarrow: ">" + svgPath["rightarrow"] + "", + + // rightharpoon is from glyph U+21C0 in font KaTeX Main + rightharpoon: ">", + + // rightharpoondown is from glyph U+21C1 in font KaTeX Main + rightharpoondown: ">", + + // rightleftharpoons is from glyph U+21CC in font KaTeX Main + rightleftharpoons: ">", + + // tilde1 is a modified version of a glyph from the MnSymbol package + tilde1: " viewBox='0 0 600 260' preserveAspectRatio='none'>\n", + + // Ditto tilde2, tilde3, and tilde 4 + tilde2: " viewBox='0 0 1033 286' preserveAspectRatio='none'>\n", + + tilde3: " viewBox='0 0 2339 306' preserveAspectRatio='none'>\n", + + tilde4: " viewBox='0 0 2340 312' preserveAspectRatio='none'>\n", + + // tofrom is from glyph U+21C4 in font KaTeX AMS Regular + tofrom: ">", + + // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular + twoheadleftarrow: ">\n", + + // twoheadrightarrow is from glyph U+21A0 in font KaTeX AMS Regular + twoheadrightarrow: ">\n", + + // underbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + underbrace: ">\n", + + // undergroup is from the MnSymbol package (public domain) + undergroup: ">", + + // widehat1 is a modified version of a glyph from the MnSymbol package + widehat1: " viewBox='0 0 1062 239' preserveAspectRatio='none'>\n", + + // Ditto widehat2, widehat3, and widehat4 + widehat2: " viewBox='0 0 2364 300' preserveAspectRatio='none'>\n", + + widehat3: " viewBox='0 0 2364 360' preserveAspectRatio='none'>\n", + + widehat4: " viewBox='0 0 2364 420' preserveAspectRatio='none'>\n", + + xcancel: "\n" +}; + +var svgSpan = function svgSpan(group, options) { + // Create a span with inline SVG for the element. + var label = group.value.label.substr(1); + var height = 0; + var depth = 0; + var imageName = ""; + var minWidth = 0; + + if (utils.contains(["widehat", "widetilde", "undertilde"], label)) { + // There are four SVG images available for each function. + // Choose a taller image when there are more characters. + var numChars = group.value.value.length; + if (numChars > 5) { + height = 0.312; + imageName = (label === "widehat" ? "widehat" : "tilde") + "4"; + } else { + var imgIndex = [1, 1, 2, 2, 3, 3][numChars]; + if (label === "widehat") { + height = [0, 0.24, 0.30, 0.30, 0.36, 0.36][numChars]; + imageName = "widehat" + imgIndex; + } else { + height = [0, 0.26, 0.30, 0.30, 0.34, 0.34][numChars]; + imageName = "tilde" + imgIndex; + } + } + } else { + var imgData = katexImagesData[label]; + height = imgData[0]; + depth = imgData[1]; + imageName = imgData[2]; + minWidth = imgData[3]; + } + + var span = buildCommon.makeSpan([], [], options); + span.height = height; + span.depth = depth; + var totalHeight = height + depth; + span.style.height = totalHeight + "em"; + if (minWidth > 0) { + span.style.minWidth = minWidth + "em"; + } + + span.innerHTML = ""; + + return span; +}; + +var encloseSpan = function encloseSpan(inner, label, pad, options) { + // Return an image span for \cancel, \bcancel, \xcancel, or \fbox + var img = void 0; + var totalHeight = inner.height + inner.depth + 2 * pad; + + if (label === "fbox") { + img = buildCommon.makeSpan(["stretchy", label], [], options); + if (options.color) { + img.style.borderColor = options.getColor(); + } + } else { + img = buildCommon.makeSpan([], [], options); + img.innerHTML = "" + innerSVG[label] + ""; + } + + img.height = totalHeight; + img.style.height = totalHeight + "em"; + + return img; +}; + +module.exports = { + encloseSpan: encloseSpan, + mathMLnode: mathMLnode, + svgSpan: svgSpan +}; + +},{"./buildCommon":34,"./mathMLTree":45,"./utils":51}],48:[function(require,module,exports){ +"use strict"; + +/** + * This file holds a list of all no-argument functions and single-character + * symbols (like 'a' or ';'). + * + * For each of the symbols, there are three properties they can have: + * - font (required): the font to be used for this symbol. Either "main" (the + normal font), or "ams" (the ams fonts). + * - group (required): the ParseNode group type the symbol should have (i.e. + "textord", "mathord", etc). + See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types + * - replace: the character that this symbol or function should be + * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi + * character in the main font). + * + * The outermost map in the table indicates what mode the symbols should be + * accepted in (e.g. "math" or "text"). + */ + +module.exports = { + math: {}, + text: {} +}; + +function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) { + module.exports[mode][name] = { + font: font, + group: group, + replace: replace + }; + + if (acceptUnicodeChar) { + module.exports[mode][replace] = module.exports[mode][name]; + } +} + +// Some abbreviations for commonly used strings. +// This helps minify the code, and also spotting typos using jshint. + +// modes: +var math = "math"; +var text = "text"; + +// fonts: +var main = "main"; +var ams = "ams"; + +// groups: +var accent = "accent"; +var bin = "bin"; +var close = "close"; +var inner = "inner"; +var mathord = "mathord"; +var op = "op"; +var open = "open"; +var punct = "punct"; +var rel = "rel"; +var spacing = "spacing"; +var textord = "textord"; + +// Now comes the symbol table + +// Relation Symbols +defineSymbol(math, main, rel, "\u2261", "\\equiv"); +defineSymbol(math, main, rel, "\u227A", "\\prec"); +defineSymbol(math, main, rel, "\u227B", "\\succ"); +defineSymbol(math, main, rel, "\u223C", "\\sim"); +defineSymbol(math, main, rel, "\u22A5", "\\perp"); +defineSymbol(math, main, rel, "\u2AAF", "\\preceq"); +defineSymbol(math, main, rel, "\u2AB0", "\\succeq"); +defineSymbol(math, main, rel, "\u2243", "\\simeq"); +defineSymbol(math, main, rel, "\u2223", "\\mid"); +defineSymbol(math, main, rel, "\u226A", "\\ll"); +defineSymbol(math, main, rel, "\u226B", "\\gg"); +defineSymbol(math, main, rel, "\u224D", "\\asymp"); +defineSymbol(math, main, rel, "\u2225", "\\parallel"); +defineSymbol(math, main, rel, "\u22C8", "\\bowtie"); +defineSymbol(math, main, rel, "\u2323", "\\smile"); +defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq"); +defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq"); +defineSymbol(math, main, rel, "\u2250", "\\doteq"); +defineSymbol(math, main, rel, "\u2322", "\\frown"); +defineSymbol(math, main, rel, "\u220B", "\\ni"); +defineSymbol(math, main, rel, "\u221D", "\\propto"); +defineSymbol(math, main, rel, "\u22A2", "\\vdash"); +defineSymbol(math, main, rel, "\u22A3", "\\dashv"); +defineSymbol(math, main, rel, "\u220B", "\\owns"); + +// Punctuation +defineSymbol(math, main, punct, ".", "\\ldotp"); +defineSymbol(math, main, punct, "\u22C5", "\\cdotp"); + +// Misc Symbols +defineSymbol(math, main, textord, "#", "\\#"); +defineSymbol(text, main, textord, "#", "\\#"); +defineSymbol(math, main, textord, "&", "\\&"); +defineSymbol(text, main, textord, "&", "\\&"); +defineSymbol(math, main, textord, "\u2135", "\\aleph"); +defineSymbol(math, main, textord, "\u2200", "\\forall"); +defineSymbol(math, main, textord, "\u210F", "\\hbar"); +defineSymbol(math, main, textord, "\u2203", "\\exists"); +defineSymbol(math, main, textord, "\u2207", "\\nabla"); +defineSymbol(math, main, textord, "\u266D", "\\flat"); +defineSymbol(math, main, textord, "\u2113", "\\ell"); +defineSymbol(math, main, textord, "\u266E", "\\natural"); +defineSymbol(math, main, textord, "\u2663", "\\clubsuit"); +defineSymbol(math, main, textord, "\u2118", "\\wp"); +defineSymbol(math, main, textord, "\u266F", "\\sharp"); +defineSymbol(math, main, textord, "\u2662", "\\diamondsuit"); +defineSymbol(math, main, textord, "\u211C", "\\Re"); +defineSymbol(math, main, textord, "\u2661", "\\heartsuit"); +defineSymbol(math, main, textord, "\u2111", "\\Im"); +defineSymbol(math, main, textord, "\u2660", "\\spadesuit"); + +// Math and Text +defineSymbol(math, main, textord, "\u2020", "\\dag"); +defineSymbol(text, main, textord, "\u2020", "\\dag"); +defineSymbol(text, main, textord, "\u2020", "\\textdagger"); +defineSymbol(math, main, textord, "\u2021", "\\ddag"); +defineSymbol(text, main, textord, "\u2021", "\\ddag"); +defineSymbol(text, main, textord, "\u2020", "\\textdaggerdbl"); + +// Large Delimiters +defineSymbol(math, main, close, "\u23B1", "\\rmoustache"); +defineSymbol(math, main, open, "\u23B0", "\\lmoustache"); +defineSymbol(math, main, close, "\u27EF", "\\rgroup"); +defineSymbol(math, main, open, "\u27EE", "\\lgroup"); + +// Binary Operators +defineSymbol(math, main, bin, "\u2213", "\\mp"); +defineSymbol(math, main, bin, "\u2296", "\\ominus"); +defineSymbol(math, main, bin, "\u228E", "\\uplus"); +defineSymbol(math, main, bin, "\u2293", "\\sqcap"); +defineSymbol(math, main, bin, "\u2217", "\\ast"); +defineSymbol(math, main, bin, "\u2294", "\\sqcup"); +defineSymbol(math, main, bin, "\u25EF", "\\bigcirc"); +defineSymbol(math, main, bin, "\u2219", "\\bullet"); +defineSymbol(math, main, bin, "\u2021", "\\ddagger"); +defineSymbol(math, main, bin, "\u2240", "\\wr"); +defineSymbol(math, main, bin, "\u2A3F", "\\amalg"); + +// Arrow Symbols +defineSymbol(math, main, rel, "\u27F5", "\\longleftarrow"); +defineSymbol(math, main, rel, "\u21D0", "\\Leftarrow"); +defineSymbol(math, main, rel, "\u27F8", "\\Longleftarrow"); +defineSymbol(math, main, rel, "\u27F6", "\\longrightarrow"); +defineSymbol(math, main, rel, "\u21D2", "\\Rightarrow"); +defineSymbol(math, main, rel, "\u27F9", "\\Longrightarrow"); +defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow"); +defineSymbol(math, main, rel, "\u27F7", "\\longleftrightarrow"); +defineSymbol(math, main, rel, "\u21D4", "\\Leftrightarrow"); +defineSymbol(math, main, rel, "\u27FA", "\\Longleftrightarrow"); +defineSymbol(math, main, rel, "\u21A6", "\\mapsto"); +defineSymbol(math, main, rel, "\u27FC", "\\longmapsto"); +defineSymbol(math, main, rel, "\u2197", "\\nearrow"); +defineSymbol(math, main, rel, "\u21A9", "\\hookleftarrow"); +defineSymbol(math, main, rel, "\u21AA", "\\hookrightarrow"); +defineSymbol(math, main, rel, "\u2198", "\\searrow"); +defineSymbol(math, main, rel, "\u21BC", "\\leftharpoonup"); +defineSymbol(math, main, rel, "\u21C0", "\\rightharpoonup"); +defineSymbol(math, main, rel, "\u2199", "\\swarrow"); +defineSymbol(math, main, rel, "\u21BD", "\\leftharpoondown"); +defineSymbol(math, main, rel, "\u21C1", "\\rightharpoondown"); +defineSymbol(math, main, rel, "\u2196", "\\nwarrow"); +defineSymbol(math, main, rel, "\u21CC", "\\rightleftharpoons"); + +// AMS Negated Binary Relations +defineSymbol(math, ams, rel, "\u226E", "\\nless"); +defineSymbol(math, ams, rel, "\uE010", "\\nleqslant"); +defineSymbol(math, ams, rel, "\uE011", "\\nleqq"); +defineSymbol(math, ams, rel, "\u2A87", "\\lneq"); +defineSymbol(math, ams, rel, "\u2268", "\\lneqq"); +defineSymbol(math, ams, rel, "\uE00C", "\\lvertneqq"); +defineSymbol(math, ams, rel, "\u22E6", "\\lnsim"); +defineSymbol(math, ams, rel, "\u2A89", "\\lnapprox"); +defineSymbol(math, ams, rel, "\u2280", "\\nprec"); +defineSymbol(math, ams, rel, "\u22E0", "\\npreceq"); +defineSymbol(math, ams, rel, "\u22E8", "\\precnsim"); +defineSymbol(math, ams, rel, "\u2AB9", "\\precnapprox"); +defineSymbol(math, ams, rel, "\u2241", "\\nsim"); +defineSymbol(math, ams, rel, "\uE006", "\\nshortmid"); +defineSymbol(math, ams, rel, "\u2224", "\\nmid"); +defineSymbol(math, ams, rel, "\u22AC", "\\nvdash"); +defineSymbol(math, ams, rel, "\u22AD", "\\nvDash"); +defineSymbol(math, ams, rel, "\u22EA", "\\ntriangleleft"); +defineSymbol(math, ams, rel, "\u22EC", "\\ntrianglelefteq"); +defineSymbol(math, ams, rel, "\u228A", "\\subsetneq"); +defineSymbol(math, ams, rel, "\uE01A", "\\varsubsetneq"); +defineSymbol(math, ams, rel, "\u2ACB", "\\subsetneqq"); +defineSymbol(math, ams, rel, "\uE017", "\\varsubsetneqq"); +defineSymbol(math, ams, rel, "\u226F", "\\ngtr"); +defineSymbol(math, ams, rel, "\uE00F", "\\ngeqslant"); +defineSymbol(math, ams, rel, "\uE00E", "\\ngeqq"); +defineSymbol(math, ams, rel, "\u2A88", "\\gneq"); +defineSymbol(math, ams, rel, "\u2269", "\\gneqq"); +defineSymbol(math, ams, rel, "\uE00D", "\\gvertneqq"); +defineSymbol(math, ams, rel, "\u22E7", "\\gnsim"); +defineSymbol(math, ams, rel, "\u2A8A", "\\gnapprox"); +defineSymbol(math, ams, rel, "\u2281", "\\nsucc"); +defineSymbol(math, ams, rel, "\u22E1", "\\nsucceq"); +defineSymbol(math, ams, rel, "\u22E9", "\\succnsim"); +defineSymbol(math, ams, rel, "\u2ABA", "\\succnapprox"); +defineSymbol(math, ams, rel, "\u2246", "\\ncong"); +defineSymbol(math, ams, rel, "\uE007", "\\nshortparallel"); +defineSymbol(math, ams, rel, "\u2226", "\\nparallel"); +defineSymbol(math, ams, rel, "\u22AF", "\\nVDash"); +defineSymbol(math, ams, rel, "\u22EB", "\\ntriangleright"); +defineSymbol(math, ams, rel, "\u22ED", "\\ntrianglerighteq"); +defineSymbol(math, ams, rel, "\uE018", "\\nsupseteqq"); +defineSymbol(math, ams, rel, "\u228B", "\\supsetneq"); +defineSymbol(math, ams, rel, "\uE01B", "\\varsupsetneq"); +defineSymbol(math, ams, rel, "\u2ACC", "\\supsetneqq"); +defineSymbol(math, ams, rel, "\uE019", "\\varsupsetneqq"); +defineSymbol(math, ams, rel, "\u22AE", "\\nVdash"); +defineSymbol(math, ams, rel, "\u2AB5", "\\precneqq"); +defineSymbol(math, ams, rel, "\u2AB6", "\\succneqq"); +defineSymbol(math, ams, rel, "\uE016", "\\nsubseteqq"); +defineSymbol(math, ams, bin, "\u22B4", "\\unlhd"); +defineSymbol(math, ams, bin, "\u22B5", "\\unrhd"); + +// AMS Negated Arrows +defineSymbol(math, ams, rel, "\u219A", "\\nleftarrow"); +defineSymbol(math, ams, rel, "\u219B", "\\nrightarrow"); +defineSymbol(math, ams, rel, "\u21CD", "\\nLeftarrow"); +defineSymbol(math, ams, rel, "\u21CF", "\\nRightarrow"); +defineSymbol(math, ams, rel, "\u21AE", "\\nleftrightarrow"); +defineSymbol(math, ams, rel, "\u21CE", "\\nLeftrightarrow"); + +// AMS Misc +defineSymbol(math, ams, rel, "\u25B3", "\\vartriangle"); +defineSymbol(math, ams, textord, "\u210F", "\\hslash"); +defineSymbol(math, ams, textord, "\u25BD", "\\triangledown"); +defineSymbol(math, ams, textord, "\u25CA", "\\lozenge"); +defineSymbol(math, ams, textord, "\u24C8", "\\circledS"); +defineSymbol(math, ams, textord, "\xAE", "\\circledR"); +defineSymbol(text, ams, textord, "\xAE", "\\circledR"); +defineSymbol(math, ams, textord, "\u2221", "\\measuredangle"); +defineSymbol(math, ams, textord, "\u2204", "\\nexists"); +defineSymbol(math, ams, textord, "\u2127", "\\mho"); +defineSymbol(math, ams, textord, "\u2132", "\\Finv"); +defineSymbol(math, ams, textord, "\u2141", "\\Game"); +defineSymbol(math, ams, textord, "k", "\\Bbbk"); +defineSymbol(math, ams, textord, "\u2035", "\\backprime"); +defineSymbol(math, ams, textord, "\u25B2", "\\blacktriangle"); +defineSymbol(math, ams, textord, "\u25BC", "\\blacktriangledown"); +defineSymbol(math, ams, textord, "\u25A0", "\\blacksquare"); +defineSymbol(math, ams, textord, "\u29EB", "\\blacklozenge"); +defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); +defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle"); +defineSymbol(math, ams, textord, "\u2201", "\\complement"); +defineSymbol(math, ams, textord, "\xF0", "\\eth"); +defineSymbol(math, ams, textord, "\u2571", "\\diagup"); +defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); +defineSymbol(math, ams, textord, "\u25A1", "\\square"); +defineSymbol(math, ams, textord, "\u25A1", "\\Box"); +defineSymbol(math, ams, textord, "\u25CA", "\\Diamond"); +defineSymbol(math, ams, textord, "\xA5", "\\yen"); +defineSymbol(math, ams, textord, "\u2713", "\\checkmark"); +defineSymbol(text, ams, textord, "\u2713", "\\checkmark"); + +// AMS Hebrew +defineSymbol(math, ams, textord, "\u2136", "\\beth"); +defineSymbol(math, ams, textord, "\u2138", "\\daleth"); +defineSymbol(math, ams, textord, "\u2137", "\\gimel"); + +// AMS Greek +defineSymbol(math, ams, textord, "\u03DD", "\\digamma"); +defineSymbol(math, ams, textord, "\u03F0", "\\varkappa"); + +// AMS Delimiters +defineSymbol(math, ams, open, "\u250C", "\\ulcorner"); +defineSymbol(math, ams, close, "\u2510", "\\urcorner"); +defineSymbol(math, ams, open, "\u2514", "\\llcorner"); +defineSymbol(math, ams, close, "\u2518", "\\lrcorner"); + +// AMS Binary Relations +defineSymbol(math, ams, rel, "\u2266", "\\leqq"); +defineSymbol(math, ams, rel, "\u2A7D", "\\leqslant"); +defineSymbol(math, ams, rel, "\u2A95", "\\eqslantless"); +defineSymbol(math, ams, rel, "\u2272", "\\lesssim"); +defineSymbol(math, ams, rel, "\u2A85", "\\lessapprox"); +defineSymbol(math, ams, rel, "\u224A", "\\approxeq"); +defineSymbol(math, ams, bin, "\u22D6", "\\lessdot"); +defineSymbol(math, ams, rel, "\u22D8", "\\lll"); +defineSymbol(math, ams, rel, "\u2276", "\\lessgtr"); +defineSymbol(math, ams, rel, "\u22DA", "\\lesseqgtr"); +defineSymbol(math, ams, rel, "\u2A8B", "\\lesseqqgtr"); +defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); +defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq"); +defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq"); +defineSymbol(math, ams, rel, "\u223D", "\\backsim"); +defineSymbol(math, ams, rel, "\u22CD", "\\backsimeq"); +defineSymbol(math, ams, rel, "\u2AC5", "\\subseteqq"); +defineSymbol(math, ams, rel, "\u22D0", "\\Subset"); +defineSymbol(math, ams, rel, "\u228F", "\\sqsubset"); +defineSymbol(math, ams, rel, "\u227C", "\\preccurlyeq"); +defineSymbol(math, ams, rel, "\u22DE", "\\curlyeqprec"); +defineSymbol(math, ams, rel, "\u227E", "\\precsim"); +defineSymbol(math, ams, rel, "\u2AB7", "\\precapprox"); +defineSymbol(math, ams, rel, "\u22B2", "\\vartriangleleft"); +defineSymbol(math, ams, rel, "\u22B4", "\\trianglelefteq"); +defineSymbol(math, ams, rel, "\u22A8", "\\vDash"); +defineSymbol(math, ams, rel, "\u22AA", "\\Vvdash"); +defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); +defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); +defineSymbol(math, ams, rel, "\u224F", "\\bumpeq"); +defineSymbol(math, ams, rel, "\u224E", "\\Bumpeq"); +defineSymbol(math, ams, rel, "\u2267", "\\geqq"); +defineSymbol(math, ams, rel, "\u2A7E", "\\geqslant"); +defineSymbol(math, ams, rel, "\u2A96", "\\eqslantgtr"); +defineSymbol(math, ams, rel, "\u2273", "\\gtrsim"); +defineSymbol(math, ams, rel, "\u2A86", "\\gtrapprox"); +defineSymbol(math, ams, bin, "\u22D7", "\\gtrdot"); +defineSymbol(math, ams, rel, "\u22D9", "\\ggg"); +defineSymbol(math, ams, rel, "\u2277", "\\gtrless"); +defineSymbol(math, ams, rel, "\u22DB", "\\gtreqless"); +defineSymbol(math, ams, rel, "\u2A8C", "\\gtreqqless"); +defineSymbol(math, ams, rel, "\u2256", "\\eqcirc"); +defineSymbol(math, ams, rel, "\u2257", "\\circeq"); +defineSymbol(math, ams, rel, "\u225C", "\\triangleq"); +defineSymbol(math, ams, rel, "\u223C", "\\thicksim"); +defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); +defineSymbol(math, ams, rel, "\u2AC6", "\\supseteqq"); +defineSymbol(math, ams, rel, "\u22D1", "\\Supset"); +defineSymbol(math, ams, rel, "\u2290", "\\sqsupset"); +defineSymbol(math, ams, rel, "\u227D", "\\succcurlyeq"); +defineSymbol(math, ams, rel, "\u22DF", "\\curlyeqsucc"); +defineSymbol(math, ams, rel, "\u227F", "\\succsim"); +defineSymbol(math, ams, rel, "\u2AB8", "\\succapprox"); +defineSymbol(math, ams, rel, "\u22B3", "\\vartriangleright"); +defineSymbol(math, ams, rel, "\u22B5", "\\trianglerighteq"); +defineSymbol(math, ams, rel, "\u22A9", "\\Vdash"); +defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); +defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); +defineSymbol(math, ams, rel, "\u226C", "\\between"); +defineSymbol(math, ams, rel, "\u22D4", "\\pitchfork"); +defineSymbol(math, ams, rel, "\u221D", "\\varpropto"); +defineSymbol(math, ams, rel, "\u25C0", "\\blacktriangleleft"); +defineSymbol(math, ams, rel, "\u2234", "\\therefore"); +defineSymbol(math, ams, rel, "\u220D", "\\backepsilon"); +defineSymbol(math, ams, rel, "\u25B6", "\\blacktriangleright"); +defineSymbol(math, ams, rel, "\u2235", "\\because"); +defineSymbol(math, ams, rel, "\u22D8", "\\llless"); +defineSymbol(math, ams, rel, "\u22D9", "\\gggtr"); +defineSymbol(math, ams, bin, "\u22B2", "\\lhd"); +defineSymbol(math, ams, bin, "\u22B3", "\\rhd"); +defineSymbol(math, ams, rel, "\u2242", "\\eqsim"); +defineSymbol(math, main, rel, "\u22C8", "\\Join"); +defineSymbol(math, ams, rel, "\u2251", "\\Doteq"); + +// AMS Binary Operators +defineSymbol(math, ams, bin, "\u2214", "\\dotplus"); +defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); +defineSymbol(math, ams, bin, "\u22D2", "\\Cap"); +defineSymbol(math, ams, bin, "\u22D3", "\\Cup"); +defineSymbol(math, ams, bin, "\u2A5E", "\\doublebarwedge"); +defineSymbol(math, ams, bin, "\u229F", "\\boxminus"); +defineSymbol(math, ams, bin, "\u229E", "\\boxplus"); +defineSymbol(math, ams, bin, "\u22C7", "\\divideontimes"); +defineSymbol(math, ams, bin, "\u22C9", "\\ltimes"); +defineSymbol(math, ams, bin, "\u22CA", "\\rtimes"); +defineSymbol(math, ams, bin, "\u22CB", "\\leftthreetimes"); +defineSymbol(math, ams, bin, "\u22CC", "\\rightthreetimes"); +defineSymbol(math, ams, bin, "\u22CF", "\\curlywedge"); +defineSymbol(math, ams, bin, "\u22CE", "\\curlyvee"); +defineSymbol(math, ams, bin, "\u229D", "\\circleddash"); +defineSymbol(math, ams, bin, "\u229B", "\\circledast"); +defineSymbol(math, ams, bin, "\u22C5", "\\centerdot"); +defineSymbol(math, ams, bin, "\u22BA", "\\intercal"); +defineSymbol(math, ams, bin, "\u22D2", "\\doublecap"); +defineSymbol(math, ams, bin, "\u22D3", "\\doublecup"); +defineSymbol(math, ams, bin, "\u22A0", "\\boxtimes"); + +// AMS Arrows +defineSymbol(math, ams, rel, "\u21E2", "\\dashrightarrow"); +defineSymbol(math, ams, rel, "\u21E0", "\\dashleftarrow"); +defineSymbol(math, ams, rel, "\u21C7", "\\leftleftarrows"); +defineSymbol(math, ams, rel, "\u21C6", "\\leftrightarrows"); +defineSymbol(math, ams, rel, "\u21DA", "\\Lleftarrow"); +defineSymbol(math, ams, rel, "\u219E", "\\twoheadleftarrow"); +defineSymbol(math, ams, rel, "\u21A2", "\\leftarrowtail"); +defineSymbol(math, ams, rel, "\u21AB", "\\looparrowleft"); +defineSymbol(math, ams, rel, "\u21CB", "\\leftrightharpoons"); +defineSymbol(math, ams, rel, "\u21B6", "\\curvearrowleft"); +defineSymbol(math, ams, rel, "\u21BA", "\\circlearrowleft"); +defineSymbol(math, ams, rel, "\u21B0", "\\Lsh"); +defineSymbol(math, ams, rel, "\u21C8", "\\upuparrows"); +defineSymbol(math, ams, rel, "\u21BF", "\\upharpoonleft"); +defineSymbol(math, ams, rel, "\u21C3", "\\downharpoonleft"); +defineSymbol(math, ams, rel, "\u22B8", "\\multimap"); +defineSymbol(math, ams, rel, "\u21AD", "\\leftrightsquigarrow"); +defineSymbol(math, ams, rel, "\u21C9", "\\rightrightarrows"); +defineSymbol(math, ams, rel, "\u21C4", "\\rightleftarrows"); +defineSymbol(math, ams, rel, "\u21A0", "\\twoheadrightarrow"); +defineSymbol(math, ams, rel, "\u21A3", "\\rightarrowtail"); +defineSymbol(math, ams, rel, "\u21AC", "\\looparrowright"); +defineSymbol(math, ams, rel, "\u21B7", "\\curvearrowright"); +defineSymbol(math, ams, rel, "\u21BB", "\\circlearrowright"); +defineSymbol(math, ams, rel, "\u21B1", "\\Rsh"); +defineSymbol(math, ams, rel, "\u21CA", "\\downdownarrows"); +defineSymbol(math, ams, rel, "\u21BE", "\\upharpoonright"); +defineSymbol(math, ams, rel, "\u21C2", "\\downharpoonright"); +defineSymbol(math, ams, rel, "\u21DD", "\\rightsquigarrow"); +defineSymbol(math, ams, rel, "\u21DD", "\\leadsto"); +defineSymbol(math, ams, rel, "\u21DB", "\\Rrightarrow"); +defineSymbol(math, ams, rel, "\u21BE", "\\restriction"); + +defineSymbol(math, main, textord, "\u2018", "`"); +defineSymbol(math, main, textord, "$", "\\$"); +defineSymbol(text, main, textord, "$", "\\$"); +defineSymbol(text, main, textord, "$", "\\textdollar"); +defineSymbol(math, main, textord, "%", "\\%"); +defineSymbol(text, main, textord, "%", "\\%"); +defineSymbol(math, main, textord, "_", "\\_"); +defineSymbol(text, main, textord, "_", "\\_"); +defineSymbol(text, main, textord, "_", "\\textunderscore"); +defineSymbol(math, main, textord, "\u2220", "\\angle"); +defineSymbol(math, main, textord, "\u221E", "\\infty"); +defineSymbol(math, main, textord, "\u2032", "\\prime"); +defineSymbol(math, main, textord, "\u25B3", "\\triangle"); +defineSymbol(math, main, textord, "\u0393", "\\Gamma", true); +defineSymbol(math, main, textord, "\u0394", "\\Delta", true); +defineSymbol(math, main, textord, "\u0398", "\\Theta", true); +defineSymbol(math, main, textord, "\u039B", "\\Lambda", true); +defineSymbol(math, main, textord, "\u039E", "\\Xi", true); +defineSymbol(math, main, textord, "\u03A0", "\\Pi", true); +defineSymbol(math, main, textord, "\u03A3", "\\Sigma", true); +defineSymbol(math, main, textord, "\u03A5", "\\Upsilon", true); +defineSymbol(math, main, textord, "\u03A6", "\\Phi", true); +defineSymbol(math, main, textord, "\u03A8", "\\Psi", true); +defineSymbol(math, main, textord, "\u03A9", "\\Omega", true); +defineSymbol(math, main, textord, "\xAC", "\\neg"); +defineSymbol(math, main, textord, "\xAC", "\\lnot"); +defineSymbol(math, main, textord, "\u22A4", "\\top"); +defineSymbol(math, main, textord, "\u22A5", "\\bot"); +defineSymbol(math, main, textord, "\u2205", "\\emptyset"); +defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); +defineSymbol(math, main, mathord, "\u03B1", "\\alpha", true); +defineSymbol(math, main, mathord, "\u03B2", "\\beta", true); +defineSymbol(math, main, mathord, "\u03B3", "\\gamma", true); +defineSymbol(math, main, mathord, "\u03B4", "\\delta", true); +defineSymbol(math, main, mathord, "\u03F5", "\\epsilon", true); +defineSymbol(math, main, mathord, "\u03B6", "\\zeta", true); +defineSymbol(math, main, mathord, "\u03B7", "\\eta", true); +defineSymbol(math, main, mathord, "\u03B8", "\\theta", true); +defineSymbol(math, main, mathord, "\u03B9", "\\iota", true); +defineSymbol(math, main, mathord, "\u03BA", "\\kappa", true); +defineSymbol(math, main, mathord, "\u03BB", "\\lambda", true); +defineSymbol(math, main, mathord, "\u03BC", "\\mu", true); +defineSymbol(math, main, mathord, "\u03BD", "\\nu", true); +defineSymbol(math, main, mathord, "\u03BE", "\\xi", true); +defineSymbol(math, main, mathord, "\u03BF", "\\omicron", true); +defineSymbol(math, main, mathord, "\u03C0", "\\pi", true); +defineSymbol(math, main, mathord, "\u03C1", "\\rho", true); +defineSymbol(math, main, mathord, "\u03C3", "\\sigma", true); +defineSymbol(math, main, mathord, "\u03C4", "\\tau", true); +defineSymbol(math, main, mathord, "\u03C5", "\\upsilon", true); +defineSymbol(math, main, mathord, "\u03D5", "\\phi", true); +defineSymbol(math, main, mathord, "\u03C7", "\\chi", true); +defineSymbol(math, main, mathord, "\u03C8", "\\psi", true); +defineSymbol(math, main, mathord, "\u03C9", "\\omega", true); +defineSymbol(math, main, mathord, "\u03B5", "\\varepsilon", true); +defineSymbol(math, main, mathord, "\u03D1", "\\vartheta", true); +defineSymbol(math, main, mathord, "\u03D6", "\\varpi", true); +defineSymbol(math, main, mathord, "\u03F1", "\\varrho", true); +defineSymbol(math, main, mathord, "\u03C2", "\\varsigma", true); +defineSymbol(math, main, mathord, "\u03C6", "\\varphi", true); +defineSymbol(math, main, bin, "\u2217", "*"); +defineSymbol(math, main, bin, "+", "+"); +defineSymbol(math, main, bin, "\u2212", "-"); +defineSymbol(math, main, bin, "\u22C5", "\\cdot"); +defineSymbol(math, main, bin, "\u2218", "\\circ"); +defineSymbol(math, main, bin, "\xF7", "\\div"); +defineSymbol(math, main, bin, "\xB1", "\\pm"); +defineSymbol(math, main, bin, "\xD7", "\\times"); +defineSymbol(math, main, bin, "\u2229", "\\cap"); +defineSymbol(math, main, bin, "\u222A", "\\cup"); +defineSymbol(math, main, bin, "\u2216", "\\setminus"); +defineSymbol(math, main, bin, "\u2227", "\\land"); +defineSymbol(math, main, bin, "\u2228", "\\lor"); +defineSymbol(math, main, bin, "\u2227", "\\wedge"); +defineSymbol(math, main, bin, "\u2228", "\\vee"); +defineSymbol(math, main, textord, "\u221A", "\\surd"); +defineSymbol(math, main, open, "(", "("); +defineSymbol(math, main, open, "[", "["); +defineSymbol(math, main, open, "\u27E8", "\\langle"); +defineSymbol(math, main, open, "\u2223", "\\lvert"); +defineSymbol(math, main, open, "\u2225", "\\lVert"); +defineSymbol(math, main, close, ")", ")"); +defineSymbol(math, main, close, "]", "]"); +defineSymbol(math, main, close, "?", "?"); +defineSymbol(math, main, close, "!", "!"); +defineSymbol(math, main, close, "\u27E9", "\\rangle"); +defineSymbol(math, main, close, "\u2223", "\\rvert"); +defineSymbol(math, main, close, "\u2225", "\\rVert"); +defineSymbol(math, main, rel, "=", "="); +defineSymbol(math, main, rel, "<", "<"); +defineSymbol(math, main, rel, ">", ">"); +defineSymbol(math, main, rel, ":", ":"); +defineSymbol(math, main, rel, "\u2248", "\\approx"); +defineSymbol(math, main, rel, "\u2245", "\\cong"); +defineSymbol(math, main, rel, "\u2265", "\\ge"); +defineSymbol(math, main, rel, "\u2265", "\\geq"); +defineSymbol(math, main, rel, "\u2190", "\\gets"); +defineSymbol(math, main, rel, ">", "\\gt"); +defineSymbol(math, main, rel, "\u2208", "\\in"); +defineSymbol(math, main, rel, "\u2209", "\\notin"); +defineSymbol(math, main, rel, "\u0338", "\\not"); +defineSymbol(math, main, rel, "\u2282", "\\subset"); +defineSymbol(math, main, rel, "\u2283", "\\supset"); +defineSymbol(math, main, rel, "\u2286", "\\subseteq"); +defineSymbol(math, main, rel, "\u2287", "\\supseteq"); +defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq"); +defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq"); +defineSymbol(math, main, rel, "\u22A8", "\\models"); +defineSymbol(math, main, rel, "\u2190", "\\leftarrow"); +defineSymbol(math, main, rel, "\u2264", "\\le"); +defineSymbol(math, main, rel, "\u2264", "\\leq"); +defineSymbol(math, main, rel, "<", "\\lt"); +defineSymbol(math, main, rel, "\u2260", "\\ne"); +defineSymbol(math, main, rel, "\u2260", "\\neq"); +defineSymbol(math, main, rel, "\u2192", "\\rightarrow"); +defineSymbol(math, main, rel, "\u2192", "\\to"); +defineSymbol(math, ams, rel, "\u2271", "\\ngeq"); +defineSymbol(math, ams, rel, "\u2270", "\\nleq"); +defineSymbol(math, main, spacing, null, "\\!"); +defineSymbol(math, main, spacing, "\xA0", "\\ "); +defineSymbol(math, main, spacing, "\xA0", "~"); +defineSymbol(math, main, spacing, null, "\\,"); +defineSymbol(math, main, spacing, null, "\\:"); +defineSymbol(math, main, spacing, null, "\\;"); +defineSymbol(math, main, spacing, null, "\\enspace"); +defineSymbol(math, main, spacing, null, "\\qquad"); +defineSymbol(math, main, spacing, null, "\\quad"); +defineSymbol(math, main, spacing, "\xA0", "\\space"); +defineSymbol(math, main, punct, ",", ","); +defineSymbol(math, main, punct, ";", ";"); +defineSymbol(math, main, punct, ":", "\\colon"); +defineSymbol(math, ams, bin, "\u22BC", "\\barwedge"); +defineSymbol(math, ams, bin, "\u22BB", "\\veebar"); +defineSymbol(math, main, bin, "\u2299", "\\odot"); +defineSymbol(math, main, bin, "\u2295", "\\oplus"); +defineSymbol(math, main, bin, "\u2297", "\\otimes"); +defineSymbol(math, main, textord, "\u2202", "\\partial"); +defineSymbol(math, main, bin, "\u2298", "\\oslash"); +defineSymbol(math, ams, bin, "\u229A", "\\circledcirc"); +defineSymbol(math, ams, bin, "\u22A1", "\\boxdot"); +defineSymbol(math, main, bin, "\u25B3", "\\bigtriangleup"); +defineSymbol(math, main, bin, "\u25BD", "\\bigtriangledown"); +defineSymbol(math, main, bin, "\u2020", "\\dagger"); +defineSymbol(math, main, bin, "\u22C4", "\\diamond"); +defineSymbol(math, main, bin, "\u22C6", "\\star"); +defineSymbol(math, main, bin, "\u25C3", "\\triangleleft"); +defineSymbol(math, main, bin, "\u25B9", "\\triangleright"); +defineSymbol(math, main, open, "{", "\\{"); +defineSymbol(text, main, textord, "{", "\\{"); +defineSymbol(text, main, textord, "{", "\\textbraceleft"); +defineSymbol(math, main, close, "}", "\\}"); +defineSymbol(text, main, textord, "}", "\\}"); +defineSymbol(text, main, textord, "}", "\\textbraceright"); +defineSymbol(math, main, open, "{", "\\lbrace"); +defineSymbol(math, main, close, "}", "\\rbrace"); +defineSymbol(math, main, open, "[", "\\lbrack"); +defineSymbol(math, main, close, "]", "\\rbrack"); +defineSymbol(text, main, textord, "<", "\\textless"); // in T1 fontenc +defineSymbol(text, main, textord, ">", "\\textgreater"); // in T1 fontenc +defineSymbol(math, main, open, "\u230A", "\\lfloor"); +defineSymbol(math, main, close, "\u230B", "\\rfloor"); +defineSymbol(math, main, open, "\u2308", "\\lceil"); +defineSymbol(math, main, close, "\u2309", "\\rceil"); +defineSymbol(math, main, textord, "\\", "\\backslash"); +defineSymbol(math, main, textord, "\u2223", "|"); +defineSymbol(math, main, textord, "\u2223", "\\vert"); +defineSymbol(text, main, textord, "|", "\\textbar"); // in T1 fontenc +defineSymbol(math, main, textord, "\u2225", "\\|"); +defineSymbol(math, main, textord, "\u2225", "\\Vert"); +defineSymbol(text, main, textord, "\u2225", "\\textbardbl"); +defineSymbol(math, main, rel, "\u2191", "\\uparrow"); +defineSymbol(math, main, rel, "\u21D1", "\\Uparrow"); +defineSymbol(math, main, rel, "\u2193", "\\downarrow"); +defineSymbol(math, main, rel, "\u21D3", "\\Downarrow"); +defineSymbol(math, main, rel, "\u2195", "\\updownarrow"); +defineSymbol(math, main, rel, "\u21D5", "\\Updownarrow"); +defineSymbol(math, main, op, "\u2210", "\\coprod"); +defineSymbol(math, main, op, "\u22C1", "\\bigvee"); +defineSymbol(math, main, op, "\u22C0", "\\bigwedge"); +defineSymbol(math, main, op, "\u2A04", "\\biguplus"); +defineSymbol(math, main, op, "\u22C2", "\\bigcap"); +defineSymbol(math, main, op, "\u22C3", "\\bigcup"); +defineSymbol(math, main, op, "\u222B", "\\int"); +defineSymbol(math, main, op, "\u222B", "\\intop"); +defineSymbol(math, main, op, "\u222C", "\\iint"); +defineSymbol(math, main, op, "\u222D", "\\iiint"); +defineSymbol(math, main, op, "\u220F", "\\prod"); +defineSymbol(math, main, op, "\u2211", "\\sum"); +defineSymbol(math, main, op, "\u2A02", "\\bigotimes"); +defineSymbol(math, main, op, "\u2A01", "\\bigoplus"); +defineSymbol(math, main, op, "\u2A00", "\\bigodot"); +defineSymbol(math, main, op, "\u222E", "\\oint"); +defineSymbol(math, main, op, "\u2A06", "\\bigsqcup"); +defineSymbol(math, main, op, "\u222B", "\\smallint"); +defineSymbol(text, main, inner, "\u2026", "\\textellipsis"); +defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); +defineSymbol(text, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u2026", "\\ldots", true); +defineSymbol(math, main, inner, "\u22EF", "\\cdots", true); +defineSymbol(math, main, inner, "\u22F1", "\\ddots", true); +defineSymbol(math, main, textord, "\u22EE", "\\vdots", true); +defineSymbol(math, main, accent, "\xB4", "\\acute"); +defineSymbol(math, main, accent, "`", "\\grave"); +defineSymbol(math, main, accent, "\xA8", "\\ddot"); +defineSymbol(math, main, accent, "~", "\\tilde"); +defineSymbol(math, main, accent, "\xAF", "\\bar"); +defineSymbol(math, main, accent, "\u02D8", "\\breve"); +defineSymbol(math, main, accent, "\u02C7", "\\check"); +defineSymbol(math, main, accent, "^", "\\hat"); +defineSymbol(math, main, accent, "\u20D7", "\\vec"); +defineSymbol(math, main, accent, "\u02D9", "\\dot"); +defineSymbol(math, main, mathord, "\u0131", "\\imath"); +defineSymbol(math, main, mathord, "\u0237", "\\jmath"); +defineSymbol(text, main, accent, "\u02CA", "\\'"); // acute +defineSymbol(text, main, accent, "\u02CB", "\\`"); // grave +defineSymbol(text, main, accent, "\u02C6", "\\^"); // circumflex +defineSymbol(text, main, accent, "\u02DC", "\\~"); // tilde +defineSymbol(text, main, accent, "\u02C9", "\\="); // macron +defineSymbol(text, main, accent, "\u02D8", "\\u"); // breve +defineSymbol(text, main, accent, "\u02D9", "\\."); // dot above +defineSymbol(text, main, accent, "\u02DA", "\\r"); // ring above +defineSymbol(text, main, accent, "\u02C7", "\\v"); // caron +defineSymbol(text, main, accent, "\xA8", '\\"'); // diaresis +defineSymbol(text, main, accent, "\u030B", "\\H"); // double acute + +defineSymbol(text, main, textord, "\u2013", "--"); +defineSymbol(text, main, textord, "\u2013", "\\textendash"); +defineSymbol(text, main, textord, "\u2014", "---"); +defineSymbol(text, main, textord, "\u2014", "\\textemdash"); +defineSymbol(text, main, textord, "\u2018", "`"); +defineSymbol(text, main, textord, "\u2018", "\\textquoteleft"); +defineSymbol(text, main, textord, "\u2019", "'"); +defineSymbol(text, main, textord, "\u2019", "\\textquoteright"); +defineSymbol(text, main, textord, "\u201C", "``"); +defineSymbol(text, main, textord, "\u201C", "\\textquotedblleft"); +defineSymbol(text, main, textord, "\u201D", "''"); +defineSymbol(text, main, textord, "\u201D", "\\textquotedblright"); +defineSymbol(math, main, textord, "\xB0", "\\degree"); +defineSymbol(text, main, textord, "\xB0", "\\degree"); +// TODO: In LaTeX, \pounds can generate a different character in text and math +// mode, but among our fonts, only Main-Italic defines this character "163". +defineSymbol(math, main, mathord, "\xA3", "\\pounds"); +defineSymbol(math, main, mathord, "\xA3", "\\mathsterling"); +defineSymbol(text, main, mathord, "\xA3", "\\pounds"); +defineSymbol(text, main, mathord, "\xA3", "\\textsterling"); +defineSymbol(math, ams, textord, "\u2720", "\\maltese"); +defineSymbol(text, ams, textord, "\u2720", "\\maltese"); + +defineSymbol(text, main, spacing, "\xA0", "\\ "); +defineSymbol(text, main, spacing, "\xA0", " "); +defineSymbol(text, main, spacing, "\xA0", "~"); + +// There are lots of symbols which are the same, so we add them in afterwards. + +// All of these are textords in math mode +var mathTextSymbols = "0123456789/@.\""; +for (var i = 0; i < mathTextSymbols.length; i++) { + var ch = mathTextSymbols.charAt(i); + defineSymbol(math, main, textord, ch, ch); +} + +// All of these are textords in text mode +var textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,"; +for (var _i = 0; _i < textSymbols.length; _i++) { + var _ch = textSymbols.charAt(_i); + defineSymbol(text, main, textord, _ch, _ch); +} + +// All of these are textords in text mode, and mathords in math mode +var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +for (var _i2 = 0; _i2 < letters.length; _i2++) { + var _ch2 = letters.charAt(_i2); + defineSymbol(math, main, mathord, _ch2, _ch2); + defineSymbol(text, main, textord, _ch2, _ch2); +} + +// Latin-1 letters +for (var _i3 = 0x00C0; _i3 <= 0x00D6; _i3++) { + var _ch3 = String.fromCharCode(_i3); + defineSymbol(math, main, mathord, _ch3, _ch3); + defineSymbol(text, main, textord, _ch3, _ch3); +} + +for (var _i4 = 0x00D8; _i4 <= 0x00F6; _i4++) { + var _ch4 = String.fromCharCode(_i4); + defineSymbol(math, main, mathord, _ch4, _ch4); + defineSymbol(text, main, textord, _ch4, _ch4); +} + +for (var _i5 = 0x00F8; _i5 <= 0x00FF; _i5++) { + var _ch5 = String.fromCharCode(_i5); + defineSymbol(math, main, mathord, _ch5, _ch5); + defineSymbol(text, main, textord, _ch5, _ch5); +} + +// Cyrillic +for (var _i6 = 0x0410; _i6 <= 0x044F; _i6++) { + var _ch6 = String.fromCharCode(_i6); + defineSymbol(text, main, textord, _ch6, _ch6); +} + +// Unicode versions of existing characters +defineSymbol(text, main, textord, "\u2013", "–"); +defineSymbol(text, main, textord, "\u2014", "—"); +defineSymbol(text, main, textord, "\u2018", "‘"); +defineSymbol(text, main, textord, "\u2019", "’"); +defineSymbol(text, main, textord, "\u201C", "“"); +defineSymbol(text, main, textord, "\u201D", "”"); + +},{}],49:[function(require,module,exports){ +"use strict"; + +var hangulRegex = /[\uAC00-\uD7AF]/; + +// This regex combines +// - CJK symbols and punctuation: [\u3000-\u303F] +// - Hiragana: [\u3040-\u309F] +// - Katakana: [\u30A0-\u30FF] +// - CJK ideograms: [\u4E00-\u9FAF] +// - Hangul syllables: [\uAC00-\uD7AF] +// - Fullwidth punctuation: [\uFF00-\uFF60] +// Notably missing are halfwidth Katakana and Romanji glyphs. +var cjkRegex = /[\u3000-\u30FF\u4E00-\u9FAF\uAC00-\uD7AF\uFF00-\uFF60]/; + +module.exports = { + cjkRegex: cjkRegex, + hangulRegex: hangulRegex +}; + +},{}],50:[function(require,module,exports){ +"use strict"; + +var _ParseError = require("./ParseError"); + +var _ParseError2 = _interopRequireDefault(_ParseError); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// This table gives the number of TeX pts in one of each *absolute* TeX unit. +// Thus, multiplying a length by this number converts the length from units +// into pts. Dividing the result by ptPerEm gives the number of ems +// *assuming* a font size of ptPerEm (normal size, normal style). +var ptPerUnit = { + // https://en.wikibooks.org/wiki/LaTeX/Lengths and + // https://tex.stackexchange.com/a/8263 + "pt": 1, // TeX point + "mm": 7227 / 2540, // millimeter + "cm": 7227 / 254, // centimeter + "in": 72.27, // inch + "bp": 803 / 800, // big (PostScript) points + "pc": 12, // pica + "dd": 1238 / 1157, // didot + "cc": 14856 / 1157, // cicero (12 didot) + "nd": 685 / 642, // new didot + "nc": 1370 / 107, // new cicero (12 new didot) + "sp": 1 / 65536, // scaled point (TeX's internal smallest unit) + // https://tex.stackexchange.com/a/41371 + "px": 803 / 800 }; + +// Dictionary of relative units, for fast validity testing. +/* eslint no-console:0 */ + +/** + * This file does conversion between units. In particular, it provides + * calculateSize to convert other units into ems. + */ + +var relativeUnit = { + "ex": true, + "em": true, + "mu": true +}; + +/** + * Determine whether the specified unit (either a string defining the unit + * or a "size" parse node containing a unit field) is valid. + */ +var validUnit = function validUnit(unit) { + if (unit.unit) { + unit = unit.unit; + } + return unit in ptPerUnit || unit in relativeUnit || unit === "ex"; +}; + +/* + * Convert a "size" parse node (with numeric "number" and string "unit" fields, + * as parsed by functions.js argType "size") into a CSS em value for the + * current style/scale. `options` gives the current options. + */ +var calculateSize = function calculateSize(sizeValue, options) { + var scale = void 0; + if (sizeValue.unit in ptPerUnit) { + // Absolute units + scale = ptPerUnit[sizeValue.unit] // Convert unit to pt + / options.fontMetrics().ptPerEm // Convert pt to CSS em + / options.sizeMultiplier; // Unscale to make absolute units + } else if (sizeValue.unit === "mu") { + // `mu` units scale with scriptstyle/scriptscriptstyle. + scale = options.fontMetrics().cssEmPerMu; + } else { + // Other relative units always refer to the *textstyle* font + // in the current size. + var unitOptions = void 0; + if (options.style.isTight()) { + // isTight() means current style is script/scriptscript. + unitOptions = options.havingStyle(options.style.text()); + } else { + unitOptions = options; + } + // TODO: In TeX these units are relative to the quad of the current + // *text* font, e.g. cmr10. KaTeX instead uses values from the + // comparably-sized *Computer Modern symbol* font. At 10pt, these + // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641; + // cmr5=1.361133, cmsy5=1.472241. Consider $\scriptsize a\kern1emb$. + // TeX \showlists shows a kern of 1.13889 * fontsize; + // KaTeX shows a kern of 1.171 * fontsize. + if (sizeValue.unit === "ex") { + scale = unitOptions.fontMetrics().xHeight; + } else if (sizeValue.unit === "em") { + scale = unitOptions.fontMetrics().quad; + } else { + throw new _ParseError2.default("Invalid unit: '" + sizeValue.unit + "'"); + } + if (unitOptions !== options) { + scale *= unitOptions.sizeMultiplier / options.sizeMultiplier; + } + } + return sizeValue.number * scale; +}; + +module.exports = { + validUnit: validUnit, + calculateSize: calculateSize +}; + +},{"./ParseError":29}],51:[function(require,module,exports){ +"use strict"; + +/** + * This file contains a list of utility functions which are useful in other + * files. + */ + +/** + * Provide an `indexOf` function which works in IE8, but defers to native if + * possible. + */ +var nativeIndexOf = Array.prototype.indexOf; +var indexOf = function indexOf(list, elem) { + if (list == null) { + return -1; + } + if (nativeIndexOf && list.indexOf === nativeIndexOf) { + return list.indexOf(elem); + } + var l = list.length; + for (var i = 0; i < l; i++) { + if (list[i] === elem) { + return i; + } + } + return -1; +}; + +/** + * Return whether an element is contained in a list + */ +var contains = function contains(list, elem) { + return indexOf(list, elem) !== -1; +}; + +/** + * Provide a default value if a setting is undefined + */ +var deflt = function deflt(setting, defaultIfUndefined) { + return setting === undefined ? defaultIfUndefined : setting; +}; + +// hyphenate and escape adapted from Facebook's React under Apache 2 license + +var uppercase = /([A-Z])/g; +var hyphenate = function hyphenate(str) { + return str.replace(uppercase, "-$1").toLowerCase(); +}; + +var ESCAPE_LOOKUP = { + "&": "&", + ">": ">", + "<": "<", + "\"": """, + "'": "'" +}; + +var ESCAPE_REGEX = /[&><"']/g; + +function escaper(match) { + return ESCAPE_LOOKUP[match]; +} + +/** + * Escapes text to prevent scripting attacks. + * + * @param {*} text Text value to escape. + * @return {string} An escaped string. + */ +function escape(text) { + return ("" + text).replace(ESCAPE_REGEX, escaper); +} + +/** + * A function to set the text content of a DOM element in all supported + * browsers. Note that we don't define this if there is no document. + */ +var setTextContent = void 0; +if (typeof document !== "undefined") { + var testNode = document.createElement("span"); + if ("textContent" in testNode) { + setTextContent = function setTextContent(node, text) { + node.textContent = text; + }; + } else { + setTextContent = function setTextContent(node, text) { + node.innerText = text; + }; + } +} + +/** + * A function to clear a node. + */ +function clearNode(node) { + setTextContent(node, ""); +} + +module.exports = { + contains: contains, + deflt: deflt, + escape: escape, + hyphenate: hyphenate, + indexOf: indexOf, + setTextContent: setTextContent, + clearNode: clearNode +}; + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/static/katex/katex.min.css b/static/katex/katex.min.css new file mode 100644 index 00000000..2aba5d86 --- /dev/null +++ b/static/katex/katex.min.css @@ -0,0 +1 @@ +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex .base,.katex .katex-html,.katex .strut{display:inline-block}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base{position:relative}.katex .mathrm{font-style:normal}.katex .mainit,.katex .mathit,.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px}.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .mtable .arraycolsep,.katex .mtable .vertical-separator,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing{display:inline-block}.katex .msupsub{text-align:left}.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .mfrac .frac-line{width:100%;border-bottom-style:solid}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .accent .accent-body.accent-hungarian>span{position:relative;left:.25em}.katex .mtable .vertical-separator{margin:0 -.025em;border-right:.05em solid #000}.katex .stretchy,.katex svg{width:100%;display:block}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{position:absolute}.katex svg path{fill:currentColor}.katex svg line{stroke:currentColor}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{box-sizing:border-box;border:.04em solid #000}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap{margin-left:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em} \ No newline at end of file diff --git a/static/katex/katex.min.js b/static/katex/katex.min.js new file mode 100644 index 00000000..a7aba03b --- /dev/null +++ b/static/katex/katex.min.js @@ -0,0 +1,6 @@ +(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function e(t,r,a){function n(l,s){if(!r[l]){if(!t[l]){var o=typeof require=="function"&&require;if(!s&&o)return o(l,!0);if(i)return i(l,!0);var u=new Error("Cannot find module '"+l+"'");throw u.code="MODULE_NOT_FOUND",u}var c=r[l]={exports:{}};t[l][0].call(c.exports,function(e){var r=t[l][1][e];return n(r?r:e)},c,c.exports,e,t,r,a)}return r[l].exports}var i=typeof require=="function"&&require;for(var l=0;l=0;--c){a=n[c];if(a.text==="#"){if(c===0){throw new h.default("Incomplete placeholder at end of macro body",a)}a=n[--c];if(a.text==="#"){n.splice(c+1,1)}else if(/^[1-9]$/.test(a.text)){n.splice.apply(n,[c,2].concat(u[a.text-1]))}else{throw new h.default("Not a valid argument number",a)}}}}this.stack=this.stack.concat(n)}}},{key:"get",value:function e(t){this.discardedWhiteSpace=[];var r=this.nextToken();if(t){while(r.text===" "){this.discardedWhiteSpace.push(r);r=this.nextToken()}}return r}},{key:"unget",value:function e(t){this.stack.push(t);while(this.discardedWhiteSpace.length!==0){this.stack.push(this.discardedWhiteSpace.pop())}}}]);return e}();t.exports=m},{"./Lexer":26,"./ParseError":29,"./macros":44,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5,"object-assign":25}],28:[function(e,t,r){"use strict";var a=e("babel-runtime/helpers/classCallCheck");var n=u(a);var i=e("babel-runtime/helpers/createClass");var l=u(i);var s=e("./fontMetrics");var o=u(s);function u(e){return e&&e.__esModule?e:{default:e}}var c=6;var f=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]];var h=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488];var v=function e(t,r){return r.size<2?t:f[t-1][r.size-1]};var d=function(){function e(t){(0,n.default)(this,e);this.style=t.style;this.color=t.color;this.size=t.size||c;this.textSize=t.textSize||this.size;this.phantom=t.phantom;this.font=t.font;this.sizeMultiplier=h[this.size-1];this._fontMetrics=null}(0,l.default)(e,[{key:"extend",value:function t(r){var a={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font};for(var n in r){if(r.hasOwnProperty(n)){a[n]=r[n]}}return new e(a)}},{key:"havingStyle",value:function e(t){if(this.style===t){return this}else{return this.extend({style:t,size:v(this.textSize,t)})}}},{key:"havingCrampedStyle",value:function e(){return this.havingStyle(this.style.cramp())}},{key:"havingSize",value:function e(t){if(this.size===t&&this.textSize===t){return this}else{return this.extend({style:this.style.text(),size:t,textSize:t})}}},{key:"havingBaseStyle",value:function e(t){t=t||this.style.text();var r=v(c,t);if(this.size===r&&this.textSize===c&&this.style===t){return this}else{return this.extend({style:t,size:r,baseSize:c})}}},{key:"withColor",value:function e(t){return this.extend({color:t})}},{key:"withPhantom",value:function e(){return this.extend({phantom:true})}},{key:"withFont",value:function e(t){return this.extend({font:t||this.font})}},{key:"sizingClasses",value:function e(t){if(t.size!==this.size){return["sizing","reset-size"+t.size,"size"+this.size]}else{return[]}}},{key:"baseSizingClasses",value:function e(){if(this.size!==c){return["sizing","reset-size"+this.size,"size"+c]}else{return[]}}},{key:"fontMetrics",value:function e(){if(!this._fontMetrics){this._fontMetrics=o.default.getFontMetrics(this.size)}return this._fontMetrics}},{key:"getColor",value:function t(){if(this.phantom){return"transparent"}else{return e.colorMap[this.color]||this.color}}}]);return e}();d.colorMap={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};d.BASESIZE=c;t.exports=d},{"./fontMetrics":41,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],29:[function(e,t,r){"use strict";var a=e("babel-runtime/helpers/classCallCheck");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}var l=function e(t,r){(0,n.default)(this,e);var a="KaTeX parse error: "+t;var i=void 0;var l=void 0;if(r&&r.lexer&&r.start<=r.end){var s=r.lexer.input;i=r.start;l=r.end;if(i===s.length){a+=" at end of input: "}else{a+=" at position "+(i+1)+": "}var o=s.slice(i,l).replace(/[^]/g,"$&\u0332");var u=void 0;if(i>15){u="\u2026"+s.slice(i-15,i)}else{u=s.slice(0,i)}var c=void 0;if(l+15e.SUPSUB_GREEDINESS){return this.parseFunction(i)}else{throw new M.default("Got function '"+i.result+"' with no arguments "+"as "+r,a)}}else{return i.result}}},{key:"handleUnsupportedCmd",value:function e(){var t=this.nextToken.text;var r=[];for(var a=0;an){h=this.parseFunction(f)}else{throw new M.default("Got function '"+f.result+"' as "+"argument to '"+t+"'",u)}}else{h=f.result}l.push(h);i.push(this.pos)}l.push(i);return l}},{key:"parseGroupOfType",value:function e(t,r){var a=this.mode;if(t==="original"){t=a}if(t==="color"){return this.parseColorGroup(r)}if(t==="size"){return this.parseSizeGroup(r)}this.switchMode(t);if(t==="text"){this.consumeSpaces()}var n=this.parseGroup(r);this.switchMode(a);return n}},{key:"consumeSpaces",value:function e(){while(this.nextToken.text===" "){this.consume()}}},{key:"parseStringGroup",value:function e(t,r){if(r&&this.nextToken.text!=="["){return null}var a=this.mode;this.mode="text";this.expect(r?"[":"{");var n="";var i=this.nextToken;var l=i;while(this.nextToken.text!==(r?"]":"}")){if(this.nextToken.text==="EOF"){throw new M.default("Unexpected end of input in "+t,i.range(this.nextToken,n))}l=this.nextToken;n+=l.text;this.consume()}this.mode=a;this.expect(r?"]":"}");return i.range(l,n)}},{key:"parseRegexGroup",value:function e(t,r){var a=this.mode;this.mode="text";var n=this.nextToken;var i=n;var l="";while(this.nextToken.text!=="EOF"&&t.test(l+this.nextToken.text)){i=this.nextToken;l+=i.text;this.consume()}if(l===""){throw new M.default("Invalid "+r+": '"+n.text+"'",n)}this.mode=a;return n.range(i,l)}},{key:"parseColorGroup",value:function e(t){var r=this.parseStringGroup("color",t);if(!r){return null}var a=/^(#[a-z0-9]+|[a-z]+)$/i.exec(r.text);if(!a){throw new M.default("Invalid color: '"+r.text+"'",r)}return new S(new b.default("color",a[0],this.mode),false)}},{key:"parseSizeGroup",value:function e(t){var r=void 0;if(!t&&this.nextToken.text!=="{"){r=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")}else{r=this.parseStringGroup("size",t)}if(!r){return null}var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text);if(!a){throw new M.default("Invalid size: '"+r.text+"'",r)}var n={number:+(a[1]+a[2]),unit:a[3]};if(!y.default.validUnit(n)){throw new M.default("Invalid unit: '"+n.unit+"'",r)}return new S(new b.default("size",n,this.mode),false)}},{key:"parseGroup",value:function e(t){var r=this.nextToken;if(this.nextToken.text===(t?"[":"{")){this.consume();var a=this.parseExpression(false,t?"]":null);var n=this.nextToken;this.expect(t?"]":"}");if(this.mode==="text"){this.formLigatures(a)}return new S(new b.default("ordgroup",a,this.mode,r,n),false)}else{return t?null:this.parseSymbol()}}},{key:"formLigatures",value:function e(t){var r=t.length-1;for(var a=0;a=2}}]);return e}();var u=0;var c=1;var f=2;var h=3;var v=4;var d=5;var p=6;var m=7;var g=[new o(u,0,false),new o(c,0,true),new o(f,1,false),new o(h,1,true),new o(v,2,false),new o(d,2,true),new o(p,3,false),new o(m,3,true)];var y=[v,d,v,d,p,m,p,m];var x=[d,d,d,d,m,m,m,m];var w=[f,h,v,d,p,m,p,m];var b=[h,h,d,d,m,m,m,m];var k=[c,c,h,h,d,d,m,m];var M=[u,c,f,h,f,h,f,h];t.exports={DISPLAY:g[u],TEXT:g[f],SCRIPT:g[v],SCRIPTSCRIPT:g[p]}},{"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],34:[function(e,t,r){"use strict";var a=e("./domTree");var n=f(a);var i=e("./fontMetrics");var l=f(i);var s=e("./symbols");var o=f(s);var u=e("./utils");var c=f(u);function f(e){return e&&e.__esModule?e:{default:e}}var h=["\\imath","\\jmath","\\pounds"];var v=function e(t,r,a){if(o.default[a][t]&&o.default[a][t].replace){t=o.default[a][t].replace}return{value:t,metrics:l.default.getCharacterMetrics(t,r)}};var d=function e(t,r,a,i,l){var s=v(t,r,a);var o=s.metrics;t=s.value;var u=void 0;if(o){var c=o.italic;if(a==="text"){c=0}u=new n.default.symbolNode(t,o.height,o.depth,c,o.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+t+"' in style '"+r+"'");u=new n.default.symbolNode(t,0,0,0,0,l)}if(i){u.maxFontSize=i.sizeMultiplier;if(i.style.isTight()){u.classes.push("mtight")}if(i.getColor()){u.style.color=i.getColor()}}return u};var p=function e(t,r,a,n){if(t==="\\"||o.default[r][t].font==="main"){return d(t,"Main-Regular",r,a,n)}else{return d(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}};var m=function e(t,r,a,n,i){if(i==="mathord"){var l=g(t,r,a,n);return d(t,l.fontName,r,a,n.concat([l.fontClass]))}else if(i==="textord"){var s=o.default[r][t]&&o.default[r][t].font;if(s==="ams"){return d(t,"AMS-Regular",r,a,n.concat(["amsrm"]))}else{return d(t,"Main-Regular",r,a,n.concat(["mathrm"]))}}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var g=function e(t,r,a,n){if(/[0-9]/.test(t.charAt(0))||c.default.contains(h,t)){ +return{fontName:"Main-Italic",fontClass:"mainit"}}else{return{fontName:"Math-Italic",fontClass:"mathit"}}};var y=function e(t,r,a){var n=t.mode;var i=t.value;var l=["mord"];var s=r.font;if(s){var o=void 0;if(s==="mathit"||c.default.contains(h,i)){o=g(i,n,r,l)}else{o=S[s]}if(v(i,o.fontName,n).metrics){return d(i,o.fontName,n,r,l.concat([o.fontClass||s]))}else{return m(i,n,r,l,a)}}else{return m(i,n,r,l,a)}};var x=function e(t){var r=0;var a=0;var n=0;if(t.children){for(var i=0;ir){r=t.children[i].height}if(t.children[i].depth>a){a=t.children[i].depth}if(t.children[i].maxFontSize>n){n=t.children[i].maxFontSize}}}t.height=r;t.depth=a;t.maxFontSize=n};var w=function e(t,r,a){var i=new n.default.span(t,r,a);x(i);return i};var b=function e(t,r){t.children=r.concat(t.children);x(t)};var k=function e(t){var r=new n.default.documentFragment(t);x(r);return r};var M=function e(t,r,a,i){var l=void 0;var s=void 0;var o=void 0;if(r==="individualShift"){var u=t;t=[u[0]];l=-u[0].shift-u[0].elem.depth;s=l;for(o=1;o0){s+=x;f-=x}}var w=[{type:"elem",elem:n,shift:f,marginRight:p},{type:"elem",elem:a,shift:-s,marginRight:p}];if(r instanceof d.default.symbolNode){w[0].marginLeft=-r.italic+"em"}m=c.default.makeVList(w,"individualShift",null,t)}var b=T(r)||"mord";return(0,u.makeSpan)([b],[r,(0,u.makeSpan)(["msupsub"],[m])],t)};E.genfrac=function(e,t){var r=t.style;if(e.value.size==="display"){r=o.default.DISPLAY}else if(e.value.size==="text"){r=o.default.TEXT}var a=r.fracNum();var n=r.fracDen();var i=void 0;i=t.havingStyle(a);var l=L(e.value.numer,i,t);i=t.havingStyle(n);var s=L(e.value.denom,i,t);var f=void 0;var v=void 0;var d=void 0;if(e.value.hasBarLine){f=B("frac-line",t);v=f.height;d=f.height}else{f=null;v=0;d=t.fontMetrics().defaultRuleThickness}var p=void 0;var m=void 0;var g=void 0;if(r.size===o.default.DISPLAY.size){p=t.fontMetrics().num1;if(v>0){m=3*d}else{m=7*d}g=t.fontMetrics().denom1}else{if(v>0){p=t.fontMetrics().num2;m=d}else{p=t.fontMetrics().num3;m=3*d}g=t.fontMetrics().denom2}var y=void 0;if(v===0){var x=p-l.depth-(s.height-g);if(x0){A+=x;if(M=i){continue}var O=void 0;if(a>0||e.value.hskipBeforeAndAfter){O=y.default.deflt(_.pregap,f);if(O!==0){R=(0,u.makeSpan)(["arraycolsep"],[]);R.style.width=O+"em";N.push(R)}}var P=[];for(r=0;rr.height+r.depth+l){l=(l+p-r.height-r.depth)/2}var m=f.height-r.height-l-v;var g=void 0;if(r.height===0&&r.depth===0){g=(0,u.makeSpan)()}else{r.style.paddingLeft=f.surdWidth+"em";g=c.default.makeVList([{type:"elem",elem:r},{type:"kern",size:-(r.height+m)},{type:"elem",elem:f},{type:"kern",size:v}],"firstBaseline",null,t);g.children[0].children[0].classes.push("svg-align")}if(!e.value.index){return(0,u.makeSpan)(["mord","sqrt"],[g],t)}else{var y=t.havingStyle(o.default.SCRIPTSCRIPT);var x=L(e.value.index,y,t);var w=.6*(g.height-g.depth);var b=c.default.makeVList([{type:"elem",elem:x}],"shift",-w,t);var k=(0,u.makeSpan)(["root"],[b]);return(0,u.makeSpan)(["mord","sqrt"],[k,g],t)}};function O(e,t,r){var a=C(e,t,false);var n=t.sizeMultiplier/r.sizeMultiplier;for(var i=0;i0){m.style.width="calc(100% - "+2*s+"em)";m.style.marginLeft=2*s+"em"}}var g=(0,u.makeSpan)(["mord","accent"],[v],t);if(a){a.children[0]=g;a.height=Math.max(g.height,a.height);a.classes[0]="mord";return a}else{return g}};E.horizBrace=function(e,t){var r=t.style;var a=e.type==="supsub";var n=void 0;var i=void 0;if(a){if(e.value.sup){i=t.havingStyle(r.sup());n=L(e.value.sup,i,t)}else{i=t.havingStyle(r.sub());n=L(e.value.sub,i,t)}e=e.value.base}var l=L(e.value.base,t.havingBaseStyle(o.default.DISPLAY));var s=w.default.svgSpan(e,t);var f=void 0;if(e.value.isOver){f=c.default.makeVList([{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:s}],"firstBaseline",null,t);f.children[0].children[0].children[1].classes.push("svg-align")}else{f=c.default.makeVList([{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:l}],"bottom",l.depth+.1+s.height,t);f.children[0].children[0].children[0].classes.push("svg-align")}if(a){var h=(0,u.makeSpan)(["mord",e.value.isOver?"mover":"munder"],[f],t);if(e.value.isOver){f=c.default.makeVList([{type:"elem",elem:h},{type:"kern",size:.2},{type:"elem",elem:n}],"firstBaseline",null,t)}else{f=c.default.makeVList([{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:h}],"bottom",h.depth+.2+n.height,t)}}return(0,u.makeSpan)(["mord",e.value.isOver?"mover":"munder"],[f],t)};E.accentUnder=function(e,t){var r=L(e.value.body,t);var a=w.default.svgSpan(e,t);var n=/tilde/.test(e.value.label)?.12:0;var i=c.default.makeVList([{type:"elem",elem:a},{type:"kern",size:n},{type:"elem",elem:r}],"bottom",a.height+n,t);i.children[0].children[0].children[0].classes.push("svg-align");return(0,u.makeSpan)(["mord","accentunder"],[i],t)};E.enclose=function(e,t){var r=L(e.value.body,t);var a=e.value.label.substr(1);var n=t.sizeMultiplier;var i=void 0;var l=0;var s=0;if(a==="sout"){i=(0,u.makeSpan)(["stretchy","sout"]);i.height=t.fontMetrics().defaultRuleThickness/n;s=-.5*t.fontMetrics().xHeight}else{r.classes.push(a==="fbox"?"boxpad":"cancel-pad");var o=q(e.value.body);l=a==="fbox"?.34:o?.2:0;s=r.depth+l;i=w.default.encloseSpan(r,a,l,t)}var f=c.default.makeVList([{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:s}],"individualShift",null,t);if(a!=="fbox"){f.children[0].children[0].children[1].classes.push("svg-align")}if(/cancel/.test(a)){return(0,u.makeSpan)(["mord","cancel-lap"],[f],t)}else{return(0,u.makeSpan)(["mord"],[f],t)}};E.xArrow=function(e,t){var r=t.style;var a=t.havingStyle(r.sup());var n=L(e.value.body,a,t);n.classes.push("x-arrow-pad");var i=void 0;if(e.value.below){a=t.havingStyle(r.sub());i=L(e.value.below,a,t);i.classes.push("x-arrow-pad")}var l=w.default.svgSpan(e,t);var s=-t.fontMetrics().axisHeight+l.depth;var o=-t.fontMetrics().axisHeight-l.height-.111;var f=void 0;if(e.value.below){var h=-t.fontMetrics().axisHeight+i.height+l.height+.111;f=c.default.makeVList([{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:s},{type:"elem",elem:i,shift:h}],"individualShift",null,t)}else{f=c.default.makeVList([{type:"elem",elem:n,shift:o},{type:"elem",elem:l,shift:s}],"individualShift",null,t)}f.children[0].children[0].children[1].classes.push("svg-align");return(0,u.makeSpan)(["mrel","x-arrow"],[f],t)};E.phantom=function(e,t){var r=C(e.value.value,t.withPhantom(),false);return new c.default.makeFragment(r)};E.mclass=function(e,t){var r=C(e.value.value,t,true);return(0,u.makeSpan)([e.value.mclass],r,t)};var L=function e(t,r,a){if(!t){return(0,u.makeSpan)()}if(E[t.type]){var n=E[t.type](t,r);if(a&&r.size!==a.size){n=(0,u.makeSpan)(r.sizingClasses(a),[n],r);var i=r.sizeMultiplier/a.sizeMultiplier;n.height*=i;n.depth*=i}return n}else{throw new l.default("Got group of unknown type: '"+t.type+"'")}};var P=function e(t,r){t=JSON.parse((0,n.default)(t));var a=C(t,r,true);var i=(0,u.makeSpan)(["base"],a,r);var l=(0,u.makeSpan)(["strut"]);var s=(0,u.makeSpan)(["strut","bottom"]);l.style.height=i.height+"em";s.style.height=i.height+i.depth+"em";s.style.verticalAlign=-i.depth+"em";var o=(0,u.makeSpan)(["katex-html"],[l,s,i]);o.setAttribute("aria-hidden","true");return o};t.exports=P},{"./ParseError":29,"./Style":33,"./buildCommon":34,"./delimiter":38,"./domTree":39,"./stretchy":47,"./units":50,"./utils":51,"babel-runtime/core-js/json/stringify":2}],36:[function(e,t,r){"use strict";var a=e("./buildCommon");var n=x(a);var i=e("./fontMetrics");var l=x(i);var s=e("./mathMLTree");var o=x(s);var u=e("./ParseError");var c=x(u);var f=e("./Style");var h=x(f);var v=e("./symbols");var d=x(v);var p=e("./utils");var m=x(p);var g=e("./stretchy");var y=x(g);function x(e){return e&&e.__esModule?e:{default:e}}var w=function e(t,r){if(d.default[r][t]&&d.default[r][t].replace){t=d.default[r][t].replace}return new o.default.TextNode(t)};var b=function e(t,r){var n=r.font;if(!n){return null}var i=t.mode;if(n==="mathit"){return"italic"}var s=t.value;if(m.default.contains(["\\imath","\\jmath"],s)){return null}if(d.default[i][s]&&d.default[i][s].replace){s=d.default[i][s].replace}var o=a.fontMap[n].fontName;if(l.default.getCharacterMetrics(s,o)){return a.fontMap[r.font].variant}return null};var k={};var M={mi:"italic",mn:"normal",mtext:"normal"};k.mathord=function(e,t){var r=new o.default.MathNode("mi",[w(e.value,e.mode)]);var a=b(e,t)||"italic";if(a!==M[r.type]){r.setAttribute("mathvariant",a)}return r};k.textord=function(e,t){var r=w(e.value,e.mode);var a=b(e,t)||"normal";var n=void 0;if(e.mode==="text"){n=new o.default.MathNode("mtext",[r])}else if(/[0-9]/.test(e.value)){n=new o.default.MathNode("mn",[r])}else if(e.value==="\\prime"){n=new o.default.MathNode("mo",[r])}else{n=new o.default.MathNode("mi",[r])}if(a!==M[n.type]){n.setAttribute("mathvariant",a)}return n};k.bin=function(e){var t=new o.default.MathNode("mo",[w(e.value,e.mode)]);return t};k.rel=function(e){var t=new o.default.MathNode("mo",[w(e.value,e.mode)]);return t};k.open=function(e){var t=new o.default.MathNode("mo",[w(e.value,e.mode)]);return t};k.close=function(e){var t=new o.default.MathNode("mo",[w(e.value,e.mode)]);return t};k.inner=function(e){var t=new o.default.MathNode("mo",[w(e.value,e.mode)]);return t};k.punct=function(e){var t=new o.default.MathNode("mo",[w(e.value,e.mode)]);t.setAttribute("separator","true");return t};k.ordgroup=function(e,t){var r=z(e.value,t);var a=new o.default.MathNode("mrow",r);return a};k.text=function(e,t){var r=e.value.body;var a=[];var n=null;for(var i=0;i2&&arguments[2]!==undefined?arguments[2]:false;if(!t){return new o.default.MathNode("mrow")}if(k[t.type]){var n=k[t.type](t,r);if(a){if(n.type==="mrow"&&n.children.length===1){return n.children[0]}}return n}else{throw new c.default("Got group of unknown type: '"+t.type+"'")}};var A=function e(t,r,n){var i=z(t,n);var l=new o.default.MathNode("mrow",i);var s=new o.default.MathNode("annotation",[new o.default.TextNode(r)]);s.setAttribute("encoding","application/x-tex");var u=new o.default.MathNode("semantics",[l,s]);var c=new o.default.MathNode("math",[u]);return(0,a.makeSpan)(["katex-mathml"],[c])};t.exports=A},{"./ParseError":29,"./Style":33,"./buildCommon":34,"./fontMetrics":41,"./mathMLTree":45,"./stretchy":47,"./symbols":48,"./utils":51}],37:[function(e,t,r){"use strict";var a=e("./buildHTML");var n=d(a);var i=e("./buildMathML");var l=d(i);var s=e("./buildCommon");var o=e("./Options");var u=d(o);var c=e("./Settings");var f=d(c);var h=e("./Style");var v=d(h);function d(e){return e&&e.__esModule?e:{default:e}}var p=function e(t,r,a){a=a||new f.default({});var i=v.default.TEXT;if(a.displayMode){i=v.default.DISPLAY}var o=new u.default({style:i});var c=(0,l.default)(t,r,o);var h=(0,n.default)(t,o);var d=(0,s.makeSpan)(["katex"],[c,h]);if(a.displayMode){return(0,s.makeSpan)(["katex-display"],[d])}else{return d}};t.exports=p},{"./Options":28,"./Settings":32,"./Style":33,"./buildCommon":34,"./buildHTML":35,"./buildMathML":36}],38:[function(e,t,r){"use strict";var a=e("./ParseError");var n=p(a);var i=e("./Style");var l=p(i);var s=e("./buildCommon");var o=p(s);var u=e("./fontMetrics");var c=p(u);var f=e("./symbols");var h=p(f);var v=e("./utils");var d=p(v);function p(e){return e&&e.__esModule?e:{default:e}}var m=function e(t,r){if(h.default.math[t]&&h.default.math[t].replace){return c.default.getCharacterMetrics(h.default.math[t].replace,r)}else{return c.default.getCharacterMetrics(t,r)}};var g=function e(t,r,a,n){var i=a.havingBaseStyle(r);var l=(0,s.makeSpan)((n||[]).concat(i.sizingClasses(a)),[t],a);l.delimSizeMultiplier=i.sizeMultiplier/a.sizeMultiplier;l.height*=l.delimSizeMultiplier;l.depth*=l.delimSizeMultiplier;l.maxFontSize=i.sizeMultiplier;return l};var y=function e(t,r,a){var n=r.havingBaseStyle(a);var i=(1-r.sizeMultiplier/n.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter");t.style.top=i+"em";t.height-=i;t.depth+=i};var x=function e(t,r,a,n,i,l){var s=o.default.makeSymbol(t,"Main-Regular",i,n);var u=g(s,r,n,l);if(a){y(u,n,r)}return u};var w=function e(t,r,a,n){return o.default.makeSymbol(t,"Size"+r+"-Regular",a,n)};var b=function e(t,r,a,n,i,o){var u=w(t,r,i,n);var c=g((0,s.makeSpan)(["delimsizing","size"+r],[u],n),l.default.TEXT,n,o);if(a){y(c,n,l.default.TEXT)}return c};var k=function e(t,r,a){var n=void 0;if(r==="Size1-Regular"){n="delim-size1"}else if(r==="Size4-Regular"){n="delim-size4"}var i=(0,s.makeSpan)(["delimsizinginner",n],[(0,s.makeSpan)([],[o.default.makeSymbol(t,r,a)])]);return{type:"elem",elem:i}};var M=function e(t,r,a,n,i,u){var c=void 0;var f=void 0;var h=void 0;var v=void 0;c=h=v=t;f=null;var d="Size1-Regular";if(t==="\\uparrow"){h=v="\u23d0"}else if(t==="\\Uparrow"){h=v="\u2016"}else if(t==="\\downarrow"){c=h="\u23d0"}else if(t==="\\Downarrow"){c=h="\u2016"}else if(t==="\\updownarrow"){c="\\uparrow";h="\u23d0";v="\\downarrow"}else if(t==="\\Updownarrow"){c="\\Uparrow";h="\u2016";v="\\Downarrow"}else if(t==="["||t==="\\lbrack"){c="\u23a1";h="\u23a2";v="\u23a3";d="Size4-Regular"}else if(t==="]"||t==="\\rbrack"){c="\u23a4";h="\u23a5";v="\u23a6";d="Size4-Regular"}else if(t==="\\lfloor"){h=c="\u23a2";v="\u23a3";d="Size4-Regular"}else if(t==="\\lceil"){c="\u23a1";h=v="\u23a2";d="Size4-Regular"}else if(t==="\\rfloor"){h=c="\u23a5";v="\u23a6";d="Size4-Regular"}else if(t==="\\rceil"){c="\u23a4";h=v="\u23a5";d="Size4-Regular"}else if(t==="("){c="\u239b";h="\u239c";v="\u239d";d="Size4-Regular"}else if(t===")"){c="\u239e";h="\u239f";v="\u23a0";d="Size4-Regular"}else if(t==="\\{"||t==="\\lbrace"){c="\u23a7";f="\u23a8";v="\u23a9";h="\u23aa";d="Size4-Regular"}else if(t==="\\}"||t==="\\rbrace"){c="\u23ab";f="\u23ac";v="\u23ad";h="\u23aa";d="Size4-Regular"}else if(t==="\\lgroup"){c="\u23a7";v="\u23a9";h="\u23aa";d="Size4-Regular"}else if(t==="\\rgroup"){c="\u23ab";v="\u23ad";h="\u23aa";d="Size4-Regular"}else if(t==="\\lmoustache"){c="\u23a7";v="\u23ad";h="\u23aa";d="Size4-Regular"}else if(t==="\\rmoustache"){c="\u23ab";v="\u23a9";h="\u23aa";d="Size4-Regular"}var p=m(c,d);var y=p.height+p.depth;var x=m(h,d);var w=x.height+x.depth;var b=m(v,d);var M=b.height+b.depth;var z=0;var S=1;if(f!==null){var A=m(f,d);z=A.height+A.depth;S=2}var C=y+M+z;var T=Math.ceil((r-C)/(S*w));var N=C+T*S*w;var R=n.fontMetrics().axisHeight;if(a){R*=n.sizeMultiplier}var q=N/2-R;var _=[];_.push(k(v,d,i));if(f===null){for(var E=0;E",1:"",2:"",3:"",4:"",tall:"l-4 4-4 4c-.667.667-2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1h\n-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170c-4-3.333-8.333\n-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 219 661 l218 661z\nM702 0H400000v40H742z'/>"};var S=function e(t,r,a){var n=o.default.makeSpan([],[],a);var i=a.sizeMultiplier;if(r.type==="small"){var l=a.havingBaseStyle(r.style);i=l.sizeMultiplier/a.sizeMultiplier;n.height=1*i;n.style.height=n.height+"em";n.surdWidth=.833*i;n.innerHTML="\n "+z["main"]+""}else if(r.type==="large"){n.height=N[r.size]/i;n.style.height=n.height+"em";n.surdWidth=1/i;n.innerHTML='\n '+z[r.size]+""}else{n.height=t/i;n.style.height=n.height+"em";n.surdWidth=1.056/i;var s=Math.floor(n.height*1e3);var u=s-54;n.innerHTML="\n \n r){return a[l]}}return a[a.length-1]};var L=function e(t,r,a,n,i,l){if(t==="<"||t==="\\lt"){t="\\langle"}else if(t===">"||t==="\\gt"){t="\\rangle"}var s=void 0;if(d.default.contains(T,t)){s=q}else if(d.default.contains(A,t)){s=E}else{s=_}var o=O(t,r,s,n);if(t==="\\surd"){return S(r,o,n)}else{if(o.type==="small"){return x(t,o.style,a,n,i,l)}else if(o.type==="large"){return b(t,o.size,a,n,i,l)}else if(o.type==="stack"){return M(t,r,a,n,i,l)}}};var P=function e(t,r,a,n,i,l){var s=n.fontMetrics().axisHeight*n.sizeMultiplier;var o=901;var u=5/n.fontMetrics().ptPerEm;var c=Math.max(r-s,a+s);var f=Math.max(c/500*o,2*c-u);return L(t,f,true,n,i,l)};t.exports={sizedDelim:R,customSizedDelim:L,leftRightDelim:P}},{"./ParseError":29,"./Style":33,"./buildCommon":34,"./fontMetrics":41,"./symbols":48,"./utils":51}],39:[function(e,t,r){"use strict";var a=e("babel-runtime/helpers/classCallCheck");var n=f(a);var i=e("babel-runtime/helpers/createClass");var l=f(i);var s=e("./unicodeRegexes");var o=f(s);var u=e("./utils");var c=f(u);function f(e){return e&&e.__esModule?e:{default:e}}var h=function e(t){t=t.slice();for(var r=t.length-1;r>=0;r--){if(!t[r]){t.splice(r,1)}}return t.join(" ")};var v=function(){function e(t,r,a){(0,n.default)(this,e);this.classes=t||[];this.children=r||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};this.innerHTML;if(a){if(a.style.isTight()){this.classes.push("mtight")}if(a.getColor()){this.style.color=a.getColor()}}}(0,l.default)(e,[{key:"setAttribute",value:function e(t,r){this.attributes[t]=r}},{key:"tryCombine",value:function e(t){return false}},{key:"toNode",value:function e(){var t=document.createElement("span");t.className=h(this.classes);for(var r in this.style){if(Object.prototype.hasOwnProperty.call(this.style,r)){t.style[r]=this.style[r]}}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){t.setAttribute(a,this.attributes[a])}}if(this.innerHTML){t.innerHTML=this.innerHTML}for(var n=0;n";return t}}]);return e}();var d=function(){function e(t){(0,n.default)(this,e);this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0}(0,l.default)(e,[{key:"toNode",value:function e(){var t=document.createDocumentFragment();for(var r=0;r0||h(this.classes)!==h(r.classes)||this.skew!==r.skew||this.maxFontSize!==r.maxFontSize){return false}for(var a in this.style){if(this.style.hasOwnProperty(a)&&this.style[a]!==r.style[a]){return false}}for(var n in r.style){if(r.style.hasOwnProperty(n)&&this.style[n]!==r.style[n]){return false}}this.value+=r.value;this.height=Math.max(this.height,r.height);this.depth=Math.max(this.depth,r.depth);this.italic=r.italic;return true}},{key:"toNode",value:function e(){var t=document.createTextNode(this.value);var r=null;if(this.italic>0){r=document.createElement("span");r.style.marginRight=this.italic+"em"}if(this.classes.length>0){r=r||document.createElement("span");r.className=h(this.classes)}for(var a in this.style){if(this.style.hasOwnProperty(a)){r=r||document.createElement("span");r.style[a]=this.style[a]}}if(r){r.appendChild(t);return r}else{return t}}},{key:"toMarkup",value:function e(){var t=false;var r="0){a+="margin-right:"+this.italic+"em;"}for(var n in this.style){if(this.style.hasOwnProperty(n)){a+=c.default.hyphenate(n)+":"+this.style[n]+";"}}if(a){t=true;r+=' style="'+c.default.escape(a)+'"'}var i=c.default.escape(this.value);if(t){r+=">";r+=i;r+="";return r}else{return i}}}]);return e}();t.exports={span:v,documentFragment:d,symbolNode:m}},{"./unicodeRegexes":49,"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],40:[function(e,t,r){"use strict";var a=e("./ParseNode");var n=s(a);var i=e("./ParseError");var l=s(i);function s(e){return e&&e.__esModule?e:{default:e}}function o(e,t,r){var a=[];var i=[a];var s=[];while(true){var o=e.parseExpression(false,null);o=new n.default("ordgroup",o,e.mode);if(r){o=new n.default("styling",{style:r,value:[o]},e.mode)}a.push(o);var u=e.nextToken.text;if(u==="&"){e.consume()}else if(u==="\\end"){break}else if(u==="\\\\"||u==="\\cr"){var c=e.parseFunction();s.push(c.value.size);a=[];i.push(a)}else{throw new l.default("Expected & or \\\\ or \\end",e.nextToken)}}t.body=i;t.rowGaps=s;return new n.default(t.type,t,e.mode)}function u(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var n={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var i=0;i0){s=2}t.value.cols[i]={type:"align",align:l,pregap:s,postgap:0}}return t});u("gathered",{},function(e){var t={type:"array",cols:[{type:"align",align:"c"}],addJot:true};t=o(e.parser,t,"display");return t})},{"./ParseError":29,"./ParseNode":30}],41:[function(e,t,r){"use strict";var a=e("./unicodeRegexes");var n=e("./fontMetricsData");var i=l(n);function l(e){return e&&e.__esModule?e:{default:e}}var s={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2]};var o={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};var u=function e(t,r){var n=t.charCodeAt(0);if(t[0]in o){n=o[t[0]].charCodeAt(0)}else if(a.cjkRegex.test(t[0])){n="M".charCodeAt(0)}var l=i.default[r][n];if(l){return{depth:l[0],height:l[1],italic:l[2],skew:l[3],width:l[4]}}};var c={};var f=function e(t){var r=void 0;if(t>=5){r=0}else if(t>=3){r=1}else{r=2}if(!c[r]){var a=c[r]={};for(var n in s){if(s.hasOwnProperty(n)){a[n]=s[n][r]}}a.cssEmPerMu=a.quad/18}return c[r]};t.exports={getFontMetrics:f,getCharacterMetrics:u}},{"./fontMetricsData":42,"./unicodeRegexes":49}],42:[function(e,t,r){"use strict";t.exports={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0], +58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],43:[function(e,t,r){"use strict";var a=e("./utils");var n=u(a);var i=e("./ParseError");var l=u(i);var s=e("./ParseNode");var o=u(s);function u(e){return e&&e.__esModule?e:{default:e}}function c(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var n={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var i=0;i","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var p={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};c(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:f(r)}});c(["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});c(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});c(["\\int","\\iint","\\iiint","\\oint"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:true,body:e.funcName}});c(["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:true,body:e.funcName}});c("\\mathop",{numArgs:1},function(e,t){var r=t[0];return{type:"op",limits:false,symbol:false,value:f(r)}});c(["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var n=void 0;var i=null;var l=null;var s="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":n=true;break;case"\\\\atopfrac":n=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":n=false;i="(";l=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":s="display";break;case"\\tfrac":case"\\tbinom":s="text";break}return{type:"genfrac",numer:r,denom:a,hasBarLine:n,leftDelim:i,rightDelim:l,size:s}});c(["\\llap","\\rlap"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function e(t,r){if(n.default.contains(d,t.value)){return t}else{throw new l.default("Invalid delimiter: '"+t.value+"' after '"+r.funcName+"'",t)}};c(["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"delimsizing",size:v[e.funcName].size,mclass:v[e.funcName].mclass,value:r.value}});c(["\\left","\\right"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"leftright",value:r.value}});c("\\middle",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new l.default("\\middle without preceding \\left",r)}return{type:"middle",value:r.value}});c(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],0,null);c(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],0,null);c(["\\rm","\\sf","\\tt","\\bf","\\it"],0,null);c(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in p){a=p[a]}return{type:"font",font:a.slice(1),body:r}});c(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],{numArgs:1},function(e,t){var r=t[0];var a=!n.default.contains(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],e.funcName);var i=!a||n.default.contains(["\\widehat","\\widetilde"],e.funcName);return{type:"accent",label:e.funcName,isStretchy:a,isShifty:i,value:f(r),base:r}});c(["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"],{numArgs:1,allowedInText:true,allowedInMath:false},function(e,t){var r=t[0];return{type:"accent",label:e.funcName,isStretchy:false,isShifty:true,value:f(r),base:r}});c(["\\overbrace","\\underbrace"],{numArgs:1},function(e,t){var r=t[0];return{type:"horizBrace",label:e.funcName,isOver:/^\\over/.test(e.funcName),base:r}});c(["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\undertilde"],{numArgs:1},function(e,t){var r=t[0];return{type:"accentUnder",label:e.funcName,value:f(r),body:r}});c(["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xLongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xLongequal","\\xtofrom"],{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:"xArrow",label:e.funcName,body:a,below:r}});c(["\\cancel","\\bcancel","\\xcancel","\\sout","\\fbox"],{numArgs:1},function(e,t){var r=t[0];return{type:"enclose",label:e.funcName,body:r}});c(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t=void 0;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});c(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t){var r=t[0];return{type:"cr",size:r}});c(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new l.default("Invalid environment name",r)}var a="";for(var n=0;n";return t}}]);return e}();var f=function(){function e(t){(0,n.default)(this,e);this.text=t}(0,l.default)(e,[{key:"toNode",value:function e(){return document.createTextNode(this.text)}},{key:"toMarkup",value:function e(){return o.default.escape(this.text)}}]);return e}();t.exports={MathNode:c,TextNode:f}},{"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],46:[function(e,t,r){"use strict";var a=e("./Parser");var n=i(a);function i(e){return e&&e.__esModule?e:{default:e}}var l=function e(t,r){if(!(typeof t==="string"||t instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var a=new n.default(t,r);return a.parse()};t.exports=l},{"./Parser":31}],47:[function(e,t,r){"use strict";var a=e("./buildCommon");var n=e("./mathMLTree");var i=e("./utils");var l={widehat:"^",widetilde:"~",undertilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23b5",overbrace:"\u23de",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xLongequal:"=",xtofrom:"\u21c4"};var s=function e(t){var r=new n.MathNode("mo",[new n.TextNode(l[t.substr(1)])]);r.setAttribute("stretchy","true");return r};var o={overleftarrow:[.522,0,"leftarrow",.5],underleftarrow:[.522,0,"leftarrow",.5],xleftarrow:[.261,.261,"leftarrow",.783],overrightarrow:[.522,0,"rightarrow",.5],underrightarrow:[.522,0,"rightarrow",.5],xrightarrow:[.261,.261,"rightarrow",.783],overbrace:[.548,0,"overbrace",1.6],underbrace:[.548,0,"underbrace",1.6],overleftrightarrow:[.522,0,"leftrightarrow",.5],underleftrightarrow:[.522,0,"leftrightarrow",.5],xleftrightarrow:[.261,.261,"leftrightarrow",.783],Overrightarrow:[.56,0,"doublerightarrow",.5],xLeftarrow:[.28,.28,"doubleleftarrow",.783],xRightarrow:[.28,.28,"doublerightarrow",.783],xLeftrightarrow:[.28,.28,"doubleleftrightarrow",.955],overleftharpoon:[.522,0,"leftharpoon",.5],overrightharpoon:[.522,0,"rightharpoon",.5],xleftharpoonup:[.261,.261,"leftharpoon",.783],xrightharpoonup:[.261,.261,"rightharpoon",.783],xhookleftarrow:[.261,.261,"hookleftarrow",.87],xhookrightarrow:[.261,.261,"hookrightarrow",.87],overlinesegment:[.414,0,"linesegment",.5],underlinesegment:[.414,0,"linesegment",.5],xmapsto:[.261,.261,"mapsto",.783],xrightharpoondown:[.261,.261,"rightharpoondown",.783],xleftharpoondown:[.261,.261,"leftharpoondown",.783],xrightleftharpoons:[.358,.358,"rightleftharpoons",.716],xleftrightharpoons:[.358,.358,"leftrightharpoons",.716],overgroup:[.342,0,"overgroup",.87],undergroup:[.342,0,"undergroup",.87],xtwoheadleftarrow:[.167,.167,"twoheadleftarrow",.86],xtwoheadrightarrow:[.167,.167,"twoheadrightarrow",.86],xLongequal:[.167,.167,"longequal",.5],xtofrom:[.264,.264,"tofrom",.86]};var u={doubleleftarrow:"",doublerightarrow:"",leftarrow:"",rightarrow:""};var c={bcancel:"",cancel:"",doubleleftarrow:">"+u["doubleleftarrow"]+"",doubleleftrightarrow:">"+u["doubleleftarrow"]+"\n"+u["doublerightarrow"]+"",doublerightarrow:">"+u["doublerightarrow"]+"",hookleftarrow:">"+u["leftarrow"]+"\n",hookrightarrow:">"+u["rightarrow"]+"",leftarrow:">"+u["leftarrow"]+"",leftharpoon:">",leftharpoondown:">",leftrightarrow:">"+u["leftarrow"]+"\n"+u["rightarrow"]+"",leftrightharpoons:">\n",linesegment:">\n",longequal:" viewBox='0 0 100 334' preserveAspectRatio='none'>\n",mapsto:">"+u["rightarrow"]+"",overbrace:">\n",overgroup:">",rightarrow:">"+u["rightarrow"]+"",rightharpoon:">",rightharpoondown:">",rightleftharpoons:">",tilde1:" viewBox='0 0 600 260' preserveAspectRatio='none'>\n",tilde2:" viewBox='0 0 1033 286' preserveAspectRatio='none'>\n",tilde3:" viewBox='0 0 2339 306' preserveAspectRatio='none'>\n",tilde4:" viewBox='0 0 2340 312' preserveAspectRatio='none'>\n",tofrom:">",twoheadleftarrow:">\n",twoheadrightarrow:">\n",underbrace:">\n",undergroup:">",widehat1:" viewBox='0 0 1062 239' preserveAspectRatio='none'>\n",widehat2:" viewBox='0 0 2364 300' preserveAspectRatio='none'>\n",widehat3:" viewBox='0 0 2364 360' preserveAspectRatio='none'>\n",widehat4:" viewBox='0 0 2364 420' preserveAspectRatio='none'>\n",xcancel:"\n"};var f=function e(t,r){var n=t.value.label.substr(1);var l=0;var s=0;var u="";var f=0;if(i.contains(["widehat","widetilde","undertilde"],n)){var h=t.value.value.length;if(h>5){l=.312;u=(n==="widehat"?"widehat":"tilde")+"4"}else{var v=[1,1,2,2,3,3][h];if(n==="widehat"){l=[0,.24,.3,.3,.36,.36][h];u="widehat"+v}else{l=[0,.26,.3,.3,.34,.34][h];u="tilde"+v}}}else{var d=o[n];l=d[0];s=d[1];u=d[2];f=d[3]}var p=a.makeSpan([],[],r);p.height=l;p.depth=s;var m=l+s;p.style.height=m+"em";if(f>0){p.style.minWidth=f+"em"}p.innerHTML="";return p};var h=function e(t,r,n,i){var l=void 0;var s=t.height+t.depth+2*n;if(r==="fbox"){l=a.makeSpan(["stretchy",r],[],i);if(i.color){l.style.borderColor=i.getColor()}}else{l=a.makeSpan([],[],i);l.innerHTML=""+c[r]+""}l.height=s;l.style.height=s+"em";return l};t.exports={encloseSpan:h,mathMLnode:s,svgSpan:f}},{"./buildCommon":34,"./mathMLTree":45,"./utils":51}],48:[function(e,t,r){"use strict";t.exports={math:{},text:{}};function a(e,r,a,n,i,l){t.exports[e][i]={ +font:r,group:a,replace:n};if(l){t.exports[e][n]=t.exports[e][i]}}var n="math";var i="text";var l="main";var s="ams";var o="accent";var u="bin";var c="close";var f="inner";var h="mathord";var v="op";var d="open";var p="punct";var m="rel";var g="spacing";var y="textord";a(n,l,m,"\u2261","\\equiv");a(n,l,m,"\u227a","\\prec");a(n,l,m,"\u227b","\\succ");a(n,l,m,"\u223c","\\sim");a(n,l,m,"\u22a5","\\perp");a(n,l,m,"\u2aaf","\\preceq");a(n,l,m,"\u2ab0","\\succeq");a(n,l,m,"\u2243","\\simeq");a(n,l,m,"\u2223","\\mid");a(n,l,m,"\u226a","\\ll");a(n,l,m,"\u226b","\\gg");a(n,l,m,"\u224d","\\asymp");a(n,l,m,"\u2225","\\parallel");a(n,l,m,"\u22c8","\\bowtie");a(n,l,m,"\u2323","\\smile");a(n,l,m,"\u2291","\\sqsubseteq");a(n,l,m,"\u2292","\\sqsupseteq");a(n,l,m,"\u2250","\\doteq");a(n,l,m,"\u2322","\\frown");a(n,l,m,"\u220b","\\ni");a(n,l,m,"\u221d","\\propto");a(n,l,m,"\u22a2","\\vdash");a(n,l,m,"\u22a3","\\dashv");a(n,l,m,"\u220b","\\owns");a(n,l,p,".","\\ldotp");a(n,l,p,"\u22c5","\\cdotp");a(n,l,y,"#","\\#");a(i,l,y,"#","\\#");a(n,l,y,"&","\\&");a(i,l,y,"&","\\&");a(n,l,y,"\u2135","\\aleph");a(n,l,y,"\u2200","\\forall");a(n,l,y,"\u210f","\\hbar");a(n,l,y,"\u2203","\\exists");a(n,l,y,"\u2207","\\nabla");a(n,l,y,"\u266d","\\flat");a(n,l,y,"\u2113","\\ell");a(n,l,y,"\u266e","\\natural");a(n,l,y,"\u2663","\\clubsuit");a(n,l,y,"\u2118","\\wp");a(n,l,y,"\u266f","\\sharp");a(n,l,y,"\u2662","\\diamondsuit");a(n,l,y,"\u211c","\\Re");a(n,l,y,"\u2661","\\heartsuit");a(n,l,y,"\u2111","\\Im");a(n,l,y,"\u2660","\\spadesuit");a(n,l,y,"\u2020","\\dag");a(i,l,y,"\u2020","\\dag");a(i,l,y,"\u2020","\\textdagger");a(n,l,y,"\u2021","\\ddag");a(i,l,y,"\u2021","\\ddag");a(i,l,y,"\u2020","\\textdaggerdbl");a(n,l,c,"\u23b1","\\rmoustache");a(n,l,d,"\u23b0","\\lmoustache");a(n,l,c,"\u27ef","\\rgroup");a(n,l,d,"\u27ee","\\lgroup");a(n,l,u,"\u2213","\\mp");a(n,l,u,"\u2296","\\ominus");a(n,l,u,"\u228e","\\uplus");a(n,l,u,"\u2293","\\sqcap");a(n,l,u,"\u2217","\\ast");a(n,l,u,"\u2294","\\sqcup");a(n,l,u,"\u25ef","\\bigcirc");a(n,l,u,"\u2219","\\bullet");a(n,l,u,"\u2021","\\ddagger");a(n,l,u,"\u2240","\\wr");a(n,l,u,"\u2a3f","\\amalg");a(n,l,m,"\u27f5","\\longleftarrow");a(n,l,m,"\u21d0","\\Leftarrow");a(n,l,m,"\u27f8","\\Longleftarrow");a(n,l,m,"\u27f6","\\longrightarrow");a(n,l,m,"\u21d2","\\Rightarrow");a(n,l,m,"\u27f9","\\Longrightarrow");a(n,l,m,"\u2194","\\leftrightarrow");a(n,l,m,"\u27f7","\\longleftrightarrow");a(n,l,m,"\u21d4","\\Leftrightarrow");a(n,l,m,"\u27fa","\\Longleftrightarrow");a(n,l,m,"\u21a6","\\mapsto");a(n,l,m,"\u27fc","\\longmapsto");a(n,l,m,"\u2197","\\nearrow");a(n,l,m,"\u21a9","\\hookleftarrow");a(n,l,m,"\u21aa","\\hookrightarrow");a(n,l,m,"\u2198","\\searrow");a(n,l,m,"\u21bc","\\leftharpoonup");a(n,l,m,"\u21c0","\\rightharpoonup");a(n,l,m,"\u2199","\\swarrow");a(n,l,m,"\u21bd","\\leftharpoondown");a(n,l,m,"\u21c1","\\rightharpoondown");a(n,l,m,"\u2196","\\nwarrow");a(n,l,m,"\u21cc","\\rightleftharpoons");a(n,s,m,"\u226e","\\nless");a(n,s,m,"\ue010","\\nleqslant");a(n,s,m,"\ue011","\\nleqq");a(n,s,m,"\u2a87","\\lneq");a(n,s,m,"\u2268","\\lneqq");a(n,s,m,"\ue00c","\\lvertneqq");a(n,s,m,"\u22e6","\\lnsim");a(n,s,m,"\u2a89","\\lnapprox");a(n,s,m,"\u2280","\\nprec");a(n,s,m,"\u22e0","\\npreceq");a(n,s,m,"\u22e8","\\precnsim");a(n,s,m,"\u2ab9","\\precnapprox");a(n,s,m,"\u2241","\\nsim");a(n,s,m,"\ue006","\\nshortmid");a(n,s,m,"\u2224","\\nmid");a(n,s,m,"\u22ac","\\nvdash");a(n,s,m,"\u22ad","\\nvDash");a(n,s,m,"\u22ea","\\ntriangleleft");a(n,s,m,"\u22ec","\\ntrianglelefteq");a(n,s,m,"\u228a","\\subsetneq");a(n,s,m,"\ue01a","\\varsubsetneq");a(n,s,m,"\u2acb","\\subsetneqq");a(n,s,m,"\ue017","\\varsubsetneqq");a(n,s,m,"\u226f","\\ngtr");a(n,s,m,"\ue00f","\\ngeqslant");a(n,s,m,"\ue00e","\\ngeqq");a(n,s,m,"\u2a88","\\gneq");a(n,s,m,"\u2269","\\gneqq");a(n,s,m,"\ue00d","\\gvertneqq");a(n,s,m,"\u22e7","\\gnsim");a(n,s,m,"\u2a8a","\\gnapprox");a(n,s,m,"\u2281","\\nsucc");a(n,s,m,"\u22e1","\\nsucceq");a(n,s,m,"\u22e9","\\succnsim");a(n,s,m,"\u2aba","\\succnapprox");a(n,s,m,"\u2246","\\ncong");a(n,s,m,"\ue007","\\nshortparallel");a(n,s,m,"\u2226","\\nparallel");a(n,s,m,"\u22af","\\nVDash");a(n,s,m,"\u22eb","\\ntriangleright");a(n,s,m,"\u22ed","\\ntrianglerighteq");a(n,s,m,"\ue018","\\nsupseteqq");a(n,s,m,"\u228b","\\supsetneq");a(n,s,m,"\ue01b","\\varsupsetneq");a(n,s,m,"\u2acc","\\supsetneqq");a(n,s,m,"\ue019","\\varsupsetneqq");a(n,s,m,"\u22ae","\\nVdash");a(n,s,m,"\u2ab5","\\precneqq");a(n,s,m,"\u2ab6","\\succneqq");a(n,s,m,"\ue016","\\nsubseteqq");a(n,s,u,"\u22b4","\\unlhd");a(n,s,u,"\u22b5","\\unrhd");a(n,s,m,"\u219a","\\nleftarrow");a(n,s,m,"\u219b","\\nrightarrow");a(n,s,m,"\u21cd","\\nLeftarrow");a(n,s,m,"\u21cf","\\nRightarrow");a(n,s,m,"\u21ae","\\nleftrightarrow");a(n,s,m,"\u21ce","\\nLeftrightarrow");a(n,s,m,"\u25b3","\\vartriangle");a(n,s,y,"\u210f","\\hslash");a(n,s,y,"\u25bd","\\triangledown");a(n,s,y,"\u25ca","\\lozenge");a(n,s,y,"\u24c8","\\circledS");a(n,s,y,"\xae","\\circledR");a(i,s,y,"\xae","\\circledR");a(n,s,y,"\u2221","\\measuredangle");a(n,s,y,"\u2204","\\nexists");a(n,s,y,"\u2127","\\mho");a(n,s,y,"\u2132","\\Finv");a(n,s,y,"\u2141","\\Game");a(n,s,y,"k","\\Bbbk");a(n,s,y,"\u2035","\\backprime");a(n,s,y,"\u25b2","\\blacktriangle");a(n,s,y,"\u25bc","\\blacktriangledown");a(n,s,y,"\u25a0","\\blacksquare");a(n,s,y,"\u29eb","\\blacklozenge");a(n,s,y,"\u2605","\\bigstar");a(n,s,y,"\u2222","\\sphericalangle");a(n,s,y,"\u2201","\\complement");a(n,s,y,"\xf0","\\eth");a(n,s,y,"\u2571","\\diagup");a(n,s,y,"\u2572","\\diagdown");a(n,s,y,"\u25a1","\\square");a(n,s,y,"\u25a1","\\Box");a(n,s,y,"\u25ca","\\Diamond");a(n,s,y,"\xa5","\\yen");a(n,s,y,"\u2713","\\checkmark");a(i,s,y,"\u2713","\\checkmark");a(n,s,y,"\u2136","\\beth");a(n,s,y,"\u2138","\\daleth");a(n,s,y,"\u2137","\\gimel");a(n,s,y,"\u03dd","\\digamma");a(n,s,y,"\u03f0","\\varkappa");a(n,s,d,"\u250c","\\ulcorner");a(n,s,c,"\u2510","\\urcorner");a(n,s,d,"\u2514","\\llcorner");a(n,s,c,"\u2518","\\lrcorner");a(n,s,m,"\u2266","\\leqq");a(n,s,m,"\u2a7d","\\leqslant");a(n,s,m,"\u2a95","\\eqslantless");a(n,s,m,"\u2272","\\lesssim");a(n,s,m,"\u2a85","\\lessapprox");a(n,s,m,"\u224a","\\approxeq");a(n,s,u,"\u22d6","\\lessdot");a(n,s,m,"\u22d8","\\lll");a(n,s,m,"\u2276","\\lessgtr");a(n,s,m,"\u22da","\\lesseqgtr");a(n,s,m,"\u2a8b","\\lesseqqgtr");a(n,s,m,"\u2251","\\doteqdot");a(n,s,m,"\u2253","\\risingdotseq");a(n,s,m,"\u2252","\\fallingdotseq");a(n,s,m,"\u223d","\\backsim");a(n,s,m,"\u22cd","\\backsimeq");a(n,s,m,"\u2ac5","\\subseteqq");a(n,s,m,"\u22d0","\\Subset");a(n,s,m,"\u228f","\\sqsubset");a(n,s,m,"\u227c","\\preccurlyeq");a(n,s,m,"\u22de","\\curlyeqprec");a(n,s,m,"\u227e","\\precsim");a(n,s,m,"\u2ab7","\\precapprox");a(n,s,m,"\u22b2","\\vartriangleleft");a(n,s,m,"\u22b4","\\trianglelefteq");a(n,s,m,"\u22a8","\\vDash");a(n,s,m,"\u22aa","\\Vvdash");a(n,s,m,"\u2323","\\smallsmile");a(n,s,m,"\u2322","\\smallfrown");a(n,s,m,"\u224f","\\bumpeq");a(n,s,m,"\u224e","\\Bumpeq");a(n,s,m,"\u2267","\\geqq");a(n,s,m,"\u2a7e","\\geqslant");a(n,s,m,"\u2a96","\\eqslantgtr");a(n,s,m,"\u2273","\\gtrsim");a(n,s,m,"\u2a86","\\gtrapprox");a(n,s,u,"\u22d7","\\gtrdot");a(n,s,m,"\u22d9","\\ggg");a(n,s,m,"\u2277","\\gtrless");a(n,s,m,"\u22db","\\gtreqless");a(n,s,m,"\u2a8c","\\gtreqqless");a(n,s,m,"\u2256","\\eqcirc");a(n,s,m,"\u2257","\\circeq");a(n,s,m,"\u225c","\\triangleq");a(n,s,m,"\u223c","\\thicksim");a(n,s,m,"\u2248","\\thickapprox");a(n,s,m,"\u2ac6","\\supseteqq");a(n,s,m,"\u22d1","\\Supset");a(n,s,m,"\u2290","\\sqsupset");a(n,s,m,"\u227d","\\succcurlyeq");a(n,s,m,"\u22df","\\curlyeqsucc");a(n,s,m,"\u227f","\\succsim");a(n,s,m,"\u2ab8","\\succapprox");a(n,s,m,"\u22b3","\\vartriangleright");a(n,s,m,"\u22b5","\\trianglerighteq");a(n,s,m,"\u22a9","\\Vdash");a(n,s,m,"\u2223","\\shortmid");a(n,s,m,"\u2225","\\shortparallel");a(n,s,m,"\u226c","\\between");a(n,s,m,"\u22d4","\\pitchfork");a(n,s,m,"\u221d","\\varpropto");a(n,s,m,"\u25c0","\\blacktriangleleft");a(n,s,m,"\u2234","\\therefore");a(n,s,m,"\u220d","\\backepsilon");a(n,s,m,"\u25b6","\\blacktriangleright");a(n,s,m,"\u2235","\\because");a(n,s,m,"\u22d8","\\llless");a(n,s,m,"\u22d9","\\gggtr");a(n,s,u,"\u22b2","\\lhd");a(n,s,u,"\u22b3","\\rhd");a(n,s,m,"\u2242","\\eqsim");a(n,l,m,"\u22c8","\\Join");a(n,s,m,"\u2251","\\Doteq");a(n,s,u,"\u2214","\\dotplus");a(n,s,u,"\u2216","\\smallsetminus");a(n,s,u,"\u22d2","\\Cap");a(n,s,u,"\u22d3","\\Cup");a(n,s,u,"\u2a5e","\\doublebarwedge");a(n,s,u,"\u229f","\\boxminus");a(n,s,u,"\u229e","\\boxplus");a(n,s,u,"\u22c7","\\divideontimes");a(n,s,u,"\u22c9","\\ltimes");a(n,s,u,"\u22ca","\\rtimes");a(n,s,u,"\u22cb","\\leftthreetimes");a(n,s,u,"\u22cc","\\rightthreetimes");a(n,s,u,"\u22cf","\\curlywedge");a(n,s,u,"\u22ce","\\curlyvee");a(n,s,u,"\u229d","\\circleddash");a(n,s,u,"\u229b","\\circledast");a(n,s,u,"\u22c5","\\centerdot");a(n,s,u,"\u22ba","\\intercal");a(n,s,u,"\u22d2","\\doublecap");a(n,s,u,"\u22d3","\\doublecup");a(n,s,u,"\u22a0","\\boxtimes");a(n,s,m,"\u21e2","\\dashrightarrow");a(n,s,m,"\u21e0","\\dashleftarrow");a(n,s,m,"\u21c7","\\leftleftarrows");a(n,s,m,"\u21c6","\\leftrightarrows");a(n,s,m,"\u21da","\\Lleftarrow");a(n,s,m,"\u219e","\\twoheadleftarrow");a(n,s,m,"\u21a2","\\leftarrowtail");a(n,s,m,"\u21ab","\\looparrowleft");a(n,s,m,"\u21cb","\\leftrightharpoons");a(n,s,m,"\u21b6","\\curvearrowleft");a(n,s,m,"\u21ba","\\circlearrowleft");a(n,s,m,"\u21b0","\\Lsh");a(n,s,m,"\u21c8","\\upuparrows");a(n,s,m,"\u21bf","\\upharpoonleft");a(n,s,m,"\u21c3","\\downharpoonleft");a(n,s,m,"\u22b8","\\multimap");a(n,s,m,"\u21ad","\\leftrightsquigarrow");a(n,s,m,"\u21c9","\\rightrightarrows");a(n,s,m,"\u21c4","\\rightleftarrows");a(n,s,m,"\u21a0","\\twoheadrightarrow");a(n,s,m,"\u21a3","\\rightarrowtail");a(n,s,m,"\u21ac","\\looparrowright");a(n,s,m,"\u21b7","\\curvearrowright");a(n,s,m,"\u21bb","\\circlearrowright");a(n,s,m,"\u21b1","\\Rsh");a(n,s,m,"\u21ca","\\downdownarrows");a(n,s,m,"\u21be","\\upharpoonright");a(n,s,m,"\u21c2","\\downharpoonright");a(n,s,m,"\u21dd","\\rightsquigarrow");a(n,s,m,"\u21dd","\\leadsto");a(n,s,m,"\u21db","\\Rrightarrow");a(n,s,m,"\u21be","\\restriction");a(n,l,y,"\u2018","`");a(n,l,y,"$","\\$");a(i,l,y,"$","\\$");a(i,l,y,"$","\\textdollar");a(n,l,y,"%","\\%");a(i,l,y,"%","\\%");a(n,l,y,"_","\\_");a(i,l,y,"_","\\_");a(i,l,y,"_","\\textunderscore");a(n,l,y,"\u2220","\\angle");a(n,l,y,"\u221e","\\infty");a(n,l,y,"\u2032","\\prime");a(n,l,y,"\u25b3","\\triangle");a(n,l,y,"\u0393","\\Gamma",true);a(n,l,y,"\u0394","\\Delta",true);a(n,l,y,"\u0398","\\Theta",true);a(n,l,y,"\u039b","\\Lambda",true);a(n,l,y,"\u039e","\\Xi",true);a(n,l,y,"\u03a0","\\Pi",true);a(n,l,y,"\u03a3","\\Sigma",true);a(n,l,y,"\u03a5","\\Upsilon",true);a(n,l,y,"\u03a6","\\Phi",true);a(n,l,y,"\u03a8","\\Psi",true);a(n,l,y,"\u03a9","\\Omega",true);a(n,l,y,"\xac","\\neg");a(n,l,y,"\xac","\\lnot");a(n,l,y,"\u22a4","\\top");a(n,l,y,"\u22a5","\\bot");a(n,l,y,"\u2205","\\emptyset");a(n,s,y,"\u2205","\\varnothing");a(n,l,h,"\u03b1","\\alpha",true);a(n,l,h,"\u03b2","\\beta",true);a(n,l,h,"\u03b3","\\gamma",true);a(n,l,h,"\u03b4","\\delta",true);a(n,l,h,"\u03f5","\\epsilon",true);a(n,l,h,"\u03b6","\\zeta",true);a(n,l,h,"\u03b7","\\eta",true);a(n,l,h,"\u03b8","\\theta",true);a(n,l,h,"\u03b9","\\iota",true);a(n,l,h,"\u03ba","\\kappa",true);a(n,l,h,"\u03bb","\\lambda",true);a(n,l,h,"\u03bc","\\mu",true);a(n,l,h,"\u03bd","\\nu",true);a(n,l,h,"\u03be","\\xi",true);a(n,l,h,"\u03bf","\\omicron",true);a(n,l,h,"\u03c0","\\pi",true);a(n,l,h,"\u03c1","\\rho",true);a(n,l,h,"\u03c3","\\sigma",true);a(n,l,h,"\u03c4","\\tau",true);a(n,l,h,"\u03c5","\\upsilon",true);a(n,l,h,"\u03d5","\\phi",true);a(n,l,h,"\u03c7","\\chi",true);a(n,l,h,"\u03c8","\\psi",true);a(n,l,h,"\u03c9","\\omega",true);a(n,l,h,"\u03b5","\\varepsilon",true);a(n,l,h,"\u03d1","\\vartheta",true);a(n,l,h,"\u03d6","\\varpi",true);a(n,l,h,"\u03f1","\\varrho",true);a(n,l,h,"\u03c2","\\varsigma",true);a(n,l,h,"\u03c6","\\varphi",true);a(n,l,u,"\u2217","*");a(n,l,u,"+","+");a(n,l,u,"\u2212","-");a(n,l,u,"\u22c5","\\cdot");a(n,l,u,"\u2218","\\circ");a(n,l,u,"\xf7","\\div");a(n,l,u,"\xb1","\\pm");a(n,l,u,"\xd7","\\times");a(n,l,u,"\u2229","\\cap");a(n,l,u,"\u222a","\\cup");a(n,l,u,"\u2216","\\setminus");a(n,l,u,"\u2227","\\land");a(n,l,u,"\u2228","\\lor");a(n,l,u,"\u2227","\\wedge");a(n,l,u,"\u2228","\\vee");a(n,l,y,"\u221a","\\surd");a(n,l,d,"(","(");a(n,l,d,"[","[");a(n,l,d,"\u27e8","\\langle");a(n,l,d,"\u2223","\\lvert");a(n,l,d,"\u2225","\\lVert");a(n,l,c,")",")");a(n,l,c,"]","]");a(n,l,c,"?","?");a(n,l,c,"!","!");a(n,l,c,"\u27e9","\\rangle");a(n,l,c,"\u2223","\\rvert");a(n,l,c,"\u2225","\\rVert");a(n,l,m,"=","=");a(n,l,m,"<","<");a(n,l,m,">",">");a(n,l,m,":",":");a(n,l,m,"\u2248","\\approx");a(n,l,m,"\u2245","\\cong");a(n,l,m,"\u2265","\\ge");a(n,l,m,"\u2265","\\geq");a(n,l,m,"\u2190","\\gets");a(n,l,m,">","\\gt");a(n,l,m,"\u2208","\\in");a(n,l,m,"\u2209","\\notin");a(n,l,m,"\u0338","\\not");a(n,l,m,"\u2282","\\subset");a(n,l,m,"\u2283","\\supset");a(n,l,m,"\u2286","\\subseteq");a(n,l,m,"\u2287","\\supseteq");a(n,s,m,"\u2288","\\nsubseteq");a(n,s,m,"\u2289","\\nsupseteq");a(n,l,m,"\u22a8","\\models");a(n,l,m,"\u2190","\\leftarrow");a(n,l,m,"\u2264","\\le");a(n,l,m,"\u2264","\\leq");a(n,l,m,"<","\\lt");a(n,l,m,"\u2260","\\ne");a(n,l,m,"\u2260","\\neq");a(n,l,m,"\u2192","\\rightarrow");a(n,l,m,"\u2192","\\to");a(n,s,m,"\u2271","\\ngeq");a(n,s,m,"\u2270","\\nleq");a(n,l,g,null,"\\!");a(n,l,g,"\xa0","\\ ");a(n,l,g,"\xa0","~");a(n,l,g,null,"\\,");a(n,l,g,null,"\\:");a(n,l,g,null,"\\;");a(n,l,g,null,"\\enspace");a(n,l,g,null,"\\qquad");a(n,l,g,null,"\\quad");a(n,l,g,"\xa0","\\space");a(n,l,p,",",",");a(n,l,p,";",";");a(n,l,p,":","\\colon");a(n,s,u,"\u22bc","\\barwedge");a(n,s,u,"\u22bb","\\veebar");a(n,l,u,"\u2299","\\odot");a(n,l,u,"\u2295","\\oplus");a(n,l,u,"\u2297","\\otimes");a(n,l,y,"\u2202","\\partial");a(n,l,u,"\u2298","\\oslash");a(n,s,u,"\u229a","\\circledcirc");a(n,s,u,"\u22a1","\\boxdot");a(n,l,u,"\u25b3","\\bigtriangleup");a(n,l,u,"\u25bd","\\bigtriangledown");a(n,l,u,"\u2020","\\dagger");a(n,l,u,"\u22c4","\\diamond");a(n,l,u,"\u22c6","\\star");a(n,l,u,"\u25c3","\\triangleleft");a(n,l,u,"\u25b9","\\triangleright");a(n,l,d,"{","\\{");a(i,l,y,"{","\\{");a(i,l,y,"{","\\textbraceleft");a(n,l,c,"}","\\}");a(i,l,y,"}","\\}");a(i,l,y,"}","\\textbraceright");a(n,l,d,"{","\\lbrace");a(n,l,c,"}","\\rbrace");a(n,l,d,"[","\\lbrack");a(n,l,c,"]","\\rbrack");a(i,l,y,"<","\\textless");a(i,l,y,">","\\textgreater");a(n,l,d,"\u230a","\\lfloor");a(n,l,c,"\u230b","\\rfloor");a(n,l,d,"\u2308","\\lceil");a(n,l,c,"\u2309","\\rceil");a(n,l,y,"\\","\\backslash");a(n,l,y,"\u2223","|");a(n,l,y,"\u2223","\\vert");a(i,l,y,"|","\\textbar");a(n,l,y,"\u2225","\\|");a(n,l,y,"\u2225","\\Vert");a(i,l,y,"\u2225","\\textbardbl");a(n,l,m,"\u2191","\\uparrow");a(n,l,m,"\u21d1","\\Uparrow");a(n,l,m,"\u2193","\\downarrow");a(n,l,m,"\u21d3","\\Downarrow");a(n,l,m,"\u2195","\\updownarrow");a(n,l,m,"\u21d5","\\Updownarrow");a(n,l,v,"\u2210","\\coprod");a(n,l,v,"\u22c1","\\bigvee");a(n,l,v,"\u22c0","\\bigwedge");a(n,l,v,"\u2a04","\\biguplus");a(n,l,v,"\u22c2","\\bigcap");a(n,l,v,"\u22c3","\\bigcup");a(n,l,v,"\u222b","\\int");a(n,l,v,"\u222b","\\intop");a(n,l,v,"\u222c","\\iint");a(n,l,v,"\u222d","\\iiint");a(n,l,v,"\u220f","\\prod");a(n,l,v,"\u2211","\\sum");a(n,l,v,"\u2a02","\\bigotimes");a(n,l,v,"\u2a01","\\bigoplus");a(n,l,v,"\u2a00","\\bigodot");a(n,l,v,"\u222e","\\oint");a(n,l,v,"\u2a06","\\bigsqcup");a(n,l,v,"\u222b","\\smallint");a(i,l,f,"\u2026","\\textellipsis");a(n,l,f,"\u2026","\\mathellipsis");a(i,l,f,"\u2026","\\ldots",true);a(n,l,f,"\u2026","\\ldots",true);a(n,l,f,"\u22ef","\\cdots",true);a(n,l,f,"\u22f1","\\ddots",true);a(n,l,y,"\u22ee","\\vdots",true);a(n,l,o,"\xb4","\\acute");a(n,l,o,"`","\\grave");a(n,l,o,"\xa8","\\ddot");a(n,l,o,"~","\\tilde");a(n,l,o,"\xaf","\\bar");a(n,l,o,"\u02d8","\\breve");a(n,l,o,"\u02c7","\\check");a(n,l,o,"^","\\hat");a(n,l,o,"\u20d7","\\vec");a(n,l,o,"\u02d9","\\dot");a(n,l,h,"\u0131","\\imath");a(n,l,h,"\u0237","\\jmath");a(i,l,o,"\u02ca","\\'");a(i,l,o,"\u02cb","\\`");a(i,l,o,"\u02c6","\\^");a(i,l,o,"\u02dc","\\~");a(i,l,o,"\u02c9","\\=");a(i,l,o,"\u02d8","\\u");a(i,l,o,"\u02d9","\\.");a(i,l,o,"\u02da","\\r");a(i,l,o,"\u02c7","\\v");a(i,l,o,"\xa8",'\\"');a(i,l,o,"\u030b","\\H");a(i,l,y,"\u2013","--");a(i,l,y,"\u2013","\\textendash");a(i,l,y,"\u2014","---");a(i,l,y,"\u2014","\\textemdash");a(i,l,y,"\u2018","`");a(i,l,y,"\u2018","\\textquoteleft");a(i,l,y,"\u2019","'");a(i,l,y,"\u2019","\\textquoteright");a(i,l,y,"\u201c","``");a(i,l,y,"\u201c","\\textquotedblleft");a(i,l,y,"\u201d","''");a(i,l,y,"\u201d","\\textquotedblright");a(n,l,y,"\xb0","\\degree");a(i,l,y,"\xb0","\\degree");a(n,l,h,"\xa3","\\pounds");a(n,l,h,"\xa3","\\mathsterling");a(i,l,h,"\xa3","\\pounds");a(i,l,h,"\xa3","\\textsterling");a(n,s,y,"\u2720","\\maltese");a(i,s,y,"\u2720","\\maltese");a(i,l,g,"\xa0","\\ ");a(i,l,g,"\xa0"," ");a(i,l,g,"\xa0","~");var x='0123456789/@."';for(var w=0;w":">","<":"<",'"':""","'":"'"};var c=/[&><"']/g;function f(e){return u[e]}function h(e){return(""+e).replace(c,f)}var v=void 0;if(typeof document!=="undefined"){var d=document.createElement("span");if("textContent"in d){v=function e(t,r){t.textContent=r}}else{v=function e(t,r){t.innerText=r}}}function p(e){v(e,"")}t.exports={contains:i,deflt:l,escape:h,hyphenate:o,indexOf:n,setTextContent:v,clearNode:p}},{}]},{},[1])(1)}); diff --git a/static/quill/quill.bubble.css b/static/quill/quill.bubble.css new file mode 100644 index 00000000..6da0c7dc --- /dev/null +++ b/static/quill/quill.bubble.css @@ -0,0 +1,952 @@ +/*! + * Quill Editor v1.3.5 + * 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-container.ql-disabled .ql-editor ul[data-checked] > li::before { + pointer-events: none; +} +.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; + 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 > * { + cursor: text; +} +.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: '\2022'; +} +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none; +} +.ql-editor ul[data-checked=true] > li *, +.ql-editor ul[data-checked=false] > li * { + pointer-events: all; +} +.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; + white-space: nowrap; + width: 1.2em; +} +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: 0.3em; + text-align: right; +} +.ql-editor li.ql-direction-rtl::before { + margin-left: 0.3em; + margin-right: -1.5em; +} +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em; +} +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 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-0; +} +.ql-editor ol li:before { + content: counter(list-0, 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; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px; +} +.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:focus, +.ql-bubble .ql-toolbar button:focus, +.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:focus .ql-fill, +.ql-bubble .ql-toolbar button:focus .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:focus .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar button:focus .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:focus .ql-stroke, +.ql-bubble .ql-toolbar button:focus .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:focus .ql-stroke-miter, +.ql-bubble .ql-toolbar button:focus .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; +} +@media (pointer: coarse) { + .ql-bubble.ql-toolbar button:hover:not(.ql-active), + .ql-bubble .ql-toolbar button:hover:not(.ql-active) { + color: #ccc; + } + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { + fill: #ccc; + } + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { + stroke: #ccc; + } +} +.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: 2px 4px; +} +.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; +} +.ql-container.ql-bubble:not(.ql-disabled) a { + position: relative; + white-space: nowrap; +} +.ql-container.ql-bubble:not(.ql-disabled) a::before { + background-color: #444; + border-radius: 15px; + top: -5px; + font-size: 12px; + color: #fff; + content: attr(href); + font-weight: normal; + overflow: hidden; + padding: 5px 15px; + text-decoration: none; + z-index: 1; +} +.ql-container.ql-bubble:not(.ql-disabled) a::after { + border-top: 6px solid #444; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + top: 0; + content: " "; + height: 0; + width: 0; +} +.ql-container.ql-bubble:not(.ql-disabled) a::before, +.ql-container.ql-bubble:not(.ql-disabled) a::after { + left: 0; + margin-left: 50%; + position: absolute; + transform: translate(-50%, -100%); + transition: visibility 0s ease 200ms; + visibility: hidden; +} +.ql-container.ql-bubble:not(.ql-disabled) a:hover::before, +.ql-container.ql-bubble:not(.ql-disabled) a:hover::after { + visibility: visible; +} diff --git a/static/quill/quill.core.css b/static/quill/quill.core.css new file mode 100644 index 00000000..53d8de79 --- /dev/null +++ b/static/quill/quill.core.css @@ -0,0 +1,397 @@ +/*! + * Quill Editor v1.3.5 + * 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-container.ql-disabled .ql-editor ul[data-checked] > li::before { + pointer-events: none; +} +.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; + 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 > * { + cursor: text; +} +.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: '\2022'; +} +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none; +} +.ql-editor ul[data-checked=true] > li *, +.ql-editor ul[data-checked=false] > li * { + pointer-events: all; +} +.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; + white-space: nowrap; + width: 1.2em; +} +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: 0.3em; + text-align: right; +} +.ql-editor li.ql-direction-rtl::before { + margin-left: 0.3em; + margin-right: -1.5em; +} +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em; +} +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 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-0; +} +.ql-editor ol li:before { + content: counter(list-0, 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; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px; +} diff --git a/static/quill/quill.core.js b/static/quill/quill.core.js new file mode 100644 index 00000000..bde0b1ed --- /dev/null +++ b/static/quill/quill.core.js @@ -0,0 +1,8519 @@ +/*! + * Quill Editor v1.3.5 + * 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] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = 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; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 110); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var container_1 = __webpack_require__(17); +var format_1 = __webpack_require__(18); +var leaf_1 = __webpack_require__(19); +var scroll_1 = __webpack_require__(45); +var inline_1 = __webpack_require__(46); +var block_1 = __webpack_require__(47); +var embed_1 = __webpack_require__(48); +var text_1 = __webpack_require__(49); +var attributor_1 = __webpack_require__(12); +var class_1 = __webpack_require__(31); +var style_1 = __webpack_require__(32); +var store_1 = __webpack_require__(30); +var Registry = __webpack_require__(1); +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, + }, +}; +exports.default = Parchment; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var ParchmentError = /** @class */ (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 = + // @ts-ignore + input instanceof Node || input['nodeType'] === Node.TEXT_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; + // @ts-ignore + 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]; + // @ts-ignore + } + else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) { + 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; + // @ts-ignore + 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; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +var diff = __webpack_require__(51); +var equal = __webpack_require__(11); +var extend = __webpack_require__(3); +var op = __webpack_require__(20); + + +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.chop = function () { + var lastOp = this.ops[this.ops.length - 1]; + if (lastOp && lastOp.retain && !lastOp.attributes) { + this.ops.pop(); + } + 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.changeLength = function () { + return this.reduce(function (length, elem) { + if (elem.insert) { + return length + op.length(elem); + } else if (elem.delete) { + return length - elem.delete; + } + return length; + }, 0); +}; + +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 = (delta === other) ? '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(); + var i = 0; + 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 { + if (predicate(line, iter.next(1).attributes || {}, i) === false) { + return; + } + i += 1; + line = new Delta(); + } + } + if (line.length() > 0) { + predicate(line, {}, i); + } +}; + +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; + + +/***/ }), +/* 3 */ +/***/ (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; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + 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; +}; + + +/***/ }), +/* 4 */ +/***/ (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__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _inline = __webpack_require__(6); + +var _inline2 = _interopRequireDefault(_inline); + +var _text = __webpack_require__(7); + +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 (_Parchment$Embed) { + _inherits(BlockEmbed, _Parchment$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; +}(_parchment2.default.Embed); + +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(context) { + _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context); + 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, _parchment2.default.Embed, _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; + +/***/ }), +/* 5 */ +/***/ (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__(50); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _editor = __webpack_require__(14); + +var _editor2 = _interopRequireDefault(_editor); + +var _emitter3 = __webpack_require__(8); + +var _emitter4 = _interopRequireDefault(_emitter3); + +var _module = __webpack_require__(9); + +var _module2 = _interopRequireDefault(_module); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _selection = __webpack_require__(15); + +var _selection2 = _interopRequireDefault(_selection); + +var _extend = __webpack_require__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _logger = __webpack_require__(10); + +var _logger2 = _interopRequireDefault(_logger); + +var _theme = __webpack_require__(33); + +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); + } else if (path.startsWith('modules') && typeof target.register === 'function') { + target.register(); + } + } + } + }]); + + 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; + 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.root.setAttribute('data-gramm', false); + this.scrollingContainer = this.options.scrollingContainer || this.root; + 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('
' + html + '


'); + 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); + } + }, { + key: 'focus', + value: function focus() { + var scrollTop = this.scrollingContainer.scrollTop; + this.selection.focus(); + this.scrollingContainer.scrollTop = scrollTop; + this.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; + + var bounds = void 0; + if (typeof index === 'number') { + bounds = this.selection.getBounds(index, length); + } else { + bounds = this.selection.getBounds(index.index, index.length); + } + var containerBounds = this.container.getBoundingClientRect(); + return { + bottom: bounds.bottom - containerBounds.top, + height: bounds.height, + left: bounds.left - containerBounds.left, + right: bounds.right - containerBounds.left, + top: bounds.top - containerBounds.top, + width: bounds.width + }; + } + }, { + 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(true); + 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: 'scrollIntoView', + value: function scrollIntoView() { + this.selection.scrollIntoView(this.scrollingContainer); + } + }, { + 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(this.scrollingContainer); + } + } + } + }, { + 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.3.5"; + +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; + +/***/ }), +/* 6 */ +/***/ (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 _text = __webpack_require__(7); + +var _text2 = _interopRequireDefault(_text); + +var _parchment = __webpack_require__(0); + +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(context) { + _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context); + 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, _parchment2.default.Embed, _text2.default]; +// Lower index means deeper in the DOM tree, since not found (-1) is for embeds +Inline.order = ['cursor', 'inline', // Must be lower +'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher +]; + +exports.default = Inline; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 8 */ +/***/ (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__(54); + +var _eventemitter2 = _interopRequireDefault(_eventemitter); + +var _logger = __webpack_require__(10); + +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 EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click']; + +EVENTS.forEach(function (eventName) { + document.addEventListener(eventName, function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) { + // TODO use WeakMap + if (node.__quill && node.__quill.emitter) { + var _node$__quill$emitter; + + (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args); + } + }); + }); +}); + +var Emitter = function (_EventEmitter) { + _inherits(Emitter, _EventEmitter); + + function Emitter() { + _classCallCheck(this, Emitter); + + var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this)); + + _this.listeners = {}; + _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); + } + }, { + key: 'handleDOM', + value: function handleDOM(event) { + for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + (this.listeners[event.type] || []).forEach(function (_ref) { + var node = _ref.node, + handler = _ref.handler; + + if (event.target === node || node.contains(event.target)) { + handler.apply(undefined, [event].concat(args)); + } + }); + } + }, { + key: 'listenDOM', + value: function listenDOM(eventName, node, handler) { + if (!this.listeners[eventName]) { + this.listeners[eventName] = []; + } + this.listeners[eventName].push({ node: node, handler: handler }); + } + }]); + + 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; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"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; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"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)) { + var _console; + + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + (_console = 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; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +var pSlice = Array.prototype.slice; +var objectKeys = __webpack_require__(52); +var isArguments = __webpack_require__(53); + +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; +} + + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var Registry = __webpack_require__(1); +var Attributor = /** @class */ (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) + return false; + if (this.whitelist == null) + return true; + if (typeof value === 'string') { + return this.whitelist.indexOf(value.replace(/["']/g, '')) > -1; + } + else { + return this.whitelist.indexOf(value) > -1; + } + }; + Attributor.prototype.remove = function (node) { + node.removeAttribute(this.keyName); + }; + Attributor.prototype.value = function (node) { + var value = node.getAttribute(this.keyName); + if (this.canAdd(node, value) && value) { + return value; + } + return ''; + }; + return Attributor; +}()); +exports.default = Attributor; + + +/***/ }), +/* 13 */ +/***/ (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__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _inline = __webpack_require__(6); + +var _inline2 = _interopRequireDefault(_inline); + +var _text = __webpack_require__(7); + +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(context) { + 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, context); + 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(context); + 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; + +/***/ }), +/* 14 */ +/***/ (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__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _op = __webpack_require__(20); + +var _op2 = _interopRequireDefault(_op); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _code = __webpack_require__(13); + +var _code2 = _interopRequireDefault(_code); + +var _cursor = __webpack_require__(23); + +var _cursor2 = _interopRequireDefault(_cursor); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _clone = __webpack_require__(21); + +var _clone2 = _interopRequireDefault(_clone); + +var _deepEqual = __webpack_require__(11); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + +var _extend = __webpack_require__(3); + +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 ASCII = /^[ -~]*$/; + +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.batchStart(); + 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.batchEnd(); + 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 block = this.scroll.children.head; + if (block.statics.blotName !== _block2.default.blotName) return false; + if (block.children.length > 1) return false; + return block.children.head instanceof _break2.default; + } + }, { + 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 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' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) { + // Optimization for character changes + var textBlot = _parchment2.default.find(mutations[0].target); + var formats = (0, _block.bubbleFormats)(textBlot); + var index = textBlot.offset(this.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()); + this.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; + +/***/ }), +/* 15 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _clone = __webpack_require__(21); + +var _clone2 = _interopRequireDefault(_clone); + +var _deepEqual = __webpack_require__(11); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + +var _emitter3 = __webpack_require__(8); + +var _emitter4 = _interopRequireDefault(_emitter3); + +var _logger = __webpack_require__(10); + +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.mouseDown = false; + this.root = this.scroll.domNode; + this.cursor = _parchment2.default.create('cursor', this); + // savedRange is last non-null range + this.lastRange = this.savedRange = new Range(0, 0); + this.handleComposition(); + this.handleDragging(); + this.emitter.listenDOM('selectionchange', document, function () { + if (!_this.mouseDown) { + setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1); + } + }); + 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 () { + if (!_this.hasFocus()) return; + 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.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) { + if (context.range) { + var _context$range = context.range, + startNode = _context$range.startNode, + startOffset = _context$range.startOffset, + endNode = _context$range.endNode, + endOffset = _context$range.endOffset; + + _this.setNativeRange(startNode, startOffset, endNode, endOffset); + } + }); + this.update(_emitter4.default.sources.SILENT); + } + + _createClass(Selection, [{ + key: 'handleComposition', + value: function handleComposition() { + var _this2 = this; + + this.root.addEventListener('compositionstart', function () { + _this2.composing = true; + }); + this.root.addEventListener('compositionend', function () { + _this2.composing = false; + if (_this2.cursor.parent) { + var range = _this2.cursor.restore(); + if (!range) return; + setTimeout(function () { + _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset); + }, 1); + } + }); + } + }, { + key: 'handleDragging', + value: function handleDragging() { + var _this3 = this; + + this.emitter.listenDOM('mousedown', document.body, function () { + _this3.mouseDown = true; + }); + this.emitter.listenDOM('mouseup', document.body, function () { + _this3.mouseDown = false; + _this3.update(_emitter4.default.sources.USER); + }); + } + }, { + 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 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); + return 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'; + } + return { + bottom: rect.top + rect.height, + height: rect.height, + left: rect[side], + right: rect[side], + top: rect.top, + width: 0 + }; + } + } + }, { + 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; + var range = this.normalizeNative(nativeRange); + debug.info('getNativeRange', range); + return range; + } + }, { + key: 'getRange', + value: function getRange() { + var normalized = this.getNativeRange(); + if (normalized == null) return [null, null]; + var range = this.normalizedToRange(normalized); + return [range, normalized]; + } + }, { + key: 'hasFocus', + value: function hasFocus() { + return document.activeElement === this.root; + } + }, { + key: 'normalizedToRange', + value: function normalizedToRange(range) { + var _this4 = this; + + 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(_this4.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 end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1); + var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes))); + return new Range(start, end - start); + } + }, { + key: 'normalizeNative', + value: function normalizeNative(nativeRange) { + 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; + }); + return range; + } + }, { + key: 'rangeToNative', + value: function rangeToNative(range) { + var _this5 = this; + + var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length]; + var args = []; + var scrollLength = this.scroll.length(); + indexes.forEach(function (index, i) { + index = Math.min(scrollLength - 1, index); + var node = void 0, + _scroll$leaf5 = _this5.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); + } + return args; + } + }, { + key: 'scrollIntoView', + value: function scrollIntoView(scrollingContainer) { + var range = this.lastRange; + if (range == null) return; + var bounds = this.getBounds(range.index, range.length); + if (bounds == null) return; + var limit = this.scroll.length() - 1; + + var _scroll$line = this.scroll.line(Math.min(range.index, limit)), + _scroll$line2 = _slicedToArray(_scroll$line, 1), + first = _scroll$line2[0]; + + var last = first; + if (range.length > 0) { + var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit)); + + var _scroll$line4 = _slicedToArray(_scroll$line3, 1); + + last = _scroll$line4[0]; + } + if (first == null || last == null) return; + var scrollBounds = scrollingContainer.getBoundingClientRect(); + if (bounds.top < scrollBounds.top) { + scrollingContainer.scrollTop -= scrollBounds.top - bounds.top; + } else if (bounds.bottom > scrollBounds.bottom) { + scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom; + } + } + }, { + 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 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) { + var args = this.rangeToNative(range); + this.setNativeRange.apply(this, _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; + +/***/ }), +/* 16 */ +/***/ (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 _parchment = __webpack_require__(0); + +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 Break = function (_Parchment$Embed) { + _inherits(Break, _Parchment$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; +}(_parchment2.default.Embed); + +Break.blotName = 'break'; +Break.tagName = 'BR'; + +exports.default = Break; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var linked_list_1 = __webpack_require__(44); +var shadow_1 = __webpack_require__(29); +var Registry = __webpack_require__(1); +var ContainerBlot = /** @class */ (function (_super) { + __extends(ContainerBlot, _super); + function ContainerBlot(domNode) { + var _this = _super.call(this, domNode) || this; + _this.build(); + return _this; + } + ContainerBlot.prototype.appendChild = function (other) { + this.insertBefore(other); + }; + ContainerBlot.prototype.attach = function () { + _super.prototype.attach.call(this); + this.children.forEach(function (child) { + child.attach(); + }); + }; + ContainerBlot.prototype.build = function () { + var _this = 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 || undefined); + } + 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 = []; + var 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 (context) { + _super.prototype.optimize.call(this, context); + if (this.children.length === 0) { + if (this.statics.defaultChild != null) { + var child = Registry.create(this.statics.defaultChild); + this.appendChild(child); + child.optimize(context); + } + 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, context) { + var _this = this; + var addedNodes = []; + var 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 && + // @ts-ignore + 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 || undefined); + } + }); + }; + 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) { + // @ts-ignore + blot.domNode.appendChild(child); + }); + if (node.parentNode) { + node.parentNode.replaceChild(blot.domNode, node); + } + blot.attach(); + } + } + return blot; +} +exports.default = ContainerBlot; + + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +var store_1 = __webpack_require__(30); +var container_1 = __webpack_require__(17); +var Registry = __webpack_require__(1); +var FormatBlot = /** @class */ (function (_super) { + __extends(FormatBlot, _super); + function FormatBlot(domNode) { + var _this = _super.call(this, domNode) || this; + _this.attributes = new store_1.default(_this.domNode); + return _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.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, context) { + var _this = this; + _super.prototype.update.call(this, mutations, context); + 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)); +exports.default = FormatBlot; + + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var shadow_1 = __webpack_require__(29); +var Registry = __webpack_require__(1); +var LeafBlot = /** @class */ (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 (this.domNode === node || + this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) { + return Math.min(offset, 1); + } + return -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; + }; + LeafBlot.scope = Registry.Scope.INLINE_BLOT; + return LeafBlot; +}(shadow_1.default)); +exports.default = LeafBlot; + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +var equal = __webpack_require__(11); +var extend = __webpack_require__(3); + + +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; + + +/***/ }), +/* 21 */ +/***/ (function(module, exports) { + +var clone = (function() { +'use strict'; + +function _instanceof(obj, type) { + return type != null && obj instanceof type; +} + +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 (_instanceof(parent, nativeMap)) { + child = new nativeMap(); + } else if (_instanceof(parent, nativeSet)) { + child = new nativeSet(); + } else if (_instanceof(parent, 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 (_instanceof(parent, 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 (_instanceof(parent, nativeMap)) { + parent.forEach(function(value, key) { + var keyChild = _clone(key, depth - 1); + var valueChild = _clone(value, depth - 1); + child.set(keyChild, valueChild); + }); + } + if (_instanceof(parent, nativeSet)) { + parent.forEach(function(value) { + var entryChild = _clone(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; +} + + +/***/ }), +/* 22 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _emitter = __webpack_require__(8); + +var _emitter2 = _interopRequireDefault(_emitter); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _code = __webpack_require__(13); + +var _code2 = _interopRequireDefault(_code); + +var _container = __webpack_require__(24); + +var _container2 = _interopRequireDefault(_container); + +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; + }, {}); + } + // Some reason fixes composition issues with character languages in Windows/Chrome, Safari + _this.domNode.addEventListener('DOMNodeInserted', function () {}); + _this.optimize(); + _this.enable(); + return _this; + } + + _createClass(Scroll, [{ + key: 'batchStart', + value: function batchStart() { + this.batch = true; + } + }, { + key: 'batchEnd', + value: function batchEnd() { + this.batch = false; + this.optimize(); + } + }, { + 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) { + if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) { + this.optimize(); + return; + } + if (first instanceof _code2.default) { + var newlineIndex = first.newlineIndex(first.length(), true); + if (newlineIndex > -1) { + first = first.split(newlineIndex + 1); + if (first === last) { + this.optimize(); + return; + } + } + } else if (last instanceof _code2.default) { + var _newlineIndex = last.newlineIndex(0); + if (_newlineIndex > -1) { + last.split(_newlineIndex + 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] : []; + var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (this.batch === true) return; + _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context); + if (mutations.length > 0) { + this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context); + } + } + }, { + 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; + +/***/ }), +/* 23 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _text = __webpack_require__(7); + +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 Cursor = function (_Parchment$Embed) { + _inherits(Cursor, _Parchment$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() { + if (this.selection.composing || 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) { + 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]; + + return { + startNode: restoreText, + startOffset: start, + endNode: restoreText, + endOffset: end + }; + } + } + }, { + key: 'update', + value: function update(mutations, context) { + var _this2 = this; + + if (mutations.some(function (mutation) { + return mutation.type === 'characterData' && mutation.target === _this2.textNode; + })) { + var range = this.restore(); + if (range) context.range = range; + } + } + }, { + key: 'value', + value: function value() { + return ''; + } + }]); + + return Cursor; +}(_parchment2.default.Embed); + +Cursor.blotName = 'cursor'; +Cursor.className = 'ql-cursor'; +Cursor.tagName = 'span'; +Cursor.CONTENTS = '\uFEFF'; // Zero width no break space + + +exports.default = Cursor; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _block = __webpack_require__(4); + +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; + +/***/ }), +/* 25 */ +/***/ (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__(0); + +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; + +/***/ }), +/* 26 */, +/* 27 */, +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _container = __webpack_require__(24); + +var _container2 = _interopRequireDefault(_container); + +var _cursor = __webpack_require__(23); + +var _cursor2 = _interopRequireDefault(_cursor); + +var _embed = __webpack_require__(35); + +var _embed2 = _interopRequireDefault(_embed); + +var _inline = __webpack_require__(6); + +var _inline2 = _interopRequireDefault(_inline); + +var _scroll = __webpack_require__(22); + +var _scroll2 = _interopRequireDefault(_scroll); + +var _text = __webpack_require__(7); + +var _text2 = _interopRequireDefault(_text); + +var _clipboard = __webpack_require__(55); + +var _clipboard2 = _interopRequireDefault(_clipboard); + +var _history = __webpack_require__(42); + +var _history2 = _interopRequireDefault(_history); + +var _keyboard = __webpack_require__(34); + +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); + +exports.default = _quill2.default; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var Registry = __webpack_require__(1); +var ShadowBlot = /** @class */ (function () { + function ShadowBlot(domNode) { + this.domNode = domNode; + // @ts-ignore + this.domNode[Registry.DATA_KEY] = { blot: this }; + } + 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 () { + if (this.parent != null) { + this.scroll = this.parent.scroll; + } + }; + ShadowBlot.prototype.clone = function () { + var domNode = this.domNode.cloneNode(false); + return Registry.create(domNode); + }; + ShadowBlot.prototype.detach = function () { + if (this.parent != null) + this.parent.removeChild(this); + // @ts-ignore + 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 = Registry.create(this.statics.scope); + blot.wrap(parent); + parent.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 (refBlot === void 0) { refBlot = null; } + if (this.parent != null) { + this.parent.children.remove(this); + } + var refDomNode = null; + parentBlot.children.insertBefore(this, refBlot); + if (refBlot != null) { + refDomNode = refBlot.domNode; + } + if (this.next == null || this.domNode.nextSibling != refDomNode) { + parentBlot.domNode.insertBefore(this.domNode, refDomNode); + } + this.parent = parentBlot; + this.attach(); + }; + 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 (context) { + // TODO clean up once we use WeakMap + // @ts-ignore + if (this.domNode[Registry.DATA_KEY] != null) { + // @ts-ignore + 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, context) { + // 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; + }; + ShadowBlot.blotName = 'abstract'; + return ShadowBlot; +}()); +exports.default = ShadowBlot; + + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +var class_1 = __webpack_require__(31); +var style_1 = __webpack_require__(32); +var Registry = __webpack_require__(1); +var AttributorStore = /** @class */ (function () { + function AttributorStore(domNode) { + this.attributes = {}; + this.domNode = domNode; + this.build(); + } + AttributorStore.prototype.attribute = function (attribute, value) { + // verb + 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; +}()); +exports.default = AttributorStore; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +function match(node, prefix) { + var className = node.getAttribute('class') || ''; + return className.split(/\s+/).filter(function (name) { + return name.indexOf(prefix + "-") === 0; + }); +} +var ClassAttributor = /** @class */ (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)); +exports.default = ClassAttributor; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +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 = /** @class */ (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; + // @ts-ignore + node.style[camelize(this.keyName)] = value; + return true; + }; + StyleAttributor.prototype.remove = function (node) { + // @ts-ignore + node.style[camelize(this.keyName)] = ''; + if (!node.getAttribute('style')) { + node.removeAttribute('style'); + } + }; + StyleAttributor.prototype.value = function (node) { + // @ts-ignore + var value = node.style[camelize(this.keyName)]; + return this.canAdd(node, value) ? value : ''; + }; + return StyleAttributor; +}(attributor_1.default)); +exports.default = StyleAttributor; + + +/***/ }), +/* 33 */ +/***/ (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; }; }(); + +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; + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SHORTKEY = exports.default = 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; }; }(); + +var _clone = __webpack_require__(21); + +var _clone2 = _interopRequireDefault(_clone); + +var _deepEqual = __webpack_require__(11); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + +var _extend = __webpack_require__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _op = __webpack_require__(20); + +var _op2 = _interopRequireDefault(_op); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _logger = __webpack_require__(10); + +var _logger2 = _interopRequireDefault(_logger); + +var _module = __webpack_require__(9); + +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: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 (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) { + return !!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 (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) { + return; + } + 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.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace); + _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, + shiftKey: null, + metaKey: null, + ctrlKey: null, + altKey: null, + format: ['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.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) { + this.quill.history.cutoff(); + var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\t'); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.history.cutoff(); + 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) { + var _quill$getLine3 = this.quill.getLine(range.index), + _quill$getLine4 = _slicedToArray(_quill$getLine3, 2), + line = _quill$getLine4[0], + offset = _quill$getLine4[1]; + + var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' }); + var delta = new _quillDelta2.default().retain(range.index).insert('\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' }); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); + this.quill.scrollIntoView(); + } + }, + 'header enter': { + key: Keyboard.keys.ENTER, + collapsed: true, + format: ['header'], + suffix: /^$/, + handler: function handler(range, context) { + var _quill$getLine5 = this.quill.getLine(range.index), + _quill$getLine6 = _slicedToArray(_quill$getLine5, 2), + line = _quill$getLine6[0], + offset = _quill$getLine6[1]; + + var delta = new _quillDelta2.default().retain(range.index).insert('\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null }); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); + this.quill.scrollIntoView(); + } + }, + 'list autofill': { + key: ' ', + collapsed: true, + format: { list: false }, + prefix: /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/, + handler: function handler(range, context) { + var length = context.prefix.length; + + var _quill$getLine7 = this.quill.getLine(range.index), + _quill$getLine8 = _slicedToArray(_quill$getLine7, 2), + line = _quill$getLine8[0], + offset = _quill$getLine8[1]; + + if (offset > length) return true; + var value = void 0; + switch (context.prefix.trim()) { + case '[]':case '[ ]': + value = 'unchecked'; + break; + case '[x]': + value = 'checked'; + break; + case '-':case '*': + value = 'bullet'; + break; + default: + value = 'ordered'; + } + this.quill.insertText(range.index, ' ', _quill2.default.sources.USER); + this.quill.history.cutoff(); + var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value }); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.history.cutoff(); + 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) { + var _quill$getLine9 = this.quill.getLine(range.index), + _quill$getLine10 = _slicedToArray(_quill$getLine9, 2), + line = _quill$getLine10[0], + offset = _quill$getLine10[1]; + + var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1); + this.quill.updateContents(delta, _quill2.default.sources.USER); + } + }, + 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false), + 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true), + 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false), + 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true) + } +}; + +function makeEmbedArrowHandler(key, shiftKey) { + var _ref3; + + var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix'; + return _ref3 = { + key: key, + shiftKey: shiftKey, + altKey: null + }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) { + var index = range.index; + if (key === Keyboard.keys.RIGHT) { + index += range.length + 1; + } + + var _quill$getLeaf3 = this.quill.getLeaf(index), + _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1), + leaf = _quill$getLeaf4[0]; + + if (!(leaf instanceof _parchment2.default.Embed)) return true; + if (key === Keyboard.keys.LEFT) { + if (shiftKey) { + this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER); + } else { + this.quill.setSelection(range.index - 1, _quill2.default.sources.USER); + } + } else { + if (shiftKey) { + this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER); + } else { + this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER); + } + } + return false; + }), _ref3; +} + +function handleBackspace(range, context) { + if (range.index === 0 || this.quill.getLength() <= 1) return; + + var _quill$getLine11 = this.quill.getLine(range.index), + _quill$getLine12 = _slicedToArray(_quill$getLine11, 1), + line = _quill$getLine12[0]; + + var formats = {}; + if (context.offset === 0) { + var _quill$getLine13 = this.quill.getLine(range.index - 1), + _quill$getLine14 = _slicedToArray(_quill$getLine13, 1), + prev = _quill$getLine14[0]; + + if (prev != null && prev.length() > 1) { + 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.focus(); +} + +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; + var formats = {}, + nextLength = 0; + + var _quill$getLine15 = this.quill.getLine(range.index), + _quill$getLine16 = _slicedToArray(_quill$getLine15, 1), + line = _quill$getLine16[0]; + + if (context.offset >= line.length() - 1) { + var _quill$getLine17 = this.quill.getLine(range.index + 1), + _quill$getLine18 = _slicedToArray(_quill$getLine17, 1), + next = _quill$getLine18[0]; + + if (next) { + var curFormats = line.formats(); + var nextFormats = this.quill.getFormat(range.index, 1); + formats = _op2.default.attributes.diff(curFormats, nextFormats) || {}; + nextLength = next.length(); + } + } + this.quill.deleteText(range.index, length, _quill2.default.sources.USER); + if (Object.keys(formats).length > 0) { + this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER); + } +} + +function handleDeleteRange(range) { + var lines = this.quill.getLines(range); + var formats = {}; + if (lines.length > 1) { + var firstFormats = lines[0].formats(); + var lastFormats = lines[lines.length - 1].formats(); + formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {}; + } + this.quill.deleteText(range, _quill2.default.sources.USER); + if (Object.keys(formats).length > 0) { + this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER); + } + this.quill.setSelection(range.index, _quill2.default.sources.SILENT); + this.quill.focus(); +} + +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.focus(); + 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; + } + } + if (binding.shortKey) { + binding[SHORTKEY] = binding.shortKey; + delete binding.shortKey; + } + return binding; +} + +exports.default = Keyboard; +exports.SHORTKEY = SHORTKEY; + +/***/ }), +/* 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 _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _text = __webpack_require__(7); + +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 GUARD_TEXT = '\uFEFF'; + +var Embed = function (_Parchment$Embed) { + _inherits(Embed, _Parchment$Embed); + + function Embed(node) { + _classCallCheck(this, Embed); + + var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node)); + + _this.contentNode = document.createElement('span'); + _this.contentNode.setAttribute('contenteditable', false); + [].slice.call(_this.domNode.childNodes).forEach(function (childNode) { + _this.contentNode.appendChild(childNode); + }); + _this.leftGuard = document.createTextNode(GUARD_TEXT); + _this.rightGuard = document.createTextNode(GUARD_TEXT); + _this.domNode.appendChild(_this.leftGuard); + _this.domNode.appendChild(_this.contentNode); + _this.domNode.appendChild(_this.rightGuard); + return _this; + } + + _createClass(Embed, [{ + key: 'index', + value: function index(node, offset) { + if (node === this.leftGuard) return 0; + if (node === this.rightGuard) return 1; + return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset); + } + }, { + key: 'restore', + value: function restore(node) { + var range = void 0, + textNode = void 0; + var text = node.data.split(GUARD_TEXT).join(''); + if (node === this.leftGuard) { + if (this.prev instanceof _text2.default) { + var prevLength = this.prev.length(); + this.prev.insertAt(prevLength, text); + range = { + startNode: this.prev.domNode, + startOffset: prevLength + text.length + }; + } else { + textNode = document.createTextNode(text); + this.parent.insertBefore(_parchment2.default.create(textNode), this); + range = { + startNode: textNode, + startOffset: text.length + }; + } + } else if (node === this.rightGuard) { + if (this.next instanceof _text2.default) { + this.next.insertAt(0, text); + range = { + startNode: this.next.domNode, + startOffset: text.length + }; + } else { + textNode = document.createTextNode(text); + this.parent.insertBefore(_parchment2.default.create(textNode), this.next); + range = { + startNode: textNode, + startOffset: text.length + }; + } + } + node.data = GUARD_TEXT; + return range; + } + }, { + key: 'update', + value: function update(mutations, context) { + var _this2 = this; + + mutations.forEach(function (mutation) { + if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) { + var range = _this2.restore(mutation.target); + if (range) context.range = range; + } + }); + } + }]); + + return Embed; +}(_parchment2.default.Embed); + +exports.default = Embed; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined; + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.BackgroundStyle = exports.BackgroundClass = undefined; + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _color = __webpack_require__(25); + +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; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined; + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 39 */ +/***/ (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__(0); + +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; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SizeStyle = exports.SizeClass = undefined; + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 41 */, +/* 42 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _module = __webpack_require__(9); + +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.stack[dest].push(delta); + 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); + } + }, { + key: 'clear', + value: function clear() { + this.stack = { undo: [], redo: [] }; + } + }, { + key: 'cutoff', + value: function cutoff() { + this.lastRecorded = 0; + } + }, { + 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; + +/***/ }), +/* 43 */, +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var LinkedList = /** @class */ (function () { + function LinkedList() { + this.head = this.tail = null; + 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], null); + 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) { + if (!node) + return; + 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 = null; + 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 = cur.length(); + if (index < length || + (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) { + return [cur, index]; + } + index -= length; + } + 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; +}()); +exports.default = LinkedList; + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var container_1 = __webpack_require__(17); +var Registry = __webpack_require__(1); +var OBSERVER_CONFIG = { + attributes: true, + characterData: true, + characterDataOldValue: true, + childList: true, + subtree: true, +}; +var MAX_OPTIMIZE_ITERATIONS = 100; +var ScrollBlot = /** @class */ (function (_super) { + __extends(ScrollBlot, _super); + function ScrollBlot(node) { + var _this = _super.call(this, node) || this; + _this.scroll = _this; + _this.observer = new MutationObserver(function (mutations) { + _this.update(mutations); + }); + _this.observer.observe(_this.domNode, OBSERVER_CONFIG); + _this.attach(); + 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, context) { + var _this = this; + if (mutations === void 0) { mutations = []; } + if (context === void 0) { context = {}; } + _super.prototype.optimize.call(this, context); + // 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; + // @ts-ignore + if (blot.domNode[Registry.DATA_KEY].mutations == null) { + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations = []; + } + if (markParent) + mark(blot.parent); + }; + var optimize = function (blot) { + // Post-order traversal + if ( + // @ts-ignore + blot.domNode[Registry.DATA_KEY] == null || + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations == null) { + return; + } + if (blot instanceof container_1.default) { + blot.children.forEach(optimize); + } + blot.optimize(context); + }; + 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, context) { + var _this = this; + if (context === void 0) { context = {}; } + mutations = mutations || this.observer.takeRecords(); + // TODO use WeakMap + mutations + .map(function (mutation) { + var blot = Registry.find(mutation.target, true); + if (blot == null) + return null; + // @ts-ignore + if (blot.domNode[Registry.DATA_KEY].mutations == null) { + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations = [mutation]; + return blot; + } + else { + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations.push(mutation); + return null; + } + }) + .forEach(function (blot) { + // @ts-ignore + if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null) + return; + // @ts-ignore + blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context); + }); + // @ts-ignore + if (this.domNode[Registry.DATA_KEY].mutations != null) { + // @ts-ignore + _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context); + } + this.optimize(mutations, context); + }; + ScrollBlot.blotName = 'scroll'; + ScrollBlot.defaultChild = 'block'; + ScrollBlot.scope = Registry.Scope.BLOCK_BLOT; + ScrollBlot.tagName = 'DIV'; + return ScrollBlot; +}(container_1.default)); +exports.default = ScrollBlot; + + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var format_1 = __webpack_require__(18); +var Registry = __webpack_require__(1); +// Shallow object comparison +function isEqual(obj1, obj2) { + if (Object.keys(obj1).length !== Object.keys(obj2).length) + return false; + // @ts-ignore + for (var prop in obj1) { + // @ts-ignore + if (obj1[prop] !== obj2[prop]) + return false; + } + return true; +} +var InlineBlot = /** @class */ (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 (context) { + _super.prototype.optimize.call(this, context); + 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(); + } + }; + InlineBlot.blotName = 'inline'; + InlineBlot.scope = Registry.Scope.INLINE_BLOT; + InlineBlot.tagName = 'SPAN'; + return InlineBlot; +}(format_1.default)); +exports.default = InlineBlot; + + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var format_1 = __webpack_require__(18); +var Registry = __webpack_require__(1); +var BlockBlot = /** @class */ (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, context) { + if (navigator.userAgent.match(/Trident/)) { + this.build(); + } + else { + _super.prototype.update.call(this, mutations, context); + } + }; + BlockBlot.blotName = 'block'; + BlockBlot.scope = Registry.Scope.BLOCK_BLOT; + BlockBlot.tagName = 'P'; + return BlockBlot; +}(format_1.default)); +exports.default = BlockBlot; + + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var leaf_1 = __webpack_require__(19); +var EmbedBlot = /** @class */ (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)); +exports.default = EmbedBlot; + + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var leaf_1 = __webpack_require__(19); +var Registry = __webpack_require__(1); +var TextBlot = /** @class */ (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) { + var text = domNode.data; + // @ts-ignore + if (text['normalize']) + text = text['normalize'](); + return text; + }; + 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 (context) { + _super.prototype.optimize.call(this, context); + 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, context) { + 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; + }; + TextBlot.blotName = 'text'; + TextBlot.scope = Registry.Scope.INLINE_BLOT; + return TextBlot; +}(leaf_1.default)); +exports.default = TextBlot; + + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var elem = document.createElement('div'); +elem.classList.toggle('test-class', false); +if (elem.classList.contains('test-class')) { + 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; + } + }); +} + +document.addEventListener("DOMContentLoaded", function () { + // Disable resizing in Firefox + document.execCommand("enableObjectResizing", false, false); + // Disable automatic linkifying in IE11 + document.execCommand("autoUrlDetect", false, false); +}); + +/***/ }), +/* 51 */ +/***/ (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); + } + diffs = fix_emoji(diffs); + 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; + } + } +} + +/* + * Check diff did not split surrogate pairs. + * Ex. [0, '\uD83D'], [-1, '\uDC36'], [1, '\uDC2F'] -> [-1, '\uD83D\uDC36'], [1, '\uD83D\uDC2F'] + * '\uD83D\uDC36' === '🐶', '\uD83D\uDC2F' === '🐯' + * + * @param {Array} diffs Array of diff tuples + * @return {Array} Array of diff tuples + */ +function fix_emoji (diffs) { + var compact = false; + var starts_with_pair_end = function(str) { + return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF; + } + var ends_with_pair_start = function(str) { + return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF; + } + for (var i = 2; i < diffs.length; i += 1) { + if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) && + diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) && + diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) { + compact = true; + + diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1]; + diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1]; + + diffs[i-2][1] = diffs[i-2][1].slice(0, -1); + } + } + if (!compact) { + return diffs; + } + var fixed_diffs = []; + for (var i = 0; i < diffs.length; i += 1) { + if (diffs[i][1].length > 0) { + fixed_diffs.push(diffs[i]); + } + } + return fixed_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; +} + + +/***/ }), +/* 52 */ +/***/ (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; +} + + +/***/ }), +/* 53 */ +/***/ (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; +}; + + +/***/ }), +/* 54 */ +/***/ (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; +} + + +/***/ }), +/* 55 */ +/***/ (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 _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 _extend2 = __webpack_require__(3); + +var _extend3 = _interopRequireDefault(_extend2); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _logger = __webpack_require__(10); + +var _logger2 = _interopRequireDefault(_logger); + +var _module = __webpack_require__(9); + +var _module2 = _interopRequireDefault(_module); + +var _align = __webpack_require__(36); + +var _background = __webpack_require__(37); + +var _code = __webpack_require__(13); + +var _code2 = _interopRequireDefault(_code); + +var _color = __webpack_require__(25); + +var _direction = __webpack_require__(38); + +var _font = __webpack_require__(39); + +var _size = __webpack_require__(40); + +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:clipboard'); + +var DOM_KEY = '__ql-matcher'; + +var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['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 (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + selector = _ref2[0], + matcher = _ref2[1]; + + if (!options.matchVisual && matcher === matchSpacing) return; + _this.addMatcher(selector, matcher); + }); + 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.replace(/\>\r?\n +\<'); // Remove spaces between tags + return this.convert(); + } + var formats = this.quill.getFormat(this.quill.selection.savedRange.index); + if (formats[_code2.default.blotName]) { + var text = this.container.innerText; + this.container.innerHTML = ''; + return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName])); + } + + 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') { + this.quill.setContents(this.convert(index), html); + this.quill.setSelection(0, _quill2.default.sources.SILENT); + } else { + var paste = this.convert(html); + this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source); + this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT); + } + } + }, { + 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(); + this.quill.selection.update(_quill2.default.sources.SILENT); + setTimeout(function () { + 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.focus(); + }, 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: [], + matchVisual: true +}; + +function applyFormat(delta, format, value) { + if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') { + return Object.keys(format).reduce(function (delta, key) { + return applyFormat(delta, key, format[key]); + }, delta); + } else { + return delta.reduce(function (delta, op) { + if (op.attributes && op.attributes[format]) { + return delta.push(op); + } else { + return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes)); + } + }, new _quillDelta2.default()); + } +} + +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 applyFormat(delta, 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; + } + attr = ATTRIBUTE_ATTRIBUTORS[name]; + if (attr != null && (attr.attrName === name || attr.keyName === name)) { + formats[attr.attrName] = attr.value(node) || undefined; + } + attr = STYLE_ATTRIBUTORS[name]; + if (attr != null && (attr.attrName === name || attr.keyName === name)) { + attr = STYLE_ATTRIBUTORS[name]; + formats[attr.attrName] = attr.value(node) || undefined; + } + }); + if (Object.keys(formats).length > 0) { + delta = applyFormat(delta, 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') { + delta = applyFormat(delta, match.blotName, match.formats(node)); + } + return delta; +} + +function matchBreak(node, delta) { + if (!deltaEndsWith(delta, '\n')) { + delta.insert('\n'); + } + return delta; +} + +function matchIgnore() { + return new _quillDelta2.default(); +} + +function matchIndent(node, delta) { + var match = _parchment2.default.query(node); + if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\n')) { + return delta; + } + var indent = -1, + parent = node.parentNode; + while (!parent.classList.contains('ql-clipboard')) { + if ((_parchment2.default.query(parent) || {}).blotName === 'list') { + indent += 1; + } + parent = parent.parentNode; + } + if (indent <= 0) return delta; + return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent })); +} + +function matchNewline(node, delta) { + if (!deltaEndsWith(delta, '\n')) { + if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) { + 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.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) { + formats.bold = true; + } + if (Object.keys(formats).length > 0) { + delta = applyFormat(delta, 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 (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) { + return delta; + } + 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; + +/***/ }), +/* 56 */, +/* 57 */, +/* 58 */, +/* 59 */, +/* 60 */, +/* 61 */, +/* 62 */, +/* 63 */, +/* 64 */, +/* 65 */, +/* 66 */, +/* 67 */, +/* 68 */, +/* 69 */, +/* 70 */, +/* 71 */, +/* 72 */, +/* 73 */, +/* 74 */, +/* 75 */, +/* 76 */, +/* 77 */, +/* 78 */, +/* 79 */, +/* 80 */, +/* 81 */, +/* 82 */, +/* 83 */, +/* 84 */, +/* 85 */, +/* 86 */, +/* 87 */, +/* 88 */, +/* 89 */, +/* 90 */, +/* 91 */, +/* 92 */, +/* 93 */, +/* 94 */, +/* 95 */, +/* 96 */, +/* 97 */, +/* 98 */, +/* 99 */, +/* 100 */, +/* 101 */, +/* 102 */, +/* 103 */, +/* 104 */, +/* 105 */, +/* 106 */, +/* 107 */, +/* 108 */, +/* 109 */, +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(28); + + +/***/ }) +/******/ ])["default"]; +}); \ No newline at end of file diff --git a/static/quill/quill.icons.js b/static/quill/quill.icons.js new file mode 100644 index 00000000..4d2b8e09 --- /dev/null +++ b/static/quill/quill.icons.js @@ -0,0 +1,15 @@ +(function () { + var icons = Quill.import('ui/icons'); + icons.header[3] = '\n' + + ' \n' + + ''; + icons.header[4] = '\n' + + ' \n' + + ''; + icons.header[5] = '\n' + + ' \n' + + ''; + icons.header[6] = '\n' + + ' \n' + + ''; +})(); \ No newline at end of file diff --git a/static/quill/quill.js b/static/quill/quill.js new file mode 100644 index 00000000..0370f8b5 --- /dev/null +++ b/static/quill/quill.js @@ -0,0 +1,11402 @@ +/*! + * Quill Editor v1.3.5 + * 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] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = 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; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 109); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var container_1 = __webpack_require__(17); +var format_1 = __webpack_require__(18); +var leaf_1 = __webpack_require__(19); +var scroll_1 = __webpack_require__(45); +var inline_1 = __webpack_require__(46); +var block_1 = __webpack_require__(47); +var embed_1 = __webpack_require__(48); +var text_1 = __webpack_require__(49); +var attributor_1 = __webpack_require__(12); +var class_1 = __webpack_require__(31); +var style_1 = __webpack_require__(32); +var store_1 = __webpack_require__(30); +var Registry = __webpack_require__(1); +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, + }, +}; +exports.default = Parchment; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var ParchmentError = /** @class */ (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 = + // @ts-ignore + input instanceof Node || input['nodeType'] === Node.TEXT_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; + // @ts-ignore + 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]; + // @ts-ignore + } + else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) { + 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; + // @ts-ignore + 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; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +var diff = __webpack_require__(51); +var equal = __webpack_require__(11); +var extend = __webpack_require__(3); +var op = __webpack_require__(20); + + +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.chop = function () { + var lastOp = this.ops[this.ops.length - 1]; + if (lastOp && lastOp.retain && !lastOp.attributes) { + this.ops.pop(); + } + 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.changeLength = function () { + return this.reduce(function (length, elem) { + if (elem.insert) { + return length + op.length(elem); + } else if (elem.delete) { + return length - elem.delete; + } + return length; + }, 0); +}; + +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 = (delta === other) ? '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(); + var i = 0; + 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 { + if (predicate(line, iter.next(1).attributes || {}, i) === false) { + return; + } + i += 1; + line = new Delta(); + } + } + if (line.length() > 0) { + predicate(line, {}, i); + } +}; + +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; + + +/***/ }), +/* 3 */ +/***/ (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; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + 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; +}; + + +/***/ }), +/* 4 */ +/***/ (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__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _inline = __webpack_require__(6); + +var _inline2 = _interopRequireDefault(_inline); + +var _text = __webpack_require__(7); + +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 (_Parchment$Embed) { + _inherits(BlockEmbed, _Parchment$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; +}(_parchment2.default.Embed); + +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(context) { + _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context); + 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, _parchment2.default.Embed, _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; + +/***/ }), +/* 5 */ +/***/ (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__(50); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _editor = __webpack_require__(14); + +var _editor2 = _interopRequireDefault(_editor); + +var _emitter3 = __webpack_require__(8); + +var _emitter4 = _interopRequireDefault(_emitter3); + +var _module = __webpack_require__(9); + +var _module2 = _interopRequireDefault(_module); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _selection = __webpack_require__(15); + +var _selection2 = _interopRequireDefault(_selection); + +var _extend = __webpack_require__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _logger = __webpack_require__(10); + +var _logger2 = _interopRequireDefault(_logger); + +var _theme = __webpack_require__(33); + +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); + } else if (path.startsWith('modules') && typeof target.register === 'function') { + target.register(); + } + } + } + }]); + + 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; + 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.root.setAttribute('data-gramm', false); + this.scrollingContainer = this.options.scrollingContainer || this.root; + 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('
' + html + '


'); + 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); + } + }, { + key: 'focus', + value: function focus() { + var scrollTop = this.scrollingContainer.scrollTop; + this.selection.focus(); + this.scrollingContainer.scrollTop = scrollTop; + this.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; + + var bounds = void 0; + if (typeof index === 'number') { + bounds = this.selection.getBounds(index, length); + } else { + bounds = this.selection.getBounds(index.index, index.length); + } + var containerBounds = this.container.getBoundingClientRect(); + return { + bottom: bounds.bottom - containerBounds.top, + height: bounds.height, + left: bounds.left - containerBounds.left, + right: bounds.right - containerBounds.left, + top: bounds.top - containerBounds.top, + width: bounds.width + }; + } + }, { + 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(true); + 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: 'scrollIntoView', + value: function scrollIntoView() { + this.selection.scrollIntoView(this.scrollingContainer); + } + }, { + 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(this.scrollingContainer); + } + } + } + }, { + 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.3.5"; + +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; + +/***/ }), +/* 6 */ +/***/ (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 _text = __webpack_require__(7); + +var _text2 = _interopRequireDefault(_text); + +var _parchment = __webpack_require__(0); + +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(context) { + _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context); + 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, _parchment2.default.Embed, _text2.default]; +// Lower index means deeper in the DOM tree, since not found (-1) is for embeds +Inline.order = ['cursor', 'inline', // Must be lower +'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher +]; + +exports.default = Inline; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 8 */ +/***/ (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__(54); + +var _eventemitter2 = _interopRequireDefault(_eventemitter); + +var _logger = __webpack_require__(10); + +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 EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click']; + +EVENTS.forEach(function (eventName) { + document.addEventListener(eventName, function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) { + // TODO use WeakMap + if (node.__quill && node.__quill.emitter) { + var _node$__quill$emitter; + + (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args); + } + }); + }); +}); + +var Emitter = function (_EventEmitter) { + _inherits(Emitter, _EventEmitter); + + function Emitter() { + _classCallCheck(this, Emitter); + + var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this)); + + _this.listeners = {}; + _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); + } + }, { + key: 'handleDOM', + value: function handleDOM(event) { + for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + (this.listeners[event.type] || []).forEach(function (_ref) { + var node = _ref.node, + handler = _ref.handler; + + if (event.target === node || node.contains(event.target)) { + handler.apply(undefined, [event].concat(args)); + } + }); + } + }, { + key: 'listenDOM', + value: function listenDOM(eventName, node, handler) { + if (!this.listeners[eventName]) { + this.listeners[eventName] = []; + } + this.listeners[eventName].push({ node: node, handler: handler }); + } + }]); + + 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; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"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; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"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)) { + var _console; + + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + (_console = 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; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +var pSlice = Array.prototype.slice; +var objectKeys = __webpack_require__(52); +var isArguments = __webpack_require__(53); + +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; +} + + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var Registry = __webpack_require__(1); +var Attributor = /** @class */ (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) + return false; + if (this.whitelist == null) + return true; + if (typeof value === 'string') { + return this.whitelist.indexOf(value.replace(/["']/g, '')) > -1; + } + else { + return this.whitelist.indexOf(value) > -1; + } + }; + Attributor.prototype.remove = function (node) { + node.removeAttribute(this.keyName); + }; + Attributor.prototype.value = function (node) { + var value = node.getAttribute(this.keyName); + if (this.canAdd(node, value) && value) { + return value; + } + return ''; + }; + return Attributor; +}()); +exports.default = Attributor; + + +/***/ }), +/* 13 */ +/***/ (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__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _inline = __webpack_require__(6); + +var _inline2 = _interopRequireDefault(_inline); + +var _text = __webpack_require__(7); + +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(context) { + 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, context); + 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(context); + 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; + +/***/ }), +/* 14 */ +/***/ (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__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _op = __webpack_require__(20); + +var _op2 = _interopRequireDefault(_op); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _code = __webpack_require__(13); + +var _code2 = _interopRequireDefault(_code); + +var _cursor = __webpack_require__(23); + +var _cursor2 = _interopRequireDefault(_cursor); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _clone = __webpack_require__(21); + +var _clone2 = _interopRequireDefault(_clone); + +var _deepEqual = __webpack_require__(11); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + +var _extend = __webpack_require__(3); + +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 ASCII = /^[ -~]*$/; + +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.batchStart(); + 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.batchEnd(); + 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 block = this.scroll.children.head; + if (block.statics.blotName !== _block2.default.blotName) return false; + if (block.children.length > 1) return false; + return block.children.head instanceof _break2.default; + } + }, { + 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 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' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) { + // Optimization for character changes + var textBlot = _parchment2.default.find(mutations[0].target); + var formats = (0, _block.bubbleFormats)(textBlot); + var index = textBlot.offset(this.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()); + this.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; + +/***/ }), +/* 15 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _clone = __webpack_require__(21); + +var _clone2 = _interopRequireDefault(_clone); + +var _deepEqual = __webpack_require__(11); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + +var _emitter3 = __webpack_require__(8); + +var _emitter4 = _interopRequireDefault(_emitter3); + +var _logger = __webpack_require__(10); + +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.mouseDown = false; + this.root = this.scroll.domNode; + this.cursor = _parchment2.default.create('cursor', this); + // savedRange is last non-null range + this.lastRange = this.savedRange = new Range(0, 0); + this.handleComposition(); + this.handleDragging(); + this.emitter.listenDOM('selectionchange', document, function () { + if (!_this.mouseDown) { + setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1); + } + }); + 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 () { + if (!_this.hasFocus()) return; + 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.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) { + if (context.range) { + var _context$range = context.range, + startNode = _context$range.startNode, + startOffset = _context$range.startOffset, + endNode = _context$range.endNode, + endOffset = _context$range.endOffset; + + _this.setNativeRange(startNode, startOffset, endNode, endOffset); + } + }); + this.update(_emitter4.default.sources.SILENT); + } + + _createClass(Selection, [{ + key: 'handleComposition', + value: function handleComposition() { + var _this2 = this; + + this.root.addEventListener('compositionstart', function () { + _this2.composing = true; + }); + this.root.addEventListener('compositionend', function () { + _this2.composing = false; + if (_this2.cursor.parent) { + var range = _this2.cursor.restore(); + if (!range) return; + setTimeout(function () { + _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset); + }, 1); + } + }); + } + }, { + key: 'handleDragging', + value: function handleDragging() { + var _this3 = this; + + this.emitter.listenDOM('mousedown', document.body, function () { + _this3.mouseDown = true; + }); + this.emitter.listenDOM('mouseup', document.body, function () { + _this3.mouseDown = false; + _this3.update(_emitter4.default.sources.USER); + }); + } + }, { + 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 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); + return 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'; + } + return { + bottom: rect.top + rect.height, + height: rect.height, + left: rect[side], + right: rect[side], + top: rect.top, + width: 0 + }; + } + } + }, { + 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; + var range = this.normalizeNative(nativeRange); + debug.info('getNativeRange', range); + return range; + } + }, { + key: 'getRange', + value: function getRange() { + var normalized = this.getNativeRange(); + if (normalized == null) return [null, null]; + var range = this.normalizedToRange(normalized); + return [range, normalized]; + } + }, { + key: 'hasFocus', + value: function hasFocus() { + return document.activeElement === this.root; + } + }, { + key: 'normalizedToRange', + value: function normalizedToRange(range) { + var _this4 = this; + + 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(_this4.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 end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1); + var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes))); + return new Range(start, end - start); + } + }, { + key: 'normalizeNative', + value: function normalizeNative(nativeRange) { + 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; + }); + return range; + } + }, { + key: 'rangeToNative', + value: function rangeToNative(range) { + var _this5 = this; + + var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length]; + var args = []; + var scrollLength = this.scroll.length(); + indexes.forEach(function (index, i) { + index = Math.min(scrollLength - 1, index); + var node = void 0, + _scroll$leaf5 = _this5.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); + } + return args; + } + }, { + key: 'scrollIntoView', + value: function scrollIntoView(scrollingContainer) { + var range = this.lastRange; + if (range == null) return; + var bounds = this.getBounds(range.index, range.length); + if (bounds == null) return; + var limit = this.scroll.length() - 1; + + var _scroll$line = this.scroll.line(Math.min(range.index, limit)), + _scroll$line2 = _slicedToArray(_scroll$line, 1), + first = _scroll$line2[0]; + + var last = first; + if (range.length > 0) { + var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit)); + + var _scroll$line4 = _slicedToArray(_scroll$line3, 1); + + last = _scroll$line4[0]; + } + if (first == null || last == null) return; + var scrollBounds = scrollingContainer.getBoundingClientRect(); + if (bounds.top < scrollBounds.top) { + scrollingContainer.scrollTop -= scrollBounds.top - bounds.top; + } else if (bounds.bottom > scrollBounds.bottom) { + scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom; + } + } + }, { + 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 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) { + var args = this.rangeToNative(range); + this.setNativeRange.apply(this, _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; + +/***/ }), +/* 16 */ +/***/ (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 _parchment = __webpack_require__(0); + +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 Break = function (_Parchment$Embed) { + _inherits(Break, _Parchment$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; +}(_parchment2.default.Embed); + +Break.blotName = 'break'; +Break.tagName = 'BR'; + +exports.default = Break; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var linked_list_1 = __webpack_require__(44); +var shadow_1 = __webpack_require__(29); +var Registry = __webpack_require__(1); +var ContainerBlot = /** @class */ (function (_super) { + __extends(ContainerBlot, _super); + function ContainerBlot(domNode) { + var _this = _super.call(this, domNode) || this; + _this.build(); + return _this; + } + ContainerBlot.prototype.appendChild = function (other) { + this.insertBefore(other); + }; + ContainerBlot.prototype.attach = function () { + _super.prototype.attach.call(this); + this.children.forEach(function (child) { + child.attach(); + }); + }; + ContainerBlot.prototype.build = function () { + var _this = 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 || undefined); + } + 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 = []; + var 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 (context) { + _super.prototype.optimize.call(this, context); + if (this.children.length === 0) { + if (this.statics.defaultChild != null) { + var child = Registry.create(this.statics.defaultChild); + this.appendChild(child); + child.optimize(context); + } + 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, context) { + var _this = this; + var addedNodes = []; + var 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 && + // @ts-ignore + 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 || undefined); + } + }); + }; + 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) { + // @ts-ignore + blot.domNode.appendChild(child); + }); + if (node.parentNode) { + node.parentNode.replaceChild(blot.domNode, node); + } + blot.attach(); + } + } + return blot; +} +exports.default = ContainerBlot; + + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +var store_1 = __webpack_require__(30); +var container_1 = __webpack_require__(17); +var Registry = __webpack_require__(1); +var FormatBlot = /** @class */ (function (_super) { + __extends(FormatBlot, _super); + function FormatBlot(domNode) { + var _this = _super.call(this, domNode) || this; + _this.attributes = new store_1.default(_this.domNode); + return _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.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, context) { + var _this = this; + _super.prototype.update.call(this, mutations, context); + 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)); +exports.default = FormatBlot; + + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var shadow_1 = __webpack_require__(29); +var Registry = __webpack_require__(1); +var LeafBlot = /** @class */ (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 (this.domNode === node || + this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) { + return Math.min(offset, 1); + } + return -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; + }; + LeafBlot.scope = Registry.Scope.INLINE_BLOT; + return LeafBlot; +}(shadow_1.default)); +exports.default = LeafBlot; + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +var equal = __webpack_require__(11); +var extend = __webpack_require__(3); + + +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; + + +/***/ }), +/* 21 */ +/***/ (function(module, exports) { + +var clone = (function() { +'use strict'; + +function _instanceof(obj, type) { + return type != null && obj instanceof type; +} + +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 (_instanceof(parent, nativeMap)) { + child = new nativeMap(); + } else if (_instanceof(parent, nativeSet)) { + child = new nativeSet(); + } else if (_instanceof(parent, 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 (_instanceof(parent, 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 (_instanceof(parent, nativeMap)) { + parent.forEach(function(value, key) { + var keyChild = _clone(key, depth - 1); + var valueChild = _clone(value, depth - 1); + child.set(keyChild, valueChild); + }); + } + if (_instanceof(parent, nativeSet)) { + parent.forEach(function(value) { + var entryChild = _clone(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; +} + + +/***/ }), +/* 22 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _emitter = __webpack_require__(8); + +var _emitter2 = _interopRequireDefault(_emitter); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _code = __webpack_require__(13); + +var _code2 = _interopRequireDefault(_code); + +var _container = __webpack_require__(24); + +var _container2 = _interopRequireDefault(_container); + +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; + }, {}); + } + // Some reason fixes composition issues with character languages in Windows/Chrome, Safari + _this.domNode.addEventListener('DOMNodeInserted', function () {}); + _this.optimize(); + _this.enable(); + return _this; + } + + _createClass(Scroll, [{ + key: 'batchStart', + value: function batchStart() { + this.batch = true; + } + }, { + key: 'batchEnd', + value: function batchEnd() { + this.batch = false; + this.optimize(); + } + }, { + 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) { + if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) { + this.optimize(); + return; + } + if (first instanceof _code2.default) { + var newlineIndex = first.newlineIndex(first.length(), true); + if (newlineIndex > -1) { + first = first.split(newlineIndex + 1); + if (first === last) { + this.optimize(); + return; + } + } + } else if (last instanceof _code2.default) { + var _newlineIndex = last.newlineIndex(0); + if (_newlineIndex > -1) { + last.split(_newlineIndex + 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] : []; + var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (this.batch === true) return; + _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context); + if (mutations.length > 0) { + this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context); + } + } + }, { + 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; + +/***/ }), +/* 23 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _text = __webpack_require__(7); + +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 Cursor = function (_Parchment$Embed) { + _inherits(Cursor, _Parchment$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() { + if (this.selection.composing || 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) { + 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]; + + return { + startNode: restoreText, + startOffset: start, + endNode: restoreText, + endOffset: end + }; + } + } + }, { + key: 'update', + value: function update(mutations, context) { + var _this2 = this; + + if (mutations.some(function (mutation) { + return mutation.type === 'characterData' && mutation.target === _this2.textNode; + })) { + var range = this.restore(); + if (range) context.range = range; + } + } + }, { + key: 'value', + value: function value() { + return ''; + } + }]); + + return Cursor; +}(_parchment2.default.Embed); + +Cursor.blotName = 'cursor'; +Cursor.className = 'ql-cursor'; +Cursor.tagName = 'span'; +Cursor.CONTENTS = '\uFEFF'; // Zero width no break space + + +exports.default = Cursor; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _block = __webpack_require__(4); + +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; + +/***/ }), +/* 25 */ +/***/ (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__(0); + +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; + +/***/ }), +/* 26 */ +/***/ (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__(6); + +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, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL; + } + }]); + + return Link; +}(_inline2.default); + +Link.blotName = 'link'; +Link.tagName = 'A'; +Link.SANITIZED_URL = 'about:blank'; +Link.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel']; + +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; + +/***/ }), +/* 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 _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__(107); + +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.selected === true) { + _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; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _break = __webpack_require__(16); + +var _break2 = _interopRequireDefault(_break); + +var _container = __webpack_require__(24); + +var _container2 = _interopRequireDefault(_container); + +var _cursor = __webpack_require__(23); + +var _cursor2 = _interopRequireDefault(_cursor); + +var _embed = __webpack_require__(35); + +var _embed2 = _interopRequireDefault(_embed); + +var _inline = __webpack_require__(6); + +var _inline2 = _interopRequireDefault(_inline); + +var _scroll = __webpack_require__(22); + +var _scroll2 = _interopRequireDefault(_scroll); + +var _text = __webpack_require__(7); + +var _text2 = _interopRequireDefault(_text); + +var _clipboard = __webpack_require__(55); + +var _clipboard2 = _interopRequireDefault(_clipboard); + +var _history = __webpack_require__(42); + +var _history2 = _interopRequireDefault(_history); + +var _keyboard = __webpack_require__(34); + +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); + +exports.default = _quill2.default; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var Registry = __webpack_require__(1); +var ShadowBlot = /** @class */ (function () { + function ShadowBlot(domNode) { + this.domNode = domNode; + // @ts-ignore + this.domNode[Registry.DATA_KEY] = { blot: this }; + } + 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 () { + if (this.parent != null) { + this.scroll = this.parent.scroll; + } + }; + ShadowBlot.prototype.clone = function () { + var domNode = this.domNode.cloneNode(false); + return Registry.create(domNode); + }; + ShadowBlot.prototype.detach = function () { + if (this.parent != null) + this.parent.removeChild(this); + // @ts-ignore + 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 = Registry.create(this.statics.scope); + blot.wrap(parent); + parent.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 (refBlot === void 0) { refBlot = null; } + if (this.parent != null) { + this.parent.children.remove(this); + } + var refDomNode = null; + parentBlot.children.insertBefore(this, refBlot); + if (refBlot != null) { + refDomNode = refBlot.domNode; + } + if (this.next == null || this.domNode.nextSibling != refDomNode) { + parentBlot.domNode.insertBefore(this.domNode, refDomNode); + } + this.parent = parentBlot; + this.attach(); + }; + 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 (context) { + // TODO clean up once we use WeakMap + // @ts-ignore + if (this.domNode[Registry.DATA_KEY] != null) { + // @ts-ignore + 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, context) { + // 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; + }; + ShadowBlot.blotName = 'abstract'; + return ShadowBlot; +}()); +exports.default = ShadowBlot; + + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +var class_1 = __webpack_require__(31); +var style_1 = __webpack_require__(32); +var Registry = __webpack_require__(1); +var AttributorStore = /** @class */ (function () { + function AttributorStore(domNode) { + this.attributes = {}; + this.domNode = domNode; + this.build(); + } + AttributorStore.prototype.attribute = function (attribute, value) { + // verb + 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; +}()); +exports.default = AttributorStore; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +function match(node, prefix) { + var className = node.getAttribute('class') || ''; + return className.split(/\s+/).filter(function (name) { + return name.indexOf(prefix + "-") === 0; + }); +} +var ClassAttributor = /** @class */ (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)); +exports.default = ClassAttributor; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var attributor_1 = __webpack_require__(12); +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 = /** @class */ (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; + // @ts-ignore + node.style[camelize(this.keyName)] = value; + return true; + }; + StyleAttributor.prototype.remove = function (node) { + // @ts-ignore + node.style[camelize(this.keyName)] = ''; + if (!node.getAttribute('style')) { + node.removeAttribute('style'); + } + }; + StyleAttributor.prototype.value = function (node) { + // @ts-ignore + var value = node.style[camelize(this.keyName)]; + return this.canAdd(node, value) ? value : ''; + }; + return StyleAttributor; +}(attributor_1.default)); +exports.default = StyleAttributor; + + +/***/ }), +/* 33 */ +/***/ (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; }; }(); + +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; + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SHORTKEY = exports.default = 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; }; }(); + +var _clone = __webpack_require__(21); + +var _clone2 = _interopRequireDefault(_clone); + +var _deepEqual = __webpack_require__(11); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + +var _extend = __webpack_require__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _op = __webpack_require__(20); + +var _op2 = _interopRequireDefault(_op); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _logger = __webpack_require__(10); + +var _logger2 = _interopRequireDefault(_logger); + +var _module = __webpack_require__(9); + +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: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 (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) { + return !!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 (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) { + return; + } + 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.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace); + _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, + shiftKey: null, + metaKey: null, + ctrlKey: null, + altKey: null, + format: ['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.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) { + this.quill.history.cutoff(); + var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\t'); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.history.cutoff(); + 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) { + var _quill$getLine3 = this.quill.getLine(range.index), + _quill$getLine4 = _slicedToArray(_quill$getLine3, 2), + line = _quill$getLine4[0], + offset = _quill$getLine4[1]; + + var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' }); + var delta = new _quillDelta2.default().retain(range.index).insert('\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' }); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); + this.quill.scrollIntoView(); + } + }, + 'header enter': { + key: Keyboard.keys.ENTER, + collapsed: true, + format: ['header'], + suffix: /^$/, + handler: function handler(range, context) { + var _quill$getLine5 = this.quill.getLine(range.index), + _quill$getLine6 = _slicedToArray(_quill$getLine5, 2), + line = _quill$getLine6[0], + offset = _quill$getLine6[1]; + + var delta = new _quillDelta2.default().retain(range.index).insert('\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null }); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); + this.quill.scrollIntoView(); + } + }, + 'list autofill': { + key: ' ', + collapsed: true, + format: { list: false }, + prefix: /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/, + handler: function handler(range, context) { + var length = context.prefix.length; + + var _quill$getLine7 = this.quill.getLine(range.index), + _quill$getLine8 = _slicedToArray(_quill$getLine7, 2), + line = _quill$getLine8[0], + offset = _quill$getLine8[1]; + + if (offset > length) return true; + var value = void 0; + switch (context.prefix.trim()) { + case '[]':case '[ ]': + value = 'unchecked'; + break; + case '[x]': + value = 'checked'; + break; + case '-':case '*': + value = 'bullet'; + break; + default: + value = 'ordered'; + } + this.quill.insertText(range.index, ' ', _quill2.default.sources.USER); + this.quill.history.cutoff(); + var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value }); + this.quill.updateContents(delta, _quill2.default.sources.USER); + this.quill.history.cutoff(); + 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) { + var _quill$getLine9 = this.quill.getLine(range.index), + _quill$getLine10 = _slicedToArray(_quill$getLine9, 2), + line = _quill$getLine10[0], + offset = _quill$getLine10[1]; + + var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1); + this.quill.updateContents(delta, _quill2.default.sources.USER); + } + }, + 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false), + 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true), + 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false), + 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true) + } +}; + +function makeEmbedArrowHandler(key, shiftKey) { + var _ref3; + + var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix'; + return _ref3 = { + key: key, + shiftKey: shiftKey, + altKey: null + }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) { + var index = range.index; + if (key === Keyboard.keys.RIGHT) { + index += range.length + 1; + } + + var _quill$getLeaf3 = this.quill.getLeaf(index), + _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1), + leaf = _quill$getLeaf4[0]; + + if (!(leaf instanceof _parchment2.default.Embed)) return true; + if (key === Keyboard.keys.LEFT) { + if (shiftKey) { + this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER); + } else { + this.quill.setSelection(range.index - 1, _quill2.default.sources.USER); + } + } else { + if (shiftKey) { + this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER); + } else { + this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER); + } + } + return false; + }), _ref3; +} + +function handleBackspace(range, context) { + if (range.index === 0 || this.quill.getLength() <= 1) return; + + var _quill$getLine11 = this.quill.getLine(range.index), + _quill$getLine12 = _slicedToArray(_quill$getLine11, 1), + line = _quill$getLine12[0]; + + var formats = {}; + if (context.offset === 0) { + var _quill$getLine13 = this.quill.getLine(range.index - 1), + _quill$getLine14 = _slicedToArray(_quill$getLine13, 1), + prev = _quill$getLine14[0]; + + if (prev != null && prev.length() > 1) { + 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.focus(); +} + +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; + var formats = {}, + nextLength = 0; + + var _quill$getLine15 = this.quill.getLine(range.index), + _quill$getLine16 = _slicedToArray(_quill$getLine15, 1), + line = _quill$getLine16[0]; + + if (context.offset >= line.length() - 1) { + var _quill$getLine17 = this.quill.getLine(range.index + 1), + _quill$getLine18 = _slicedToArray(_quill$getLine17, 1), + next = _quill$getLine18[0]; + + if (next) { + var curFormats = line.formats(); + var nextFormats = this.quill.getFormat(range.index, 1); + formats = _op2.default.attributes.diff(curFormats, nextFormats) || {}; + nextLength = next.length(); + } + } + this.quill.deleteText(range.index, length, _quill2.default.sources.USER); + if (Object.keys(formats).length > 0) { + this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER); + } +} + +function handleDeleteRange(range) { + var lines = this.quill.getLines(range); + var formats = {}; + if (lines.length > 1) { + var firstFormats = lines[0].formats(); + var lastFormats = lines[lines.length - 1].formats(); + formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {}; + } + this.quill.deleteText(range, _quill2.default.sources.USER); + if (Object.keys(formats).length > 0) { + this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER); + } + this.quill.setSelection(range.index, _quill2.default.sources.SILENT); + this.quill.focus(); +} + +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.focus(); + 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; + } + } + if (binding.shortKey) { + binding[SHORTKEY] = binding.shortKey; + delete binding.shortKey; + } + return binding; +} + +exports.default = Keyboard; +exports.SHORTKEY = SHORTKEY; + +/***/ }), +/* 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 _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _text = __webpack_require__(7); + +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 GUARD_TEXT = '\uFEFF'; + +var Embed = function (_Parchment$Embed) { + _inherits(Embed, _Parchment$Embed); + + function Embed(node) { + _classCallCheck(this, Embed); + + var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node)); + + _this.contentNode = document.createElement('span'); + _this.contentNode.setAttribute('contenteditable', false); + [].slice.call(_this.domNode.childNodes).forEach(function (childNode) { + _this.contentNode.appendChild(childNode); + }); + _this.leftGuard = document.createTextNode(GUARD_TEXT); + _this.rightGuard = document.createTextNode(GUARD_TEXT); + _this.domNode.appendChild(_this.leftGuard); + _this.domNode.appendChild(_this.contentNode); + _this.domNode.appendChild(_this.rightGuard); + return _this; + } + + _createClass(Embed, [{ + key: 'index', + value: function index(node, offset) { + if (node === this.leftGuard) return 0; + if (node === this.rightGuard) return 1; + return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset); + } + }, { + key: 'restore', + value: function restore(node) { + var range = void 0, + textNode = void 0; + var text = node.data.split(GUARD_TEXT).join(''); + if (node === this.leftGuard) { + if (this.prev instanceof _text2.default) { + var prevLength = this.prev.length(); + this.prev.insertAt(prevLength, text); + range = { + startNode: this.prev.domNode, + startOffset: prevLength + text.length + }; + } else { + textNode = document.createTextNode(text); + this.parent.insertBefore(_parchment2.default.create(textNode), this); + range = { + startNode: textNode, + startOffset: text.length + }; + } + } else if (node === this.rightGuard) { + if (this.next instanceof _text2.default) { + this.next.insertAt(0, text); + range = { + startNode: this.next.domNode, + startOffset: text.length + }; + } else { + textNode = document.createTextNode(text); + this.parent.insertBefore(_parchment2.default.create(textNode), this.next); + range = { + startNode: textNode, + startOffset: text.length + }; + } + } + node.data = GUARD_TEXT; + return range; + } + }, { + key: 'update', + value: function update(mutations, context) { + var _this2 = this; + + mutations.forEach(function (mutation) { + if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) { + var range = _this2.restore(mutation.target); + if (range) context.range = range; + } + }); + } + }]); + + return Embed; +}(_parchment2.default.Embed); + +exports.default = Embed; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined; + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.BackgroundStyle = exports.BackgroundClass = undefined; + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _color = __webpack_require__(25); + +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; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined; + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 39 */ +/***/ (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__(0); + +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; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SizeStyle = exports.SizeClass = undefined; + +var _parchment = __webpack_require__(0); + +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; + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + 'align': { + '': __webpack_require__(76), + 'center': __webpack_require__(77), + 'right': __webpack_require__(78), + 'justify': __webpack_require__(79) + }, + 'background': __webpack_require__(80), + 'blockquote': __webpack_require__(81), + 'bold': __webpack_require__(82), + 'clean': __webpack_require__(83), + 'code': __webpack_require__(58), + 'code-block': __webpack_require__(58), + 'color': __webpack_require__(84), + 'direction': { + '': __webpack_require__(85), + 'rtl': __webpack_require__(86) + }, + 'float': { + 'center': __webpack_require__(87), + 'full': __webpack_require__(88), + 'left': __webpack_require__(89), + 'right': __webpack_require__(90) + }, + 'formula': __webpack_require__(91), + 'header': { + '1': __webpack_require__(92), + '2': __webpack_require__(93) + }, + 'italic': __webpack_require__(94), + 'image': __webpack_require__(95), + 'indent': { + '+1': __webpack_require__(96), + '-1': __webpack_require__(97) + }, + 'link': __webpack_require__(98), + 'list': { + 'ordered': __webpack_require__(99), + 'bullet': __webpack_require__(100), + 'check': __webpack_require__(101) + }, + 'script': { + 'sub': __webpack_require__(102), + 'super': __webpack_require__(103) + }, + 'strike': __webpack_require__(104), + 'underline': __webpack_require__(105), + 'video': __webpack_require__(106) +}; + +/***/ }), +/* 42 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _module = __webpack_require__(9); + +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.stack[dest].push(delta); + 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); + } + }, { + key: 'clear', + value: function clear() { + this.stack = { undo: [], redo: [] }; + } + }, { + key: 'cutoff', + value: function cutoff() { + this.lastRecorded = 0; + } + }, { + 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; + +/***/ }), +/* 43 */ +/***/ (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__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _emitter = __webpack_require__(8); + +var _emitter2 = _interopRequireDefault(_emitter); + +var _keyboard = __webpack_require__(34); + +var _keyboard2 = _interopRequireDefault(_keyboard); + +var _theme = __webpack_require__(33); + +var _theme2 = _interopRequireDefault(_theme); + +var _colorPicker = __webpack_require__(59); + +var _colorPicker2 = _interopRequireDefault(_colorPicker); + +var _iconPicker = __webpack_require__(60); + +var _iconPicker2 = _interopRequireDefault(_iconPicker); + +var _picker = __webpack_require__(27); + +var _picker2 = _interopRequireDefault(_picker); + +var _tooltip = __webpack_require__(61); + +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(); + } + }); + } + }; + quill.emitter.listenDOM('click', document.body, 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.EDITOR_CHANGE, 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'); + 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); + _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT); + 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.scrollingContainer.scrollTop; + this.quill.focus(); + this.quill.scrollingContainer.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': + { + value = extractVideoUrl(value); + } // eslint-disable-next-line no-fallthrough + case 'formula': + { + if (!value) break; + var range = this.quill.getSelection(true); + if (range != null) { + var index = range.index + range.length; + 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 extractVideoUrl(url) { + var match = url.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/); + if (match) { + return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0'; + } + if (match = url.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/)) { + // eslint-disable-line no-cond-assign + return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/'; + } + return url; +} + +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; + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var LinkedList = /** @class */ (function () { + function LinkedList() { + this.head = this.tail = null; + 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], null); + 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) { + if (!node) + return; + 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 = null; + 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 = cur.length(); + if (index < length || + (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) { + return [cur, index]; + } + index -= length; + } + 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; +}()); +exports.default = LinkedList; + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var container_1 = __webpack_require__(17); +var Registry = __webpack_require__(1); +var OBSERVER_CONFIG = { + attributes: true, + characterData: true, + characterDataOldValue: true, + childList: true, + subtree: true, +}; +var MAX_OPTIMIZE_ITERATIONS = 100; +var ScrollBlot = /** @class */ (function (_super) { + __extends(ScrollBlot, _super); + function ScrollBlot(node) { + var _this = _super.call(this, node) || this; + _this.scroll = _this; + _this.observer = new MutationObserver(function (mutations) { + _this.update(mutations); + }); + _this.observer.observe(_this.domNode, OBSERVER_CONFIG); + _this.attach(); + 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, context) { + var _this = this; + if (mutations === void 0) { mutations = []; } + if (context === void 0) { context = {}; } + _super.prototype.optimize.call(this, context); + // 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; + // @ts-ignore + if (blot.domNode[Registry.DATA_KEY].mutations == null) { + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations = []; + } + if (markParent) + mark(blot.parent); + }; + var optimize = function (blot) { + // Post-order traversal + if ( + // @ts-ignore + blot.domNode[Registry.DATA_KEY] == null || + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations == null) { + return; + } + if (blot instanceof container_1.default) { + blot.children.forEach(optimize); + } + blot.optimize(context); + }; + 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, context) { + var _this = this; + if (context === void 0) { context = {}; } + mutations = mutations || this.observer.takeRecords(); + // TODO use WeakMap + mutations + .map(function (mutation) { + var blot = Registry.find(mutation.target, true); + if (blot == null) + return null; + // @ts-ignore + if (blot.domNode[Registry.DATA_KEY].mutations == null) { + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations = [mutation]; + return blot; + } + else { + // @ts-ignore + blot.domNode[Registry.DATA_KEY].mutations.push(mutation); + return null; + } + }) + .forEach(function (blot) { + // @ts-ignore + if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null) + return; + // @ts-ignore + blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context); + }); + // @ts-ignore + if (this.domNode[Registry.DATA_KEY].mutations != null) { + // @ts-ignore + _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context); + } + this.optimize(mutations, context); + }; + ScrollBlot.blotName = 'scroll'; + ScrollBlot.defaultChild = 'block'; + ScrollBlot.scope = Registry.Scope.BLOCK_BLOT; + ScrollBlot.tagName = 'DIV'; + return ScrollBlot; +}(container_1.default)); +exports.default = ScrollBlot; + + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var format_1 = __webpack_require__(18); +var Registry = __webpack_require__(1); +// Shallow object comparison +function isEqual(obj1, obj2) { + if (Object.keys(obj1).length !== Object.keys(obj2).length) + return false; + // @ts-ignore + for (var prop in obj1) { + // @ts-ignore + if (obj1[prop] !== obj2[prop]) + return false; + } + return true; +} +var InlineBlot = /** @class */ (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 (context) { + _super.prototype.optimize.call(this, context); + 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(); + } + }; + InlineBlot.blotName = 'inline'; + InlineBlot.scope = Registry.Scope.INLINE_BLOT; + InlineBlot.tagName = 'SPAN'; + return InlineBlot; +}(format_1.default)); +exports.default = InlineBlot; + + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var format_1 = __webpack_require__(18); +var Registry = __webpack_require__(1); +var BlockBlot = /** @class */ (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, context) { + if (navigator.userAgent.match(/Trident/)) { + this.build(); + } + else { + _super.prototype.update.call(this, mutations, context); + } + }; + BlockBlot.blotName = 'block'; + BlockBlot.scope = Registry.Scope.BLOCK_BLOT; + BlockBlot.tagName = 'P'; + return BlockBlot; +}(format_1.default)); +exports.default = BlockBlot; + + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var leaf_1 = __webpack_require__(19); +var EmbedBlot = /** @class */ (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)); +exports.default = EmbedBlot; + + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var leaf_1 = __webpack_require__(19); +var Registry = __webpack_require__(1); +var TextBlot = /** @class */ (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) { + var text = domNode.data; + // @ts-ignore + if (text['normalize']) + text = text['normalize'](); + return text; + }; + 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 (context) { + _super.prototype.optimize.call(this, context); + 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, context) { + 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; + }; + TextBlot.blotName = 'text'; + TextBlot.scope = Registry.Scope.INLINE_BLOT; + return TextBlot; +}(leaf_1.default)); +exports.default = TextBlot; + + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var elem = document.createElement('div'); +elem.classList.toggle('test-class', false); +if (elem.classList.contains('test-class')) { + 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; + } + }); +} + +document.addEventListener("DOMContentLoaded", function () { + // Disable resizing in Firefox + document.execCommand("enableObjectResizing", false, false); + // Disable automatic linkifying in IE11 + document.execCommand("autoUrlDetect", false, false); +}); + +/***/ }), +/* 51 */ +/***/ (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); + } + diffs = fix_emoji(diffs); + 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; + } + } +} + +/* + * Check diff did not split surrogate pairs. + * Ex. [0, '\uD83D'], [-1, '\uDC36'], [1, '\uDC2F'] -> [-1, '\uD83D\uDC36'], [1, '\uD83D\uDC2F'] + * '\uD83D\uDC36' === '🐶', '\uD83D\uDC2F' === '🐯' + * + * @param {Array} diffs Array of diff tuples + * @return {Array} Array of diff tuples + */ +function fix_emoji (diffs) { + var compact = false; + var starts_with_pair_end = function(str) { + return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF; + } + var ends_with_pair_start = function(str) { + return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF; + } + for (var i = 2; i < diffs.length; i += 1) { + if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) && + diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) && + diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) { + compact = true; + + diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1]; + diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1]; + + diffs[i-2][1] = diffs[i-2][1].slice(0, -1); + } + } + if (!compact) { + return diffs; + } + var fixed_diffs = []; + for (var i = 0; i < diffs.length; i += 1) { + if (diffs[i][1].length > 0) { + fixed_diffs.push(diffs[i]); + } + } + return fixed_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; +} + + +/***/ }), +/* 52 */ +/***/ (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; +} + + +/***/ }), +/* 53 */ +/***/ (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; +}; + + +/***/ }), +/* 54 */ +/***/ (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; +} + + +/***/ }), +/* 55 */ +/***/ (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 _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 _extend2 = __webpack_require__(3); + +var _extend3 = _interopRequireDefault(_extend2); + +var _quillDelta = __webpack_require__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _logger = __webpack_require__(10); + +var _logger2 = _interopRequireDefault(_logger); + +var _module = __webpack_require__(9); + +var _module2 = _interopRequireDefault(_module); + +var _align = __webpack_require__(36); + +var _background = __webpack_require__(37); + +var _code = __webpack_require__(13); + +var _code2 = _interopRequireDefault(_code); + +var _color = __webpack_require__(25); + +var _direction = __webpack_require__(38); + +var _font = __webpack_require__(39); + +var _size = __webpack_require__(40); + +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:clipboard'); + +var DOM_KEY = '__ql-matcher'; + +var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['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 (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + selector = _ref2[0], + matcher = _ref2[1]; + + if (!options.matchVisual && matcher === matchSpacing) return; + _this.addMatcher(selector, matcher); + }); + 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.replace(/\>\r?\n +\<'); // Remove spaces between tags + return this.convert(); + } + var formats = this.quill.getFormat(this.quill.selection.savedRange.index); + if (formats[_code2.default.blotName]) { + var text = this.container.innerText; + this.container.innerHTML = ''; + return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName])); + } + + 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') { + this.quill.setContents(this.convert(index), html); + this.quill.setSelection(0, _quill2.default.sources.SILENT); + } else { + var paste = this.convert(html); + this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source); + this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT); + } + } + }, { + 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(); + this.quill.selection.update(_quill2.default.sources.SILENT); + setTimeout(function () { + 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.focus(); + }, 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: [], + matchVisual: true +}; + +function applyFormat(delta, format, value) { + if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') { + return Object.keys(format).reduce(function (delta, key) { + return applyFormat(delta, key, format[key]); + }, delta); + } else { + return delta.reduce(function (delta, op) { + if (op.attributes && op.attributes[format]) { + return delta.push(op); + } else { + return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes)); + } + }, new _quillDelta2.default()); + } +} + +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 applyFormat(delta, 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; + } + attr = ATTRIBUTE_ATTRIBUTORS[name]; + if (attr != null && (attr.attrName === name || attr.keyName === name)) { + formats[attr.attrName] = attr.value(node) || undefined; + } + attr = STYLE_ATTRIBUTORS[name]; + if (attr != null && (attr.attrName === name || attr.keyName === name)) { + attr = STYLE_ATTRIBUTORS[name]; + formats[attr.attrName] = attr.value(node) || undefined; + } + }); + if (Object.keys(formats).length > 0) { + delta = applyFormat(delta, 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') { + delta = applyFormat(delta, match.blotName, match.formats(node)); + } + return delta; +} + +function matchBreak(node, delta) { + if (!deltaEndsWith(delta, '\n')) { + delta.insert('\n'); + } + return delta; +} + +function matchIgnore() { + return new _quillDelta2.default(); +} + +function matchIndent(node, delta) { + var match = _parchment2.default.query(node); + if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\n')) { + return delta; + } + var indent = -1, + parent = node.parentNode; + while (!parent.classList.contains('ql-clipboard')) { + if ((_parchment2.default.query(parent) || {}).blotName === 'list') { + indent += 1; + } + parent = parent.parentNode; + } + if (indent <= 0) return delta; + return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent })); +} + +function matchNewline(node, delta) { + if (!deltaEndsWith(delta, '\n')) { + if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) { + 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.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) { + formats.bold = true; + } + if (Object.keys(formats).length > 0) { + delta = applyFormat(delta, 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 (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) { + return delta; + } + 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; + +/***/ }), +/* 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 _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__(6); + +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(context) { + _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context); + 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; + +/***/ }), +/* 57 */ +/***/ (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__(2); + +var _quillDelta2 = _interopRequireDefault(_quillDelta); + +var _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _logger = __webpack_require__(10); + +var _logger2 = _interopRequireDefault(_logger); + +var _module = __webpack_require__(9); + +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; + +/***/ }), +/* 58 */ +/***/ (function(module, exports) { + +module.exports = " "; + +/***/ }), +/* 59 */ +/***/ (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__(27); + +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; + +/***/ }), +/* 60 */ +/***/ (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__(27); + +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; + +/***/ }), +/* 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; }; }(); + +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; + if (this.quill.root === this.quill.scrollingContainer) { + 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; + // root.scrollTop should be 0 if scrollContainer !== root + 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 = reference.bottom - reference.top + 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; + +/***/ }), +/* 62 */ +/***/ (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__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _emitter = __webpack_require__(8); + +var _emitter2 = _interopRequireDefault(_emitter); + +var _base = __webpack_require__(43); + +var _base2 = _interopRequireDefault(_base); + +var _link = __webpack_require__(26); + +var _link2 = _interopRequireDefault(_link); + +var _selection = __webpack_require__(15); + +var _icons = __webpack_require__(41); + +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) { + var range = _this3.linkRange; + _this3.restoreFocus(); + _this3.quill.formatText(range, '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; + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _core = __webpack_require__(28); + +var _core2 = _interopRequireDefault(_core); + +var _align = __webpack_require__(36); + +var _direction = __webpack_require__(38); + +var _indent = __webpack_require__(64); + +var _blockquote = __webpack_require__(65); + +var _blockquote2 = _interopRequireDefault(_blockquote); + +var _header = __webpack_require__(66); + +var _header2 = _interopRequireDefault(_header); + +var _list = __webpack_require__(67); + +var _list2 = _interopRequireDefault(_list); + +var _background = __webpack_require__(37); + +var _color = __webpack_require__(25); + +var _font = __webpack_require__(39); + +var _size = __webpack_require__(40); + +var _bold = __webpack_require__(56); + +var _bold2 = _interopRequireDefault(_bold); + +var _italic = __webpack_require__(68); + +var _italic2 = _interopRequireDefault(_italic); + +var _link = __webpack_require__(26); + +var _link2 = _interopRequireDefault(_link); + +var _script = __webpack_require__(69); + +var _script2 = _interopRequireDefault(_script); + +var _strike = __webpack_require__(70); + +var _strike2 = _interopRequireDefault(_strike); + +var _underline = __webpack_require__(71); + +var _underline2 = _interopRequireDefault(_underline); + +var _image = __webpack_require__(72); + +var _image2 = _interopRequireDefault(_image); + +var _video = __webpack_require__(73); + +var _video2 = _interopRequireDefault(_video); + +var _code = __webpack_require__(13); + +var _code2 = _interopRequireDefault(_code); + +var _formula = __webpack_require__(74); + +var _formula2 = _interopRequireDefault(_formula); + +var _syntax = __webpack_require__(75); + +var _syntax2 = _interopRequireDefault(_syntax); + +var _toolbar = __webpack_require__(57); + +var _toolbar2 = _interopRequireDefault(_toolbar); + +var _icons = __webpack_require__(41); + +var _icons2 = _interopRequireDefault(_icons); + +var _picker = __webpack_require__(27); + +var _picker2 = _interopRequireDefault(_picker); + +var _colorPicker = __webpack_require__(59); + +var _colorPicker2 = _interopRequireDefault(_colorPicker); + +var _iconPicker = __webpack_require__(60); + +var _iconPicker2 = _interopRequireDefault(_iconPicker); + +var _tooltip = __webpack_require__(61); + +var _tooltip2 = _interopRequireDefault(_tooltip); + +var _bubble = __webpack_require__(108); + +var _bubble2 = _interopRequireDefault(_bubble); + +var _snow = __webpack_require__(62); + +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); + +exports.default = _core2.default; + +/***/ }), +/* 64 */ +/***/ (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__(0); + +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; + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _block = __webpack_require__(4); + +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; + +/***/ }), +/* 66 */ +/***/ (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__(4); + +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; + +/***/ }), +/* 67 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _block = __webpack_require__(4); + +var _block2 = _interopRequireDefault(_block); + +var _container = __webpack_require__(24); + +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)); + + var listEventHandler = function listEventHandler(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'); + } + }; + + domNode.addEventListener('touchstart', listEventHandler); + domNode.addEventListener('mousedown', listEventHandler); + 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(context) { + _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context); + 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; + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _bold = __webpack_require__(56); + +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; + +/***/ }), +/* 69 */ +/***/ (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__(6); + +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; + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _inline = __webpack_require__(6); + +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; + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _inline = __webpack_require__(6); + +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; + +/***/ }), +/* 72 */ +/***/ (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 _parchment = __webpack_require__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _link = __webpack_require__(26); + +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 (_Parchment$Embed) { + _inherits(Image, _Parchment$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; +}(_parchment2.default.Embed); + +Image.blotName = 'image'; +Image.tagName = 'IMG'; + +exports.default = Image; + +/***/ }), +/* 73 */ +/***/ (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__(4); + +var _link = __webpack_require__(26); + +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; + +/***/ }), +/* 74 */ +/***/ (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__(35); + +var _embed2 = _interopRequireDefault(_embed); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _module = __webpack_require__(9); + +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 FormulaBlot = function (_Embed) { + _inherits(FormulaBlot, _Embed); + + function FormulaBlot() { + _classCallCheck(this, FormulaBlot); + + return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments)); + } + + _createClass(FormulaBlot, null, [{ + 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, { + throwOnError: false, + errorColor: '#f00' + }); + node.setAttribute('data-value', value); + } + 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'; + +var Formula = function (_Module) { + _inherits(Formula, _Module); + + _createClass(Formula, null, [{ + key: 'register', + value: function register() { + _quill2.default.register(FormulaBlot, true); + } + }]); + + function Formula() { + _classCallCheck(this, Formula); + + var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this)); + + if (window.katex == null) { + throw new Error('Formula module requires KaTeX.'); + } + return _this2; + } + + return Formula; +}(_module2.default); + +exports.FormulaBlot = FormulaBlot; +exports.default = Formula; + +/***/ }), +/* 75 */ +/***/ (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__(0); + +var _parchment2 = _interopRequireDefault(_parchment); + +var _quill = __webpack_require__(5); + +var _quill2 = _interopRequireDefault(_quill); + +var _module = __webpack_require__(9); + +var _module2 = _interopRequireDefault(_module); + +var _code = __webpack_require__(13); + +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) { + var text = this.domNode.textContent; + if (this.cachedText !== text) { + if (text.trim().length > 0 || this.cachedText == null) { + this.domNode.innerHTML = _highlight(text); + this.domNode.normalize(); + this.attach(); + } + this.cachedText = text; + } + } + }]); + + 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); + + _createClass(Syntax, null, [{ + key: 'register', + value: function register() { + _quill2.default.register(CodeToken, true); + _quill2.default.register(SyntaxCodeBlock, true); + } + }]); + + 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.'); + } + var timer = null; + _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () { + clearTimeout(timer); + timer = setTimeout(function () { + _this2.highlight(); + timer = null; + }, _this2.options.interval); + }); + _this2.highlight(); + return _this2; + } + + _createClass(Syntax, [{ + key: 'highlight', + value: function highlight() { + var _this3 = this; + + if (this.quill.selection.composing) return; + this.quill.update(_quill2.default.sources.USER); + 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; + }; + }(), + interval: 1000 +}; + +exports.CodeBlock = SyntaxCodeBlock; +exports.CodeToken = CodeToken; +exports.default = Syntax; + +/***/ }), +/* 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) { + +module.exports = " "; + +/***/ }), +/* 103 */ +/***/ (function(module, exports) { + +module.exports = " "; + +/***/ }), +/* 104 */ +/***/ (function(module, exports) { + +module.exports = " "; + +/***/ }), +/* 105 */ +/***/ (function(module, exports) { + +module.exports = " "; + +/***/ }), +/* 106 */ +/***/ (function(module, exports) { + +module.exports = " "; + +/***/ }), +/* 107 */ +/***/ (function(module, exports) { + +module.exports = " "; + +/***/ }), +/* 108 */ +/***/ (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__(3); + +var _extend2 = _interopRequireDefault(_extend); + +var _emitter = __webpack_require__(8); + +var _emitter2 = _interopRequireDefault(_emitter); + +var _base = __webpack_require__(43); + +var _base2 = _interopRequireDefault(_base); + +var _selection = __webpack_require__(15); + +var _icons = __webpack_require__(41); + +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; + +/***/ }), +/* 109 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(63); + + +/***/ }) +/******/ ])["default"]; +}); \ No newline at end of file diff --git a/static/quill/quill.min.js b/static/quill/quill.min.js new file mode 100644 index 00000000..673c69cf --- /dev/null +++ b/static/quill/quill.min.js @@ -0,0 +1,8 @@ +/*! + * Quill Editor v1.3.5 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Quill=e():t.Quill=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=45)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(17),o=n(18),i=n(19),l=n(48),a=n(49),s=n(50),u=n(51),c=n(52),f=n(11),h=n(28),p=n(29),d=n(27),y=n(1),v={Scope:y.Scope,create:y.create,find:y.find,query:y.query,register:y.register,Container:r.default,Format:o.default,Leaf:i.default,Embed:u.default,Scroll:l.default,Block:s.default,Inline:a.default,Text:c.default,Attributor:{Attribute:f.default,Class:h.default,Style:p.default,Store:d.default}};e.default=v},function(t,e,n){"use strict";function r(t,e){var n=i(t);if(null==n)throw new s("Unable to create "+t+" blot");var r=n;return new r(t instanceof Node||t.nodeType===Node.TEXT_NODE?t:r.create(e),e)}function o(t,n){return void 0===n&&(n=!1),null==t?null:null!=t[e.DATA_KEY]?t[e.DATA_KEY].blot:n?o(t.parentNode,n):null}function i(t,e){void 0===e&&(e=p.ANY);var n;if("string"==typeof t)n=h[t]||u[t];else if(t instanceof Text||t.nodeType===Node.TEXT_NODE)n=h.text;else if("number"==typeof t)t&p.LEVEL&p.BLOCK?n=h.block:t&p.LEVEL&p.INLINE&&(n=h.inline);else if(t instanceof HTMLElement){var r=(t.getAttribute("class")||"").split(/\s+/);for(var o in r)if(n=c[r[o]])break;n=n||f[t.tagName]}return null==n?null:e&p.LEVEL&n.scope&&e&p.TYPE&n.scope?n:null}function l(){for(var t=[],e=0;e1)return t.map(function(t){return l(t)});var n=t[0];if("string"!=typeof n.blotName&&"string"!=typeof n.attrName)throw new s("Invalid definition");if("abstract"===n.blotName)throw new s("Cannot register abstract class");if(h[n.blotName||n.attrName]=n,"string"==typeof n.keyName)u[n.keyName]=n;else if(null!=n.className&&(c[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!=f[t]&&null!=n.className||(f[t]=n)})}return n}var a=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var s=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 a(e,t),e}(Error);e.ParchmentError=s;var u={},c={},f={},h={};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=r,e.find=o,e.query=i,e.register=l},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 void 0===i||n.call(t,i)};t.exports=function t(){var e,n,r,l,a,s,u=arguments[0],c=1,f=arguments.length,h=!1;for("boolean"==typeof u&&(h=u,u=arguments[1]||{},c=2),(null==u||"object"!=typeof u&&"function"!=typeof u)&&(u={});c1&&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()-1)){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);x.blotName="block",x.tagName="P",x.defaultChild="break",x.allowedChildren=[m.default,y.default.Embed,O.default],e.bubbleFormats=a,e.BlockEmbed=w,e.default=x},function(t,e,n){var r=n(54),o=n(12),i=n(2),l=n(20),a=String.fromCharCode(0),s=function(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]};s.prototype.insert=function(t,e){var n={};return 0===t.length?this:(n.insert=t,null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(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,"object"!=typeof(n=this.ops[e-1])))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.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),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){(t(r)?e:n).push(r)}),[e,n]},s.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},s.prototype.changeLength=function(){return this.reduce(function(t,e){return e.insert?t+l.length(e):e.delete?t-e.delete:t},0)},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(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:a;var r=e===t?"on":"with";throw new Error("diff() called "+r+" 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,o=0;n.hasNext();){if("insert"!==n.peekType())return;var i=n.peek(),a=l.length(i)-n.peekLength(),u="string"==typeof i.insert?i.insert.indexOf(e,a)-a:-1;if(u<0)r.push(n.next());else if(u>0)r.push(n.next(u));else{if(!1===t(r,n.next(1).attributes||{},o))return;o+=1,r=new s}}r.length()>0&&t(r,{},o)},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&&(r0){var n=this.parent.isolate(this.offset(),this.length());this.moveChildren(n),n.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:t0){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"===(void 0===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 x.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")}}(),h=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,null==this.container)return S.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.root.setAttribute("data-gramm",!1),this.scrollingContainer=this.options.scrollingContainer||this.root,this.emitter=new g.default,this.scroll=w.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("
"+o+"


");this.setContents(s),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return h(t,null,[{key:"debug",value:function(t){!0===t&&(t="log"),A.default.level(t)}},{key:"find",value:function(t){return t.__quill||w.default.find(t)}},{key:"import",value:function(t){return null==this.imports[t]&&S.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||S.warn("Overwriting "+t+" with",e),this.imports[t]=e,(t.startsWith("blots/")||t.startsWith("formats/"))&&"abstract"!==e.blotName?w.default.register(e):t.startsWith("modules")&&"function"==typeof e.register&&e.register()}}]),h(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)}},{key:"focus",value:function(){var t=this.scrollingContainer.scrollTop;this.selection.focus(),this.scrollingContainer.scrollTop=t,this.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(w.default.query(t,w.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,n=void 0;n="number"==typeof t?this.selection.getBounds(t,e):this.selection.getBounds(t.index,t.length);var r=this.container.getBoundingClientRect();return{bottom:n.bottom-r.top,height:n.height,left:n.left-r.left,right:n.right-r.left,top:n.top-r.top,width:n.width}}},{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(!0),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(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&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:"scrollIntoView",value:function(){this.selection.scrollIntoView(this.scrollingContainer)}},{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];return null!=i&&"string"==typeof i.insert&&"\n"===i.insert[i.insert.length-1]&&(e.editor.deleteText(e.getLength()-1,1),o.delete(1)),r.compose(o)},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 x.Range(e,n),r),r!==g.default.sources.SILENT&&this.selection.scrollIntoView(this.scrollingContainer)}}},{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.3.5",P.imports={delta:d.default,parchment:w.default,"core/module":_.default,"core/theme":T.default},e.expandConfig=l,e.overload=s,e.default=P},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r(this,t),this.quill=e,this.options=n};o.DEFAULTS={},e.default=o},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=n(0),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default.Text);e.default=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});var a=function(){function t(t,e){for(var n=0;n1?e-1:0),r=1;r1?n-1:0),o=1;o-1: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?e:""},t}();e.default=o},function(t,e,n){function r(t){return null===t||void 0===t}function o(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"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]!=h[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(55),s=n(56),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,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(){var t=this.domNode.textContent.length;return this.domNode.textContent.endsWith("\n")?t:t+1}},{key:"newlineIndex",value:function(t){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return this.domNode.textContent.slice(0,t).lastIndexOf("\n");var e=this.domNode.textContent.slice(t).indexOf("\n");return e>-1?t+e:-1}},{key:"optimize",value:function(t){this.domNode.textContent.endsWith("\n")||this.appendChild(p.default.create("text","\n")),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t);var n=this.next;null!=n&&n.prev===this&&n.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===n.statics.formats(n.domNode)&&(n.optimize(t),n.moveChildren(this),n.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=p.default.find(t);null==e?t.parentNode.removeChild(t):e instanceof p.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,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=function(){function t(t,e){for(var n=0;n-1}Object.defineProperty(e,"__esModule",{value:!0}),e.sanitize=e.default=void 0;var a=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":o(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=s},function(t,e,n){"use strict";function r(t){var e=a.find(t);if(null==e)try{e=a.create(t)}catch(n){e=a.create(a.Scope.INLINE),[].slice.call(t.childNodes).forEach(function(t){e.domNode.appendChild(t)}),t.parentNode&&t.parentNode.replaceChild(e.domNode,t),e.attach()}return e}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(47),l=n(26),a=n(1),s=function(t){function e(e){var n=t.call(this,e)||this;return n.build(),n}return o(e,t),e.prototype.appendChild=function(t){this.insertBefore(t)},e.prototype.attach=function(){t.prototype.attach.call(this),this.children.forEach(function(t){t.attach()})},e.prototype.build=function(){var t=this;this.children=new i.default,[].slice.call(this.domNode.childNodes).reverse().forEach(function(e){try{var n=r(e);t.insertBefore(n,t.children.head||void 0)}catch(t){if(t instanceof a.ParchmentError)return;throw t}})},e.prototype.deleteAt=function(t,e){if(0===t&&e===this.length())return this.remove();this.children.forEachAt(t,e,function(t,e,n){t.deleteAt(e,n)})},e.prototype.descendant=function(t,n){var r=this.children.find(n),o=r[0],i=r[1];return null==t.blotName&&t(o)||null!=t.blotName&&o instanceof t?[o,i]:o instanceof e?o.descendant(t,i):[null,-1]},e.prototype.descendants=function(t,n,r){void 0===n&&(n=0),void 0===r&&(r=Number.MAX_VALUE);var o=[],i=r;return this.children.forEachAt(n,r,function(n,r,l){(null==t.blotName&&t(n)||null!=t.blotName&&n instanceof t)&&o.push(n),n instanceof e&&(o=o.concat(n.descendants(t,r,i))),i-=l}),o},e.prototype.detach=function(){this.children.forEach(function(t){t.detach()}),t.prototype.detach.call(this)},e.prototype.formatAt=function(t,e,n,r){this.children.forEachAt(t,e,function(t,e,o){t.formatAt(e,o,n,r)})},e.prototype.insertAt=function(t,e,n){var r=this.children.find(t),o=r[0],i=r[1];if(o)o.insertAt(i,e,n);else{var l=null==n?a.create("text",e):a.create(e,n);this.appendChild(l)}},e.prototype.insertBefore=function(t,e){if(null!=this.statics.allowedChildren&&!this.statics.allowedChildren.some(function(e){return t instanceof e}))throw new a.ParchmentError("Cannot insert "+t.statics.blotName+" into "+this.statics.blotName);t.insertInto(this,e)},e.prototype.length=function(){return this.children.reduce(function(t,e){return t+e.length()},0)},e.prototype.moveChildren=function(t,e){this.children.forEach(function(n){t.insertBefore(n,e)})},e.prototype.optimize=function(e){if(t.prototype.optimize.call(this,e),0===this.children.length)if(null!=this.statics.defaultChild){var n=a.create(this.statics.defaultChild);this.appendChild(n),n.optimize(e)}else this.remove()},e.prototype.path=function(t,n){void 0===n&&(n=!1);var r=this.children.find(t,n),o=r[0],i=r[1],l=[[this,t]];return o instanceof e?l.concat(o.path(i,n)):(null!=o&&l.push([o,i]),l)},e.prototype.removeChild=function(t){this.children.remove(t)},e.prototype.replace=function(n){n instanceof e&&n.moveChildren(this),t.prototype.replace.call(this,n)},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=this.clone();return this.parent.insertBefore(n,this.next),this.children.forEachAt(t,this.length(),function(t,r,o){t=t.split(r,e),n.appendChild(t)}),n},e.prototype.unwrap=function(){this.moveChildren(this.parent,this.next),this.remove()},e.prototype.update=function(t,e){var n=this,o=[],i=[];t.forEach(function(t){t.target===n.domNode&&"childList"===t.type&&(o.push.apply(o,t.addedNodes),i.push.apply(i,t.removedNodes))}),i.forEach(function(t){if(!(null!=t.parentNode&&"IFRAME"!==t.tagName&&document.body.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)){var e=a.find(t);null!=e&&(null!=e.domNode.parentNode&&e.domNode.parentNode!==n.domNode||e.detach())}}),o.filter(function(t){return t.parentNode==n.domNode}).sort(function(t,e){return t===e?0:t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING?1:-1}).forEach(function(t){var e=null;null!=t.nextSibling&&(e=a.find(t.nextSibling));var o=r(t);o.next==e&&null!=o.next||(null!=o.parent&&o.parent.removeChild(n),n.insertBefore(o,e||void 0))})},e}(l.default);e.default=s},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(11),i=n(27),l=n(17),a=n(1),s=function(t){function e(e){var n=t.call(this,e)||this;return n.attributes=new i.default(n.domNode),n}return r(e,t),e.formats=function(t){return"string"==typeof this.tagName||(Array.isArray(this.tagName)?t.tagName.toLowerCase():void 0)},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,n){var r=this;t.prototype.update.call(this,e,n),e.some(function(t){return t.target===r.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);e.default=s},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(26),i=n(1),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 this.domNode===t||this.domNode.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY?Math.min(e,1):-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.scope=i.Scope.INLINE_BLOT,e}(o.default);e.default=l},function(t,e,n){function r(t){this.ops=t,this.index=0,this.offset=0}var o=n(12),i=n(2),l={attributes:{compose:function(t,e,n){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var r=i(!0,{},e);n||(r=Object.keys(r).reduce(function(t,e){return null!=r[e]&&(t[e]=r[e]),t},{}));for(var o in t)void 0!==t[o]&&void 0===e[o]&&(r[o]=t[o]);return Object.keys(r).length>0?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){var n=function(){"use strict";function t(t,e){return null!=e&&t instanceof e}function e(n,r,o,i,c){function f(n,o){if(null===n)return null;if(0===o)return n;var y,v;if("object"!=typeof n)return n;if(t(n,a))y=new a;else if(t(n,s))y=new s;else if(t(n,u))y=new u(function(t,e){n.then(function(e){t(f(e,o-1))},function(t){e(f(t,o-1))})});else if(e.__isArray(n))y=[];else if(e.__isRegExp(n))y=new RegExp(n.source,l(n)),n.lastIndex&&(y.lastIndex=n.lastIndex);else if(e.__isDate(n))y=new Date(n.getTime());else{if(d&&Buffer.isBuffer(n))return y=new Buffer(n.length),n.copy(y),y;t(n,Error)?y=Object.create(n):void 0===i?(v=Object.getPrototypeOf(n),y=Object.create(v)):(y=Object.create(i),v=i)}if(r){var b=h.indexOf(n);if(-1!=b)return p[b];h.push(n),p.push(y)}t(n,a)&&n.forEach(function(t,e){var n=f(e,o-1),r=f(t,o-1);y.set(n,r)}),t(n,s)&&n.forEach(function(t){var e=f(t,o-1);y.add(e)});for(var g in n){var m;v&&(m=Object.getOwnPropertyDescriptor(v,g)),m&&null==m.set||(y[g]=f(n[g],o-1))}if(Object.getOwnPropertySymbols)for(var _=Object.getOwnPropertySymbols(n),g=0;g<_.length;g++){var O=_[g],w=Object.getOwnPropertyDescriptor(n,O);(!w||w.enumerable||c)&&(y[O]=f(n[O],o-1),w.enumerable||Object.defineProperty(y,O,{enumerable:!1}))}if(c)for(var x=Object.getOwnPropertyNames(n),g=0;g1&&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.mouseDown=!1,this.root=this.scroll.domNode,this.cursor=c.default.create("cursor",this),this.lastRange=this.savedRange=new _(0,0),this.handleComposition(),this.handleDragging(),this.emitter.listenDOM("selectionchange",document,function(){r.mouseDown||setTimeout(r.update.bind(r,v.default.sources.USER),1)}),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(){if(r.hasFocus()){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.emitter.on(v.default.events.SCROLL_OPTIMIZE,function(t,e){if(e.range){var n=e.range,o=n.startNode,i=n.startOffset,l=n.endNode,a=n.endOffset;r.setNativeRange(o,i,l,a)}}),this.update(v.default.sources.SILENT)}return s(t,[{key:"handleComposition",value:function(){var t=this;this.root.addEventListener("compositionstart",function(){t.composing=!0}),this.root.addEventListener("compositionend",function(){if(t.composing=!1,t.cursor.parent){var e=t.cursor.restore();if(!e)return;setTimeout(function(){t.setNativeRange(e.startNode,e.startOffset,e.endNode,e.endOffset)},1)}})}},{key:"handleDragging",value:function(){var t=this;this.emitter.listenDOM("mousedown",document.body,function(){t.mouseDown=!0}),this.emitter.listenDOM("mouseup",document.body,function(){t.mouseDown=!1,t.update(v.default.sources.USER)})}},{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=this.scroll.leaf(t),i=a(o,2),l=i[0],s=i[1];if(null==l)return null;var u=l.position(s,!0),c=a(u,2);r=c[0],s=c[1];var f=document.createRange();if(e>0){f.setStart(r,s);var h=this.scroll.leaf(t+e),p=a(h,2);if(l=p[0],s=p[1],null==l)return null;var d=l.position(s,!0),y=a(d,2);return r=y[0],s=y[1],f.setEnd(r,s),f.getBoundingClientRect()}var v="left",b=void 0;return r instanceof Text?(s0&&(v="right")),{bottom:b.top+b.height,height:b.height,left:b[v],right:b[v],top:b.top,width:0}}},{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;var n=this.normalizeNative(e);return m.info("getNativeRange",n),n}},{key:"getRange",value:function(){var t=this.getNativeRange();return null==t?[null,null]:[this.normalizedToRange(t),t]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"normalizedToRange",value:function(t){var e=this,n=[[t.start.node,t.start.offset]];t.native.collapsed||n.push([t.end.node,t.end.offset]);var r=n.map(function(t){var n=a(t,2),r=n[0],o=n[1],i=c.default.find(r,!0),l=i.offset(e.scroll);return 0===o?l:i instanceof c.default.Container?l+i.length():l+i.index(r,o)}),i=Math.min(Math.max.apply(Math,o(r)),this.scroll.length()-1),l=Math.min.apply(Math,[i].concat(o(r)));return new _(l,i-l)}},{key:"normalizeNative",value:function(t){if(!l(this.root,t.startContainer)||!t.collapsed&&!l(this.root,t.endContainer))return null;var e={start:{node:t.startContainer,offset:t.startOffset},end:{node:t.endContainer,offset:t.endOffset},native:t};return[e.start,e.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}),e}},{key:"rangeToNative",value:function(t){var e=this,n=t.collapsed?[t.index]:[t.index,t.index+t.length],r=[],o=this.scroll.length();return n.forEach(function(t,n){t=Math.min(o-1,t);var i=void 0,l=e.scroll.leaf(t),s=a(l,2),u=s[0],c=s[1],f=u.position(c,0!==n),h=a(f,2);i=h[0],c=h[1],r.push(i,c)}),r.length<2&&(r=r.concat(r)),r}},{key:"scrollIntoView",value:function(t){var e=this.lastRange;if(null!=e){var n=this.getBounds(e.index,e.length);if(null!=n){var r=this.scroll.length()-1,o=this.scroll.line(Math.min(e.index,r)),i=a(o,1),l=i[0],s=l;if(e.length>0){var u=this.scroll.line(Math.min(e.index+e.length,r));s=a(u,1)[0]}if(null!=l&&null!=s){var c=t.getBoundingClientRect();n.topc.bottom&&(t.scrollTop+=n.bottom-c.bottom)}}}}},{key:"setNativeRange",value:function(t,e){var n=arguments.length>2&&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=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:v.default.sources.API;if("string"==typeof e&&(n=e,e=!1),m.info("setRange",t),null!=t){var r=this.rangeToNative(t);this.setNativeRange.apply(this,o(r).concat([e]))}else this.setNativeRange(null);this.update(n)}},{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,h.default)(this.lastRange),(0,h.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,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=n(0),s=r(a),u=n(3),c=r(u),f=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),e}(s.default.Container);f.allowedChildren=[c.default,u.BlockEmbed,f],e.default=f},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=function(){function t(t,e){for(var n=0;n-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(){null!=this.parent&&(this.scroll=this.parent.scroll)},t.prototype.clone=function(){var t=this.domNode.cloneNode(!1);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){this.isolate(t,e).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){void 0===e&&(e=null),null!=this.parent&&this.parent.children.remove(this);var n=null;t.children.insertBefore(this,e),null!=e&&(n=e.domNode),null!=this.next&&this.domNode.nextSibling==n||t.domNode.insertBefore(this.domNode,n),this.parent=t,this.attach()},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(t){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,e){},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.blotName="abstract",t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(11),o=n(28),i=n(29),l=n(1),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}();e.default=a},function(t,e,n){"use strict";function r(t,e){return(t.getAttribute("class")||"").split(/\s+/).filter(function(t){return 0===t.indexOf(e+"-")})}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),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){r(t,this.keyName).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);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(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),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){return t.split(":")[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);e.default=l},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;n1){var u=o.formats(),c=this.quill.getFormat(t.index-1,1);i=A.default.attributes.diff(u,c)||{}}}var f=/[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(e.prefix)?2:1;this.quill.deleteText(t.index-f,f,P.default.sources.USER),Object.keys(i).length>0&&this.quill.formatLine(t.index-f,f,i,P.default.sources.USER),this.quill.focus()}}function c(t,e){var n=/^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(e.suffix)?2:1;if(!(t.index>=this.quill.getLength()-n)){var r={},o=0,i=this.quill.getLine(t.index),l=b(i,1),a=l[0];if(e.offset>=a.length()-1){var s=this.quill.getLine(t.index+1),u=b(s,1),c=u[0];if(c){var f=a.formats(),h=this.quill.getFormat(t.index,1);r=A.default.attributes.diff(f,h)||{},o=c.length()}}this.quill.deleteText(t.index,n,P.default.sources.USER),Object.keys(r).length>0&&this.quill.formatLine(t.index+o-1,n,r,P.default.sources.USER)}}function f(t){var e=this.quill.getLines(t),n={};if(e.length>1){var r=e[0].formats(),o=e[e.length-1].formats();n=A.default.attributes.diff(o,r)||{}}this.quill.deleteText(t,P.default.sources.USER),Object.keys(n).length>0&&this.quill.formatLine(t.index,1,n,P.default.sources.USER),this.quill.setSelection(t.index,P.default.sources.SILENT),this.quill.focus()}function h(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 T.default.query(n,T.default.Scope.BLOCK)&&!Array.isArray(e.format[n])&&(t[n]=e.format[n]),t},{});this.quill.insertText(t.index,"\n",r,P.default.sources.USER),this.quill.setSelection(t.index+1,P.default.sources.SILENT),this.quill.focus(),Object.keys(e.format).forEach(function(t){null==r[t]&&(Array.isArray(e.format[t])||"link"!==t&&n.quill.format(t,e.format[t],P.default.sources.USER))})}function p(t){return{key:D.keys.TAB,shiftKey:!t,format:{"code-block":!0},handler:function(e){var n=T.default.query("code-block"),r=e.index,o=e.length,i=this.quill.scroll.descendant(n,r),l=b(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),h=a.domNode.textContent.slice(c,f).split("\n");s=0,h.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(P.default.sources.USER),this.quill.setSelection(r,o,P.default.sources.SILENT)}}}}function d(t){return{key:t[0].toUpperCase(),shortKey:!0,handler:function(e,n){this.quill.format(t,!n.format[t],P.default.sources.USER)}}}function y(t){if("string"==typeof t||"number"==typeof t)return y({key:t});if("object"===(void 0===t?"undefined":v(t))&&(t=(0,_.default)(t,!1)),"string"==typeof t.key)if(null!=D.keys[t.key.toUpperCase()])t.key=D.keys[t.key.toUpperCase()];else{if(1!==t.key.length)return null;t.key=t.key.toUpperCase().charCodeAt(0)}return t.shortKey&&(t[B]=t.shortKey,delete t.shortKey),t}Object.defineProperty(e,"__esModule",{value:!0}),e.SHORTKEY=e.default=void 0;var v="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},b=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")}}(),g=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=y(t);if(null==r||null==r.key)return I.warn("Attempted to add invalid keyboard binding",r);"function"==typeof e&&(e={handler:e}),"function"==typeof n&&(n={handler:n}),r=(0,k.default)(r,e,n),this.bindings[r.key]=this.bindings[r.key]||[],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=b(l,2),s=a[0],u=a[1],c=t.quill.getLeaf(i.index),f=b(c,2),h=f[0],p=f[1],d=0===i.length?[h,p]:t.quill.getLeaf(i.index+i.length),y=b(d,2),g=y[0],m=y[1],_=h instanceof T.default.Text?h.value().slice(0,p):"",O=g instanceof T.default.Text?g.value().slice(m):"",x={collapsed:0===i.length,empty:0===i.length&&s.length()<=1,format:t.quill.getFormat(i),offset:u,prefix:_,suffix:O};o.some(function(e){if(null!=e.collapsed&&e.collapsed!==x.collapsed)return!1;if(null!=e.empty&&e.empty!==x.empty)return!1;if(null!=e.offset&&e.offset!==x.offset)return!1;if(Array.isArray(e.format)){if(e.format.every(function(t){return null==x.format[t]}))return!1}else if("object"===v(e.format)&&!Object.keys(e.format).every(function(t){return!0===e.format[t]?null!=x.format[t]:!1===e.format[t]?null==x.format[t]:(0,w.default)(e.format[t],x.format[t])}))return!1;return!(null!=e.prefix&&!e.prefix.test(x.prefix))&&(!(null!=e.suffix&&!e.suffix.test(x.suffix))&&!0!==e.handler.call(t,i,x))})&&n.preventDefault()}}}})}}]),e}(R.default);D.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},D.DEFAULTS={bindings:{bold:d("bold"),italic:d("italic"),underline:d("underline"),indent:{key:D.keys.TAB,format:["blockquote","indent","list"],handler:function(t,e){if(e.collapsed&&0!==e.offset)return!0;this.quill.format("indent","+1",P.default.sources.USER)}},outdent:{key:D.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(t,e){if(e.collapsed&&0!==e.offset)return!0;this.quill.format("indent","-1",P.default.sources.USER)}},"outdent backspace":{key:D.keys.BACKSPACE,collapsed:!0,shiftKey:null,metaKey:null,ctrlKey:null,altKey:null,format:["indent","list"],offset:0,handler:function(t,e){null!=e.format.indent?this.quill.format("indent","-1",P.default.sources.USER):null!=e.format.list&&this.quill.format("list",!1,P.default.sources.USER)}},"indent code-block":p(!0),"outdent code-block":p(!1),"remove tab":{key:D.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(t){this.quill.deleteText(t.index-1,1,P.default.sources.USER)}},tab:{key:D.keys.TAB,handler:function(t){this.quill.history.cutoff();var e=(new N.default).retain(t.index).delete(t.length).insert("\t");this.quill.updateContents(e,P.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(t.index+1,P.default.sources.SILENT)}},"list empty enter":{key:D.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(t,e){this.quill.format("list",!1,P.default.sources.USER),e.format.indent&&this.quill.format("indent",!1,P.default.sources.USER)}},"checklist enter":{key:D.keys.ENTER,collapsed:!0,format:{list:"checked"},handler:function(t){var e=this.quill.getLine(t.index),n=b(e,2),r=n[0],o=n[1],i=(0,k.default)({},r.formats(),{list:"checked"}),l=(new N.default).retain(t.index).insert("\n",i).retain(r.length()-o-1).retain(1,{list:"unchecked"});this.quill.updateContents(l,P.default.sources.USER),this.quill.setSelection(t.index+1,P.default.sources.SILENT),this.quill.scrollIntoView()}},"header enter":{key:D.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(t,e){var n=this.quill.getLine(t.index),r=b(n,2),o=r[0],i=r[1],l=(new N.default).retain(t.index).insert("\n",e.format).retain(o.length()-i-1).retain(1,{header:null});this.quill.updateContents(l,P.default.sources.USER),this.quill.setSelection(t.index+1,P.default.sources.SILENT),this.quill.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/,handler:function(t,e){var n=e.prefix.length,r=this.quill.getLine(t.index),o=b(r,2),i=o[0],l=o[1];if(l>n)return!0;var a=void 0;switch(e.prefix.trim()){case"[]":case"[ ]":a="unchecked";break;case"[x]":a="checked";break;case"-":case"*":a="bullet";break;default:a="ordered"}this.quill.insertText(t.index," ",P.default.sources.USER),this.quill.history.cutoff();var s=(new N.default).retain(t.index-l).delete(n+1).retain(i.length()-2-l).retain(1,{list:a});this.quill.updateContents(s,P.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(t.index-n,P.default.sources.SILENT)}},"code exit":{key:D.keys.ENTER,collapsed:!0,format:["code-block"],prefix:/\n\n$/,suffix:/^\s+$/,handler:function(t){var e=this.quill.getLine(t.index),n=b(e,2),r=n[0],o=n[1],i=(new N.default).retain(t.index+r.length()-o-2).retain(1,{"code-block":null}).delete(1);this.quill.updateContents(i,P.default.sources.USER)}},"embed left":s(D.keys.LEFT,!1),"embed left shift":s(D.keys.LEFT,!0),"embed right":s(D.keys.RIGHT,!1),"embed right shift":s(D.keys.RIGHT,!0)}},e.default=D,e.SHORTKEY=B},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=function(){function t(t,e){for(var n=0;n '},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=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=t.bottom-t.top+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=i},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=t.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||t.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);return e?(e[1]||"https")+"://www.youtube.com/embed/"+e[2]+"?showinfo=0":(e=t.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/))?(e[1]||"https")+"://player.vimeo.com/video/"+e[2]+"/":t}function s(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 u=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.scrollingContainer.scrollTop;this.quill.focus(),this.quill.scrollingContainer.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,v.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",t,v.default.sources.USER)),this.quill.root.scrollTop=e;break;case"video":t=a(t);case"formula":if(!t)break;var n=this.quill.getSelection(!0);if(null!=n){var r=n.index+n.length;this.quill.insertEmbed(r,this.root.getAttribute("data-mode"),t,v.default.sources.USER),"formula"===this.root.getAttribute("data-mode")&&this.quill.insertText(r+1," ",v.default.sources.USER),this.quill.setSelection(r+2,v.default.sources.USER)}}this.textbox.value="",this.hide()}}]),e}(A.default);e.BaseTooltip=M,e.default=L},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(46),i=r(o),l=n(33),a=n(35),s=n(62),u=n(63),c=r(u),f=n(64),h=r(f),p=n(65),d=r(p),y=n(34),v=n(24),b=n(36),g=n(37),m=n(39),_=r(m),O=n(66),w=r(O),x=n(15),k=r(x),E=n(67),N=r(E),j=n(68),A=r(j),q=n(69),T=r(q),S=n(70),P=r(S),C=n(71),L=r(C),M=n(13),R=r(M),I=n(72),B=r(I),D=n(73),U=r(D),F=n(74),H=r(F),K=n(25),z=r(K),Z=n(16),V=r(Z),W=n(41),G=r(W),Y=n(42),X=r(Y),$=n(43),Q=r($),J=n(107),tt=r(J),et=n(108),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":h.default,"formats/list":d.default,"formats/bold":_.default,"formats/code":M.Code,"formats/italic":w.default,"formats/link":k.default,"formats/script":N.default,"formats/strike":A.default,"formats/underline":T.default,"formats/image":P.default,"formats/video":L.default,"formats/list/item":p.ListItem,"modules/formula":B.default,"modules/syntax":U.default,"modules/toolbar":H.default,"themes/bubble":tt.default,"themes/snow":nt.default,"ui/icons":z.default,"ui/picker":V.default,"ui/icon-picker":X.default,"ui/color-picker":G.default,"ui/tooltip":Q.default},!0),e.default=i.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),i=r(o),l=n(6),a=r(l),s=n(3),u=r(s),c=n(14),f=r(c),h=n(23),p=r(h),d=n(30),y=r(d),v=n(32),b=r(v),g=n(5),m=r(g),_=n(59),O=r(_),w=n(8),x=r(w),k=n(60),E=r(k),N=n(61),j=r(N),A=n(38),q=r(A);a.default.register({"blots/block":u.default,"blots/block/embed":s.BlockEmbed,"blots/break":f.default,"blots/container":p.default,"blots/cursor":y.default,"blots/embed":b.default,"blots/inline":m.default,"blots/scroll":O.default,"blots/text":x.default,"modules/clipboard":E.default,"modules/history":j.default,"modules/keyboard":q.default}),i.default.register(u.default,f.default,y.default,m.default,O.default,x.default),e.default=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(){this.head=this.tail=null,this.length=0}return t.prototype.append=function(){for(var t=[],e=0;e1&&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&&(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=null,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}();e.default=r},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(17),i=n(1),l={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},a=function(t){function e(e){var n=t.call(this,e)||this;return n.scroll=n,n.observer=new MutationObserver(function(t){n.update(t)}),n.observer.observe(n.domNode,l),n.attach(),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,n){var r=this;void 0===e&&(e=[]),void 0===n&&(n={}),t.prototype.optimize.call(this,n);for(var l=[].slice.call(this.observer.takeRecords());l.length>0;)e.push(l.pop());for(var a=function(t,e){void 0===e&&(e=!0),null!=t&&t!==r&&null!=t.domNode.parentNode&&(null==t.domNode[i.DATA_KEY].mutations&&(t.domNode[i.DATA_KEY].mutations=[]),e&&a(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(n))},u=e,c=0;u.length>0;c+=1){if(c>=100)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?(a(i.find(t.previousSibling,!1)),[].forEach.call(t.addedNodes,function(t){var e=i.find(t,!1);a(e,!1),e instanceof o.default&&e.children.forEach(function(t){a(t,!1)})})):"attributes"===t.type&&a(e.prev)),a(e))}),this.children.forEach(s),u=[].slice.call(this.observer.takeRecords()),l=u.slice();l.length>0;)e.push(l.pop())}},e.prototype.update=function(e,n){var r=this;void 0===n&&(n={}),e=e||this.observer.takeRecords(),e.map(function(t){var e=i.find(t.target,!0);return null==e?null: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!==r&&null!=t.domNode[i.DATA_KEY]&&t.update(t.domNode[i.DATA_KEY].mutations||[],n)}),null!=this.domNode[i.DATA_KEY].mutations&&t.prototype.update.call(this,this.domNode[i.DATA_KEY].mutations,n),this.optimize(e,n)},e.blotName="scroll",e.defaultChild="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="DIV",e}(o.default);e.default=a},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(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(18),l=n(1),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)){this.isolate(e,n).format(r,o)}else t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.optimize=function(n){t.prototype.optimize.call(this,n);var o=this.formats();if(0===Object.keys(o).length)return this.unwrap();var i=this.next;i instanceof e&&i.prev===this&&r(o,i.formats())&&(i.moveChildren(this),i.remove())},e.blotName="inline",e.scope=l.Scope.INLINE_BLOT,e.tagName="SPAN",e}(i.default);e.default=a},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(18),i=n(1),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,n){navigator.userAgent.match(/Trident/)?this.build():t.prototype.update.call(this,e,n)},e.blotName="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="P",e}(o.default);e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(19),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);e.default=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(19),i=n(1),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){var e=t.data;return e.normalize&&(e=e.normalize()),e},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(n){t.prototype.optimize.call(this,n),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,e){var n=this;t.some(function(t){return"characterData"===t.type&&t.target===n.domNode})&&(this.text=this.statics.value(this.domNode))},e.prototype.value=function(){return this.text},e.blotName="text",e.scope=i.Scope.INLINE_BLOT,e}(o.default);e.default=l},function(t,e,n){"use strict";var r=document.createElement("div");if(r.classList.toggle("test-class",!1),r.classList.contains("test-class")){var o=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return arguments.length>1&&!this.contains(t)==!e?e:o.call(this,t)}}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-1!==r&&r===e}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var e,n=Object(this),r=n.length>>>0,o=arguments[1],i=0;ie.length?t:e,l=t.length>e.length?e:t,a=i.indexOf(l);if(-1!=a)return r=[[y,i.substring(0,a)],[v,l],[y,i.substring(a+l.length)]],t.length>e.length&&(r[0][0]=r[2][0]=d),r;if(1==l.length)return[[d,t],[y,e]];var u=s(t,e);if(u){var c=u[0],f=u[1],h=u[2],p=u[3],b=u[4],g=n(c,h),m=n(f,p);return g.concat([[v,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(x>r)p+=2;else if(h){var k=l+f-_;if(k>=0&&k=E)return i(t,e,O,x)}}}for(var N=-m+b;N<=m-g;N+=2){var E,k=l+N;E=N==-m||N!=m&&u[k-1]n)g+=2;else if(j>r)b+=2;else if(!h){var w=l+f-N;if(w>=0&&w=E)return i(t,e,O,x)}}}}return[[d,t],[y,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,h,p;return t.length>e.length?(c=i[0],f=i[1],h=i[2],p=i[3]):(h=i[0],p=i[1],c=i[2],f=i[3]),[c,f,h,p,i[4]]}function u(t){t.push([v,""]);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]==v?t[n-r-o-1][1]+=s.substring(0,e):(t.splice(0,0,[v,s.substring(0,e)]),n++),s=s.substring(e),i=i.substring(e)),0!==(e=a(s,i))&&(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,[y,s]):0===o?t.splice(n-r,r+o,[d,i]):t.splice(n-r-o,r+o,[d,i],[y,s]),n=n-r-o+(r?1:0)+(o?1:0)+1):0!==n&&t[n-1][0]==v?(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 h(t){for(var e=!1,n=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},r=2;r=55296&&t.charCodeAt(t.length-1)<=56319}(t[r-2][1])&&t[r-1][0]===d&&n(t[r-1][1])&&t[r][0]===y&&n(t[r][1])&&(e=!0,t[r-1][1]=t[r-2][1].slice(-1)+t[r-1][1],t[r][1]=t[r-2][1].slice(-1)+t[r][1],t[r-2][1]=t[r-2][1].slice(0,-1));if(!e)return t;for(var o=[],r=0;r0&&o.push(t[r]);return o}function p(t,e,n){for(var r=e+n-1;r>=0&&r>=e-1;r--)if(r+1=r&&!a.endsWith("\n")&&(n=!0),e.scroll.insertAt(t,a);var c=e.scroll.line(t),f=u(c,2),h=f[0],p=f[1],y=(0,T.default)({},(0,O.bubbleFormats)(h));if(h instanceof w.default){var b=h.descendant(v.default.Leaf,p),g=u(b,1),m=g[0];y=(0,T.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.batchEnd(),this.update(t)}},{key:"deleteText",value:function(t,e){return this.scroll.deleteAt(t,e),this.update((new h.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 h.default).retain(t).retain(e,(0,N.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 h.default).retain(t).retain(e,(0,N.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 h.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 w.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 T.default.apply(T.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 h.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 h.default).retain(t).insert(e,(0,N.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.statics.blotName===w.default.blotName&&(!(t.children.length>1)&&t.children.head instanceof k.default)}},{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 h.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 h.default).insert(n).concat(s)),p=(new h.default).retain(t).concat(f);return this.applyDelta(p)}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=this.delta;if(1===e.length&&"characterData"===e[0].type&&e[0].target.data.match(S)&&v.default.find(e[0].target)){var o=v.default.find(e[0].target),i=(0,O.bubbleFormats)(o),l=o.offset(this.scroll),a=e[0].oldValue.replace(_.default.CONTENTS,""),s=(new h.default).insert(a),u=(new h.default).insert(o.value());t=(new h.default).retain(l).concat(s.diff(u,n)).reduce(function(t,e){return e.insert?t.insert(e.insert,i):t.push(e)},new h.default),this.delta=r.compose(t)}else this.delta=this.getDelta(),t&&(0,A.default)(r.compose(t),this.delta)||(t=r.diff(this.delta,n));return t}}]),t}();e.default=P},function(t,e){"use strict";function n(){}function r(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function o(){this._events=new n,this._eventsCount=0}var i=Object.prototype.hasOwnProperty,l="~";Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(l=!1)),o.prototype.eventNames=function(){var t,e,n=[];if(0===this._eventsCount)return n;for(e in t=this._events)i.call(t,e)&&n.push(l?e.slice(1):e);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(t)):n},o.prototype.listeners=function(t,e){var n=l?l+t:t,r=this._events[n];if(e)return!!r;if(!r)return[];if(r.fn)return[r.fn];for(var o=0,i=r.length,a=new Array(i);o0){if(i instanceof y.BlockEmbed||f instanceof y.BlockEmbed)return void this.optimize();if(i instanceof _.default){var h=i.newlineIndex(i.length(),!0);if(h>-1&&(i=i.split(h+1))===f)return void this.optimize()}else if(f instanceof _.default){var p=f.newlineIndex(0);p>-1&&f.split(p+1)}var d=f.children.head instanceof g.default?null:f.children.head;i.moveChildren(f,d),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==h.default.query(n,h.default.Scope.BLOCK)){var o=h.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=h.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===h.default.Scope.INLINE_BLOT){var r=h.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;return 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 h.default.Container&&(o=o.concat(t(e,n,i))),i-=r}),o}(this,t,e)}},{key:"optimize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!0!==this.batch&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t,n),t.length>0&&this.emitter.emit(d.default.events.SCROLL_OPTIMIZE,t,n))}},{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(!0!==this.batch){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}(h.default.Scroll);x.blotName="scroll",x.className="ql-editor",x.tagName="DIV",x.defaultChild="block",x.allowedChildren=[v.default,y.BlockEmbed,w.default],e.default=x},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){return"object"===(void 0===e?"undefined":x(e))?Object.keys(e).reduce(function(t,n){return s(t,n,e[n])},t):t.reduce(function(t,r){return r.attributes&&r.attributes[e]?t.push(r):t.insert(r.insert,(0,j.default)({},o({},e,n),r.attributes))},new q.default)}function u(t){if(t.nodeType!==Node.ELEMENT_NODE)return{};return t["__ql-computed-style"]||(t["__ql-computed-style"]=window.getComputedStyle(t))}function c(t,e){for(var n="",r=t.ops.length-1;r>=0&&n.length-1}function h(t,e,n){return t.nodeType===t.TEXT_NODE?n.reduce(function(e,n){return n(t,e)},new q.default):t.nodeType===t.ELEMENT_NODE?[].reduce.call(t.childNodes||[],function(r,o){var i=h(o,e,n);return o.nodeType===t.ELEMENT_NODE&&(i=e.reduce(function(t,e){return e(o,t)},i),i=(o[W]||[]).reduce(function(t,e){return e(o,t)},i)),r.concat(i)},new q.default):new q.default}function p(t,e,n){return s(n,t,!0)}function d(t,e){var n=S.default.Attributor.Attribute.keys(t),r=S.default.Attributor.Class.keys(t),o=S.default.Attributor.Style.keys(t),i={};return n.concat(r).concat(o).forEach(function(e){var n=S.default.query(e,S.default.Scope.ATTRIBUTE);null!=n&&(i[n.attrName]=n.value(t),i[n.attrName])||(n=Y[e],null==n||n.attrName!==e&&n.keyName!==e||(i[n.attrName]=n.value(t)||void 0),null==(n=X[e])||n.attrName!==e&&n.keyName!==e||(n=X[e],i[n.attrName]=n.value(t)||void 0))}),Object.keys(i).length>0&&(e=s(e,i)),e}function y(t,e){var n=S.default.query(t);if(null==n)return e;if(n.prototype instanceof S.default.Embed){var r={},o=n.value(t);null!=o&&(r[n.blotName]=o,e=(new q.default).insert(r,n.formats(t)))}else"function"==typeof n.formats&&(e=s(e,n.blotName,n.formats(t)));return e}function v(t,e){return c(e,"\n")||e.insert("\n"),e}function b(){return new q.default}function g(t,e){var n=S.default.query(t);if(null==n||"list-item"!==n.blotName||!c(e,"\n"))return e;for(var r=-1,o=t.parentNode;!o.classList.contains("ql-clipboard");)"list"===(S.default.query(o)||{}).blotName&&(r+=1),o=o.parentNode;return r<=0?e:e.compose((new q.default).retain(e.length()-1).retain(1,{indent:r}))}function m(t,e){return c(e,"\n")||(f(t)||e.length()>0&&t.nextSibling&&f(t.nextSibling))&&e.insert("\n"),e}function _(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 O(t,e){var n={},r=t.style||{};return r.fontStyle&&"italic"===u(t).fontStyle&&(n.italic=!0),r.fontWeight&&(u(t).fontWeight.startsWith("bold")||parseInt(u(t).fontWeight)>=700)&&(n.bold=!0),Object.keys(n).length>0&&(e=s(e,n)),parseFloat(r.textIndent||0)>0&&(e=(new q.default).insert("\t").concat(e)),e}function w(t,e){var n=t.data;if("O:P"===t.parentNode.tagName)return e.insert(n.trim());if(0===n.trim().length&&t.parentNode.classList.contains("ql-clipboard"))return e;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"==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},k=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")}}(),E=function(){function t(t,e){for(var n=0;n\r?\n +\<"),this.convert();var e=this.quill.getFormat(this.quill.selection.savedRange.index);if(e[F.default.blotName]){var n=this.container.innerText;return this.container.innerHTML="",(new q.default).insert(n,o({},F.default.blotName,e[F.default.blotName]))}var r=this.prepareMatching(),i=k(r,2),l=i[0],a=i[1],s=h(this.container,l,a);return c(s,"\n")&&null==s.ops[s.ops.length-1].attributes&&(s=s.compose((new q.default).retain(s.length()-1).delete(1))),V.log("convert",this.container.innerHTML,s),this.container.innerHTML="",s}},{key:"dangerouslyPasteHTML",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:C.default.sources.API;if("string"==typeof t)this.quill.setContents(this.convert(t),e),this.quill.setSelection(0,C.default.sources.SILENT);else{var r=this.convert(e);this.quill.updateContents((new q.default).retain(t).concat(r),n),this.quill.setSelection(t+r.length(),C.default.sources.SILENT)}}},{key:"onPaste",value:function(t){var e=this;if(!t.defaultPrevented&&this.quill.isEnabled()){var n=this.quill.getSelection(),r=(new q.default).retain(n.index),o=this.quill.scrollingContainer.scrollTop;this.container.focus(),this.quill.selection.update(C.default.sources.SILENT),setTimeout(function(){r=r.concat(e.convert()).delete(n.length),e.quill.updateContents(r,C.default.sources.USER),e.quill.setSelection(r.length()-n.length,C.default.sources.SILENT),e.quill.scrollingContainer.scrollTop=o,e.quill.focus()},1)}}},{key:"prepareMatching",value:function(){var t=this,e=[],n=[];return this.matchers.forEach(function(r){var o=k(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[W]=t[W]||[],t[W].push(l)})}}),[e,n]}}]),e}(I.default);$.DEFAULTS={matchers:[],matchVisual:!0},e.default=$,e.matchAttributor=d,e.matchBlot=y,e.matchNewline=m,e.matchSpacing=_,e.matchText=w},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=t.ops[t.ops.length-1];return null!=e&&(null!=e.insert?"string"==typeof e.insert&&e.insert.endsWith("\n"):null!=e.attributes&&Object.keys(e.attributes).some(function(t){return null!=f.default.query(t,f.default.Scope.BLOCK)}))}function s(t){var e=t.reduce(function(t,e){return t+=e.delete||0},0),n=t.length()-e;return a(t)&&(n-=1),n}Object.defineProperty(e,"__esModule",{value:!0}),e.getLastChangeIndex=e.default=void 0;var u=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,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=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(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t);var n=this.next;null!=n&&n.prev===this&&n.statics.blotName===this.statics.blotName&&n.domNode.tagName===this.domNode.tagName&&n.domNode.getAttribute("data-checked")===this.domNode.getAttribute("data-checked")&&(n.moveChildren(this),n.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,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=n(39),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default);s.blotName="italic",s.tagName=["EM","I"],e.default=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=a(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 f.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,c.sanitize)(t,["http","https","data"])?t:"//:0"}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(u.default.Embed);h.blotName="image",h.tagName="IMG",e.default=h},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 l=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=a(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 f.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"sanitize",value:function(t){return c.default.sanitize(t)}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(s.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)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.FormulaBlot=void 0;var a=function(){function t(t,e){for(var n=0;n0||null==this.cachedText)&&(this.domNode.innerHTML=t(e),this.domNode.normalize(),this.attach()),this.cachedText=e)}}]),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.");var l=null;return r.quill.on(h.default.events.SCROLL_OPTIMIZE,function(){clearTimeout(l),l=setTimeout(function(){r.highlight(),l=null},r.options.interval)}),r.highlight(),r}return l(e,t),a(e,null,[{key:"register",value:function(){h.default.register(g,!0),h.default.register(b,!0)}}]),a(e,[{key:"highlight",value:function(){var t=this;if(!this.quill.selection.composing){this.quill.update(h.default.sources.USER);var e=this.quill.getSelection();this.quill.scroll.descendants(b).forEach(function(e){e.highlight(t.options.highlight)}),this.quill.update(h.default.sources.SILENT),null!=e&&this.quill.setSelection(e,h.default.sources.SILENT)}}}]),e}(d.default);m.DEFAULTS={highlight:function(){return null==window.hljs?null:function(t){return window.hljs.highlightAuto(t).value}}(),interval:1e3},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");!1!==t?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")}}(),h=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")}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===h.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(h.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");if(r.style.marginLeft="",0===n)return n;r.style.marginLeft=-1*n-r.offsetWidth/2+"px"}}]),e}(p.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)}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=w}]).default}); +//# sourceMappingURL=quill.min.js.map \ No newline at end of file diff --git a/static/quill/quill.min.js.map b/static/quill/quill.min.js.map new file mode 100644 index 00000000..afd1d10b --- /dev/null +++ b/static/quill/quill.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///quill.min.js","webpack:///webpack/bootstrap 00e590d85b41be113db0","webpack:///../parchment/src/parchment.ts","webpack:///../parchment/src/registry.ts","webpack:///./node_modules/extend/index.js","webpack:///./blots/block.js","webpack:///./node_modules/quill-delta/lib/delta.js","webpack:///./blots/inline.js","webpack:///./core/quill.js","webpack:///./core/module.js","webpack:///./blots/text.js","webpack:///./core/emitter.js","webpack:///./core/logger.js","webpack:///../parchment/src/attributor/attributor.ts","webpack:///./node_modules/deep-equal/index.js","webpack:///./formats/code.js","webpack:///./blots/break.js","webpack:///./formats/link.js","webpack:///./ui/picker.js","webpack:///../parchment/src/blot/abstract/container.ts","webpack:///../parchment/src/blot/abstract/format.ts","webpack:///../parchment/src/blot/abstract/leaf.ts","webpack:///./node_modules/quill-delta/lib/op.js","webpack:///./node_modules/clone/clone.js","webpack:///./core/selection.js","webpack:///./blots/container.js","webpack:///./formats/color.js","webpack:///./ui/icons.js","webpack:///../parchment/src/blot/abstract/shadow.ts","webpack:///../parchment/src/attributor/store.ts","webpack:///../parchment/src/attributor/class.ts","webpack:///../parchment/src/attributor/style.ts","webpack:///./blots/cursor.js","webpack:///./core/theme.js","webpack:///./blots/embed.js","webpack:///./formats/align.js","webpack:///./formats/background.js","webpack:///./formats/direction.js","webpack:///./formats/font.js","webpack:///./formats/size.js","webpack:///./modules/keyboard.js","webpack:///./formats/bold.js","webpack:///./assets/icons/code.svg","webpack:///./ui/color-picker.js","webpack:///./ui/icon-picker.js","webpack:///./ui/tooltip.js","webpack:///./themes/base.js","webpack:///./quill.js","webpack:///./core.js","webpack:///../parchment/src/collection/linked-list.ts","webpack:///../parchment/src/blot/scroll.ts","webpack:///../parchment/src/blot/inline.ts","webpack:///../parchment/src/blot/block.ts","webpack:///../parchment/src/blot/embed.ts","webpack:///../parchment/src/blot/text.ts","webpack:///./core/polyfill.js","webpack:///./node_modules/fast-diff/diff.js","webpack:///./node_modules/deep-equal/lib/keys.js","webpack:///./node_modules/deep-equal/lib/is_arguments.js","webpack:///./core/editor.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./blots/scroll.js","webpack:///./modules/clipboard.js","webpack:///./modules/history.js","webpack:///./formats/indent.js","webpack:///./formats/blockquote.js","webpack:///./formats/header.js","webpack:///./formats/list.js","webpack:///./formats/italic.js","webpack:///./formats/script.js","webpack:///./formats/strike.js","webpack:///./formats/underline.js","webpack:///./formats/image.js","webpack:///./formats/video.js","webpack:///./modules/formula.js","webpack:///./modules/syntax.js","webpack:///./modules/toolbar.js","webpack:///./assets/icons/align-left.svg","webpack:///./assets/icons/align-center.svg","webpack:///./assets/icons/align-right.svg","webpack:///./assets/icons/align-justify.svg","webpack:///./assets/icons/background.svg","webpack:///./assets/icons/blockquote.svg","webpack:///./assets/icons/bold.svg","webpack:///./assets/icons/clean.svg","webpack:///./assets/icons/color.svg","webpack:///./assets/icons/direction-ltr.svg","webpack:///./assets/icons/direction-rtl.svg","webpack:///./assets/icons/float-center.svg","webpack:///./assets/icons/float-full.svg","webpack:///./assets/icons/float-left.svg","webpack:///./assets/icons/float-right.svg","webpack:///./assets/icons/formula.svg","webpack:///./assets/icons/header.svg","webpack:///./assets/icons/header-2.svg","webpack:///./assets/icons/italic.svg","webpack:///./assets/icons/image.svg","webpack:///./assets/icons/indent.svg","webpack:///./assets/icons/outdent.svg","webpack:///./assets/icons/link.svg","webpack:///./assets/icons/list-ordered.svg","webpack:///./assets/icons/list-bullet.svg","webpack:///./assets/icons/list-check.svg","webpack:///./assets/icons/subscript.svg","webpack:///./assets/icons/superscript.svg","webpack:///./assets/icons/strike.svg","webpack:///./assets/icons/underline.svg","webpack:///./assets/icons/video.svg","webpack:///./assets/icons/dropdown.svg","webpack:///./themes/bubble.js","webpack:///./themes/snow.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","create","find","query","register","Container","default","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","input","match","ParchmentError","BlotClass","Node","TEXT_NODE","node","bubble","DATA_KEY","blot","parentNode","scope","ANY","types","attributes","LEVEL","BLOCK","INLINE","HTMLElement","names","getAttribute","split","classes","tags","tagName","TYPE","Definitions","_i","arguments","length","map","Definition","blotName","attrName","keyName","className","Array","isArray","toUpperCase","tagNames","forEach","tag","__extends","extendStatics","setPrototypeOf","__proto__","b","__","constructor","_super","message","_this","Error","hasOwn","toStr","toString","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","key","extend","options","src","copy","copyIsArray","clone","target","deep","_interopRequireDefault","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","writable","bubbleFormats","formats","undefined","_extend2","parent","statics","BlockEmbed","_createClass","defineProperties","props","descriptor","protoProps","staticProps","_get","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","_extend","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_inline","_inline2","_text","_text2","_Parchment$Embed","apply","domNode","insert","values","attribute","BLOCK_ATTRIBUTE","index","format","def","endsWith","block","insertBefore","next","insertAt","slice","BLOCK_BLOT","_Parchment$Block","_this2","cache","delta","descendants","reduce","leaf","Math","min","lines","text","shift","children","tail","line","ref","head","remove","context","child","force","defaultChild","allowedChildren","diff","equal","op","NULL_CHARACTER","String","fromCharCode","Delta","ops","newOp","keys","push","delete","retain","lastOp","unshift","splice","chop","pop","filter","predicate","partition","passed","failed","initial","changeLength","elem","start","end","Infinity","iter","iterator","hasNext","nextOp","compose","other","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","concat","strings","prep","join","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","peek","indexOf","transform","priority","transformPosition","offset","nextType","_Parchment$Inline","compare","BLOT","isolate","wrap","moveChildren","selfIndex","order","otherIndex","_defineProperty","expandConfig","container","userConfig","clipboard","keyboard","history","theme","Quill","DEFAULTS","import","_theme2","themeConfig","config","moduleNames","moduleConfig","moduleClass","debug","error","toolbar","document","querySelector","modify","modifier","source","strict","isEnabled","_emitter4","sources","USER","range","getSelection","oldDelta","editor","change","shiftRange","setSelection","SILENT","_emitter","args","events","TEXT_CHANGE","emitter","emit","EDITOR_CHANGE","_emitter2","overload","_typeof","API","_map","pos","_map2","_slicedToArray","_map3","max","_map4","_selection","Range","Symbol","sliceIterator","_arr","_n","_d","_e","_s","done","err","_editor","_editor2","_emitter3","_module","_module2","_selection2","_logger","_logger2","_theme","html","innerHTML","trim","classList","add","__quill","addContainer","setAttribute","scrollingContainer","scroll","whitelist","selection","addModule","init","on","type","toggle","isBlank","SCROLL_UPDATE","mutations","lastRange","update","contents","convert","setContents","clear","placeholder","readOnly","disable","limit","level","imports","path","overwrite","warn","startsWith","refNode","createElement","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","scrollTop","focus","scrollIntoView","_this4","formatLine","formatText","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","getBoundingClientRect","bottom","top","height","left","right","width","getLength","_overload7","_overload8","getContents","getFormat","Number","MAX_VALUE","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","contains","off","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","_overload15","_overload16","_this11","version","parchment","core/module","core/theme","Module","quill","TextBlot","_Parchment$Text","_eventemitter","_eventemitter2","eventName","addEventListener","_len","_key","querySelectorAll","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","listeners","log","event","_len2","_key2","_ref","handler","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","method","levels","_console","console","namespace","ns","logger","bind","newLevel","attributeBit","ATTRIBUTE","item","canAdd","replace","removeAttribute","isUndefinedOrNull","isBuffer","x","objEquiv","a","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","e","sort","actual","expected","Date","getTime","Code","_block","_block2","_Inline","CodeBlock","_Block","textContent","frag","_descendant","descendant","_descendant2","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","lastIndexOf","appendChild","prev","optimize","removeChild","unwrap","TAB","Break","sanitize","url","protocols","anchor","href","protocol","Link","PROTOCOL_WHITELIST","SANITIZED_URL","_dropdown","_dropdown2","Picker","select","buildPicker","style","display","label","option","hasAttribute","selectItem","buildItem","selected","buildLabel","buildOptions","trigger","selectedIndex","Event","dispatchEvent","createEvent","initEvent","close","isActive","makeBlot","childNodes","replaceChild","attach","linked_list_1","shadow_1","ContainerBlot","build","reverse","forEachAt","criteria","_a","lengthLeft","detach","childBlot","refBlot","some","insertInto","memo","targetParent","inclusive","position","after","addedNodes","removedNodes","mutation","body","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","FormatBlot","toLowerCase","replaceWith","replacement","wrapper","move","LeafBlot","INLINE_BLOT","Iterator","lib","keepNull","retOp","substr","_instanceof","circular","depth","includeNonEnumerable","_clone","proto","nativeMap","nativeSet","nativePromise","resolve","reject","then","__isArray","__isRegExp","RegExp","__getRegExpFlags","lastIndex","__isDate","useBuffer","Buffer","allParents","allChildren","keyChild","valueChild","set","entryChild","attrs","getOwnPropertySymbols","symbols","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","Map","_","Set","Promise","clonePrototype","_toConsumableArray","arr2","from","_clone2","_deepEqual","_deepEqual2","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","setTimeout","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","nativeRange","collapsed","data","scrollLength","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","activeElement","positions","indexes","_position","startContainer","endContainer","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","_scroll$line","_scroll$line2","first","last","_scroll$line3","scrollBounds","removeAllRanges","addRange","blur","rangeToNative","oldRange","_getRange","_getRange2","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","parseInt","align","","center","justify","background","blockquote","bold","clean","code","code-block","color","direction","rtl","float","full","formula","header","1","2","italic","image","indent","+1","-1","link","list","ordered","bullet","check","script","sub","super","strike","underline","video","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","prefix","ClassAttributor","result","camelize","parts","rest","part","StyleAttributor","Cursor","createTextNode","CONTENTS","_length","restoreText","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","makeEmbedArrowHandler","shiftKey","_ref3","where","Keyboard","LEFT","altKey","RIGHT","_quill$getLeaf3","getLeaf","_quill2","handleBackspace","_quill$getLine11","getLine","_quill$getLine12","_quill$getLine13","_quill$getLine14","curFormats","prevFormats","_op2","test","handleDelete","suffix","nextLength","_quill$getLine15","_quill$getLine16","_quill$getLine17","_quill$getLine18","nextFormats","handleDeleteRange","getLines","firstFormats","lastFormats","handleEnter","lineFormats","makeCodeBlockHandler","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","normalize","binding","charCodeAt","SHORTKEY","_op","_quill","navigator","platform","_Module","bindings","addBinding","ENTER","metaKey","ctrlKey","userAgent","BACKSPACE","listen","evt","which","keyCode","defaultPrevented","_quill$getLine","_quill$getLine2","_quill$getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","every","preventDefault","ESCAPE","UP","DOWN","outdent","outdent backspace","indent code-block","outdent code-block","remove tab","tab","cutoff","updateContents","list empty enter","checklist enter","_quill$getLine3","_quill$getLine4","header enter","_quill$getLine5","_quill$getLine6","list autofill","_quill$getLine7","_quill$getLine8","code exit","_quill$getLine9","_quill$getLine10","embed left","embed left shift","embed right","embed right shift","Bold","_picker","_picker2","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","icons","defaultItem","Tooltip","boundsContainer","TEMPLATE","marginTop","hide","reference","offsetWidth","rootBounds","verticalShift","extractVideoUrl","fillSelect","defaultValue","BaseTooltip","_keyboard","_keyboard2","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","removeEventListener","tooltip","textbox","pickers","picker","extendToolbar","buttons","button","selects","handlers","edit","fileInput","files","reader","FileReader","onload","readAsDataURL","click","_Tooltip","save","cancel","mode","preview","linkRange","restoreFocus","_core","_core2","_align","_direction","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_background","_font","_size","_bold","_bold2","_italic","_italic2","_link","_link2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_code","_code2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_icons","_icons2","_bubble","_bubble2","_snow","_snow2","attributors/attribute/direction","attributors/class/align","attributors/class/background","attributors/class/color","attributors/class/direction","attributors/class/font","attributors/class/size","attributors/style/align","attributors/style/background","attributors/style/color","attributors/style/direction","attributors/style/font","attributors/style/size","formats/align","formats/direction","formats/indent","IndentClass","formats/background","formats/color","formats/font","formats/size","formats/blockquote","formats/code-block","formats/header","formats/list","formats/bold","formats/code","formats/italic","formats/link","formats/script","formats/strike","formats/underline","formats/image","formats/video","formats/list/item","ListItem","modules/formula","modules/syntax","modules/toolbar","themes/bubble","themes/snow","ui/icons","ui/picker","ui/icon-picker","ui/color-picker","ui/tooltip","_container","_container2","_cursor","_cursor2","_embed","_embed2","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","blots/block","blots/block/embed","blots/break","blots/container","blots/cursor","blots/embed","blots/inline","blots/scroll","blots/text","modules/clipboard","modules/history","modules/keyboard","LinkedList","append","nodes","cur","curNode","ret","callback","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","observer","MutationObserver","observe","disconnect","records","takeRecords","mark","markParent","remaining","previousSibling","grandChild","isEqual","obj1","obj2","prop","InlineBlot","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","token","searchString","subjectString","isFinite","floor","thisArg","execCommand","diff_main","text1","text2","cursor_pos","DIFF_EQUAL","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","fix_emoji","DIFF_INSERT","DIFF_DELETE","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","x1","k1_offset","y1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","j","best_common","prefixLength","suffixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","compact","starts_with_pair_end","str","fixed_diffs","left_d","right_d","shim","supported","unsupported","propertyIsEnumerable","supportsArgumentsClass","combineFormats","combined","merged","normalizeDelta","ASCII","Editor","getDelta","consumeNextNewline","batchStart","_line$descendant","_line$descendant2","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","_path","formatsArr","blots","_scroll$line4","cursorIndex","textBlot","oldValue","oldText","newText","Events","EE","fn","EventEmitter","_events","_eventsCount","has","eventNames","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_line4","applyFormat","_extend3","computeStyle","nodeType","ELEMENT_NODE","window","getComputedStyle","deltaEndsWith","endText","traverse","elementMatchers","textMatchers","matcher","childrenDelta","DOM_KEY","matchAlias","matchAttributor","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","matchBlot","matchBreak","matchIgnore","matchIndent","matchNewline","matchSpacing","nextElementSibling","nodeHeight","offsetHeight","parseFloat","marginBottom","offsetTop","matchStyles","fontStyle","fontWeight","textIndent","matchText","whiteSpace","replacer","collapse","CLIPBOARD_CONFIG","Clipboard","onPaste","matchers","selector","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","paste","pair","_pair","endsWithNewlineChange","getLastChangeIndex","deleteLength","changeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","stack","changeDelta","undoDelta","timestamp","now","delay","maxStack","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","Italic","_Bold","Script","Strike","Underline","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","render","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","highlight","cachedText","Syntax","timer","clearTimeout","interval","hljs","highlightAuto","addButton","addControls","groups","controls","group","control","addSelect","Toolbar","_ret","addHandler","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","prompt","BubbleTooltip","_base","_base2","TOOLBAR_CONFIG","BubbleTheme","_BaseTheme","buildButtons","buildPickers","_BaseTooltip","show","lastLine","arrow","marginLeft","SnowTheme","SnowTooltip"],"mappings":"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","file":"quill.min.js","sourcesContent":["(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 \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/*!\n * Quill Editor v1.3.5\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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 45);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(48);\nvar inline_1 = __webpack_require__(49);\nvar block_1 = __webpack_require__(50);\nvar embed_1 = __webpack_require__(51);\nvar text_1 = __webpack_require__(52);\nvar attributor_1 = __webpack_require__(11);\nvar class_1 = __webpack_require__(28);\nvar style_1 = __webpack_require__(29);\nvar store_1 = __webpack_require__(27);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _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\nvar _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\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(54);\nvar equal = __webpack_require__(12);\nvar extend = __webpack_require__(2);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _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\nvar _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\nvar _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__webpack_require__(53);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(57);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(9);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(22);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(31);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.5\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _eventemitter = __webpack_require__(58);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(55);\nvar isArguments = __webpack_require__(56);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _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\nvar _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\nvar _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\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _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\nvar _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\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _dropdown = __webpack_require__(106);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n this.label.addEventListener('mousedown', function () {\n _this.container.classList.toggle('ql-expanded');\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options');\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(47);\nvar shadow_1 = __webpack_require__(26);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nvar store_1 = __webpack_require__(27);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(26);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(12);\nvar extend = __webpack_require__(2);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(9);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(75),\n 'center': __webpack_require__(76),\n 'right': __webpack_require__(77),\n 'justify': __webpack_require__(78)\n },\n 'background': __webpack_require__(79),\n 'blockquote': __webpack_require__(80),\n 'bold': __webpack_require__(81),\n 'clean': __webpack_require__(82),\n 'code': __webpack_require__(40),\n 'code-block': __webpack_require__(40),\n 'color': __webpack_require__(83),\n 'direction': {\n '': __webpack_require__(84),\n 'rtl': __webpack_require__(85)\n },\n 'float': {\n 'center': __webpack_require__(86),\n 'full': __webpack_require__(87),\n 'left': __webpack_require__(88),\n 'right': __webpack_require__(89)\n },\n 'formula': __webpack_require__(90),\n 'header': {\n '1': __webpack_require__(91),\n '2': __webpack_require__(92)\n },\n 'italic': __webpack_require__(93),\n 'image': __webpack_require__(94),\n 'indent': {\n '+1': __webpack_require__(95),\n '-1': __webpack_require__(96)\n },\n 'link': __webpack_require__(97),\n 'list': {\n 'ordered': __webpack_require__(98),\n 'bullet': __webpack_require__(99),\n 'check': __webpack_require__(100)\n },\n 'script': {\n 'sub': __webpack_require__(101),\n 'super': __webpack_require__(102)\n },\n 'strike': __webpack_require__(103),\n 'underline': __webpack_require__(104),\n 'video': __webpack_require__(105)\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.next == null || this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nvar class_1 = __webpack_require__(28);\nvar style_1 = __webpack_require__(29);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(24);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _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\nvar _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\nvar _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\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n _this.container.classList.add('ql-color-picker');\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n _this.selectItem(_this.defaultItem);\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _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\nvar _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\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(38);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(31);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(41);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(42);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(43);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar 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\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(46);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(33);\n\nvar _direction = __webpack_require__(35);\n\nvar _indent = __webpack_require__(62);\n\nvar _blockquote = __webpack_require__(63);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(64);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(65);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(34);\n\nvar _color = __webpack_require__(24);\n\nvar _font = __webpack_require__(36);\n\nvar _size = __webpack_require__(37);\n\nvar _bold = __webpack_require__(39);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(66);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(67);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(68);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(69);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(70);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(71);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(72);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(73);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(74);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(25);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(41);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(42);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(43);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(107);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(108);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(23);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(30);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(32);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(59);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(60);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(61);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(38);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n // @ts-ignore\n if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _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\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(30);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(23);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _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\nvar _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\nvar _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\nvar _extend2 = __webpack_require__(2);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(33);\n\nvar _background = __webpack_require__(34);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(24);\n\nvar _direction = __webpack_require__(35);\n\nvar _font = __webpack_require__(36);\n\nvar _size = __webpack_require__(37);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n 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 }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(23);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n 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 next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(39);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(15);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n );\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _block = __webpack_require__(3);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _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\nvar _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\nvar _embed = __webpack_require__(32);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _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\nvar _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\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, _this2.options.interval);\n });\n _this2.highlight();\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _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\nvar _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\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n _this.container.classList.add('ql-toolbar');\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n _this2.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _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\nvar _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\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(44);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(22);\n\nvar _icons = __webpack_require__(25);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n var range = _this3.quill.getSelection();\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _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\nvar _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\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(44);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(22);\n\nvar _icons = __webpack_require__(25);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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\nfunction _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\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nexports.default = SnowTheme;\n\n/***/ })\n/******/ ])[\"default\"];\n});\n\n\n// WEBPACK FOOTER //\n// 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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 45);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 00e590d85b41be113db0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./blot/abstract/container\");\nvar format_1 = require(\"./blot/abstract/format\");\nvar leaf_1 = require(\"./blot/abstract/leaf\");\nvar scroll_1 = require(\"./blot/scroll\");\nvar inline_1 = require(\"./blot/inline\");\nvar block_1 = require(\"./blot/block\");\nvar embed_1 = require(\"./blot/embed\");\nvar text_1 = require(\"./blot/text\");\nvar attributor_1 = require(\"./attributor/attributor\");\nvar class_1 = require(\"./attributor/class\");\nvar style_1 = require(\"./attributor/style\");\nvar store_1 = require(\"./attributor/store\");\nvar Registry = require(\"./registry\");\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/parchment.ts\n// module id = 0\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/registry.ts\n// module id = 1\n// module chunks = 0","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/extend/index.js\n// module id = 2\n// module chunks = 0","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Parchment.Embed {\n attach() {\n super.attach();\n this.attributes = new Parchment.Attributor.Store(this.domNode);\n }\n\n delta() {\n return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n\n insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n let block = Parchment.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n super.insertAt(index, value, def);\n }\n }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n constructor(domNode) {\n super(domNode);\n this.cache = {};\n }\n\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new Delta()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) return super.insertAt(index, value, def);\n if (value.length === 0) return;\n let lines = value.split('\\n');\n let text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n let block = this;\n lines.reduce(function(index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n\n insertBefore(blot, ref) {\n let head = this.children.head;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n\n optimize(context) {\n super.optimize(context);\n this.cache = {};\n }\n\n path(index) {\n return super.path(index, true);\n }\n\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n\n split(index, force = false) {\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n let clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n let next = super.split(index, force);\n this.cache = {};\n return next;\n }\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Parchment.Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = extend(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n\n\n\n// WEBPACK FOOTER //\n// ./blots/block.js","var diff = require('fast-diff');\nvar equal = require('deep-equal');\nvar extend = require('extend');\nvar op = require('./op');\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/quill-delta/lib/delta.js\n// module id = 4\n// module chunks = 0","import Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n static compare(self, other) {\n let selfIndex = Inline.order.indexOf(self);\n let otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n\n formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n let blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.parent instanceof Inline &&\n Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n let parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nInline.allowedChildren = [Inline, Parchment.Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n 'cursor', 'inline', // Must be lower\n 'underline', 'strike', 'italic', 'bold', 'script',\n 'link', 'code' // Must be higher\n];\n\n\nexport default Inline;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/inline.js","import './polyfill';\nimport Delta from 'quill-delta';\nimport Editor from './editor';\nimport Emitter from './emitter';\nimport Module from './module';\nimport Parchment from 'parchment';\nimport Selection, { Range } from './selection';\nimport extend from 'extend';\nimport logger from './logger';\nimport Theme from './theme';\n\nlet debug = logger('quill');\n\n\nclass Quill {\n static debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n logger.level(limit);\n }\n\n static find(node) {\n return node.__quill || Parchment.find(node);\n }\n\n static import(name) {\n if (this.imports[name] == null) {\n debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n }\n return this.imports[name];\n }\n\n static register(path, target, overwrite = false) {\n if (typeof path !== 'string') {\n let name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach((key) => {\n this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn(`Overwriting ${path} with`, target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) &&\n target.blotName !== 'abstract') {\n Parchment.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n\n constructor(container, options = {}) {\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n let html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new Editor(this.scroll);\n this.selection = new Selection(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n if (type === Emitter.events.TEXT_CHANGE) {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n }\n });\n this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n let range = this.selection.lastRange;\n let index = range && range.length === 0 ? range.index : undefined;\n modify.call(this, () => {\n return this.editor.update(null, mutations, index);\n }, source);\n });\n let contents = this.clipboard.convert(`
${html}


`);\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n addContainer(container, refNode = null) {\n if (typeof container === 'string') {\n let className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n\n blur() {\n this.selection.setRange(null);\n }\n\n deleteText(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.deleteText(index, length);\n }, source, index, -1*length);\n }\n\n disable() {\n this.enable(false);\n }\n\n enable(enabled = true) {\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n\n focus() {\n let scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n\n format(name, value, source = Emitter.sources.API) {\n return modify.call(this, () => {\n let range = this.getSelection(true);\n let change = new Delta();\n if (range == null) {\n return change;\n } else if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n change = this.editor.formatLine(range.index, range.length, { [name]: value });\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.editor.formatText(range.index, range.length, { [name]: value });\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }, source);\n }\n\n formatLine(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n\n formatText(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n\n getBounds(index, length = 0) {\n let bounds;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n let containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n\n getContents(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getContents(index, length);\n }\n\n getFormat(index = this.getSelection(true), length = 0) {\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n\n getIndex(blot) {\n return blot.offset(this.scroll);\n }\n\n getLength() {\n return this.scroll.length();\n }\n\n getLeaf(index) {\n return this.scroll.leaf(index);\n }\n\n getLine(index) {\n return this.scroll.line(index);\n }\n\n getLines(index = 0, length = Number.MAX_VALUE) {\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n\n getModule(name) {\n return this.theme.modules[name];\n }\n\n getSelection(focus = false) {\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n\n getText(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getText(index, length);\n }\n\n hasFocus() {\n return this.selection.hasFocus();\n }\n\n insertEmbed(index, embed, value, source = Quill.sources.API) {\n return modify.call(this, () => {\n return this.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n\n insertText(index, text, name, value, source) {\n let formats;\n [index, , formats, source] = overload(index, 0, name, value, source);\n return modify.call(this, () => {\n return this.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n\n isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n\n off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n\n on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n\n once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n\n pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n\n removeFormat(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.removeFormat(index, length);\n }, source, index);\n }\n\n scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n\n setContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n let length = this.getLength();\n let deleted = this.editor.deleteText(0, length);\n let applied = this.editor.applyDelta(delta);\n let lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof(lastOp.insert) === 'string' && lastOp.insert[lastOp.insert.length-1] === '\\n') {\n this.editor.deleteText(this.getLength() - 1, 1);\n applied.delete(1);\n }\n let ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n\n setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n [index, length, , source] = overload(index, length, source);\n this.selection.setRange(new Range(index, length), source);\n if (source !== Emitter.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n\n setText(text, source = Emitter.sources.API) {\n let delta = new Delta().insert(text);\n return this.setContents(delta, source);\n }\n\n update(source = Emitter.sources.USER) {\n let change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n\n updateContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n return this.editor.applyDelta(delta, source);\n }, source, true);\n }\n}\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = Emitter.events;\nQuill.sources = Emitter.sources;\n// eslint-disable-next-line no-undef\nQuill.version = typeof(QUILL_VERSION) === 'undefined' ? 'dev' : QUILL_VERSION;\n\nQuill.imports = {\n 'delta' : Delta,\n 'parchment' : Parchment,\n 'core/module' : Module,\n 'core/theme' : Theme\n};\n\n\nfunction expandConfig(container, userConfig) {\n userConfig = extend(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = Theme;\n } else {\n userConfig.theme = Quill.import(`themes/${userConfig.theme}`);\n if (userConfig.theme == null) {\n throw new Error(`Invalid theme ${userConfig.theme}. Did you register it?`);\n }\n }\n let themeConfig = extend(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function(config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function(module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n let moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n let moduleConfig = moduleNames.reduce(function(config, name) {\n let moduleClass = Quill.import(`modules/${name}`);\n if (moduleClass == null) {\n debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar &&\n userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = extend(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function(key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function(config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === Emitter.sources.USER) {\n return new Delta();\n }\n let range = index == null ? null : this.getSelection();\n let oldDelta = this.editor.delta;\n let change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, Emitter.sources.SILENT);\n }\n if (change.length() > 0) {\n let args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n let formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if (typeof name === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || Emitter.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n let start, end;\n if (index instanceof Delta) {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n return index.transformPosition(pos, source !== Emitter.sources.USER);\n });\n } else {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n if (pos < index || (pos === index && source === Emitter.sources.USER)) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n }\n return new Range(start, end - start);\n}\n\n\nexport { expandConfig, overload, Quill as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/quill.js","class Module {\n constructor(quill, options = {}) {\n this.quill = quill;\n this.options = options;\n }\n}\nModule.DEFAULTS = {};\n\n\nexport default Module;\n\n\n\n// WEBPACK FOOTER //\n// ./core/module.js","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/text.js","import EventEmitter from 'eventemitter3';\nimport logger from './logger';\n\nlet debug = logger('quill:events');\n\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function(eventName) {\n document.addEventListener(eventName, (...args) => {\n [].slice.call(document.querySelectorAll('.ql-container')).forEach((node) => {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n node.__quill.emitter.handleDOM(...args);\n }\n });\n });\n});\n\n\nclass Emitter extends EventEmitter {\n constructor() {\n super();\n this.listeners = {};\n this.on('error', debug.error);\n }\n\n emit() {\n debug.log.apply(debug, arguments);\n super.emit.apply(this, arguments);\n }\n\n handleDOM(event, ...args) {\n (this.listeners[event.type] || []).forEach(function({ node, handler }) {\n if (event.target === node || node.contains(event.target)) {\n handler(event, ...args);\n }\n });\n }\n\n listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node, handler })\n }\n}\n\nEmitter.events = {\n EDITOR_CHANGE : 'editor-change',\n SCROLL_BEFORE_UPDATE : 'scroll-before-update',\n SCROLL_OPTIMIZE : 'scroll-optimize',\n SCROLL_UPDATE : 'scroll-update',\n SELECTION_CHANGE : 'selection-change',\n TEXT_CHANGE : 'text-change'\n};\nEmitter.sources = {\n API : 'api',\n SILENT : 'silent',\n USER : 'user'\n};\n\n\nexport default Emitter;\n\n\n\n// WEBPACK FOOTER //\n// ./core/emitter.js","let levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\n\nfunction debug(method, ...args) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n console[method](...args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function(logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function(newLevel) {\n level = newLevel;\n};\n\n\nexport default namespace;\n\n\n\n// WEBPACK FOOTER //\n// ./core/logger.js","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../registry\");\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/attributor.ts\n// module id = 11\n// module chunks = 0","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/deep-equal/index.js\n// module id = 12\n// module chunks = 0","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Inline from '../blots/inline';\nimport TextBlot from '../blots/text';\n\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\n\nclass CodeBlock extends Block {\n static create(value) {\n let domNode = super.create(value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n\n static formats() {\n return true;\n }\n\n delta() {\n let text = this.domNode.textContent;\n if (text.endsWith('\\n')) { // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce((delta, frag) => {\n return delta.insert(frag).insert('\\n', this.formats());\n }, new Delta());\n }\n\n format(name, value) {\n if (name === this.statics.blotName && value) return;\n let [text, ] = this.descendant(TextBlot, this.length() - 1);\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n super.format(name, value);\n }\n\n formatAt(index, length, name, value) {\n if (length === 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK) == null ||\n (name === this.statics.blotName && value === this.statics.formats(this.domNode))) {\n return;\n }\n let nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n let prevNewline = this.newlineIndex(index, true) + 1;\n let isolateLength = nextNewline - prevNewline + 1;\n let blot = this.isolate(prevNewline, isolateLength);\n let next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n\n insertAt(index, value, def) {\n if (def != null) return;\n let [text, offset] = this.descendant(TextBlot, index);\n text.insertAt(offset, value);\n }\n\n length() {\n let length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n\n newlineIndex(searchIndex, reverse = false) {\n if (!reverse) {\n let offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n\n optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(Parchment.create('text', '\\n'));\n }\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n super.replace(target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function(node) {\n let blot = Parchment.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof Parchment.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n}\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\n\nexport { Code, CodeBlock as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/code.js","import Parchment from 'parchment';\n\n\nclass Break extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n insertInto(parent, ref) {\n if (parent.children.length === 0) {\n super.insertInto(parent, ref);\n } else {\n this.remove();\n }\n }\n\n length() {\n return 0;\n }\n\n value() {\n return '';\n }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\n\nexport default Break;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/break.js","import Inline from '../blots/inline';\n\n\nclass Link extends Inline {\n static create(value) {\n let node = super.create(value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('target', '_blank');\n return node;\n }\n\n static formats(domNode) {\n return domNode.getAttribute('href');\n }\n\n static sanitize(url) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n\n format(name, value) {\n if (name !== this.statics.blotName || !value) return super.format(name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n}\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\n\nfunction sanitize(url, protocols) {\n let anchor = document.createElement('a');\n anchor.href = url;\n let protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\n\nexport { Link as default, sanitize };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/link.js","import DropdownIcon from '../assets/icons/dropdown.svg';\n\n\nclass Picker {\n constructor(select) {\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n this.label.addEventListener('mousedown', () => {\n this.container.classList.toggle('ql-expanded');\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n buildItem(option) {\n let item = document.createElement('span');\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', () => {\n this.selectItem(item, true);\n });\n return item;\n }\n\n buildLabel() {\n let label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = DropdownIcon;\n this.container.appendChild(label);\n return label;\n }\n\n buildOptions() {\n let options = document.createElement('span');\n options.classList.add('ql-picker-options');\n [].slice.call(this.select.options).forEach((option) => {\n let item = this.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n this.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n\n buildPicker() {\n [].slice.call(this.select.attributes).forEach((item) => {\n this.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n\n close() {\n this.container.classList.remove('ql-expanded');\n }\n\n selectItem(item, trigger = false) {\n let selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if (typeof Event === 'object') { // IE11\n let event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n\n update() {\n let option;\n if (this.select.selectedIndex > -1) {\n let item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n let isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n}\n\n\nexport default Picker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/picker.js","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = require(\"../../collection/linked-list\");\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/container.ts\n// module id = 17\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"../../attributor/attributor\");\nvar store_1 = require(\"../../attributor/store\");\nvar container_1 = require(\"./container\");\nvar Registry = require(\"../../registry\");\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/format.ts\n// module id = 18\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/leaf.ts\n// module id = 19\n// module chunks = 0","var equal = require('deep-equal');\nvar extend = require('extend');\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/quill-delta/lib/op.js\n// module id = 20\n// module chunks = 0","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/clone/clone.js\n// module id = 21\n// module chunks = 0","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport Emitter from './emitter';\nimport logger from './logger';\n\nlet debug = logger('quill:selection');\n\n\nclass Range {\n constructor(index, length = 0) {\n this.index = index;\n this.length = length;\n }\n}\n\n\nclass Selection {\n constructor(scroll, emitter) {\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = Parchment.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, () => {\n if (!this.mouseDown) {\n setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n }\n });\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type, delta) => {\n if (type === Emitter.events.TEXT_CHANGE && delta.length() > 0) {\n this.update(Emitter.sources.SILENT);\n }\n });\n this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n if (!this.hasFocus()) return;\n let native = this.getNativeRange();\n if (native == null) return;\n if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n this.emitter.once(Emitter.events.SCROLL_UPDATE, () => {\n try {\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context) => {\n if (context.range) {\n const { startNode, startOffset, endNode, endOffset } = context.range;\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(Emitter.sources.SILENT);\n }\n\n handleComposition() {\n this.root.addEventListener('compositionstart', () => {\n this.composing = true;\n });\n this.root.addEventListener('compositionend', () => {\n this.composing = false;\n if (this.cursor.parent) {\n const range = this.cursor.restore();\n if (!range) return;\n setTimeout(() => {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n\n handleDragging() {\n this.emitter.listenDOM('mousedown', document.body, () => {\n this.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, () => {\n this.mouseDown = false;\n this.update(Emitter.sources.USER);\n });\n }\n\n focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n\n format(format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n this.scroll.update();\n let nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || Parchment.query(format, Parchment.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n let blot = Parchment.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof Parchment.Leaf) {\n let after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n\n getBounds(index, length = 0) {\n let scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n let node, [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n let range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n let side = 'left';\n let rect;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n\n getNativeRange() {\n let selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n let nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n let range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n\n getRange() {\n let normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n let range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n\n hasFocus() {\n return document.activeElement === this.root;\n }\n\n normalizedToRange(range) {\n let positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n let indexes = positions.map((position) => {\n let [node, offset] = position;\n let blot = Parchment.find(node, true);\n let index = blot.offset(this.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof Parchment.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n let end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n let start = Math.min(end, ...indexes);\n return new Range(start, end-start);\n }\n\n normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) ||\n (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))) {\n return null;\n }\n let range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function(position) {\n let node = position.node, offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n\n rangeToNative(range) {\n let indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n let args = [];\n let scrollLength = this.scroll.length();\n indexes.forEach((index, i) => {\n index = Math.min(scrollLength - 1, index);\n let node, [leaf, offset] = this.scroll.leaf(index);\n [node, offset] = leaf.position(offset, i !== 0);\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n\n scrollIntoView(scrollingContainer) {\n let range = this.lastRange;\n if (range == null) return;\n let bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n let limit = this.scroll.length()-1;\n let [first, ] = this.scroll.line(Math.min(range.index, limit));\n let last = first;\n if (range.length > 0) {\n [last, ] = this.scroll.line(Math.min(range.index + range.length, limit));\n }\n if (first == null || last == null) return;\n let scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= (scrollBounds.top - bounds.top);\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += (bounds.bottom - scrollBounds.bottom);\n }\n }\n\n setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n let selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n let native = (this.getNativeRange() || {}).native;\n if (native == null || force ||\n startNode !== native.startContainer ||\n startOffset !== native.startOffset ||\n endNode !== native.endContainer ||\n endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n let range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n\n setRange(range, force = false, source = Emitter.sources.API) {\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n let args = this.rangeToNative(range);\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n\n update(source = Emitter.sources.USER) {\n let oldRange = this.lastRange;\n let [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!equal(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n let args = [Emitter.events.SELECTION_CHANGE, clone(this.lastRange), clone(oldRange), source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n }\n}\n\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\n\nexport { Range, Selection as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/selection.js","import Parchment from 'parchment';\nimport Block, { BlockEmbed } from './block';\n\n\nclass Container extends Parchment.Container { }\nContainer.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Container;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/container.js","import Parchment from 'parchment';\n\nclass ColorAttributor extends Parchment.Attributor.Style {\n value(domNode) {\n let value = super.value(domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function(component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n}\n\nlet ColorClass = new Parchment.Attributor.Class('color', 'ql-color', {\n scope: Parchment.Scope.INLINE\n});\nlet ColorStyle = new ColorAttributor('color', 'color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/color.js","module.exports = {\n 'align': {\n '' : require('../assets/icons/align-left.svg'),\n 'center' : require('../assets/icons/align-center.svg'),\n 'right' : require('../assets/icons/align-right.svg'),\n 'justify' : require('../assets/icons/align-justify.svg')\n },\n 'background': require('../assets/icons/background.svg'),\n 'blockquote': require('../assets/icons/blockquote.svg'),\n 'bold' : require('../assets/icons/bold.svg'),\n 'clean' : require('../assets/icons/clean.svg'),\n 'code' : require('../assets/icons/code.svg'),\n 'code-block': require('../assets/icons/code.svg'),\n 'color' : require('../assets/icons/color.svg'),\n 'direction' : {\n '' : require('../assets/icons/direction-ltr.svg'),\n 'rtl' : require('../assets/icons/direction-rtl.svg')\n },\n 'float': {\n 'center' : require('../assets/icons/float-center.svg'),\n 'full' : require('../assets/icons/float-full.svg'),\n 'left' : require('../assets/icons/float-left.svg'),\n 'right' : require('../assets/icons/float-right.svg')\n },\n 'formula' : require('../assets/icons/formula.svg'),\n 'header': {\n '1' : require('../assets/icons/header.svg'),\n '2' : require('../assets/icons/header-2.svg')\n },\n 'italic' : require('../assets/icons/italic.svg'),\n 'image' : require('../assets/icons/image.svg'),\n 'indent': {\n '+1' : require('../assets/icons/indent.svg'),\n '-1' : require('../assets/icons/outdent.svg')\n },\n 'link' : require('../assets/icons/link.svg'),\n 'list': {\n 'ordered' : require('../assets/icons/list-ordered.svg'),\n 'bullet' : require('../assets/icons/list-bullet.svg'),\n 'check' : require('../assets/icons/list-check.svg')\n },\n 'script': {\n 'sub' : require('../assets/icons/subscript.svg'),\n 'super' : require('../assets/icons/superscript.svg'),\n },\n 'strike' : require('../assets/icons/strike.svg'),\n 'underline' : require('../assets/icons/underline.svg'),\n 'video' : require('../assets/icons/video.svg')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icons.js","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../../registry\");\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.next == null || this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/shadow.ts\n// module id = 26\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nvar class_1 = require(\"./class\");\nvar style_1 = require(\"./style\");\nvar Registry = require(\"../registry\");\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/store.ts\n// module id = 27\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/class.ts\n// module id = 28\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/style.ts\n// module id = 29\n// module chunks = 0","import Parchment from 'parchment';\nimport TextBlot from './text';\n\n\nclass Cursor extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n constructor(domNode, selection) {\n super(domNode);\n this.selection = selection;\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n this._length = 0;\n }\n\n detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n\n format(name, value) {\n if (this._length !== 0) {\n return super.format(name, value);\n }\n let target = this, index = 0;\n while (target != null && target.statics.scope !== Parchment.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n\n index(node, offset) {\n if (node === this.textNode) return 0;\n return super.index(node, offset);\n }\n\n length() {\n return this._length;\n }\n\n position() {\n return [this.textNode, this.textNode.data.length];\n }\n\n remove() {\n super.remove();\n this.parent = null;\n }\n\n restore() {\n if (this.selection.composing || this.parent == null) return;\n let textNode = this.textNode;\n let range = this.selection.getNativeRange();\n let restoreText, start, end;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n [restoreText, start, end] = [textNode, range.start.offset, range.end.offset];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n let text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof TextBlot) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(Parchment.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n [start, end] = [start, end].map(function(offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n\n update(mutations, context) {\n if (mutations.some((mutation) => {\n return mutation.type === 'characterData' && mutation.target === this.textNode;\n })) {\n let range = this.restore();\n if (range) context.range = range;\n }\n }\n\n value() {\n return '';\n }\n}\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n\nexport default Cursor;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/cursor.js","class Theme {\n constructor(quill, options) {\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n init() {\n Object.keys(this.options.modules).forEach((name) => {\n if (this.modules[name] == null) {\n this.addModule(name);\n }\n });\n }\n\n addModule(name) {\n let moduleClass = this.quill.constructor.import(`modules/${name}`);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n}\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\n\nexport default Theme;\n\n\n\n// WEBPACK FOOTER //\n// ./core/theme.js","import Parchment from 'parchment';\nimport TextBlot from './text';\n\nconst GUARD_TEXT = \"\\uFEFF\";\n\n\nclass Embed extends Parchment.Embed {\n constructor(node) {\n super(node);\n this.contentNode = document.createElement('span');\n this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(this.domNode.childNodes).forEach((childNode) => {\n this.contentNode.appendChild(childNode);\n });\n this.leftGuard = document.createTextNode(GUARD_TEXT);\n this.rightGuard = document.createTextNode(GUARD_TEXT);\n this.domNode.appendChild(this.leftGuard);\n this.domNode.appendChild(this.contentNode);\n this.domNode.appendChild(this.rightGuard);\n }\n\n index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return super.index(node, offset);\n }\n\n restore(node) {\n let range, textNode;\n let text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof TextBlot) {\n let prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof TextBlot) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n }\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n\n update(mutations, context) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'characterData' &&\n (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\n let range = this.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n}\n\n\nexport default Embed;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/embed.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignAttribute = new Parchment.Attributor.Attribute('align', 'align', config);\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/align.js","import Parchment from 'parchment';\nimport { ColorAttributor } from './color';\n\nlet BackgroundClass = new Parchment.Attributor.Class('background', 'ql-bg', {\n scope: Parchment.Scope.INLINE\n});\nlet BackgroundStyle = new ColorAttributor('background', 'background-color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { BackgroundClass, BackgroundStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/background.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nlet DirectionAttribute = new Parchment.Attributor.Attribute('direction', 'dir', config);\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/direction.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nlet FontClass = new Parchment.Attributor.Class('font', 'ql-font', config);\n\nclass FontStyleAttributor extends Parchment.Attributor.Style {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n}\n\nlet FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/font.js","import Parchment from 'parchment';\n\nlet SizeClass = new Parchment.Attributor.Class('size', 'ql-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nlet SizeStyle = new Parchment.Attributor.Style('size', 'font-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexport { SizeClass, SizeStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/size.js","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\nclass Keyboard extends Module {\n static match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function(key) {\n return (!!binding[key] !== evt[key] && binding[key] !== null);\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n\n constructor(quill, options) {\n super(quill, options);\n this.bindings = {};\n Object.keys(this.options.bindings).forEach((name) => {\n if (name === 'list autofill' &&\n quill.scroll.whitelist != null &&\n !quill.scroll.whitelist['list']) {\n return;\n }\n if (this.options.bindings[name]) {\n this.addBinding(this.options.bindings[name]);\n }\n });\n this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function() {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null },\n { collapsed: true, offset: 0 },\n handleBackspace);\n this.listen();\n }\n\n addBinding(key, context = {}, handler = {}) {\n let binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = extend(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n\n listen() {\n this.quill.root.addEventListener('keydown', (evt) => {\n if (evt.defaultPrevented) return;\n let which = evt.which || evt.keyCode;\n let bindings = (this.bindings[which] || []).filter(function(binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n let range = this.quill.getSelection();\n if (range == null || !this.quill.hasFocus()) return;\n let [line, offset] = this.quill.getLine(range.index);\n let [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n let prefixText = leafStart instanceof Parchment.Text ? leafStart.value().slice(0, offsetStart) : '';\n let suffixText = leafEnd instanceof Parchment.Text ? leafEnd.value().slice(offsetEnd) : '';\n let curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: this.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n let prevented = bindings.some((binding) => {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function(name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (typeof binding.format === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function(name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return equal(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(this, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n}\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold' : makeFormatHandler('bold'),\n 'italic' : makeFormatHandler('italic'),\n 'underline' : makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', Quill.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', Quill.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', Quill.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, Quill.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function(range) {\n this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function(range) {\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index)\n .delete(range.length)\n .insert('\\t');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function(range, context) {\n this.quill.format('list', false, Quill.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, Quill.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function(range) {\n let [line, offset] = this.quill.getLine(range.index);\n let formats = extend({}, line.formats(), { list: 'checked' });\n let delta = new Delta().retain(range.index)\n .insert('\\n', formats)\n .retain(line.length() - offset - 1)\n .retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function(range, context) {\n let [line, offset] = this.quill.getLine(range.index);\n let delta = new Delta().retain(range.index)\n .insert('\\n', context.format)\n .retain(line.length() - offset - 1)\n .retain(1, { header: null });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function(range, context) {\n let length = context.prefix.length;\n let [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]': case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-': case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function(range) {\n const [line, offset] = this.quill.getLine(range.index);\n const delta = new Delta()\n .retain(range.index + line.length() - offset - 2)\n .retain(1, { 'code-block': null })\n .delete(1);\n this.quill.updateContents(delta, Quill.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n const where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return {\n key,\n shiftKey,\n altKey: null,\n [where]: /^$/,\n handler: function(range) {\n let index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += (range.length + 1);\n }\n const [leaf, ] = this.quill.getLeaf(index);\n if (!(leaf instanceof Parchment.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, Quill.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, Quill.sources.USER);\n }\n }\n return false;\n }\n };\n}\n\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let [line, ] = this.quill.getLine(range.index);\n let formats = {};\n if (context.offset === 0) {\n let [prev, ] = this.quill.getLine(range.index - 1);\n if (prev != null && prev.length() > 1) {\n let curFormats = line.formats();\n let prevFormats = this.quill.getFormat(range.index-1, 1);\n formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n let length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index-length, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index-length, length, formats, Quill.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n let length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n let formats = {}, nextLength = 0;\n let [line, ] = this.quill.getLine(range.index);\n if (context.offset >= line.length() - 1) {\n let [next, ] = this.quill.getLine(range.index + 1);\n if (next) {\n let curFormats = line.formats();\n let nextFormats = this.quill.getFormat(range.index, 1);\n formats = DeltaOp.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, Quill.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n let lines = this.quill.getLines(range);\n let formats = {};\n if (lines.length > 1) {\n let firstFormats = lines[0].formats();\n let lastFormats = lines[lines.length - 1].formats();\n formats = DeltaOp.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n }\n this.quill.setSelection(range.index, Quill.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n let lineFormats = Object.keys(context.format).reduce(function(lineFormats, format) {\n if (Parchment.query(format, Parchment.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, Quill.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach((name) => {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n this.quill.format(name, context.format[name], Quill.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: {'code-block': true },\n handler: function(range) {\n let CodeBlock = Parchment.query('code-block');\n let index = range.index, length = range.length;\n let [block, offset] = this.quill.scroll.descendant(CodeBlock, index);\n if (block == null) return;\n let scrollIndex = this.quill.getIndex(block);\n let start = block.newlineIndex(offset, true) + 1;\n let end = block.newlineIndex(scrollIndex + offset + length);\n let lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach((line, i) => {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(index, length, Quill.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function(range, context) {\n this.quill.format(format, !context.format[format], Quill.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if (typeof binding === 'object') {\n binding = clone(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\n\nexport { Keyboard as default, SHORTKEY };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/keyboard.js","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n static create() {\n return super.create();\n }\n\n static formats() {\n return true;\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n}\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexport default Bold;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/bold.js","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/code.svg\n// module id = 40\n// module chunks = 0","import Picker from './picker';\n\n\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select);\n this.label.innerHTML = label;\n this.container.classList.add('ql-color-picker');\n [].slice.call(this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function(item) {\n item.classList.add('ql-primary');\n });\n }\n\n buildItem(option) {\n let item = super.buildItem(option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n let colorLabel = this.label.querySelector('.ql-color-label');\n let value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n}\n\n\nexport default ColorPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/color-picker.js","import Picker from './picker';\n\n\nclass IconPicker extends Picker {\n constructor(select, icons) {\n super(select);\n this.container.classList.add('ql-icon-picker');\n [].forEach.call(this.container.querySelectorAll('.ql-picker-item'), (item) => {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n this.defaultItem = this.container.querySelector('.ql-selected');\n this.selectItem(this.defaultItem);\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n}\n\n\nexport default IconPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icon-picker.js","class Tooltip {\n constructor(quill, boundsContainer) {\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', () => {\n this.root.style.marginTop = (-1*this.quill.root.scrollTop) + 'px';\n });\n }\n this.hide();\n }\n\n hide() {\n this.root.classList.add('ql-hidden');\n }\n\n position(reference) {\n let left = reference.left + reference.width/2 - this.root.offsetWidth/2;\n // root.scrollTop should be 0 if scrollContainer !== root\n let top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n let containerBounds = this.boundsContainer.getBoundingClientRect();\n let rootBounds = this.root.getBoundingClientRect();\n let shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n let height = rootBounds.bottom - rootBounds.top;\n let verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = (top - verticalShift) + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n\n show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n}\n\n\nexport default Tooltip;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/tooltip.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport Theme from '../core/theme';\nimport ColorPicker from '../ui/color-picker';\nimport IconPicker from '../ui/icon-picker';\nimport Picker from '../ui/picker';\nimport Tooltip from '../ui/tooltip';\n\n\nconst ALIGNS = [ false, 'center', 'right', 'justify' ];\n\nconst COLORS = [\n \"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\",\n \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\",\n \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\",\n \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\",\n \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"\n];\n\nconst FONTS = [ false, 'serif', 'monospace' ];\n\nconst HEADERS = [ '1', '2', '3', false ];\n\nconst SIZES = [ 'small', false, 'large', 'huge' ];\n\n\nclass BaseTheme extends Theme {\n constructor(quill, options) {\n super(quill, options);\n let listener = (e) => {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (this.tooltip != null && !this.tooltip.root.contains(e.target) &&\n document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n this.tooltip.hide();\n }\n if (this.pickers != null) {\n this.pickers.forEach(function(picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n }\n\n addModule(name) {\n let module = super.addModule(name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n\n buildButtons(buttons, icons) {\n buttons.forEach((button) => {\n let className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach((name) => {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n let value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n\n buildPickers(selects, icons) {\n this.pickers = selects.map((select) => {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new IconPicker(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n let format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new ColorPicker(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new Picker(select);\n }\n });\n let update = () => {\n this.pickers.forEach(function(picker) {\n picker.update();\n });\n };\n this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n }\n}\nBaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function() {\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', () => {\n if (fileInput.files != null && fileInput.files[0] != null) {\n let reader = new FileReader();\n reader.onload = (e) => {\n let range = this.quill.getSelection(true);\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ image: e.target.result })\n , Emitter.sources.USER);\n this.quill.setSelection(range.index + 1, Emitter.sources.SILENT);\n fileInput.value = \"\";\n }\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\n\nclass BaseTooltip extends Tooltip {\n constructor(quill, boundsContainer) {\n super(quill, boundsContainer);\n this.textbox = this.root.querySelector('input[type=\"text\"]');\n this.listen();\n }\n\n listen() {\n this.textbox.addEventListener('keydown', (event) => {\n if (Keyboard.match(event, 'enter')) {\n this.save();\n event.preventDefault();\n } else if (Keyboard.match(event, 'escape')) {\n this.cancel();\n event.preventDefault();\n }\n });\n }\n\n cancel() {\n this.hide();\n }\n\n edit(mode = 'link', preview = null) {\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\n this.root.setAttribute('data-mode', mode);\n }\n\n restoreFocus() {\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n\n save() {\n let value = this.textbox.value;\n switch(this.root.getAttribute('data-mode')) {\n case 'link': {\n let scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, Emitter.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video': {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula': {\n if (!value) break;\n let range = this.quill.getSelection(true);\n if (range != null) {\n let index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n}\n\n\nfunction extractVideoUrl(url) {\n let match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) ||\n url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) { // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\n\nexport { BaseTooltip, BaseTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/base.js","import Quill from './core';\n\nimport { AlignClass, AlignStyle } from './formats/align';\nimport { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction';\nimport { IndentClass as Indent } from './formats/indent';\n\nimport Blockquote from './formats/blockquote';\nimport Header from './formats/header';\nimport List, { ListItem } from './formats/list';\n\nimport { BackgroundClass, BackgroundStyle } from './formats/background';\nimport { ColorClass, ColorStyle } from './formats/color';\nimport { FontClass, FontStyle } from './formats/font';\nimport { SizeClass, SizeStyle } from './formats/size';\n\nimport Bold from './formats/bold';\nimport Italic from './formats/italic';\nimport Link from './formats/link';\nimport Script from './formats/script';\nimport Strike from './formats/strike';\nimport Underline from './formats/underline';\n\nimport Image from './formats/image';\nimport Video from './formats/video';\n\nimport CodeBlock, { Code as InlineCode } from './formats/code';\n\nimport Formula from './modules/formula';\nimport Syntax from './modules/syntax';\nimport Toolbar from './modules/toolbar';\n\nimport Icons from './ui/icons';\nimport Picker from './ui/picker';\nimport ColorPicker from './ui/color-picker';\nimport IconPicker from './ui/icon-picker';\nimport Tooltip from './ui/tooltip';\n\nimport BubbleTheme from './themes/bubble';\nimport SnowTheme from './themes/snow';\n\n\nQuill.register({\n 'attributors/attribute/direction': DirectionAttribute,\n\n 'attributors/class/align': AlignClass,\n 'attributors/class/background': BackgroundClass,\n 'attributors/class/color': ColorClass,\n 'attributors/class/direction': DirectionClass,\n 'attributors/class/font': FontClass,\n 'attributors/class/size': SizeClass,\n\n 'attributors/style/align': AlignStyle,\n 'attributors/style/background': BackgroundStyle,\n 'attributors/style/color': ColorStyle,\n 'attributors/style/direction': DirectionStyle,\n 'attributors/style/font': FontStyle,\n 'attributors/style/size': SizeStyle\n}, true);\n\n\nQuill.register({\n 'formats/align': AlignClass,\n 'formats/direction': DirectionClass,\n 'formats/indent': Indent,\n\n 'formats/background': BackgroundStyle,\n 'formats/color': ColorStyle,\n 'formats/font': FontClass,\n 'formats/size': SizeClass,\n\n 'formats/blockquote': Blockquote,\n 'formats/code-block': CodeBlock,\n 'formats/header': Header,\n 'formats/list': List,\n\n 'formats/bold': Bold,\n 'formats/code': InlineCode,\n 'formats/italic': Italic,\n 'formats/link': Link,\n 'formats/script': Script,\n 'formats/strike': Strike,\n 'formats/underline': Underline,\n\n 'formats/image': Image,\n 'formats/video': Video,\n\n 'formats/list/item': ListItem,\n\n 'modules/formula': Formula,\n 'modules/syntax': Syntax,\n 'modules/toolbar': Toolbar,\n\n 'themes/bubble': BubbleTheme,\n 'themes/snow': SnowTheme,\n\n 'ui/icons': Icons,\n 'ui/picker': Picker,\n 'ui/icon-picker': IconPicker,\n 'ui/color-picker': ColorPicker,\n 'ui/tooltip': Tooltip\n}, true);\n\n\nexport default Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./quill.js","import Parchment from 'parchment';\nimport Quill from './core/quill';\n\nimport Block, { BlockEmbed } from './blots/block';\nimport Break from './blots/break';\nimport Container from './blots/container';\nimport Cursor from './blots/cursor';\nimport Embed from './blots/embed';\nimport Inline from './blots/inline';\nimport Scroll from './blots/scroll';\nimport TextBlot from './blots/text';\n\nimport Clipboard from './modules/clipboard';\nimport History from './modules/history';\nimport Keyboard from './modules/keyboard';\n\nQuill.register({\n 'blots/block' : Block,\n 'blots/block/embed' : BlockEmbed,\n 'blots/break' : Break,\n 'blots/container' : Container,\n 'blots/cursor' : Cursor,\n 'blots/embed' : Embed,\n 'blots/inline' : Inline,\n 'blots/scroll' : Scroll,\n 'blots/text' : TextBlot,\n\n 'modules/clipboard' : Clipboard,\n 'modules/history' : History,\n 'modules/keyboard' : Keyboard\n});\n\nParchment.register(Block, Break, Cursor, Inline, Scroll, TextBlot);\n\n\nexport default Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./core.js","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/collection/linked-list.ts\n// module id = 47\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./abstract/container\");\nvar Registry = require(\"../registry\");\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n // @ts-ignore\n if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/scroll.ts\n// module id = 48\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/inline.ts\n// module id = 49\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/block.ts\n// module id = 50\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/embed.ts\n// module id = 51\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar Registry = require(\"../registry\");\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/text.ts\n// module id = 52\n// module chunks = 0","let elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n let _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function(token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position){\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./core/polyfill.js","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fast-diff/diff.js\n// module id = 54\n// module chunks = 0","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/deep-equal/lib/keys.js\n// module id = 55\n// module chunks = 0","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/deep-equal/lib/is_arguments.js\n// module id = 56\n// module chunks = 0","import Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport CodeBlock from '../formats/code';\nimport CursorBlot from '../blots/cursor';\nimport Block, { bubbleFormats } from '../blots/block';\nimport Break from '../blots/break';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\n\n\nconst ASCII = /^[ -~]*$/;\n\n\nclass Editor {\n constructor(scroll) {\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n applyDelta(delta) {\n let consumeNextNewline = false;\n this.scroll.update();\n let scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce((index, op) => {\n let length = op.retain || op.delete || op.insert.length || 1;\n let attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n let text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n this.scroll.insertAt(index, text);\n let [line, offset] = this.scroll.line(index);\n let formats = extend({}, bubbleFormats(line));\n if (line instanceof Block) {\n let [leaf, ] = line.descendant(Parchment.Leaf, offset);\n formats = extend(formats, bubbleFormats(leaf));\n }\n attributes = DeltaOp.attributes.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n let key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach((name) => {\n this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce((index, op) => {\n if (typeof op.delete === 'number') {\n this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n\n deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length));\n }\n\n formatLine(index, length, formats = {}) {\n this.scroll.update();\n Object.keys(formats).forEach((format) => {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n let lines = this.scroll.lines(index, Math.max(length, 1));\n let lengthRemaining = length;\n lines.forEach((line) => {\n let lineLength = line.length();\n if (!(line instanceof CodeBlock)) {\n line.format(format, formats[format]);\n } else {\n let codeIndex = index - line.offset(this.scroll);\n let codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n formatText(index, length, formats = {}) {\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n\n getDelta() {\n return this.scroll.lines().reduce((delta, line) => {\n return delta.concat(line.delta());\n }, new Delta());\n }\n\n getFormat(index, length = 0) {\n let lines = [], leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function(path) {\n let [blot, ] = path;\n if (blot instanceof Block) {\n lines.push(blot);\n } else if (blot instanceof Parchment.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(Parchment.Leaf, index, length);\n }\n let formatsArr = [lines, leaves].map(function(blots) {\n if (blots.length === 0) return {};\n let formats = bubbleFormats(blots.shift());\n while (Object.keys(formats).length > 0) {\n let blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(bubbleFormats(blot), formats);\n }\n return formats;\n });\n return extend.apply(extend, formatsArr);\n }\n\n getText(index, length) {\n return this.getContents(index, length).filter(function(op) {\n return typeof op.insert === 'string';\n }).map(function(op) {\n return op.insert;\n }).join('');\n }\n\n insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({ [embed]: value }));\n }\n\n insertText(index, text, formats = {}) {\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).insert(text, clone(formats)));\n }\n\n isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n let block = this.scroll.children.head;\n if (block.statics.blotName !== Block.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof Break;\n }\n\n removeFormat(index, length) {\n let text = this.getText(index, length);\n let [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0, suffix = new Delta();\n if (line != null) {\n if (!(line instanceof CodeBlock)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n let contents = this.getContents(index, length + suffixLength);\n let diff = contents.diff(new Delta().insert(text).concat(suffix));\n let delta = new Delta().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n\n update(change, mutations = [], cursorIndex = undefined) {\n let oldDelta = this.delta;\n if (mutations.length === 1 &&\n mutations[0].type === 'characterData' &&\n mutations[0].target.data.match(ASCII) &&\n Parchment.find(mutations[0].target)) {\n // Optimization for character changes\n let textBlot = Parchment.find(mutations[0].target);\n let formats = bubbleFormats(textBlot);\n let index = textBlot.offset(this.scroll);\n let oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n let oldText = new Delta().insert(oldValue);\n let newText = new Delta().insert(textBlot.value());\n let diffDelta = new Delta().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function(delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new Delta());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !equal(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n}\n\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function(merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function(delta, op) {\n if (op.insert === 1) {\n let attributes = clone(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = clone(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n let text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new Delta());\n}\n\n\nexport default Editor;\n\n\n\n// WEBPACK FOOTER //\n// ./core/editor.js","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/eventemitter3/index.js\n// module id = 58\n// module chunks = 0","import Parchment from 'parchment';\nimport Emitter from '../core/emitter';\nimport Block, { BlockEmbed } from './block';\nimport Break from './break';\nimport CodeBlock from '../formats/code';\nimport Container from './container';\n\n\nfunction isLine(blot) {\n return (blot instanceof Block || blot instanceof BlockEmbed);\n}\n\n\nclass Scroll extends Parchment.Scroll {\n constructor(domNode, config) {\n super(domNode);\n this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n this.whitelist = config.whitelist.reduce(function(whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n this.domNode.addEventListener('DOMNodeInserted', function() {});\n this.optimize();\n this.enable();\n }\n\n batchStart() {\n this.batch = true;\n }\n\n batchEnd() {\n this.batch = false;\n this.optimize();\n }\n\n deleteAt(index, length) {\n let [first, offset] = this.line(index);\n let [last, ] = this.line(index + length);\n super.deleteAt(index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof CodeBlock) {\n let newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof CodeBlock) {\n let newlineIndex = last.newlineIndex(0);\n if (newlineIndex > -1) {\n last.split(newlineIndex + 1);\n }\n }\n let ref = last.children.head instanceof Break ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n\n enable(enabled = true) {\n this.domNode.setAttribute('contenteditable', enabled);\n }\n\n formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n super.formatAt(index, length, format, value);\n this.optimize();\n }\n\n insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || Parchment.query(value, Parchment.Scope.BLOCK) == null) {\n let blot = Parchment.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n let embed = Parchment.create(value, def);\n this.appendChild(embed);\n }\n } else {\n super.insertAt(index, value, def);\n }\n this.optimize();\n }\n\n insertBefore(blot, ref) {\n if (blot.statics.scope === Parchment.Scope.INLINE_BLOT) {\n let wrapper = Parchment.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n super.insertBefore(blot, ref);\n }\n\n leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n\n line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n\n lines(index = 0, length = Number.MAX_VALUE) {\n let getLines = (blot, index, length) => {\n let lines = [], lengthLeft = length;\n blot.children.forEachAt(index, length, function(child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof Parchment.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n\n optimize(mutations = [], context = {}) {\n if (this.batch === true) return;\n super.optimize(mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n\n path(index) {\n return super.path(index).slice(1); // Exclude self\n }\n\n update(mutations) {\n if (this.batch === true) return;\n let source = Emitter.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n super.update(mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n }\n }\n}\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Scroll;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/scroll.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignAttribute, AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport CodeBlock from '../formats/code';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\n\n\nconst DOM_KEY = '__ql-matcher';\n\nconst CLIPBOARD_CONFIG = [\n [Node.TEXT_NODE, matchText],\n [Node.TEXT_NODE, matchNewline],\n ['br', matchBreak],\n [Node.ELEMENT_NODE, matchNewline],\n [Node.ELEMENT_NODE, matchBlot],\n [Node.ELEMENT_NODE, matchSpacing],\n [Node.ELEMENT_NODE, matchAttributor],\n [Node.ELEMENT_NODE, matchStyles],\n ['li', matchIndent],\n ['b', matchAlias.bind(matchAlias, 'bold')],\n ['i', matchAlias.bind(matchAlias, 'italic')],\n ['style', matchIgnore]\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [\n AlignAttribute,\n DirectionAttribute\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nconst STYLE_ATTRIBUTORS = [\n AlignStyle,\n BackgroundStyle,\n ColorStyle,\n DirectionStyle,\n FontStyle,\n SizeStyle\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\n\nclass Clipboard extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.quill.root.addEventListener('paste', this.onPaste.bind(this));\n this.container = this.quill.addContainer('ql-clipboard');\n this.container.setAttribute('contenteditable', true);\n this.container.setAttribute('tabindex', -1);\n this.matchers = [];\n CLIPBOARD_CONFIG.concat(this.options.matchers).forEach(([selector, matcher]) => {\n if (!options.matchVisual && matcher === matchSpacing) return;\n this.addMatcher(selector, matcher);\n });\n }\n\n addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n\n convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n const formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[CodeBlock.blotName]) {\n const text = this.container.innerText;\n this.container.innerHTML = '';\n return new Delta().insert(text, { [CodeBlock.blotName]: formats[CodeBlock.blotName] });\n }\n let [elementMatchers, textMatchers] = this.prepareMatching();\n let delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n\n dangerouslyPasteHTML(index, html, source = Quill.sources.API) {\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, Quill.sources.SILENT);\n } else {\n let paste = this.convert(html);\n this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), Quill.sources.SILENT);\n }\n }\n\n onPaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n let range = this.quill.getSelection();\n let delta = new Delta().retain(range.index);\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(Quill.sources.SILENT);\n setTimeout(() => {\n delta = delta.concat(this.convert()).delete(range.length);\n this.quill.updateContents(delta, Quill.sources.USER);\n // range.length contributes to delta.length()\n this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n this.quill.scrollingContainer.scrollTop = scrollTop;\n this.quill.focus();\n }, 1);\n }\n\n prepareMatching() {\n let elementMatchers = [], textMatchers = [];\n this.matchers.forEach((pair) => {\n let [selector, matcher] = pair;\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(this.container.querySelectorAll(selector), (node) => {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n}\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\n\nfunction applyFormat(delta, format, value) {\n if (typeof format === 'object') {\n return Object.keys(format).reduce(function(delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function(delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, extend({}, {[format]: value}, op.attributes));\n }\n }, new Delta());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n const DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n let endText = \"\";\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n let op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1*text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n let style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) { // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function(delta, matcher) {\n return matcher(node, delta);\n }, new Delta());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], (delta, childNode) => {\n let childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new Delta());\n } else {\n return new Delta();\n }\n}\n\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n let attributes = Parchment.Attributor.Attribute.keys(node);\n let classes = Parchment.Attributor.Class.keys(node);\n let styles = Parchment.Attributor.Style.keys(node);\n let formats = {};\n attributes.concat(classes).concat(styles).forEach((name) => {\n let attr = Parchment.query(name, Parchment.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name]\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n let match = Parchment.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof Parchment.Embed) {\n let embed = {};\n let value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new Delta().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new Delta();\n}\n\nfunction matchIndent(node, delta) {\n let match = Parchment.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n let indent = -1, parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((Parchment.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new Delta().retain(delta.length() - 1).retain(1, { indent: indent}));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || (delta.length() > 0 && node.nextSibling && isLine(node.nextSibling))) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n let nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight*1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n let formats = {};\n let style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') ||\n parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) { // Could be 0.5in\n delta = new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n let text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n let replacer = function(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if ((node.previousSibling == null && isLine(node.parentNode)) ||\n (node.previousSibling != null && isLine(node.previousSibling))) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if ((node.nextSibling == null && isLine(node.parentNode)) ||\n (node.nextSibling != null && isLine(node.nextSibling))) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\n\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchSpacing, matchText };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/clipboard.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass History extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n if (eventName !== Quill.events.TEXT_CHANGE || this.ignoreChange) return;\n if (!this.options.userOnly || source === Quill.sources.USER) {\n this.record(delta, oldDelta);\n } else {\n this.transform(delta);\n }\n });\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, this.undo.bind(this));\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, this.redo.bind(this));\n if (/Win/i.test(navigator.platform)) {\n this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, this.redo.bind(this));\n }\n }\n\n change(source, dest) {\n if (this.stack[source].length === 0) return;\n let delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], Quill.sources.USER);\n this.ignoreChange = false;\n let index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n\n clear() {\n this.stack = { undo: [], redo: [] };\n }\n\n cutoff() {\n this.lastRecorded = 0;\n }\n\n record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n let undoDelta = this.quill.getContents().diff(oldDelta);\n let timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n let delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n\n redo() {\n this.change('redo', 'undo');\n }\n\n transform(delta) {\n this.stack.undo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n\n undo() {\n this.change('undo', 'redo');\n }\n}\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n let lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function(attr) {\n return Parchment.query(attr, Parchment.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n let deleteLength = delta.reduce(function(length, op) {\n length += (op.delete || 0);\n return length;\n }, 0);\n let changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\n\nexport { History as default, getLastChangeIndex };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/history.js","import Parchment from 'parchment';\n\nclass IdentAttributor extends Parchment.Attributor.Class {\n add(node, value) {\n if (value === '+1' || value === '-1') {\n let indent = this.value(node) || 0;\n value = (value === '+1' ? (indent + 1) : (indent - 1));\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return super.add(node, value);\n }\n }\n\n canAdd(node, value) {\n return super.canAdd(node, value) || super.canAdd(node, parseInt(value));\n }\n\n value(node) {\n return parseInt(super.value(node)) || undefined; // Don't return NaN\n }\n}\n\nlet IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: Parchment.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexport { IndentClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/indent.js","import Block from '../blots/block';\n\n\nclass Blockquote extends Block {}\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\n\nexport default Blockquote;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/blockquote.js","import Block from '../blots/block';\n\n\nclass Header extends Block {\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n}\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\nexport default Header;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/header.js","import Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Container from '../blots/container';\n\n\nclass ListItem extends Block {\n static formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : super.formats(domNode);\n }\n\n format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(Parchment.create(this.statics.scope));\n } else {\n super.format(name, value);\n }\n }\n\n remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n super.remove();\n }\n }\n\n replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return super.replaceWith(name, value);\n }\n }\n}\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\n\nclass List extends Container {\n static create(value) {\n let tagName = value === 'ordered' ? 'OL' : 'UL';\n let node = super.create(tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n\n constructor(domNode) {\n super(domNode);\n const listEventHandler = (e) => {\n if (e.target.parentNode !== domNode) return;\n let format = this.statics.formats(domNode);\n let blot = Parchment.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if(format === 'unchecked') {\n blot.format('list', 'checked');\n }\n }\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n }\n\n format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n\n formats() {\n // We don't inherit from FormatBlot\n return { [this.statics.blotName]: this.statics.formats(this.domNode) };\n }\n\n insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n super.insertBefore(blot, ref);\n } else {\n let index = ref == null ? this.length() : ref.offset(this);\n let after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n next.domNode.tagName === this.domNode.tagName &&\n next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n let item = Parchment.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n super.replace(target);\n }\n}\nList.blotName = 'list';\nList.scope = Parchment.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\n\nexport { ListItem, List as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/list.js","import Bold from './bold';\n\nclass Italic extends Bold { }\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexport default Italic;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/italic.js","import Inline from '../blots/inline';\n\nclass Script extends Inline {\n static create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return super.create(value);\n }\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n}\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexport default Script;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/script.js","import Inline from '../blots/inline';\n\nclass Strike extends Inline { }\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexport default Strike;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/strike.js","import Inline from '../blots/inline';\n\nclass Underline extends Inline { }\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexport default Underline;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/underline.js","import Parchment from 'parchment';\nimport { sanitize } from '../formats/link';\n\nconst ATTRIBUTES = [\n 'alt',\n 'height',\n 'width'\n];\n\n\nclass Image extends Parchment.Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\n\nexport default Image;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/image.js","import { BlockEmbed } from '../blots/block';\nimport Link from '../formats/link';\n\nconst ATTRIBUTES = [\n 'height',\n 'width'\n];\n\n\nclass Video extends BlockEmbed {\n static create(value) {\n let node = super.create(value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static sanitize(url) {\n return Link.sanitize(url);\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\n\nexport default Video;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/video.js","import Embed from '../blots/embed';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass FormulaBlot extends Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n\n static value(domNode) {\n return domNode.getAttribute('data-value');\n }\n}\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\n\nclass Formula extends Module {\n static register() {\n Quill.register(FormulaBlot, true);\n }\n\n constructor() {\n super();\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n }\n}\n\n\nexport { FormulaBlot, Formula as default };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/formula.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\nimport CodeBlock from '../formats/code';\n\n\nclass SyntaxCodeBlock extends CodeBlock {\n replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n super.replaceWith(block);\n }\n\n highlight(highlight) {\n let text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n}\nSyntaxCodeBlock.className = 'ql-syntax';\n\n\nlet CodeToken = new Parchment.Attributor.Class('token', 'hljs', {\n scope: Parchment.Scope.INLINE\n});\n\n\nclass Syntax extends Module {\n static register() {\n Quill.register(CodeToken, true);\n Quill.register(SyntaxCodeBlock, true);\n }\n\n constructor(quill, options) {\n super(quill, options);\n if (typeof this.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n let timer = null;\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n this.highlight();\n timer = null;\n }, this.options.interval);\n });\n this.highlight();\n }\n\n highlight() {\n if (this.quill.selection.composing) return;\n this.quill.update(Quill.sources.USER);\n let range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach((code) => {\n code.highlight(this.options.highlight);\n });\n this.quill.update(Quill.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, Quill.sources.SILENT);\n }\n }\n}\nSyntax.DEFAULTS = {\n highlight: (function() {\n if (window.hljs == null) return null;\n return function(text) {\n let result = window.hljs.highlightAuto(text);\n return result.value;\n };\n })(),\n interval: 1000\n};\n\n\nexport { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default};\n\n\n\n// WEBPACK FOOTER //\n// ./modules/syntax.js","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:toolbar');\n\n\nclass Toolbar extends Module {\n constructor(quill, options) {\n super(quill, options);\n if (Array.isArray(this.options.container)) {\n let container = document.createElement('div');\n addControls(container, this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n this.container = container;\n } else if (typeof this.options.container === 'string') {\n this.container = document.querySelector(this.options.container);\n } else {\n this.container = this.options.container;\n }\n if (!(this.container instanceof HTMLElement)) {\n return debug.error('Container required for toolbar', this.options);\n }\n this.container.classList.add('ql-toolbar');\n this.controls = [];\n this.handlers = {};\n Object.keys(this.options.handlers).forEach((format) => {\n this.addHandler(format, this.options.handlers[format]);\n });\n [].forEach.call(this.container.querySelectorAll('button, select'), (input) => {\n this.attach(input);\n });\n this.quill.on(Quill.events.EDITOR_CHANGE, (type, range) => {\n if (type === Quill.events.SELECTION_CHANGE) {\n this.update(range);\n }\n });\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n let [range, ] = this.quill.selection.getRange(); // quill.getSelection triggers update\n this.update(range);\n });\n }\n\n addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n\n attach(input) {\n let format = [].find.call(input.classList, (className) => {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (Parchment.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n let eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, (e) => {\n let value;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n let selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n this.quill.focus();\n let [range, ] = this.quill.selection.getRange();\n if (this.handlers[format] != null) {\n this.handlers[format].call(this, value);\n } else if (Parchment.query(format).prototype instanceof Parchment.Embed) {\n value = prompt(`Enter ${format}`);\n if (!value) return;\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ [format]: value })\n , Quill.sources.USER);\n } else {\n this.quill.format(format, value, Quill.sources.USER);\n }\n this.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n\n update(range) {\n let formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function(pair) {\n let [format, input] = pair;\n if (input.tagName === 'SELECT') {\n let option;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n let value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector(`option[value=\"${value}\"]`);\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n let isActive = formats[format] === input.getAttribute('value') ||\n (formats[format] != null && formats[format].toString() === input.getAttribute('value')) ||\n (formats[format] == null && !input.getAttribute('value'));\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n}\nToolbar.DEFAULTS = {};\n\n\nfunction addButton(container, format, value) {\n let input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function(controls) {\n let group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function(control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n let format = Object.keys(control)[0];\n let value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n let input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function() {\n let range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n let formats = this.quill.getFormat();\n Object.keys(formats).forEach((name) => {\n // Clean functionality in existing apps only clean inline formats\n if (Parchment.query(name, Parchment.Scope.INLINE) != null) {\n this.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, Quill.sources.USER);\n }\n },\n direction: function(value) {\n let align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', Quill.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, Quill.sources.USER);\n }\n this.quill.format('direction', value, Quill.sources.USER);\n },\n indent: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n let indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n let modifier = (value === '+1') ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, Quill.sources.USER);\n }\n },\n link: function(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, Quill.sources.USER);\n },\n list: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, Quill.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', Quill.sources.USER);\n }\n } else {\n this.quill.format('list', value, Quill.sources.USER);\n }\n }\n }\n}\n\n\nexport { Toolbar as default, addControls };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/toolbar.js","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-left.svg\n// module id = 75\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-center.svg\n// module id = 76\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-right.svg\n// module id = 77\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-justify.svg\n// module id = 78\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/background.svg\n// module id = 79\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/blockquote.svg\n// module id = 80\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/bold.svg\n// module id = 81\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/clean.svg\n// module id = 82\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/color.svg\n// module id = 83\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-ltr.svg\n// module id = 84\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-rtl.svg\n// module id = 85\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-center.svg\n// module id = 86\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-full.svg\n// module id = 87\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-left.svg\n// module id = 88\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-right.svg\n// module id = 89\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/formula.svg\n// module id = 90\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header.svg\n// module id = 91\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header-2.svg\n// module id = 92\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/italic.svg\n// module id = 93\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/image.svg\n// module id = 94\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/indent.svg\n// module id = 95\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/outdent.svg\n// module id = 96\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/link.svg\n// module id = 97\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-ordered.svg\n// module id = 98\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-bullet.svg\n// module id = 99\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-check.svg\n// module id = 100\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/subscript.svg\n// module id = 101\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/superscript.svg\n// module id = 102\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/strike.svg\n// module id = 103\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/underline.svg\n// module id = 104\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/video.svg\n// module id = 105\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/dropdown.svg\n// module id = 106\n// module chunks = 0","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n ['bold', 'italic', 'link'],\n [{ header: 1 }, { header: 2 }, 'blockquote']\n];\n\nclass BubbleTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-bubble');\n }\n\n extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n }\n}\nBubbleTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\n\nclass BubbleTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n if (type !== Emitter.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === Emitter.sources.USER) {\n this.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n this.root.style.left = '0px';\n this.root.style.width = '';\n this.root.style.width = this.root.offsetWidth + 'px';\n let lines = this.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n this.position(this.quill.getBounds(range));\n } else {\n let lastLine = lines[lines.length - 1];\n let index = this.quill.getIndex(lastLine);\n let length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n let bounds = this.quill.getBounds(new Range(index, length));\n this.position(bounds);\n }\n } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n this.hide();\n }\n });\n }\n\n listen() {\n super.listen();\n this.root.querySelector('.ql-close').addEventListener('click', () => {\n this.root.classList.remove('ql-editing');\n });\n this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(() => {\n if (this.root.classList.contains('ql-hidden')) return;\n let range = this.quill.getSelection();\n if (range != null) {\n this.position(this.quill.getBounds(range));\n }\n }, 1);\n });\n }\n\n cancel() {\n this.show();\n }\n\n position(reference) {\n let shift = super.position(reference);\n let arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = (-1*shift - arrow.offsetWidth/2) + 'px';\n }\n}\nBubbleTooltip.TEMPLATE = [\n '',\n '
',\n '',\n '',\n '
'\n].join('');\n\n\nexport { BubbleTooltip, BubbleTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/bubble.js","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n [{ header: ['1', '2', '3', false] }],\n ['bold', 'italic', 'underline', 'link'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['clean']\n];\n\nclass SnowTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-snow');\n }\n\n extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function(range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n}\nSnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (value) {\n let range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n let preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n let tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\n\nclass SnowTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.preview = this.root.querySelector('a.ql-preview');\n }\n\n listen() {\n super.listen();\n this.root.querySelector('a.ql-action').addEventListener('click', (event) => {\n if (this.root.classList.contains('ql-editing')) {\n this.save();\n } else {\n this.edit('link', this.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n if (this.linkRange != null) {\n let range = this.linkRange;\n this.restoreFocus();\n this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n delete this.linkRange;\n }\n event.preventDefault();\n this.hide();\n });\n this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n if (range.length === 0 && source === Emitter.sources.USER) {\n let [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n if (link != null) {\n this.linkRange = new Range(range.index - offset, link.length());\n let preview = LinkBlot.formats(link.domNode);\n this.preview.textContent = preview;\n this.preview.setAttribute('href', preview);\n this.show();\n this.position(this.quill.getBounds(this.linkRange));\n return;\n }\n } else {\n delete this.linkRange;\n }\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nSnowTooltip.TEMPLATE = [\n '',\n '',\n '',\n ''\n].join('');\n\n\nexport default SnowTheme;\n\n\n\n// WEBPACK FOOTER //\n// ./themes/snow.js"],"sourceRoot":""} \ No newline at end of file diff --git a/static/quill/quill.snow.css b/static/quill/quill.snow.css new file mode 100644 index 00000000..184ae7b1 --- /dev/null +++ b/static/quill/quill.snow.css @@ -0,0 +1,945 @@ +/*! + * Quill Editor v1.3.5 + * 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-container.ql-disabled .ql-editor ul[data-checked] > li::before { + pointer-events: none; +} +.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; + 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 > * { + cursor: text; +} +.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: '\2022'; +} +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none; +} +.ql-editor ul[data-checked=true] > li *, +.ql-editor ul[data-checked=false] > li * { + pointer-events: all; +} +.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; + white-space: nowrap; + width: 1.2em; +} +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: 0.3em; + text-align: right; +} +.ql-editor li.ql-direction-rtl::before { + margin-left: 0.3em; + margin-right: -1.5em; +} +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em; +} +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 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-0; +} +.ql-editor ol li:before { + content: counter(list-0, 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: #4b4b4b; +} +.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: #4b4b4b; +} +.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; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px; +} +.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:focus, +.ql-snow .ql-toolbar button:focus, +.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: #4b4b4b; +} +.ql-snow.ql-toolbar button:hover .ql-fill, +.ql-snow .ql-toolbar button:hover .ql-fill, +.ql-snow.ql-toolbar button:focus .ql-fill, +.ql-snow .ql-toolbar button:focus .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:focus .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button:focus .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: #4b4b4b; +} +.ql-snow.ql-toolbar button:hover .ql-stroke, +.ql-snow .ql-toolbar button:hover .ql-stroke, +.ql-snow.ql-toolbar button:focus .ql-stroke, +.ql-snow .ql-toolbar button:focus .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:focus .ql-stroke-miter, +.ql-snow .ql-toolbar button:focus .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: #4b4b4b; +} +@media (pointer: coarse) { + .ql-snow.ql-toolbar button:hover:not(.ql-active), + .ql-snow .ql-toolbar button:hover:not(.ql-active) { + color: #444; + } + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { + fill: #444; + } + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, + .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { + stroke: #444; + } +} +.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: 2px 4px; +} +.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: #4b4b4b; +} +.ql-container.ql-snow { + border: 1px solid #ccc; +} diff --git a/views/document/new_html_edit_template.tpl b/views/document/new_html_edit_template.tpl index 5bb91341..0d8b1449 100644 --- a/views/document/new_html_edit_template.tpl +++ b/views/document/new_html_edit_template.tpl @@ -30,7 +30,10 @@ - + {{/**/}} + + +

C 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§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 G_x*oZGDWHY literal 0 HcmV?d00001 diff --git a/static/katex/fonts/KaTeX_SansSerif-Italic.ttf b/static/katex/fonts/KaTeX_SansSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b3a2f38f22466e837cc0a1e8bfe166ab86787496 GIT binary patch literal 31072 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%0DXa|8k4wRBrGrW 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