diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..ab22ed3
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+[*]
+end_of_line = lf
+insert_final_newline = true
+charset = utf-8
+indent_style = space
+indent_size = 4
+
+[**.{js,json,yml}]
+indent_size = 2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8031a17
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+screenshots/*.png
diff --git a/.travis.yml b/.travis.yml
index 488432c..660eac6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,6 +4,9 @@ python:
- "3.5"
install:
- pip install tox
+ - npm install phantomjs-prebuilt
script: "make test"
notifications:
email: false
+addons:
+ postgresql: 9.4
diff --git a/README.md b/README.md
index aa8e1f7..ea1f034 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,10 @@ integration. To run the tests locally, install `tox`:
pip install tox
+... and phantomjs:
+
+ npm install phantomjs-prebuilt
+
and then run:
make test
diff --git a/requirements.txt b/requirements.txt
index 57e32ce..4d9e192 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,6 @@
colour-runner
dj-database-url
factory-boy~=2.8.1
+needle~=0.3.0
psycopg2~=2.6.0
+selenium~=2.53.0
diff --git a/runtests.py b/runtests.py
new file mode 100644
index 0000000..b6b871e
--- /dev/null
+++ b/runtests.py
@@ -0,0 +1,63 @@
+#! /usr/bin/env python
+"""From http://stackoverflow.com/a/12260597/400691."""
+import os
+import sys
+
+import dj_database_url
+import django
+from colour_runner.django_runner import ColourRunnerMixin
+from django.conf import settings
+from django.test.runner import DiscoverRunner
+
+
+settings.configure(
+ DATABASES={'default': dj_database_url.config(
+ default='postgres:///sirtrevor',
+ )},
+ INSTALLED_APPS=(
+ 'tests',
+ 'django.contrib.admin',
+ # contenttypes must preceed auth: http://stackoverflow.com/a/18292090/400691
+ 'django.contrib.contenttypes',
+ 'django.contrib.auth',
+ 'django.contrib.sessions',
+ 'django.contrib.staticfiles',
+ ),
+ MIDDLEWARE_CLASSES=(
+ 'django.middleware.security.SecurityMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+ ),
+ OVERWRITE_SCREENSHOTS=os.environ.get('OVERWRITE_SCREENSHOTS', False),
+ PASSWORD_HASHERS=('django.contrib.auth.hashers.MD5PasswordHasher',),
+ ROOT_URLCONF='tests.urls',
+ STATIC_URL='/static/',
+ TEMPLATES=[{
+ 'APP_DIRS': True,
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'OPTIONS': {'context_processors': [
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ]},
+ }],
+)
+
+
+django.setup()
+
+
+class TestRunner(ColourRunnerMixin, DiscoverRunner):
+ """Enable coloured output for tests."""
+
+
+test_runner = TestRunner(verbosity=2)
+failures = test_runner.run_tests(None)
+if failures:
+ sys.exit(1)
diff --git a/screenshots/baseline/admin-field-empty.png b/screenshots/baseline/admin-field-empty.png
new file mode 100644
index 0000000..72d85c7
Binary files /dev/null and b/screenshots/baseline/admin-field-empty.png differ
diff --git a/screenshots/baseline/admin-field-video.png b/screenshots/baseline/admin-field-video.png
new file mode 100644
index 0000000..ac1a5ad
Binary files /dev/null and b/screenshots/baseline/admin-field-video.png differ
diff --git a/sirtrevor/widgets.py b/sirtrevor/widgets.py
index 7e19a0b..2052417 100644
--- a/sirtrevor/widgets.py
+++ b/sirtrevor/widgets.py
@@ -3,15 +3,24 @@
class SirTrevorWidget(Textarea):
"""Form widget for SirTrevorJS content."""
- def __init__(self, attrs=None):
- """
- Remove Textarea's row and cols default.
+ class Media:
+ css = {
+ 'all': ('sirtrevor/sir-trevor.min.css',),
+ }
+ js = (
+ 'sirtrevor/sir-trevor.min.js',
+ 'sirtrevor/sir-trevor-init.js',
+ )
- They don't make sense given the area's going to be blasted by
- SirTrevorJS.
- """
+ def __init__(self, attrs=None):
if attrs is None:
attrs = {}
+
+ # Remove Textarea's row and cols default. They don't make sense given
+ # the area's going to be blasted by SirTrevorJS.
attrs.setdefault('cols', False)
attrs.setdefault('rows', False)
+
+ # Add a class for Sirtrevor JS to pick up on.
+ attrs.setdefault('class', 'js-st-instance')
super().__init__(attrs)
diff --git a/tests/admin.py b/tests/admin.py
new file mode 100644
index 0000000..82a3b6c
--- /dev/null
+++ b/tests/admin.py
@@ -0,0 +1,6 @@
+from django.contrib import admin
+
+from .models import Post
+
+
+admin.site.register(Post)
diff --git a/tests/factories.py b/tests/factories.py
new file mode 100644
index 0000000..1ffc797
--- /dev/null
+++ b/tests/factories.py
@@ -0,0 +1,34 @@
+import factory
+
+from django.contrib.auth.models import User
+
+from .models import Post
+
+
+class UserFactory(factory.DjangoModelFactory):
+ username = factory.Sequence('user{}'.format)
+
+ class Meta:
+ model = User
+
+
+class AdminUserFactory(UserFactory):
+ is_staff = True
+ is_superuser = True
+
+ @factory.post_generation
+ def password(self, create, extracted, **kwargs):
+ assert create
+
+ if extracted is None:
+ extracted = 'default_password'
+ self.raw_password = extracted
+ self.set_password(extracted)
+ self.save()
+
+
+class PostFactory(factory.DjangoModelFactory):
+ content = factory.LazyAttribute(lambda o: {})
+
+ class Meta:
+ model = Post
diff --git a/tests/models.py b/tests/models.py
new file mode 100644
index 0000000..4f53e69
--- /dev/null
+++ b/tests/models.py
@@ -0,0 +1,7 @@
+from django.db import models
+
+from sirtrevor.modelfields import SirTrevorField
+
+
+class Post(models.Model):
+ content = SirTrevorField(default='')
diff --git a/tests/run.py b/tests/run.py
deleted file mode 100644
index 21ec4a9..0000000
--- a/tests/run.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /usr/bin/env python
-"""From http://stackoverflow.com/a/12260597/400691."""
-import sys
-
-import dj_database_url
-import django
-from colour_runner.django_runner import ColourRunnerMixin
-from django.conf import settings
-from django.test.runner import DiscoverRunner
-
-
-settings.configure(
- DATABASES={'default': dj_database_url.config(
- default='postgres:///sirtrevor',
- )},
- INSTALLED_APPS=(
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- ),
- MIDDLEWARE_CLASSES=(),
- PASSWORD_HASHERS=('django.contrib.auth.hashers.MD5PasswordHasher',),
- ROOT_URLCONF='tests.urls',
- TEMPLATES=[{
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'APP_DIRS': True,
- }],
-)
-
-
-django.setup()
-
-
-class TestRunner(ColourRunnerMixin, DiscoverRunner):
- """Enable coloured output for tests."""
-
-
-test_runner = TestRunner(verbosity=1)
-failures = test_runner.run_tests(None)
-if failures:
- sys.exit(1)
diff --git a/tests/static/sirtrevor/sir-trevor-icons.svg b/tests/static/sirtrevor/sir-trevor-icons.svg
new file mode 100644
index 0000000..1f68a04
--- /dev/null
+++ b/tests/static/sirtrevor/sir-trevor-icons.svg
@@ -0,0 +1,263 @@
+
diff --git a/tests/static/sirtrevor/sir-trevor-init.js b/tests/static/sirtrevor/sir-trevor-init.js
new file mode 100644
index 0000000..581e29c
--- /dev/null
+++ b/tests/static/sirtrevor/sir-trevor-init.js
@@ -0,0 +1,10 @@
+document.addEventListener('DOMContentLoaded', function() {
+ SirTrevor.setDefaults({
+ // TODO: Make this use django's staticfiles storage somehow.
+ iconUrl: '/static/sirtrevor/sir-trevor-icons.svg'
+ });
+
+ var editor = new SirTrevor.Editor({
+ el: document.querySelector('.js-st-instance')
+ });
+});
diff --git a/tests/static/sirtrevor/sir-trevor.min.css b/tests/static/sirtrevor/sir-trevor.min.css
new file mode 100644
index 0000000..05587bd
--- /dev/null
+++ b/tests/static/sirtrevor/sir-trevor.min.css
@@ -0,0 +1,11 @@
+/*!
+ * Sir Trevor JS v0.6.1
+ *
+ * Released under the MIT license
+ * www.opensource.org/licenses/MIT
+ *
+ * 2016-07-12
+ */
+
+
+sir-trevor-icons.svg.st-block-control-ui-btn,.st-block-ui-btn__delete,.st-block-ui-btn__reorder,.st-icon{cursor:pointer;width:1em;height:1em;fill:currentColor}.st-utils__hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.st-outer{font-size:1pc;position:relative;background:#fff}.st-block-control-ui-btn,.st-block-ui-btn__delete,.st-block-ui-btn__reorder,.st-icon{cursor:pointer;width:100%;height:100%;fill:currentColor}.st-block__inner ::-moz-selection{background:#b1f2d6;text-shadow:none}.st-block__inner ::selection{background:#b1f2d6;text-shadow:none}.st-spinner{position:absolute!important;left:50%;top:50%}.st-input-label{display:block;margin-bottom:.5em;font-size:13px;text-transform:uppercase}.st-block input[type=text],.st-block textarea{font-size:inherit;margin:0}.st-block [contenteditable=true],.st-block [contenteditable=true]:active,.st-block [contenteditable=true]:focus,.st-block input[type=text],.st-block input[type=text]:active,.st-block input[type=text]:focus,.st-block textarea,.st-block textarea:active,.st-block textarea:hover{outline:0;border:none}.st-block input[type=text],.st-block input[type=text]:active,.st-block input[type=text]:focus{color:#42474b;border:.1em solid #d4d4d4;padding:.6em}.st-errors{background-color:#ffe1e4;padding:2em;color:#d70014;margin-bottom:2em}.st-errors p,.st-errors ul{margin:0}.st-errors ul{padding-left:1em}.st-errors p{margin-bottom:.5em;font-weight:700}.st-top-controls{min-height:1.75em;position:relative;z-index:2}.st-block-addition{text-align:center;outline:0;border:none;display:none;width:100%;background-color:transparent;padding:0;z-index:2}.st-block-addition::-moz-focus-inner{padding:0;margin:0;margin-left:-1px}.st-block:last-child:not(.st-block--empty):not(.st-block--textable) .st-block-addition,.st-top-controls .st-block-addition{display:block}.st--block-limit-reached .st-block-addition,.st--block-limit-reached .st-top-controls,.st--hide-top-controls .st-top-controls .st-block-addition{display:none}.st-block-addition__button{-webkit-transition:all .2s .3s ease-in-out;transition:all .2s .3s ease-in-out;border:1px solid transparent;color:#444;position:relative;box-sizing:border-box;padding:.2em;display:inline-block;margin:0 auto;width:100%;opacity:.2;cursor:pointer;-webkit-transform:translateZ(0);transform:translateZ(0)}.st-block-addition__button .st-block-control-ui-btn,.st-block-addition__button .st-block-ui-btn__delete,.st-block-addition__button .st-block-ui-btn__reorder,.st-block-addition__button .st-icon{height:20px;width:20px;color:inherit}.st-block--active .st-block-addition__button,.st-block-addition:hover .st-block-addition__button{color:#17bb75;opacity:1}.st-block-addition-top{-webkit-transition:all .2s .2s ease-in-out;transition:all .2s .2s ease-in-out;text-align:left;outline:0;border:none;width:100%;background-color:transparent;padding:0;z-index:2;position:relative;cursor:text;display:none;position:absolute;top:-2em;height:30px;opacity:0;display:block}.st-block-addition-top::-moz-focus-inner{padding:0;margin:0;margin-left:-1px}.st-block-addition-top:before{-webkit-transition:all .2s .1s ease-in-out;transition:all .2s .1s ease-in-out;background:#17bb75;position:absolute;height:2px;top:50%;left:110px;right:110px;content:"";display:block;-webkit-transform:translateY(-50%) translateZ(0);transform:translateY(-50%) translateZ(0)}.st-block--empty .st-block-addition-top{display:none!important}.st-block-addition-top:hover{opacity:1}.st-block--textable .st-block-addition-top,.st-block[data-type=list] .st-block-addition-top{top:-1.5em}.st-block--empty+.st-block .st-block-addition-top,.st-block:nth-child(3) .st-block-addition-top{display:none}.st-block-addition-top__icon{-webkit-transition:all .2s .1s ease-in-out;transition:all .2s .1s ease-in-out;border:1px solid transparent;color:#444;position:absolute;top:50%;box-sizing:border-box;padding-left:35px;display:inline-block;margin:0 auto;cursor:pointer;opacity:.2;-webkit-transform:translateY(-50%) translateZ(0);transform:translateY(-50%) translateZ(0)}.st-block-addition-top__icon .st-block-control-ui-btn,.st-block-addition-top__icon .st-block-ui-btn__delete,.st-block-addition-top__icon .st-block-ui-btn__reorder,.st-block-addition-top__icon .st-icon{width:41px;height:41px;color:inherit}.st-block--active .st-block-addition-top__icon,.st-block-addition-top:hover .st-block-addition-top__icon{color:#17bb75;opacity:1}.st-block-addition-top__button{position:absolute;top:0;left:76px;right:0;bottom:0;display:inline-block}.st-block-controls{position:absolute;left:0;top:50%;right:0;font-size:.8em;padding:0 110px;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:1}.st-block-controls__buttons{text-align:center}.st-block-controls__button{border:none;background:transparent;font-size:9pt;display:inline-block;cursor:pointer;margin:.5em;text-transform:uppercase}.st-block-controls__button .st-block-control-ui-btn,.st-block-controls__button .st-block-ui-btn__delete,.st-block-controls__button .st-block-ui-btn__reorder,.st-block-controls__button .st-icon{margin:0 0 10px;display:block;width:42px;height:42px}.st-block-controls__button:hover{color:#17bb75}.st-block-replacer{position:absolute;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);outline:0;border:none;font-size:1.3em;display:none;background-color:transparent;padding:0;z-index:2;top:50%;left:35px}.st-block-replacer::-moz-focus-inner{padding:0;margin:0;margin-left:-1px}.st-block--textable.st-block--empty .st-block-replacer{display:block}.st-block-replacer__button{-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;color:#17bb75;position:relative;box-sizing:border-box;display:inline-block;margin:0 auto;width:41px;height:41px;cursor:pointer;-webkit-transform:translateZ(0);transform:translateZ(0)}.st-block--controls-active .st-block-replacer__button{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.st-blocks{overflow:hidden}.st-block,.st-block__inner,.st-blocks{position:relative}.st-block__inner{margin:0 110px;margin-top:1em;margin-bottom:1em}.st-block--textable .st-block__inner{margin-top:0;margin-bottom:0}.st-block__inner--droppable{border:1px solid #ddd;background:#f7f7f7;cursor:pointer;margin-top:2em;margin-bottom:2em}.st-block__inner--droppable:focus{border-color:#17bb75;outline:0}.st-block[data-type=quote] .st-block__inner{margin:2em 155px}.st-block__inner--controllable{padding-bottom:3em;-webkit-transition:all .2s;transition:all .2s}.st-block--delete-active .st-block__inner,.st-block--with-errors .st-block__inner{border-color:#d70014}.st-block--with-plus:after,.st-icon--add:after{display:block;position:relative;z-index:1;bottom:0}.st--block-limit-reached .st-block-addition{display:none}.st-icon--add:after{text-align:center;font-size:1.875em;padding:.3em 0;line-height:.9;border-radius:.2em}.st-block--with-plus:after{background:#f7f7f7;color:#17bb75;cursor:pointer}.with-st-controls:after,.with-st-controls:before{display:none}.st-block.st-drag-over:after,.st-block.st-drag-over:last-child:after,.st-top-controls.st-drag-over:before{content:"";background:transparent;display:block;width:100%;height:3px;position:absolute;bottom:0;left:0;background:#17bb75}.st-drag-element{background:#fff;box-shadow:3px 3px #17bb75 inset,-3px -3px #17bb75 inset;position:absolute;width:100%;z-index:-1}.st-drag-element .st-block-addition{display:none}.st-block--dragging{background:#f6f7f9}.st-block--dragging>*{opacity:0}.st-block--dragging .st-block-addition{opacity:1}.st-drag-over .st-block-addition{opacity:0}.st-text-block{font-size:inherit;margin:0;outline:0;border:none;font-size:1.275em;line-height:1.45;overflow:visible}.st-block--empty .st-text-block{line-height:55px}.st-text-block p{vertical-align:14%}.st-text-block--heading{line-height:1.45;font-size:1.5em;min-height:1em;font-weight:700;margin:.58em 0;overflow:visible}.st-text-block--heading p{margin:.5em 0}.st-text-block--quote{font-size:1.875em;line-height:1.3;margin-bottom:1.8em}ul.st-text-block{margin-left:1.875em}.st-list-block__list{font-size:1.275em;margin:0;padding-left:1em}.st-list-block__editor{width:100%;line-height:1.8em}.st-block__inputs{padding:1.6em 0 1em;border-radius:.2em;border-top:2px solid transparent}.st-block__dropzone .st-block-control-ui-btn,.st-block__dropzone .st-block-ui-btn__delete,.st-block__dropzone .st-block-ui-btn__reorder,.st-block__dropzone .st-icon{font-size:4em;color:#42474b;display:block;text-align:center;margin:0 auto .2em}.st-block__dropzone p{text-align:center;color:#42474b;font-size:1.2em;margin:0}.st-block__dropzone p span{font-weight:700}.st-drag-over .st-block__inputs{border-top-color:#d1d1d1}.st-block .st-block__paste-input[type=text]{text-align:center;width:80%;display:block;margin:.4em auto 0}.st-upload-btn{border:0;background:#42474b;border-radius:.2em;padding:.35em 1em;font-size:1.125em;cursor:pointer;color:#fff;position:relative;z-index:10}.st-block__upload-container:hover .st-upload-btn{background:#17bb75;color:#fff}.st-block__editor--with-square-media{padding-top:100%;height:0;position:relative;width:100%}.st-block__editor--with-sixteen-by-nine-media{padding-top:56.25%;height:0;position:relative;width:100%}.st-block__editor--with-sixteen-by-nine-media iframe,.st-block__editor--with-sixteen-by-nine-media video,.st-block__editor--with-square-media iframe,.st-block__editor--with-square-media video{height:100%;width:100%;left:0;top:0;position:absolute}.st-block__editor img{width:100%;height:auto}.st-block__upload-container{margin:.4em 0 0;text-align:center}.st-block__upload-container input[type=file]{position:absolute;z-index:50;opacity:0;cursor:pointer;left:0;width:100%;padding:7px 0;text-align:center}.st-block__messages{display:none;position:relative;padding:.3em .5em;border:2px solid #17bb75;border-left:none;border-top:none;max-width:80%}.st-block__messages--is-visible{display:block}.st-block--with-errors .st-block__messages{border-color:#d70014}.st-block__messages span{display:block}.st-msg--error{color:#d70014}.st-block-positioner{border:2px solid #17bb75;position:absolute;z-index:2;background:#fff;display:none;right:4em;top:0}.st-block-positioner.active{display:block}.st-block-positioner:after{content:'';display:block;background-color:#fff;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.st-block-positioner:before{content:'';display:block;width:.4em;height:.4em;position:absolute;left:-.3em;top:50%;z-index:-1;border:2px solid #17bb75;background:#fff;-webkit-transform:translateY(-50%) rotate(45deg);transform:translateY(-50%) rotate(45deg);left:auto;right:-.3em}.st-block-positioner__inner{background:#fff;position:relative;z-index:2;padding:.3em .5em}.st-block-positioner__select{display:block}.st-block--delete-active>.st-block__inner>.st-block__ui .st-block-positioner,.st-block--delete-active>.st-block__inner>.st-block__ui .st-block-positioner:after,.st-block--with-errors>.st-block__inner>.st-block__ui .st-block-positioner,.st-block--with-errors>.st-block__inner>.st-block__ui .st-block-positioner:after{border-color:#d70014}.st-block__control-ui{position:absolute;bottom:0;left:0;opacity:1}.st-block__inner:hover .st-block__control-ui,.st-block__inner:hover .st-block__ui{opacity:1}.st-block-ui__confirm{color:#d70014;border:1px solid #d70014;background:none;padding:.15em .4em;margin:0 .1em;font-size:.9em;cursor:pointer}.st-block-control-ui-btn,.st-block-ui-btn__delete,.st-block-ui-btn__reorder{display:block;cursor:pointer;width:1em;height:1em;color:#9b9b9b}.st-block-ui-btn__reorder{position:absolute;right:2em;-webkit-transform:scaleX(-1);transform:scaleX(-1);top:.5em;opacity:.2;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.st-block-ui-btn__reorder:focus,.st-block-ui-btn__reorder:hover{color:#17bb75;opacity:1}.st-block-ui-btn__delete{position:absolute;right:1em;top:1.5em;font-size:1.5em;opacity:.5}.st-block-ui-btn__delete:focus,.st-block-ui-btn__delete:hover{color:#d70014;opacity:1}.st-block--textable .st-block-ui-btn__delete,.st-block-ui-btn__delete .st-block,.st-block[data-type=list] .st-block-ui-btn__delete{display:none}.st-block[data-type=quote] .st-block-ui-btn__delete{display:block}.st-block-control-ui-btn{width:2em;line-height:1.25em;height:1.25em;font-size:1em;display:inline-block;padding:3px;-webkit-transition:color .1s;transition:color .1s}.st-block-control-ui-btn--selected,.st-block-control-ui-btn:focus,.st-block-control-ui-btn:hover{color:#17bb75}.st-block--delete-active .st-block-control-ui-btn,.st-block--with-errors .st-block-control-ui-btn{color:#d70014;border-color:#d70014}.st-block--delete-active .st-block-control-ui-btn.active,.st-block--delete-active .st-block-control-ui-btn:hover,.st-block--with-errors .st-block-control-ui-btn.active,.st-block--with-errors .st-block-control-ui-btn:hover{color:#fff;background-color:#d70014}.st-block__ui-delete-controls{border:2px solid #17bb75;position:absolute;z-index:2;background:#fff;display:none;right:4em;top:1.85em;padding:.3em .5em;border-color:#d70014}.st-block__ui-delete-controls.active{display:block}.st-block__ui-delete-controls:after{content:'';display:block;background-color:#fff;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.st-block__ui-delete-controls:before{content:'';display:block;width:.4em;height:.4em;position:absolute;left:-.3em;top:50%;z-index:-1;border:2px solid #17bb75;background:#fff;-webkit-transform:translateY(-50%) rotate(45deg);transform:translateY(-50%) rotate(45deg);left:auto;right:-.3em;border-color:#d70014}.st-block--with-errors{opacity:1;z-index:2}.st-block__delete-label{color:#d70014}.st-format-bar{top:0;position:absolute;margin:-4.5em 0 0;background:#252525;opacity:0;visibility:hidden;z-index:10;border-radius:.4em;padding:0;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.st-format-bar:before{content:'';display:block;position:absolute;left:50%;top:3.3em;width:0;height:0;border-left:.875em solid transparent;border-right:.875em solid transparent;border-top:.875em solid #252525;margin-left:-.875em}.st-format-bar--is-ready{visibility:visible;opacity:1}.st-format-btn{background:transparent;border:0;color:#fff;font-size:1em;line-height:1;padding:.5em .6em;vertical-align:middle;text-align:center}.st-format-btn:focus{outline:0}.st-format-btn .st-block-control-ui-btn,.st-format-btn .st-block-ui-btn__delete,.st-format-btn .st-block-ui-btn__reorder,.st-format-btn .st-icon{width:35px;height:35px}.st-format-btn--Heading,.st-format-btn--Quote{border-left:1px solid #3e4245}.st-format-btn--is-active,.st-format-btn:hover{color:#17bb75}.st-format-btn--Unlink{text-decoration:line-through}
\ No newline at end of file
diff --git a/tests/static/sirtrevor/sir-trevor.min.js b/tests/static/sirtrevor/sir-trevor.min.js
new file mode 100644
index 0000000..850fb77
--- /dev/null
+++ b/tests/static/sirtrevor/sir-trevor.min.js
@@ -0,0 +1,29 @@
+/*!
+ * Sir Trevor JS v0.6.1
+ *
+ * Released under the MIT license
+ * www.opensource.org/licenses/MIT
+ *
+ * 2016-07-12
+ */
+
+
+!function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.SirTrevor=factory():root.SirTrevor=factory()}(this,function(){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:!1};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.p="",__webpack_require__(0)}(function(modules){for(var i in modules)if(Object.prototype.hasOwnProperty.call(modules,i))switch(typeof modules[i]){case"function":break;case"object":modules[i]=function(_m){var args=_m.slice(1),fn=modules[_m[0]];return function(a,b,c){fn.apply(this,[a,b,c].concat(args))}}(modules[i]);break;default:modules[i]=modules[modules[i]]}return modules}([function(module,exports,__webpack_require__){"use strict";module.exports=__webpack_require__(1),__webpack_require__(280)},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"];__webpack_require__(17),__webpack_require__(18).shim(),__webpack_require__(21),__webpack_require__(22),__webpack_require__(23).polyfill();var utils=__webpack_require__(29),SirTrevor={config:__webpack_require__(68),log:utils.log,Locales:__webpack_require__(72),Events:__webpack_require__(73),EventBus:__webpack_require__(75),EditorStore:__webpack_require__(76),Submittable:__webpack_require__(77),FileUploader:__webpack_require__(78),BlockMixins:__webpack_require__(128),BlockPositioner:__webpack_require__(234),BlockReorder:__webpack_require__(237),BlockDeletion:__webpack_require__(238),BlockValidations:__webpack_require__(239),BlockStore:__webpack_require__(240),BlockManager:__webpack_require__(241),SimpleBlock:__webpack_require__(245),Block:__webpack_require__(244),Blocks:__webpack_require__(242),FormatBar:__webpack_require__(269),Editor:__webpack_require__(271),toMarkdown:__webpack_require__(279),toHTML:__webpack_require__(253),setDefaults:function(options){_Object$assign(SirTrevor.config.defaults,options||{})},getInstance:utils.getInstance,setBlockOptions:function(type,options){var block=SirTrevor.Blocks[type];"undefined"!=typeof block&&_Object$assign(block.prototype,options||{})},runOnAllInstances:function(method){if(SirTrevor.Editor.prototype.hasOwnProperty(method)){var methodArgs=Array.prototype.slice.call(arguments,1);Array.prototype.forEach.call(SirTrevor.config.instances,function(i){i[method].apply(null,methodArgs)})}else SirTrevor.log("method doesn't exist")}};_Object$assign(SirTrevor,__webpack_require__(272)),module.exports=SirTrevor},function(module,exports,__webpack_require__){module.exports={"default":__webpack_require__(3),__esModule:!0}},function(module,exports,__webpack_require__){__webpack_require__(4),module.exports=__webpack_require__(7).Object.assign},function(module,exports,__webpack_require__){var $export=__webpack_require__(5);$export($export.S+$export.F,"Object",{assign:__webpack_require__(10)})},function(module,exports,__webpack_require__){var global=__webpack_require__(6),core=__webpack_require__(7),ctx=__webpack_require__(8),PROTOTYPE="prototype",$export=function(type,name,source){var key,own,out,IS_FORCED=type&$export.F,IS_GLOBAL=type&$export.G,IS_STATIC=type&$export.S,IS_PROTO=type&$export.P,IS_BIND=type&$export.B,IS_WRAP=type&$export.W,exports=IS_GLOBAL?core:core[name]||(core[name]={}),target=IS_GLOBAL?global:IS_STATIC?global[name]:(global[name]||{})[PROTOTYPE];IS_GLOBAL&&(source=name);for(key in source)own=!IS_FORCED&&target&&key in target,own&&key in exports||(out=own?target[key]:source[key],exports[key]=IS_GLOBAL&&"function"!=typeof target[key]?source[key]:IS_BIND&&own?ctx(out,global):IS_WRAP&&target[key]==out?function(C){var F=function(param){return this instanceof C?new C(param):C(param)};return F[PROTOTYPE]=C[PROTOTYPE],F}(out):IS_PROTO&&"function"==typeof out?ctx(Function.call,out):out,IS_PROTO&&((exports[PROTOTYPE]||(exports[PROTOTYPE]={}))[key]=out))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,module.exports=$export},function(module,exports){var global=module.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=global)},function(module,exports){var core=module.exports={version:"1.2.6"};"number"==typeof __e&&(__e=core)},function(module,exports,__webpack_require__){var aFunction=__webpack_require__(9);module.exports=function(fn,that,length){if(aFunction(fn),void 0===that)return fn;switch(length){case 1:return function(a){return fn.call(that,a)};case 2:return function(a,b){return fn.call(that,a,b)};case 3:return function(a,b,c){return fn.call(that,a,b,c)}}return function(){return fn.apply(that,arguments)}}},function(module,exports){module.exports=function(it){if("function"!=typeof it)throw TypeError(it+" is not a function!");return it}},function(module,exports,__webpack_require__){var $=__webpack_require__(11),toObject=__webpack_require__(12),IObject=__webpack_require__(14);module.exports=__webpack_require__(16)(function(){var a=Object.assign,A={},B={},S=Symbol(),K="abcdefghijklmnopqrst";return A[S]=7,K.split("").forEach(function(k){B[k]=k}),7!=a({},A)[S]||Object.keys(a({},B)).join("")!=K})?function(target,source){for(var T=toObject(target),$$=arguments,$$len=$$.length,index=1,getKeys=$.getKeys,getSymbols=$.getSymbols,isEnum=$.isEnum;$$len>index;)for(var key,S=IObject($$[index++]),keys=getSymbols?getKeys(S).concat(getSymbols(S)):getKeys(S),length=keys.length,j=0;length>j;)isEnum.call(S,key=keys[j++])&&(T[key]=S[key]);return T}:Object.assign},function(module,exports){var $Object=Object;module.exports={create:$Object.create,getProto:$Object.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:$Object.getOwnPropertyDescriptor,setDesc:$Object.defineProperty,setDescs:$Object.defineProperties,getKeys:$Object.keys,getNames:$Object.getOwnPropertyNames,getSymbols:$Object.getOwnPropertySymbols,each:[].forEach}},function(module,exports,__webpack_require__){var defined=__webpack_require__(13);module.exports=function(it){return Object(defined(it))}},function(module,exports){module.exports=function(it){if(void 0==it)throw TypeError("Can't call method on "+it);return it}},function(module,exports,__webpack_require__){var cof=__webpack_require__(15);module.exports=Object("z").propertyIsEnumerable(0)?Object:function(it){return"String"==cof(it)?it.split(""):Object(it)}},function(module,exports){var toString={}.toString;module.exports=function(it){return toString.call(it).slice(8,-1)}},function(module,exports){module.exports=function(exec){try{return!!exec()}catch(e){return!0}}},function(module,exports){},function(module,exports,__webpack_require__){"use strict";var keys=__webpack_require__(19),canBeObject=function(obj){return"undefined"!=typeof obj&&null!==obj},assignShim=function(target,source1){if(!canBeObject(target))throw new TypeError("target must be an object");var s,source,i,props,objTarget=Object(target);for(s=1;s0&&!has.call(object,0))for(var i=0;i0)for(var j=0;j=0&&"[object Function]"===toStr.call(value.callee)),isArgs}},function(module,exports){!function(globals){if(!Array.prototype.find){var find=function(predicate){var list=Object(this),length=list.length<0?0:list.length>>>0;if(0!==length){if("function"!=typeof predicate||"[object Function]"!==Object.prototype.toString.call(predicate))throw new TypeError("Array#find: predicate must be a function");for(var value,thisArg=arguments[1],i=0;i=0?k=n:(k=len+n,k<0&&(k=0));for(var currentElement;k1)for(var i=1;i=0&&(item._idleTimeoutId=setTimeout(function(){item._onTimeout&&item._onTimeout()},msecs))},exports.setImmediate="function"==typeof setImmediate?setImmediate:function(fn){var id=nextImmediateId++,args=!(arguments.length<2)&&slice.call(arguments,1);return immediateIds[id]=!0,nextTick(function(){immediateIds[id]&&(args?fn.apply(null,args):fn.call(null),exports.clearImmediate(id))}),id},exports.clearImmediate="function"==typeof clearImmediate?clearImmediate:function(id){delete immediateIds[id]}}).call(exports,__webpack_require__(25).setImmediate,__webpack_require__(25).clearImmediate)},function(module,exports){module.exports=function(module){return module.webpackPolyfill||(module.deprecate=function(){},module.paths=[],module.children=[],module.webpackPolyfill=1),module}},function(module,exports){},function(module,exports){module.exports=function(){throw new Error("define cannot be used indirect")}},function(module,exports,__webpack_require__){"use strict";var _Object$keys=__webpack_require__(30)["default"],_=__webpack_require__(34),config=__webpack_require__(68),Dom=__webpack_require__(69),urlRegex=/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/,utils={getInstance:function(identifier){return _.isUndefined(identifier)?config.instances[0]:_.isString(identifier)?config.instances.find(function(editor){return editor.ID===identifier}):config.instances[identifier]},getInstanceBySelection:function(){return utils.getInstance(Dom.getClosest(window.getSelection().anchorNode.parentNode,".st-block").getAttribute("data-instance"))},getBlockBySelection:function(){return utils.getInstanceBySelection().findBlockById(Dom.getClosest(window.getSelection().anchorNode.parentNode,".st-block").id)},log:function(){!_.isUndefined(console)&&config.debug&&console.log.apply(console,arguments)},isURI:function(string){return urlRegex.test(string)},titleize:function(str){return null===str?"":(str=String(str).toLowerCase(),str.replace(/(?:^|\s|-)\S/g,function(c){return c.toUpperCase()}))},classify:function(str){return utils.titleize(String(str).replace(/[\W_]/g," ")).replace(/\s/g,"")},capitalize:function(string){return string.charAt(0).toUpperCase()+string.substring(1).toLowerCase()},flatten:function(obj){var x={};return(Array.isArray(obj)?obj:_Object$keys(obj)).forEach(function(i){x[i]=!0}),x},underscored:function(str){return str.trim().replace(/([a-z\d])([A-Z]+)/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()},reverse:function(str){return str.split("").reverse().join("")},toSlug:function(str){return str.toLowerCase().replace(/[^\w ]+/g,"").replace(/ +/g,"-")},leftTrim:function(str){return str.replace(/^\s+/,"")}};module.exports=utils},function(module,exports,__webpack_require__){module.exports={"default":__webpack_require__(31),__esModule:!0}},function(module,exports,__webpack_require__){__webpack_require__(32),module.exports=__webpack_require__(7).Object.keys},function(module,exports,__webpack_require__){var toObject=__webpack_require__(12);__webpack_require__(33)("keys",function($keys){return function(it){return $keys(toObject(it))}})},function(module,exports,__webpack_require__){var $export=__webpack_require__(5),core=__webpack_require__(7),fails=__webpack_require__(16);module.exports=function(KEY,exec){var fn=(core.Object||{})[KEY]||Object[KEY],exp={};exp[KEY]=exec(fn),$export($export.S+$export.F*fails(function(){fn(1)}),"Object",exp)}},function(module,exports,__webpack_require__){"use strict";exports.isEmpty=__webpack_require__(35),exports.isFunction=__webpack_require__(49),exports.isObject=__webpack_require__(43),exports.isString=__webpack_require__(54),exports.isUndefined=__webpack_require__(55),exports.result=__webpack_require__(56),exports.template=__webpack_require__(57),exports.uniqueId=__webpack_require__(67)},function(module,exports,__webpack_require__){function isEmpty(value){var result=!0;if(!value)return result;var className=toString.call(value),length=value.length;return className==arrayClass||className==stringClass||className==argsClass||className==objectClass&&"number"==typeof length&&isFunction(value.splice)?!length:(forOwn(value,function(){return result=!1}),result)}var forOwn=__webpack_require__(36),isFunction=__webpack_require__(49),argsClass="[object Arguments]",arrayClass="[object Array]",objectClass="[object Object]",stringClass="[object String]",objectProto=Object.prototype,toString=objectProto.toString;module.exports=isEmpty},function(module,exports,__webpack_require__){var baseCreateCallback=__webpack_require__(37),keys=__webpack_require__(52),objectTypes=__webpack_require__(44),forOwn=function(collection,callback,thisArg){var index,iterable=collection,result=iterable;if(!iterable)return result;if(!objectTypes[typeof iterable])return result;callback=callback&&"undefined"==typeof thisArg?callback:baseCreateCallback(callback,thisArg,3);for(var ownIndex=-1,ownProps=objectTypes[typeof iterable]&&keys(iterable),length=ownProps?ownProps.length:0;++ownIndex2?createWrapper(func,17,slice(arguments,2),null,thisArg):createWrapper(func,1,null,null,thisArg)}var createWrapper=__webpack_require__(39),slice=__webpack_require__(47);module.exports=bind},function(module,exports,__webpack_require__){function createWrapper(func,bitmask,partialArgs,partialRightArgs,thisArg,arity){var isBind=1&bitmask,isBindKey=2&bitmask,isCurry=4&bitmask,isPartial=16&bitmask,isPartialRight=32&bitmask;if(!isBindKey&&!isFunction(func))throw new TypeError;isPartial&&!partialArgs.length&&(bitmask&=-17,isPartial=partialArgs=!1),isPartialRight&&!partialRightArgs.length&&(bitmask&=-33,isPartialRight=partialRightArgs=!1);var bindData=func&&func.__bindData__;if(bindData&&bindData!==!0)return bindData=slice(bindData),bindData[2]&&(bindData[2]=slice(bindData[2])),bindData[3]&&(bindData[3]=slice(bindData[3])),!isBind||1&bindData[1]||(bindData[4]=thisArg),!isBind&&1&bindData[1]&&(bitmask|=8),!isCurry||4&bindData[1]||(bindData[5]=arity),isPartial&&push.apply(bindData[2]||(bindData[2]=[]),partialArgs),isPartialRight&&unshift.apply(bindData[3]||(bindData[3]=[]),partialRightArgs),bindData[1]|=bitmask,createWrapper.apply(null,bindData);var creater=1==bitmask||17===bitmask?baseBind:baseCreateWrapper;return creater([func,bitmask,partialArgs,partialRightArgs,thisArg,arity])}var baseBind=__webpack_require__(40),baseCreateWrapper=__webpack_require__(48),isFunction=__webpack_require__(49),slice=__webpack_require__(47),arrayRef=[],push=arrayRef.push,unshift=arrayRef.unshift;module.exports=createWrapper},function(module,exports,__webpack_require__){function baseBind(bindData){function bound(){if(partialArgs){var args=slice(partialArgs);push.apply(args,arguments)}if(this instanceof bound){var thisBinding=baseCreate(func.prototype),result=func.apply(thisBinding,args||arguments);return isObject(result)?result:thisBinding}return func.apply(thisArg,args||arguments)}var func=bindData[0],partialArgs=bindData[2],thisArg=bindData[4];return setBindData(bound,bindData),bound}var baseCreate=__webpack_require__(41),isObject=__webpack_require__(43),setBindData=__webpack_require__(46),slice=__webpack_require__(47),arrayRef=[],push=arrayRef.push;module.exports=baseBind},function(module,exports,__webpack_require__){(function(global){function baseCreate(prototype,properties){return isObject(prototype)?nativeCreate(prototype):{}}var isNative=__webpack_require__(42),isObject=__webpack_require__(43),nativeCreate=(__webpack_require__(45),isNative(nativeCreate=Object.create)&&nativeCreate);nativeCreate||(baseCreate=function(){function Object(){}return function(prototype){if(isObject(prototype)){Object.prototype=prototype;var result=new Object;Object.prototype=null}return result||global.Object()}}()),module.exports=baseCreate}).call(exports,function(){return this}())},function(module,exports){function isNative(value){return"function"==typeof value&&reNative.test(value)}var objectProto=Object.prototype,toString=objectProto.toString,reNative=RegExp("^"+String(toString).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$");module.exports=isNative},function(module,exports,__webpack_require__){function isObject(value){return!(!value||!objectTypes[typeof value])}var objectTypes=__webpack_require__(44);module.exports=isObject},function(module,exports){var objectTypes={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1};module.exports=objectTypes},function(module,exports){function noop(){}module.exports=noop},function(module,exports,__webpack_require__){var isNative=__webpack_require__(42),noop=__webpack_require__(45),descriptor={configurable:!1,enumerable:!1,value:null,writable:!1},defineProperty=function(){try{var o={},func=isNative(func=Object.defineProperty)&&func,result=func(o,o,o)&&func}catch(e){}return result}(),setBindData=defineProperty?function(func,value){descriptor.value=value,defineProperty(func,"__bindData__",descriptor)}:noop;module.exports=setBindData},function(module,exports){function slice(array,start,end){start||(start=0),"undefined"==typeof end&&(end=array?array.length:0);for(var index=-1,length=end-start||0,result=Array(length<0?0:length);++index":">",'"':""","'":"'"};module.exports=htmlEscapes},function(module,exports,__webpack_require__){var htmlEscapes=__webpack_require__(61),keys=__webpack_require__(52),reUnescapedHtml=RegExp("["+keys(htmlEscapes).join("")+"]","g");module.exports=reUnescapedHtml},function(module,exports){function escapeStringChar(match){return"\\"+stringEscapes[match]}var stringEscapes={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"};module.exports=escapeStringChar},function(module,exports){var reInterpolate=/<%=([\s\S]+?)%>/g;module.exports=reInterpolate},function(module,exports,__webpack_require__){var escape=__webpack_require__(59),reInterpolate=__webpack_require__(64),templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:reInterpolate,variable:"",imports:{_:{escape:escape}}};module.exports=templateSettings},function(module,exports,__webpack_require__){function values(object){for(var index=-1,props=keys(object),length=props.length,result=Array(length);++index','','<%= i18n.t("general:drop", { block: "" + _.result(block, "title") + "" }) %>',"
"].join("\n"),re_render_on_reorder:!1},paste_options={html:['"',' class="st-block__paste-input st-paste-block">'].join("")},upload_options={html:['','','',"
"].join("\n")};module.exports={debug:!1,scribeDebug:!1,skipValidation:!1,version:"0.4.0",language:"en",instances:[],defaults:{defaultType:!1,spinner:{className:"st-spinner",lines:9,length:8,width:3,radius:6,color:"#000",speed:1.4,trail:57,shadow:!1,left:"50%",top:"50%"},Block:{drop_options:drop_options,paste_options:paste_options,upload_options:upload_options},blockLimit:0,blockTypeLimits:{},required:[],uploadUrl:"/attachments",attachmentName:"attachment[name]",attachmentFile:"attachment[file]",attachmentUid:"attachment[uid]",baseImageUrl:"/sir-trevor-uploads/",iconUrl:"../src/icons/sir-trevor-icons.svg",errorsContainer:void 0,convertFromMarkdown:!0,formatBar:{commands:[{name:"Bold",title:"bold",iconName:"fmt-bold",cmd:"bold",keyCode:66,text:"B"},{name:"Italic",title:"italic",iconName:"fmt-italic",cmd:"italic",keyCode:73,text:"i"},{name:"Link",title:"link",iconName:"fmt-link",cmd:"linkPrompt",text:"link"},{name:"Unlink",title:"unlink",iconName:"fmt-unlink",cmd:"unlink",text:"link"},{name:"Heading",title:"heading",iconName:"fmt-heading",cmd:"heading",text:"heading"},{name:"Quote",title:"quote",iconName:"fmt-quote",cmd:"quote",text:"quote"}]},ajaxOptions:{headers:{}}}}},function(module,exports,__webpack_require__){"use strict";var _Object$create=__webpack_require__(70)["default"],_Object$keys=__webpack_require__(30)["default"],_=__webpack_require__(34),Dom=_Object$create(null);Dom.setAttributes=function(el){var attributes=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return attributes.html&&(el.innerHTML=_.result(attributes,"html"),delete attributes.html),attributes.text&&(el.textContent=attributes.text,delete attributes.text),_Object$keys(attributes).forEach(function(key){el.setAttribute(key,attributes[key])}),el},Dom.createElement=function(tagName){var attributes=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],el=document.createElement(tagName);return Dom.setAttributes(el,attributes),el},Dom.insertAfter=function(el,referenceNode){referenceNode.parentNode.insertBefore(el,referenceNode.nextSibling)},Dom.remove=function(el){el&&el.parentNode&&el.parentNode.removeChild(el)},Dom.replaceWith=function(el,referenceNode){Dom.remove(referenceNode),el.parentNode.replaceChild(referenceNode,el)},Dom.hide=function(el){el.style.display="none"},Dom.show=function(el){el.style.display=""},Dom.matches=function(proto){var matcher=proto.matchesSelector||proto.mozMatchesSelector||proto.msMatchesSelector||proto.oMatchesSelector||proto.webkitMatchesSelector||function(selector){for(var element=this,matches=(element.document||element.ownerDocument).querySelectorAll(selector),i=0;matches[i]&&matches[i]!==element;)i++;return!!matches[i]};return function(el,selector){return matcher.call(el,selector)}}(Element.prototype),Dom.getClosest=function(elem,selector){for(elem;elem&&elem!==document.body&&!Dom.matches(elem,selector);elem=elem.parentNode);return elem},Dom.wrap=function(toWrap,wrapper){return wrapper=wrapper||document.createElement("div"),toWrap.nextSibling?toWrap.parentNode.insertBefore(wrapper,toWrap.nextSibling):toWrap.parentNode.appendChild(wrapper),wrapper.appendChild(toWrap)},Dom.createDocumentFragmentFromString=function(html){var frag=document.createDocumentFragment(),elem=document.createElement("div");for(elem.innerHTML=html;elem.childNodes[0];)frag.appendChild(elem.childNodes[0]);return frag},module.exports=Dom},function(module,exports,__webpack_require__){module.exports={"default":__webpack_require__(71),__esModule:!0}},function(module,exports,__webpack_require__){var $=__webpack_require__(11);module.exports=function(P,D){return $.create(P,D)}},function(module,exports,__webpack_require__){"use strict";var _Object$keys=__webpack_require__(30)["default"],_=__webpack_require__(34),config=__webpack_require__(68),utils=__webpack_require__(29),Locales={en:{general:{"delete":"Delete?",drop:"Drag __block__ here",paste:"Or paste URL here",upload:"...or choose a file",close:"close",position:"Position",wait:"Please wait...",link:"Enter a link",yes:"Yes",no:"No"},errors:{title:"You have the following errors:",validation_fail:"__type__ block is invalid",block_empty:"__name__ must not be empty",type_missing:"You must have a block of type __type__",required_type_empty:"A required block type __type__ is empty",load_fail:"There was a problem loading the contents of the document"},blocks:{text:{title:"Text"},list:{title:"List"},quote:{title:"Quote",credit_field:"Credit"},image:{title:"Image",upload_error:"There was a problem with your upload"},video:{title:"Video"},tweet:{title:"Tweet",fetch_error:"There was a problem fetching your tweet"},embedly:{title:"Embedly",fetch_error:"There was a problem fetching your embed",key_missing:"An Embedly API key must be present"},heading:{title:"Heading"}}}};void 0===window.i18n?(utils.log("Using i18n stub"),window.i18n={t:function(key,options){var str,obj,part,i,parts=key.split(":");for(obj=Locales[config.language],i=0;i=0&&_Object$keys(options).forEach(function(opt){str=str.replace("__"+opt+"__",options[opt])}),str):""}}):(utils.log("Using i18next"),i18n.init({resStore:Locales,fallbackLng:config.language,ns:{namespaces:["general","blocks"],defaultNs:"general"}})),module.exports=Locales},function(module,exports,__webpack_require__){"use strict";module.exports=__webpack_require__(74)},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;!function(root,factory){__WEBPACK_AMD_DEFINE_RESULT__=function(){return root.Eventable=factory()}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}(this,function(){function once(func){var memo,times=2;return function(){return--times>0?memo=func.apply(this,arguments):func=null,memo}}function addListenMethod(method,implementation){Eventable[method]=function(obj,name,callback){var listeners=this._listeners||(this._listeners={}),id=obj._listenerId||(obj._listenerId=(new Date).getTime());return listeners[id]=obj,"object"==typeof name&&(callback=this),obj[implementation](name,callback,this),this}}var array=[],slice=array.slice,Eventable={on:function(name,callback,context){if(!eventsApi(this,"on",name,[callback,context])||!callback)return this;this._events||(this._events={});var events=this._events[name]||(this._events[name]=[]);return events.push({callback:callback,context:context,ctx:context||this}),this},once:function(name,callback,context){if(!eventsApi(this,"once",name,[callback,context])||!callback)return this;var self=this,func=once(function(){self.off(name,func),callback.apply(this,arguments)});return func._callback=callback,this.on(name,func,context)},off:function(name,callback,context){var retain,ev,events,names,i,l,j,k;if(!this._events||!eventsApi(this,"off",name,[callback,context]))return this;if(!name&&!callback&&!context)return this._events={},this;for(names=name?[name]:Object.keys(this._events),i=0,l=names.length;i-1?upcased:method}function Request(url,options){if(options=options||{},this.url=url,this.credentials=options.credentials||"omit",this.headers=new Headers(options.headers),this.method=normalizeMethod(options.method||"GET"),this.mode=options.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&options.body)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(options.body)}function decode(body){var form=new FormData;return body.trim().split("&").forEach(function(bytes){if(bytes){var split=bytes.split("="),name=split.shift().replace(/\+/g," "),value=split.join("=").replace(/\+/g," ");form.append(decodeURIComponent(name),decodeURIComponent(value))}}),form}function headers(xhr){var head=new Headers,pairs=xhr.getAllResponseHeaders().trim().split("\n");return pairs.forEach(function(header){var split=header.trim().split(":"),key=split.shift().trim(),value=split.join(":").trim();head.append(key,value)}),head}function Response(bodyInit,options){options||(options={}),this._initBody(bodyInit),this.type="default",this.url=null,this.status=options.status,this.ok=this.status>=200&&this.status<300,this.statusText=options.statusText,this.headers=options.headers instanceof Headers?options.headers:new Headers(options.headers),this.url=options.url||""}if(!self.fetch){Headers.prototype.append=function(name,value){name=normalizeName(name),value=normalizeValue(value);var list=this.map[name];list||(list=[],this.map[name]=list),list.push(value)},Headers.prototype["delete"]=function(name){delete this.map[normalizeName(name)]},Headers.prototype.get=function(name){var values=this.map[normalizeName(name)];return values?values[0]:null},Headers.prototype.getAll=function(name){return this.map[normalizeName(name)]||[]},Headers.prototype.has=function(name){return this.map.hasOwnProperty(normalizeName(name))},Headers.prototype.set=function(name,value){this.map[normalizeName(name)]=[normalizeValue(value)]},Headers.prototype.forEach=function(callback,thisArg){Object.getOwnPropertyNames(this.map).forEach(function(name){this.map[name].forEach(function(value){callback.call(thisArg,value,name,this)},this)},this)};var support={blob:"FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in self},methods=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];Body.call(Request.prototype),Body.call(Response.prototype),self.Headers=Headers,self.Request=Request,self.Response=Response,self.fetch=function(input,init){var request;return request=Request.prototype.isPrototypeOf(input)&&!init?input:new Request(input,init),new Promise(function(resolve,reject){function responseURL(){return"responseURL"in xhr?xhr.responseURL:/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())?xhr.getResponseHeader("X-Request-URL"):void 0}var xhr=new XMLHttpRequest;xhr.onload=function(){var status=1223===xhr.status?204:xhr.status;if(status<100||status>599)return void reject(new TypeError("Network request failed"));var options={status:status,statusText:xhr.statusText,headers:headers(xhr),url:responseURL()},body="response"in xhr?xhr.response:xhr.responseText;resolve(new Response(body,options))},xhr.onerror=function(){reject(new TypeError("Network request failed"))},xhr.open(request.method,request.url,!0),"include"===request.credentials&&(xhr.withCredentials=!0),"responseType"in xhr&&support.blob&&(xhr.responseType="blob"),request.headers.forEach(function(value,name){xhr.setRequestHeader(name,value)}),xhr.send("undefined"==typeof request._bodyInit?null:request._bodyInit)})},self.fetch.polyfill=!0}}()},function(module,exports){var count=0,jsonp=function(url,options){options=options||{};var script,timer,cleanup,cancel,promise,prefix=options.prefix||"__jp",param=options.param||"callback",timeout=options.timeout?options.timeout:15e3,target=document.getElementsByTagName("script")[0]||document.head,noop=function(){},id=prefix+count++;return cleanup=function(){script&&script.parentNode&&script.parentNode.removeChild(script),window[id]=noop,timer&&clearTimeout(timer)},promise=new Promise(function(resolve,reject){timeout&&(timer=setTimeout(function(){cleanup(),reject(new Error("Timeout"))},timeout)),window[id]=function(data){cleanup(),resolve(data)},url+=(~url.indexOf("?")?"&":"?")+param+"="+encodeURIComponent(id),url=url.replace("?&","?"),script=document.createElement("script"),script.src=url,target.parentNode.insertBefore(script,target),cancel=function(){window[id]&&(cleanup(),reject(new Error("Canceled")))}}),{promise:promise,cancel:cancel}};module.exports=jsonp},function(module,exports,__webpack_require__){"use strict";var _Promise=__webpack_require__(83)["default"],cancellablePromise=function(promise){var resolve,reject,proxyPromise=new _Promise(function(res,rej){resolve=res,reject=rej});return promise.then(function(value){proxyPromise.cancelled||resolve(value)},function(value){proxyPromise.cancelled||reject(value)}),proxyPromise.cancel=function(){this.cancelled=!0},proxyPromise};module.exports=cancellablePromise},function(module,exports,__webpack_require__){module.exports={"default":__webpack_require__(84),__esModule:!0}},function(module,exports,__webpack_require__){__webpack_require__(85),__webpack_require__(86),__webpack_require__(102),__webpack_require__(107),module.exports=__webpack_require__(7).Promise},function(module,exports){},function(module,exports,__webpack_require__){"use strict";var $at=__webpack_require__(87)(!0);__webpack_require__(89)(String,"String",function(iterated){this._t=String(iterated),this._i=0},function(){var point,O=this._t,index=this._i;return index>=O.length?{value:void 0,done:!0}:(point=$at(O,index),this._i+=point.length,{value:point,done:!1})})},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(88),defined=__webpack_require__(13);module.exports=function(TO_STRING){return function(that,pos){var a,b,s=String(defined(that)),i=toInteger(pos),l=s.length;return i<0||i>=l?TO_STRING?"":void 0:(a=s.charCodeAt(i),a<55296||a>56319||i+1===l||(b=s.charCodeAt(i+1))<56320||b>57343?TO_STRING?s.charAt(i):a:TO_STRING?s.slice(i,i+2):(a-55296<<10)+(b-56320)+65536)}}},function(module,exports){var ceil=Math.ceil,floor=Math.floor;module.exports=function(it){return isNaN(it=+it)?0:(it>0?floor:ceil)(it)}},function(module,exports,__webpack_require__){"use strict";var LIBRARY=__webpack_require__(90),$export=__webpack_require__(5),redefine=__webpack_require__(91),hide=__webpack_require__(92),has=__webpack_require__(95),Iterators=__webpack_require__(96),$iterCreate=__webpack_require__(97),setToStringTag=__webpack_require__(98),getProto=__webpack_require__(11).getProto,ITERATOR=__webpack_require__(99)("iterator"),BUGGY=!([].keys&&"next"in[].keys()),FF_ITERATOR="@@iterator",KEYS="keys",VALUES="values",returnThis=function(){return this};module.exports=function(Base,NAME,Constructor,next,DEFAULT,IS_SET,FORCED){$iterCreate(Constructor,NAME,next);var methods,key,getMethod=function(kind){if(!BUGGY&&kind in proto)return proto[kind];switch(kind){case KEYS:return function(){return new Constructor(this,kind)};case VALUES:return function(){return new Constructor(this,kind)}}return function(){return new Constructor(this,kind)}},TAG=NAME+" Iterator",DEF_VALUES=DEFAULT==VALUES,VALUES_BUG=!1,proto=Base.prototype,$native=proto[ITERATOR]||proto[FF_ITERATOR]||DEFAULT&&proto[DEFAULT],$default=$native||getMethod(DEFAULT);if($native){var IteratorPrototype=getProto($default.call(new Base));setToStringTag(IteratorPrototype,TAG,!0),!LIBRARY&&has(proto,FF_ITERATOR)&&hide(IteratorPrototype,ITERATOR,returnThis),DEF_VALUES&&$native.name!==VALUES&&(VALUES_BUG=!0,$default=function(){return $native.call(this)})}if(LIBRARY&&!FORCED||!BUGGY&&!VALUES_BUG&&proto[ITERATOR]||hide(proto,ITERATOR,$default),Iterators[NAME]=$default,Iterators[TAG]=returnThis,DEFAULT)if(methods={values:DEF_VALUES?$default:getMethod(VALUES),keys:IS_SET?$default:getMethod(KEYS),entries:DEF_VALUES?getMethod("entries"):$default},FORCED)for(key in methods)key in proto||redefine(proto,key,methods[key]);else $export($export.P+$export.F*(BUGGY||VALUES_BUG),NAME,methods);
+return methods}},function(module,exports){module.exports=!0},function(module,exports,__webpack_require__){module.exports=__webpack_require__(92)},function(module,exports,__webpack_require__){var $=__webpack_require__(11),createDesc=__webpack_require__(93);module.exports=__webpack_require__(94)?function(object,key,value){return $.setDesc(object,key,createDesc(1,value))}:function(object,key,value){return object[key]=value,object}},function(module,exports){module.exports=function(bitmap,value){return{enumerable:!(1&bitmap),configurable:!(2&bitmap),writable:!(4&bitmap),value:value}}},function(module,exports,__webpack_require__){module.exports=!__webpack_require__(16)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(module,exports){var hasOwnProperty={}.hasOwnProperty;module.exports=function(it,key){return hasOwnProperty.call(it,key)}},function(module,exports){module.exports={}},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(11),descriptor=__webpack_require__(93),setToStringTag=__webpack_require__(98),IteratorPrototype={};__webpack_require__(92)(IteratorPrototype,__webpack_require__(99)("iterator"),function(){return this}),module.exports=function(Constructor,NAME,next){Constructor.prototype=$.create(IteratorPrototype,{next:descriptor(1,next)}),setToStringTag(Constructor,NAME+" Iterator")}},function(module,exports,__webpack_require__){var def=__webpack_require__(11).setDesc,has=__webpack_require__(95),TAG=__webpack_require__(99)("toStringTag");module.exports=function(it,tag,stat){it&&!has(it=stat?it:it.prototype,TAG)&&def(it,TAG,{configurable:!0,value:tag})}},function(module,exports,__webpack_require__){var store=__webpack_require__(100)("wks"),uid=__webpack_require__(101),Symbol=__webpack_require__(6).Symbol;module.exports=function(name){return store[name]||(store[name]=Symbol&&Symbol[name]||(Symbol||uid)("Symbol."+name))}},function(module,exports,__webpack_require__){var global=__webpack_require__(6),SHARED="__core-js_shared__",store=global[SHARED]||(global[SHARED]={});module.exports=function(key){return store[key]||(store[key]={})}},function(module,exports){var id=0,px=Math.random();module.exports=function(key){return"Symbol(".concat(void 0===key?"":key,")_",(++id+px).toString(36))}},function(module,exports,__webpack_require__){__webpack_require__(103);var Iterators=__webpack_require__(96);Iterators.NodeList=Iterators.HTMLCollection=Iterators.Array},function(module,exports,__webpack_require__){"use strict";var addToUnscopables=__webpack_require__(104),step=__webpack_require__(105),Iterators=__webpack_require__(96),toIObject=__webpack_require__(106);module.exports=__webpack_require__(89)(Array,"Array",function(iterated,kind){this._t=toIObject(iterated),this._i=0,this._k=kind},function(){var O=this._t,kind=this._k,index=this._i++;return!O||index>=O.length?(this._t=void 0,step(1)):"keys"==kind?step(0,index):"values"==kind?step(0,O[index]):step(0,[index,O[index]])},"values"),Iterators.Arguments=Iterators.Array,addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries")},function(module,exports){module.exports=function(){}},function(module,exports){module.exports=function(done,value){return{value:value,done:!!done}}},function(module,exports,__webpack_require__){var IObject=__webpack_require__(14),defined=__webpack_require__(13);module.exports=function(it){return IObject(defined(it))}},function(module,exports,__webpack_require__){"use strict";var Wrapper,$=__webpack_require__(11),LIBRARY=__webpack_require__(90),global=__webpack_require__(6),ctx=__webpack_require__(8),classof=__webpack_require__(108),$export=__webpack_require__(5),isObject=__webpack_require__(109),anObject=__webpack_require__(110),aFunction=__webpack_require__(9),strictNew=__webpack_require__(111),forOf=__webpack_require__(112),setProto=__webpack_require__(117).set,same=__webpack_require__(118),SPECIES=__webpack_require__(99)("species"),speciesConstructor=__webpack_require__(119),asap=__webpack_require__(120),PROMISE="Promise",process=global.process,isNode="process"==classof(process),P=global[PROMISE],testResolve=function(sub){var test=new P(function(){});return sub&&(test.constructor=Object),P.resolve(test)===test},USE_NATIVE=function(){function P2(x){var self=new P(x);return setProto(self,P2.prototype),self}var works=!1;try{if(works=P&&P.resolve&&testResolve(),setProto(P2,P),P2.prototype=$.create(P.prototype,{constructor:{value:P2}}),P2.resolve(5).then(function(){})instanceof P2||(works=!1),works&&__webpack_require__(94)){var thenableThenGotten=!1;P.resolve($.setDesc({},"then",{get:function(){thenableThenGotten=!0}})),works=thenableThenGotten}}catch(e){works=!1}return works}(),sameConstructor=function(a,b){return!(!LIBRARY||a!==P||b!==Wrapper)||same(a,b)},getConstructor=function(C){var S=anObject(C)[SPECIES];return void 0!=S?S:C},isThenable=function(it){var then;return!(!isObject(it)||"function"!=typeof(then=it.then))&&then},PromiseCapability=function(C){var resolve,reject;this.promise=new C(function($$resolve,$$reject){if(void 0!==resolve||void 0!==reject)throw TypeError("Bad Promise constructor");resolve=$$resolve,reject=$$reject}),this.resolve=aFunction(resolve),this.reject=aFunction(reject)},perform=function(exec){try{exec()}catch(e){return{error:e}}},notify=function(record,isReject){if(!record.n){record.n=!0;var chain=record.c;asap(function(){for(var value=record.v,ok=1==record.s,i=0,run=function(reaction){var result,then,handler=ok?reaction.ok:reaction.fail,resolve=reaction.resolve,reject=reaction.reject;try{handler?(ok||(record.h=!0),result=handler===!0?value:handler(value),result===reaction.promise?reject(TypeError("Promise-chain cycle")):(then=isThenable(result))?then.call(result,resolve,reject):resolve(result)):reject(value)}catch(e){reject(e)}};chain.length>i;)run(chain[i++]);chain.length=0,record.n=!1,isReject&&setTimeout(function(){var handler,console,promise=record.p;isUnhandled(promise)&&(isNode?process.emit("unhandledRejection",value,promise):(handler=global.onunhandledrejection)?handler({promise:promise,reason:value}):(console=global.console)&&console.error&&console.error("Unhandled promise rejection",value)),record.a=void 0},1)})}},isUnhandled=function(promise){var reaction,record=promise._d,chain=record.a||record.c,i=0;if(record.h)return!1;for(;chain.length>i;)if(reaction=chain[i++],reaction.fail||!isUnhandled(reaction.promise))return!1;return!0},$reject=function(value){var record=this;record.d||(record.d=!0,record=record.r||record,record.v=value,record.s=2,record.a=record.c.slice(),notify(record,!0))},$resolve=function(value){var then,record=this;if(!record.d){record.d=!0,record=record.r||record;try{if(record.p===value)throw TypeError("Promise can't be resolved itself");(then=isThenable(value))?asap(function(){var wrapper={r:record,d:!1};try{then.call(value,ctx($resolve,wrapper,1),ctx($reject,wrapper,1))}catch(e){$reject.call(wrapper,e)}}):(record.v=value,record.s=1,notify(record,!1))}catch(e){$reject.call({r:record,d:!1},e)}}};USE_NATIVE||(P=function(executor){aFunction(executor);var record=this._d={p:strictNew(this,P,PROMISE),c:[],a:void 0,s:0,d:!1,v:void 0,h:!1,n:!1};try{executor(ctx($resolve,record,1),ctx($reject,record,1))}catch(err){$reject.call(record,err)}},__webpack_require__(125)(P.prototype,{then:function(onFulfilled,onRejected){var reaction=new PromiseCapability(speciesConstructor(this,P)),promise=reaction.promise,record=this._d;return reaction.ok="function"!=typeof onFulfilled||onFulfilled,reaction.fail="function"==typeof onRejected&&onRejected,record.c.push(reaction),record.a&&record.a.push(reaction),record.s&¬ify(record,!1),promise},"catch":function(onRejected){return this.then(void 0,onRejected)}})),$export($export.G+$export.W+$export.F*!USE_NATIVE,{Promise:P}),__webpack_require__(98)(P,PROMISE),__webpack_require__(126)(PROMISE),Wrapper=__webpack_require__(7)[PROMISE],$export($export.S+$export.F*!USE_NATIVE,PROMISE,{reject:function(r){var capability=new PromiseCapability(this),$$reject=capability.reject;return $$reject(r),capability.promise}}),$export($export.S+$export.F*(!USE_NATIVE||testResolve(!0)),PROMISE,{resolve:function(x){if(x instanceof P&&sameConstructor(x.constructor,this))return x;var capability=new PromiseCapability(this),$$resolve=capability.resolve;return $$resolve(x),capability.promise}}),$export($export.S+$export.F*!(USE_NATIVE&&__webpack_require__(127)(function(iter){P.all(iter)["catch"](function(){})})),PROMISE,{all:function(iterable){var C=getConstructor(this),capability=new PromiseCapability(C),resolve=capability.resolve,reject=capability.reject,values=[],abrupt=perform(function(){forOf(iterable,!1,values.push,values);var remaining=values.length,results=Array(remaining);remaining?$.each.call(values,function(promise,index){var alreadyCalled=!1;C.resolve(promise).then(function(value){alreadyCalled||(alreadyCalled=!0,results[index]=value,--remaining||resolve(results))},reject)}):resolve(results)});return abrupt&&reject(abrupt.error),capability.promise},race:function(iterable){var C=getConstructor(this),capability=new PromiseCapability(C),reject=capability.reject,abrupt=perform(function(){forOf(iterable,!1,function(promise){C.resolve(promise).then(capability.resolve,reject)})});return abrupt&&reject(abrupt.error),capability.promise}})},function(module,exports,__webpack_require__){var cof=__webpack_require__(15),TAG=__webpack_require__(99)("toStringTag"),ARG="Arguments"==cof(function(){return arguments}());module.exports=function(it){var O,T,B;return void 0===it?"Undefined":null===it?"Null":"string"==typeof(T=(O=Object(it))[TAG])?T:ARG?cof(O):"Object"==(B=cof(O))&&"function"==typeof O.callee?"Arguments":B}},function(module,exports){module.exports=function(it){return"object"==typeof it?null!==it:"function"==typeof it}},function(module,exports,__webpack_require__){var isObject=__webpack_require__(109);module.exports=function(it){if(!isObject(it))throw TypeError(it+" is not an object!");return it}},function(module,exports){module.exports=function(it,Constructor,name){if(!(it instanceof Constructor))throw TypeError(name+": use the 'new' operator!");return it}},function(module,exports,__webpack_require__){var ctx=__webpack_require__(8),call=__webpack_require__(113),isArrayIter=__webpack_require__(114),anObject=__webpack_require__(110),toLength=__webpack_require__(115),getIterFn=__webpack_require__(116);module.exports=function(iterable,entries,fn,that){var length,step,iterator,iterFn=getIterFn(iterable),f=ctx(fn,that,entries?2:1),index=0;if("function"!=typeof iterFn)throw TypeError(iterable+" is not iterable!");if(isArrayIter(iterFn))for(length=toLength(iterable.length);length>index;index++)entries?f(anObject(step=iterable[index])[0],step[1]):f(iterable[index]);else for(iterator=iterFn.call(iterable);!(step=iterator.next()).done;)call(iterator,f,step.value,entries)}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(110);module.exports=function(iterator,fn,value,entries){try{return entries?fn(anObject(value)[0],value[1]):fn(value)}catch(e){var ret=iterator["return"];throw void 0!==ret&&anObject(ret.call(iterator)),e}}},function(module,exports,__webpack_require__){var Iterators=__webpack_require__(96),ITERATOR=__webpack_require__(99)("iterator"),ArrayProto=Array.prototype;module.exports=function(it){return void 0!==it&&(Iterators.Array===it||ArrayProto[ITERATOR]===it)}},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(88),min=Math.min;module.exports=function(it){return it>0?min(toInteger(it),9007199254740991):0}},function(module,exports,__webpack_require__){var classof=__webpack_require__(108),ITERATOR=__webpack_require__(99)("iterator"),Iterators=__webpack_require__(96);module.exports=__webpack_require__(7).getIteratorMethod=function(it){if(void 0!=it)return it[ITERATOR]||it["@@iterator"]||Iterators[classof(it)]}},function(module,exports,__webpack_require__){var getDesc=__webpack_require__(11).getDesc,isObject=__webpack_require__(109),anObject=__webpack_require__(110),check=function(O,proto){if(anObject(O),!isObject(proto)&&null!==proto)throw TypeError(proto+": can't set as prototype!")};module.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(test,buggy,set){try{set=__webpack_require__(8)(Function.call,getDesc(Object.prototype,"__proto__").set,2),set(test,[]),buggy=!(test instanceof Array)}catch(e){buggy=!0}return function(O,proto){return check(O,proto),buggy?O.__proto__=proto:set(O,proto),O}}({},!1):void 0),check:check}},function(module,exports){module.exports=Object.is||function(x,y){return x===y?0!==x||1/x===1/y:x!=x&&y!=y}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(110),aFunction=__webpack_require__(9),SPECIES=__webpack_require__(99)("species");module.exports=function(O,D){var S,C=anObject(O).constructor;return void 0===C||void 0==(S=anObject(C)[SPECIES])?D:aFunction(S)}},function(module,exports,__webpack_require__){var head,last,notify,global=__webpack_require__(6),macrotask=__webpack_require__(121).set,Observer=global.MutationObserver||global.WebKitMutationObserver,process=global.process,Promise=global.Promise,isNode="process"==__webpack_require__(15)(process),flush=function(){var parent,domain,fn;for(isNode&&(parent=process.domain)&&(process.domain=null,parent.exit());head;)domain=head.domain,fn=head.fn,domain&&domain.enter(),fn(),domain&&domain.exit(),head=head.next;last=void 0,parent&&parent.enter()};if(isNode)notify=function(){process.nextTick(flush)};else if(Observer){var toggle=1,node=document.createTextNode("");new Observer(flush).observe(node,{characterData:!0}),notify=function(){node.data=toggle=-toggle}}else notify=Promise&&Promise.resolve?function(){Promise.resolve().then(flush)}:function(){macrotask.call(global,flush)};module.exports=function(fn){var task={fn:fn,next:void 0,domain:isNode&&process.domain};last&&(last.next=task),head||(head=task,notify()),last=task}},function(module,exports,__webpack_require__){var defer,channel,port,ctx=__webpack_require__(8),invoke=__webpack_require__(122),html=__webpack_require__(123),cel=__webpack_require__(124),global=__webpack_require__(6),process=global.process,setTask=global.setImmediate,clearTask=global.clearImmediate,MessageChannel=global.MessageChannel,counter=0,queue={},ONREADYSTATECHANGE="onreadystatechange",run=function(){var id=+this;if(queue.hasOwnProperty(id)){var fn=queue[id];delete queue[id],fn()}},listner=function(event){run.call(event.data)};setTask&&clearTask||(setTask=function(fn){for(var args=[],i=1;arguments.length>i;)args.push(arguments[i++]);return queue[++counter]=function(){invoke("function"==typeof fn?fn:Function(fn),args)},defer(counter),counter},clearTask=function(id){delete queue[id]},"process"==__webpack_require__(15)(process)?defer=function(id){process.nextTick(ctx(run,id,1))}:MessageChannel?(channel=new MessageChannel,port=channel.port2,channel.port1.onmessage=listner,defer=ctx(port.postMessage,port,1)):global.addEventListener&&"function"==typeof postMessage&&!global.importScripts?(defer=function(id){global.postMessage(id+"","*")},global.addEventListener("message",listner,!1)):defer=ONREADYSTATECHANGE in cel("script")?function(id){html.appendChild(cel("script"))[ONREADYSTATECHANGE]=function(){html.removeChild(this),run.call(id)}}:function(id){setTimeout(ctx(run,id,1),0)}),module.exports={set:setTask,clear:clearTask}},function(module,exports){module.exports=function(fn,args,that){var un=void 0===that;switch(args.length){case 0:return un?fn():fn.call(that);case 1:return un?fn(args[0]):fn.call(that,args[0]);case 2:return un?fn(args[0],args[1]):fn.call(that,args[0],args[1]);case 3:return un?fn(args[0],args[1],args[2]):fn.call(that,args[0],args[1],args[2]);case 4:return un?fn(args[0],args[1],args[2],args[3]):fn.call(that,args[0],args[1],args[2],args[3])}return fn.apply(that,args)}},function(module,exports,__webpack_require__){module.exports=__webpack_require__(6).document&&document.documentElement},function(module,exports,__webpack_require__){var isObject=__webpack_require__(109),document=__webpack_require__(6).document,is=isObject(document)&&isObject(document.createElement);module.exports=function(it){return is?document.createElement(it):{}}},function(module,exports,__webpack_require__){var redefine=__webpack_require__(91);module.exports=function(target,src){for(var key in src)redefine(target,key,src[key]);return target}},function(module,exports,__webpack_require__){"use strict";var core=__webpack_require__(7),$=__webpack_require__(11),DESCRIPTORS=__webpack_require__(94),SPECIES=__webpack_require__(99)("species");module.exports=function(KEY){var C=core[KEY];DESCRIPTORS&&C&&!C[SPECIES]&&$.setDesc(C,SPECIES,{configurable:!0,get:function(){return this}})}},function(module,exports,__webpack_require__){var ITERATOR=__webpack_require__(99)("iterator"),SAFE_CLOSING=!1;try{var riter=[7][ITERATOR]();riter["return"]=function(){SAFE_CLOSING=!0},Array.from(riter,function(){throw 2})}catch(e){}module.exports=function(exec,skipClosing){if(!skipClosing&&!SAFE_CLOSING)return!1;var safe=!1;try{var arr=[7],iter=arr[ITERATOR]();iter.next=function(){safe=!0},arr[ITERATOR]=function(){return iter},exec(arr)}catch(e){}return safe}},function(module,exports,__webpack_require__){"use strict";module.exports={Ajaxable:__webpack_require__(129),Controllable:__webpack_require__(130),Droppable:__webpack_require__(132),Fetchable:__webpack_require__(134),Pastable:__webpack_require__(135),Uploadable:__webpack_require__(136),MultiEditable:__webpack_require__(137),Textable:__webpack_require__(229)}},function(module,exports,__webpack_require__){"use strict";var utils=__webpack_require__(29);module.exports={mixinName:"Ajaxable",ajaxable:!0,initializeAjaxable:function(){this._queued=[]},addQueuedItem:function(name,deferred){utils.log("Adding queued item for "+this.blockID+" called "+name),this._queued.push({name:name,deferred:deferred})},removeQueuedItem:function(name){utils.log("Removing queued item for "+this.blockID+" called "+name),this._queued=this._queued.filter(function(queued){return queued.name!==name})},hasItemsInQueue:function(){return this._queued.length>0},resolveAllInQueue:function(){this._queued.forEach(function(item){utils.log("Aborting queued request: "+item.name),item.deferred.cancel()},this)}}},function(module,exports,__webpack_require__){"use strict";var _Object$keys=__webpack_require__(30)["default"],utils=__webpack_require__(29),config=__webpack_require__(68),Dom=__webpack_require__(69),Events=__webpack_require__(131);module.exports={mixinName:"Controllable",initializeControllable:function(){utils.log("Adding controllable to block "+this.blockID),this.inner.classList.add("st-block__inner--controllable"),this.control_ui=Dom.createElement("div",{"class":"st-block__control-ui"}),_Object$keys(this.controls).forEach(function(cmd){this.addUiControl(cmd,this.controls[cmd].bind(this))},this),this.inner.appendChild(this.control_ui)},getControlTemplate:function(cmd){return Dom.createElement("a",{"data-icon":cmd,"class":"st-icon st-block-control-ui-btn st-block-control-ui-btn--"+cmd,html:''})},addUiControl:function(cmd,handler){var _this=this;this.control_ui.appendChild(this.getControlTemplate(cmd)),Events.delegate(this.control_ui,".st-block-control-ui-btn--"+cmd,"click",function(e){_this.selectUiControl(cmd),handler(e)})},selectUiControl:function(cmd){var _this2=this,selectedClass="st-block-control-ui-btn--selected";_Object$keys(this.controls).forEach(function(control){_this2.getControlUiBtn(control).classList.remove(selectedClass)}),this.getControlUiBtn(cmd).classList.add(selectedClass)},getControlUiBtn:function(cmd){return this.control_ui.querySelector(".st-block-control-ui-btn--"+cmd)}}},function(module,exports,__webpack_require__){"use strict";var Dom=__webpack_require__(69),fixEvent=function(e,target){for(var prop,obj={},props={shared:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),mouseEvent:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),keyEvent:"char charCode key keyCode".split(" ")},rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,propsToCopy=rmouseEvent.test(e.type)?props.shared.concat(props.mouseEvent):rkeyEvent.test(e.type)?props.shared.concat(props.keyEvent):props.shared,i=0;i$/,""))},Scribe.prototype.getTextContent=function(){return this.el.textContent},Scribe.prototype.pushHistory=function(){var scribe=this;if(scribe.options.undo.enabled){var lastContentNoMarkers=scribe._lastItem.content.replace(/]*class="scribe-marker"[^>]*>[^<]*?<\/em>/g,"");if(scribe.getHTML()!==lastContentNoMarkers){var selection=new scribe.api.Selection;selection.placeMarkers();var content=scribe.getHTML();selection.removeMarkers();var previousItem=scribe.undoManager.item(scribe.undoManager.position);return(scribe._merge||scribe._forceMerge)&&previousItem&&scribe._lastItem==previousItem[0]?scribe._lastItem.content=content:(scribe._lastItem={previousItem:scribe._lastItem,content:content,scribe:scribe,execute:function(){},undo:function(){this.scribe.restoreFromHistory(this.previousItem)},redo:function(){this.scribe.restoreFromHistory(this)}},scribe.undoManager.transact(scribe._lastItem,!1)),clearTimeout(scribe._mergeTimer),scribe._merge=!0,scribe._mergeTimer=setTimeout(function(){scribe._merge=!1},scribe.options.undo.interval),!0}}return!1},Scribe.prototype.getCommand=function(commandName){return this.commands[commandName]||this.commandPatches[commandName]||new this.api.Command(commandName)},Scribe.prototype.restoreFromHistory=function(historyItem){this._lastItem=historyItem,this.setHTML(historyItem.content,!0);var selection=new this.api.Selection;selection.selectMarkers(),this.trigger("content-changed")},Scribe.prototype.allowsBlockElements=function(){return this.options.allowBlockElements},Scribe.prototype.setContent=function(content){this.allowsBlockElements()||(content+="
"),this.setHTML(content),this.trigger("content-changed")},Scribe.prototype.insertPlainText=function(plainText){this.insertHTML(""+this._plainTextFormatterFactory.format(plainText)+"
")},Scribe.prototype.insertHTML=function(html){this.getCommand("insertHTML").execute(this._htmlFormatterFactory.format(html))},Scribe.prototype.isDebugModeEnabled=function(){return this.options.debug},Scribe.prototype.registerHTMLFormatter=function(phase,formatter){this._htmlFormatterFactory.formatters[phase]=this._htmlFormatterFactory.formatters[phase].push(formatter)},Scribe.prototype.registerPlainTextFormatter=function(formatter){this._plainTextFormatterFactory.formatters=this._plainTextFormatterFactory.formatters.push(formatter)},FormatterFactory.prototype.format=function(html){var formatted=this.formatters.reduce(function(formattedData,formatter){return formatter(formattedData)},html);return formatted},HTMLFormatterFactory.prototype=Object.create(FormatterFactory.prototype),HTMLFormatterFactory.prototype.constructor=HTMLFormatterFactory,HTMLFormatterFactory.prototype.format=function(html){var formatters=this.formatters.sanitize.concat(this.formatters.normalize),formatted=formatters.reduce(function(formattedData,formatter){return formatter(formattedData)},html);return formatted},HTMLFormatterFactory.prototype.formatForExport=function(html){return this.formatters["export"].reduce(function(formattedData,formatter){return formatter(formattedData)},html)},Scribe}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(141)],__WEBPACK_AMD_DEFINE_RESULT__=function(assign){"use strict";return function(scribe){function TransactionManager(){this.history=[]}return assign(TransactionManager.prototype,{start:function(){this.history.push(1)},end:function(){this.history.pop(),0===this.history.length&&(scribe.pushHistory(),scribe.trigger("content-changed"))},run:function(transaction,forceMerge){this.start();try{transaction&&transaction()}finally{scribe._forceMerge=forceMerge===!0,this.end(),scribe._forceMerge=!1}}}),TransactionManager}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(142),__webpack_require__(158)],__WEBPACK_AMD_DEFINE_RESULT__=function(baseAssign,createAssigner){var assign=createAssigner(baseAssign);return assign}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(143),__webpack_require__(144)],__WEBPACK_AMD_DEFINE_RESULT__=function(baseCopy,keys){function baseAssign(object,source,customizer){var props=keys(source);if(!customizer)return baseCopy(source,object,props);for(var index=-1,length=props.length;++index-1&&value%1==0&&value<=MAX_SAFE_INTEGER}var MAX_SAFE_INTEGER=Math.pow(2,53)-1;return isLength}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(147),__webpack_require__(149)],__WEBPACK_AMD_DEFINE_RESULT__=function(escapeRegExp,isObjectLike){function isNative(value){return null!=value&&(objToString.call(value)==funcTag?reNative.test(fnToString.call(value)):isObjectLike(value)&&reHostCtor.test(value)||!1)}var funcTag="[object Function]",reHostCtor=/^\[object .+?Constructor\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,objToString=objectProto.toString,reNative=RegExp("^"+escapeRegExp(objToString).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return isNative}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(148)],__WEBPACK_AMD_DEFINE_RESULT__=function(baseToString){function escapeRegExp(string){return string=baseToString(string),string&&reHasRegExpChars.test(string)?string.replace(reRegExpChars,"\\$&"):string}var reRegExpChars=/[.*+?^${}()|[\]\/\\]/g,reHasRegExpChars=RegExp(reRegExpChars.source);return escapeRegExp}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){function baseToString(value){return"string"==typeof value?value:null==value?"":value+""}return baseToString}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){function isObjectLike(value){return value&&"object"==typeof value||!1}return isObjectLike}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){function isObject(value){var type=typeof value;return"function"==type||value&&"object"==type||!1}return isObject}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(152),__webpack_require__(153),__webpack_require__(154),__webpack_require__(145),__webpack_require__(155),__webpack_require__(156)],__WEBPACK_AMD_DEFINE_RESULT__=function(isArguments,isArray,isIndex,isLength,keysIn,support){function shimKeys(object){for(var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length,allowIndexes=length&&isLength(length)&&(isArray(object)||support.nonEnumArgs&&isArguments(object)),index=-1,result=[];++index-1&&value%1==0&&value0;++index3&&"function"==typeof customizer?(customizer=bindCallback(customizer,thisArg,5),length-=2):(customizer=length>2&&"function"==typeof thisArg?thisArg:null,length-=customizer?1:0),guard&&isIterateeCall(args[1],args[2],guard)&&(customizer=3==length?null:customizer,length=2);for(var index=0;++index
")}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(165)],__WEBPACK_AMD_DEFINE_RESULT__=function(Immutable){"use strict";return function(){return function(scribe){function wrapChildNodes(parentNode){var index=0;Immutable.List(parentNode.childNodes).filter(function(node){return node.nodeType===Node.TEXT_NODE||!nodeHelpers.isBlockElement(node)}).groupBy(function(node,key,list){return 0===key||node.previousSibling===list.get(key-1)?index:index+=1}).forEach(function(nodeGroup){nodeHelpers.wrap(nodeGroup.toArray(),document.createElement("p"))})}function traverse(parentNode){for(var node,i=0;node=parentNode.children[i++];)"BLOCKQUOTE"===node.tagName&&wrapChildNodes(node)}var nodeHelpers=scribe.node;scribe.registerHTMLFormatter("normalize",function(html){var bin=document.createElement("div");return bin.innerHTML=html,wrapChildNodes(bin),traverse(bin),bin.innerHTML})}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){!function(global,factory){module.exports=factory()}(this,function(){"use strict";function createClass(ctor,superClass){superClass&&(ctor.prototype=Object.create(superClass.prototype)),ctor.prototype.constructor=ctor}function Iterable(value){return isIterable(value)?value:Seq(value)}function KeyedIterable(value){return isKeyed(value)?value:KeyedSeq(value)}function IndexedIterable(value){return isIndexed(value)?value:IndexedSeq(value)}function SetIterable(value){return isIterable(value)&&!isAssociative(value)?value:SetSeq(value)}function isIterable(maybeIterable){return!(!maybeIterable||!maybeIterable[IS_ITERABLE_SENTINEL])}function isKeyed(maybeKeyed){return!(!maybeKeyed||!maybeKeyed[IS_KEYED_SENTINEL])}function isIndexed(maybeIndexed){return!(!maybeIndexed||!maybeIndexed[IS_INDEXED_SENTINEL])}function isAssociative(maybeAssociative){return isKeyed(maybeAssociative)||isIndexed(maybeAssociative)}function isOrdered(maybeOrdered){return!(!maybeOrdered||!maybeOrdered[IS_ORDERED_SENTINEL])}function MakeRef(ref){return ref.value=!1,ref}function SetRef(ref){ref&&(ref.value=!0)}function OwnerID(){}function arrCopy(arr,offset){offset=offset||0;for(var len=Math.max(0,arr.length-offset),newArr=new Array(len),ii=0;ii>>0;if(""+uint32Index!==index||4294967295===uint32Index)return NaN;index=uint32Index}return index<0?ensureSize(iter)+index:index}function returnTrue(){return!0}function wholeSlice(begin,end,size){return(0===begin||void 0!==size&&begin<=-size)&&(void 0===end||void 0!==size&&end>=size)}function resolveBegin(begin,size){return resolveIndex(begin,size,0)}function resolveEnd(end,size){return resolveIndex(end,size,size)}function resolveIndex(index,size,defaultIndex){return void 0===index?defaultIndex:index<0?Math.max(0,size+index):void 0===size?index:Math.min(size,index)}function Iterator(next){this.next=next}function iteratorValue(type,k,v,iteratorResult){var value=0===type?k:1===type?v:[k,v];return iteratorResult?iteratorResult.value=value:iteratorResult={value:value,done:!1},iteratorResult}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(maybeIterable){return!!getIteratorFn(maybeIterable)}function isIterator(maybeIterator){return maybeIterator&&"function"==typeof maybeIterator.next}function getIterator(iterable){var iteratorFn=getIteratorFn(iterable);return iteratorFn&&iteratorFn.call(iterable)}function getIteratorFn(iterable){var iteratorFn=iterable&&(REAL_ITERATOR_SYMBOL&&iterable[REAL_ITERATOR_SYMBOL]||iterable[FAUX_ITERATOR_SYMBOL]);if("function"==typeof iteratorFn)return iteratorFn}function isArrayLike(value){return value&&"number"==typeof value.length}function Seq(value){return null===value||void 0===value?emptySequence():isIterable(value)?value.toSeq():seqFromValue(value)}function KeyedSeq(value){return null===value||void 0===value?emptySequence().toKeyedSeq():isIterable(value)?isKeyed(value)?value.toSeq():value.fromEntrySeq():keyedSeqFromValue(value)}function IndexedSeq(value){return null===value||void 0===value?emptySequence():isIterable(value)?isKeyed(value)?value.entrySeq():value.toIndexedSeq():indexedSeqFromValue(value)}function SetSeq(value){return(null===value||void 0===value?emptySequence():isIterable(value)?isKeyed(value)?value.entrySeq():value:indexedSeqFromValue(value)).toSetSeq()}function ArraySeq(array){this._array=array,this.size=array.length}function ObjectSeq(object){var keys=Object.keys(object);this._object=object,this._keys=keys,this.size=keys.length}function IterableSeq(iterable){this._iterable=iterable,this.size=iterable.length||iterable.size}function IteratorSeq(iterator){this._iterator=iterator,this._iteratorCache=[]}function isSeq(maybeSeq){return!(!maybeSeq||!maybeSeq[IS_SEQ_SENTINEL])}function emptySequence(){return EMPTY_SEQ||(EMPTY_SEQ=new ArraySeq([]))}function keyedSeqFromValue(value){var seq=Array.isArray(value)?new ArraySeq(value).fromEntrySeq():isIterator(value)?new IteratorSeq(value).fromEntrySeq():hasIterator(value)?new IterableSeq(value).fromEntrySeq():"object"==typeof value?new ObjectSeq(value):void 0;if(!seq)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+value);return seq}function indexedSeqFromValue(value){var seq=maybeIndexedSeqFromValue(value);if(!seq)throw new TypeError("Expected Array or iterable object of values: "+value);return seq}function seqFromValue(value){var seq=maybeIndexedSeqFromValue(value)||"object"==typeof value&&new ObjectSeq(value);if(!seq)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+value);return seq}function maybeIndexedSeqFromValue(value){return isArrayLike(value)?new ArraySeq(value):isIterator(value)?new IteratorSeq(value):hasIterator(value)?new IterableSeq(value):void 0}function seqIterate(seq,fn,reverse,useKeys){var cache=seq._cache;if(cache){for(var maxIndex=cache.length-1,ii=0;ii<=maxIndex;ii++){var entry=cache[reverse?maxIndex-ii:ii];if(fn(entry[1],useKeys?entry[0]:ii,seq)===!1)return ii+1}return ii}return seq.__iterateUncached(fn,reverse)}function seqIterator(seq,type,reverse,useKeys){var cache=seq._cache;if(cache){var maxIndex=cache.length-1,ii=0;return new Iterator(function(){var entry=cache[reverse?maxIndex-ii:ii];return ii++>maxIndex?iteratorDone():iteratorValue(type,useKeys?entry[0]:ii-1,entry[1])})}return seq.__iteratorUncached(type,reverse)}function fromJS(json,converter){return converter?fromJSWith(converter,json,"",{"":json}):fromJSDefault(json)}function fromJSWith(converter,json,key,parentJSON){return Array.isArray(json)?converter.call(parentJSON,key,IndexedSeq(json).map(function(v,k){return fromJSWith(converter,v,k,json)})):isPlainObj(json)?converter.call(parentJSON,key,KeyedSeq(json).map(function(v,k){return fromJSWith(converter,v,k,json)})):json}function fromJSDefault(json){return Array.isArray(json)?IndexedSeq(json).map(fromJSDefault).toList():isPlainObj(json)?KeyedSeq(json).map(fromJSDefault).toMap():json}function isPlainObj(value){return value&&(value.constructor===Object||void 0===value.constructor)}function is(valueA,valueB){if(valueA===valueB||valueA!==valueA&&valueB!==valueB)return!0;if(!valueA||!valueB)return!1;if("function"==typeof valueA.valueOf&&"function"==typeof valueB.valueOf){if(valueA=valueA.valueOf(),valueB=valueB.valueOf(),valueA===valueB||valueA!==valueA&&valueB!==valueB)return!0;if(!valueA||!valueB)return!1}return!("function"!=typeof valueA.equals||"function"!=typeof valueB.equals||!valueA.equals(valueB))}function deepEqual(a,b){if(a===b)return!0;if(!isIterable(b)||void 0!==a.size&&void 0!==b.size&&a.size!==b.size||void 0!==a.__hash&&void 0!==b.__hash&&a.__hash!==b.__hash||isKeyed(a)!==isKeyed(b)||isIndexed(a)!==isIndexed(b)||isOrdered(a)!==isOrdered(b))return!1;if(0===a.size&&0===b.size)return!0;var notAssociative=!isAssociative(a);if(isOrdered(a)){var entries=a.entries();return b.every(function(v,k){var entry=entries.next().value;return entry&&is(entry[1],v)&&(notAssociative||is(entry[0],k))})&&entries.next().done}var flipped=!1;if(void 0===a.size)if(void 0===b.size)"function"==typeof a.cacheResult&&a.cacheResult();else{flipped=!0;var _=a;a=b,b=_}var allEqual=!0,bSize=b.__iterate(function(v,k){if(notAssociative?!a.has(v):flipped?!is(v,a.get(k,NOT_SET)):!is(a.get(k,NOT_SET),v))return allEqual=!1,!1});return allEqual&&a.size===bSize}function Repeat(value,times){if(!(this instanceof Repeat))return new Repeat(value,times);if(this._value=value,this.size=void 0===times?1/0:Math.max(0,times),0===this.size){if(EMPTY_REPEAT)return EMPTY_REPEAT;EMPTY_REPEAT=this}}function invariant(condition,error){if(!condition)throw new Error(error)}function Range(start,end,step){if(!(this instanceof Range))return new Range(start,end,step);if(invariant(0!==step,"Cannot step a Range by 0"),start=start||0,void 0===end&&(end=1/0),step=void 0===step?1:Math.abs(step),end>>1&1073741824|3221225471&i32}function hash(o){if(o===!1||null===o||void 0===o)return 0;if("function"==typeof o.valueOf&&(o=o.valueOf(),o===!1||null===o||void 0===o))return 0;if(o===!0)return 1;var type=typeof o;if("number"===type){var h=0|o;for(h!==o&&(h^=4294967295*o);o>4294967295;)o/=4294967295,h^=o;return smi(h)}if("string"===type)return o.length>STRING_HASH_CACHE_MIN_STRLEN?cachedHashString(o):hashString(o);if("function"==typeof o.hashCode)return o.hashCode();if("object"===type)return hashJSObj(o);if("function"==typeof o.toString)return hashString(o.toString());throw new Error("Value type "+type+" cannot be hashed.")}function cachedHashString(string){var hash=stringHashCache[string];return void 0===hash&&(hash=hashString(string),STRING_HASH_CACHE_SIZE===STRING_HASH_CACHE_MAX_SIZE&&(STRING_HASH_CACHE_SIZE=0,stringHashCache={}),STRING_HASH_CACHE_SIZE++,stringHashCache[string]=hash),hash}function hashString(string){for(var hash=0,ii=0;ii0)switch(node.nodeType){case 1:return node.uniqueID;case 9:return node.documentElement&&node.documentElement.uniqueID}}function assertNotInfinite(size){invariant(size!==1/0,"Cannot perform this action with an infinite size.")}function Map(value){return null===value||void 0===value?emptyMap():isMap(value)&&!isOrdered(value)?value:emptyMap().withMutations(function(map){var iter=KeyedIterable(value);assertNotInfinite(iter.size),iter.forEach(function(v,k){return map.set(k,v)})})}function isMap(maybeMap){return!(!maybeMap||!maybeMap[IS_MAP_SENTINEL])}function ArrayMapNode(ownerID,entries){this.ownerID=ownerID,this.entries=entries}function BitmapIndexedNode(ownerID,bitmap,nodes){this.ownerID=ownerID,this.bitmap=bitmap,this.nodes=nodes}function HashArrayMapNode(ownerID,count,nodes){this.ownerID=ownerID,this.count=count,this.nodes=nodes}function HashCollisionNode(ownerID,keyHash,entries){this.ownerID=ownerID,this.keyHash=keyHash,this.entries=entries}function ValueNode(ownerID,keyHash,entry){this.ownerID=ownerID,this.keyHash=keyHash,this.entry=entry}function MapIterator(map,type,reverse){this._type=type,this._reverse=reverse,this._stack=map._root&&mapIteratorFrame(map._root)}function mapIteratorValue(type,entry){return iteratorValue(type,entry[0],entry[1])}function mapIteratorFrame(node,prev){return{node:node,index:0,__prev:prev}}function makeMap(size,root,ownerID,hash){var map=Object.create(MapPrototype);return map.size=size,map._root=root,map.__ownerID=ownerID,map.__hash=hash,map.__altered=!1,map}function emptyMap(){return EMPTY_MAP||(EMPTY_MAP=makeMap(0))}function updateMap(map,k,v){var newRoot,newSize;if(map._root){var didChangeSize=MakeRef(CHANGE_LENGTH),didAlter=MakeRef(DID_ALTER);if(newRoot=updateNode(map._root,map.__ownerID,0,void 0,k,v,didChangeSize,didAlter),!didAlter.value)return map;newSize=map.size+(didChangeSize.value?v===NOT_SET?-1:1:0)}else{if(v===NOT_SET)return map;newSize=1,newRoot=new ArrayMapNode(map.__ownerID,[[k,v]])}return map.__ownerID?(map.size=newSize,map._root=newRoot,map.__hash=void 0,map.__altered=!0,map):newRoot?makeMap(newSize,newRoot):emptyMap()}function updateNode(node,ownerID,shift,keyHash,key,value,didChangeSize,didAlter){return node?node.update(ownerID,shift,keyHash,key,value,didChangeSize,didAlter):value===NOT_SET?node:(SetRef(didAlter),SetRef(didChangeSize),new ValueNode(ownerID,keyHash,[key,value]))}function isLeafNode(node){return node.constructor===ValueNode||node.constructor===HashCollisionNode}function mergeIntoNode(node,ownerID,shift,keyHash,entry){if(node.keyHash===keyHash)return new HashCollisionNode(ownerID,keyHash,[node.entry,entry]);var newNode,idx1=(0===shift?node.keyHash:node.keyHash>>>shift)&MASK,idx2=(0===shift?keyHash:keyHash>>>shift)&MASK,nodes=idx1===idx2?[mergeIntoNode(node,ownerID,shift+SHIFT,keyHash,entry)]:(newNode=new ValueNode(ownerID,keyHash,entry),idx1>>=1)expandedNodes[ii]=1&bitmap?nodes[count++]:void 0;return expandedNodes[including]=node,new HashArrayMapNode(ownerID,count+1,expandedNodes)}function mergeIntoMapWith(map,merger,iterables){for(var iters=[],ii=0;ii>1&1431655765,x=(858993459&x)+(x>>2&858993459),x=x+(x>>4)&252645135,x+=x>>8,x+=x>>16,127&x}function setIn(array,idx,val,canEdit){var newArray=canEdit?array:arrCopy(array);return newArray[idx]=val,newArray}function spliceIn(array,idx,val,canEdit){var newLen=array.length+1;if(canEdit&&idx+1===newLen)return array[idx]=val,array;for(var newArray=new Array(newLen),after=0,ii=0;ii0&&sizeleft?0:left-offset,to=right-offset;return to>SIZE&&(to=SIZE),function(){if(from===to)return DONE;var idx=reverse?--to:from++;return array&&array[idx]}}function iterateNode(node,level,offset){var values,array=node&&node.array,from=offset>left?0:left-offset>>level,to=(right-offset>>level)+1;return to>SIZE&&(to=SIZE),function(){for(;;){if(values){var value=values();if(value!==DONE)return value;values=null}if(from===to)return DONE;var idx=reverse?--to:from++;values=iterateNodeOrLeaf(array&&array[idx],level-SHIFT,offset+(idx<=list.size||index<0)return list.withMutations(function(list){index<0?setListBounds(list,index).set(0,value):setListBounds(list,0,index+1).set(index,value)});index+=list._origin;var newTail=list._tail,newRoot=list._root,didAlter=MakeRef(DID_ALTER);return index>=getTailOffset(list._capacity)?newTail=updateVNode(newTail,list.__ownerID,0,index,value,didAlter):newRoot=updateVNode(newRoot,list.__ownerID,list._level,index,value,didAlter),didAlter.value?list.__ownerID?(list._root=newRoot,list._tail=newTail,list.__hash=void 0,list.__altered=!0,list):makeList(list._origin,list._capacity,list._level,newRoot,newTail):list}function updateVNode(node,ownerID,level,index,value,didAlter){var idx=index>>>level&MASK,nodeHas=node&&idx0){var lowerNode=node&&node.array[idx],newLowerNode=updateVNode(lowerNode,ownerID,level-SHIFT,index,value,didAlter);return newLowerNode===lowerNode?node:(newNode=editableVNode(node,ownerID),newNode.array[idx]=newLowerNode,newNode)}return nodeHas&&node.array[idx]===value?node:(SetRef(didAlter),newNode=editableVNode(node,ownerID),void 0===value&&idx===newNode.array.length-1?newNode.array.pop():newNode.array[idx]=value,newNode)}function editableVNode(node,ownerID){return ownerID&&node&&ownerID===node.ownerID?node:new VNode(node?node.array.slice():[],ownerID)}function listNodeFor(list,rawIndex){if(rawIndex>=getTailOffset(list._capacity))return list._tail;if(rawIndex<1<0;)node=node.array[rawIndex>>>level&MASK],level-=SHIFT;return node}}function setListBounds(list,begin,end){void 0!==begin&&(begin=0|begin),void 0!==end&&(end=0|end);var owner=list.__ownerID||new OwnerID,oldOrigin=list._origin,oldCapacity=list._capacity,newOrigin=oldOrigin+begin,newCapacity=void 0===end?oldCapacity:end<0?oldCapacity+end:oldOrigin+end;if(newOrigin===oldOrigin&&newCapacity===oldCapacity)return list;if(newOrigin>=newCapacity)return list.clear();for(var newLevel=list._level,newRoot=list._root,offsetShift=0;newOrigin+offsetShift<0;)newRoot=new VNode(newRoot&&newRoot.array.length?[void 0,newRoot]:[],owner),newLevel+=SHIFT,offsetShift+=1<=1<oldTailOffset?new VNode([],owner):oldTail;if(oldTail&&newTailOffset>oldTailOffset&&newOriginSHIFT;level-=SHIFT){var idx=oldTailOffset>>>level&MASK;node=node.array[idx]=editableVNode(node.array[idx],owner)}node.array[oldTailOffset>>>SHIFT&MASK]=oldTail}if(newCapacity=newTailOffset)newOrigin-=newTailOffset,newCapacity-=newTailOffset,newLevel=SHIFT,newRoot=null,newTail=newTail&&newTail.removeBefore(owner,0,newOrigin);else if(newOrigin>oldOrigin||newTailOffset>>newLevel&MASK;if(beginIndex!==newTailOffset>>>newLevel&MASK)break;beginIndex&&(offsetShift+=(1<oldOrigin&&(newRoot=newRoot.removeBefore(owner,newLevel,newOrigin-offsetShift)),newRoot&&newTailOffsetmaxSize&&(maxSize=iter.size),isIterable(value)||(iter=iter.map(function(v){return fromJS(v)})),iters.push(iter)}return maxSize>list.size&&(list=list.setSize(maxSize)),mergeIntoCollectionWith(list,merger,iters)}function getTailOffset(size){return size>>SHIFT<=SIZE&&list.size>=2*map.size?(newList=list.filter(function(entry,idx){return void 0!==entry&&i!==idx}),newMap=newList.toKeyedSeq().map(function(entry){return entry[0]}).flip().toMap(),omap.__ownerID&&(newMap.__ownerID=newList.__ownerID=omap.__ownerID)):(newMap=map.remove(k),newList=i===list.size-1?list.pop():list.set(i,void 0))}else if(has){if(v===list.get(i)[1])return omap;newMap=map,newList=list.set(i,[k,v])}else newMap=map.set(k,list.size),newList=list.set(list.size,[k,v]);return omap.__ownerID?(omap.size=newMap.size,omap._map=newMap,omap._list=newList,omap.__hash=void 0,omap):makeOrderedMap(newMap,newList)}function ToKeyedSequence(indexed,useKeys){this._iter=indexed,this._useKeys=useKeys,this.size=indexed.size}function ToIndexedSequence(iter){this._iter=iter,this.size=iter.size}function ToSetSequence(iter){this._iter=iter,this.size=iter.size}function FromEntriesSequence(entries){this._iter=entries,this.size=entries.size}function flipFactory(iterable){var flipSequence=makeSequence(iterable);return flipSequence._iter=iterable,flipSequence.size=iterable.size,flipSequence.flip=function(){return iterable},flipSequence.reverse=function(){var reversedSequence=iterable.reverse.apply(this);return reversedSequence.flip=function(){return iterable.reverse()},reversedSequence},flipSequence.has=function(key){return iterable.includes(key)},flipSequence.includes=function(key){return iterable.has(key)},flipSequence.cacheResult=cacheResultThrough,flipSequence.__iterateUncached=function(fn,reverse){var this$0=this;return iterable.__iterate(function(v,k){return fn(k,v,this$0)!==!1},reverse)},flipSequence.__iteratorUncached=function(type,reverse){if(type===ITERATE_ENTRIES){var iterator=iterable.__iterator(type,reverse);return new Iterator(function(){var step=iterator.next();if(!step.done){var k=step.value[0];step.value[0]=step.value[1],step.value[1]=k}return step})}return iterable.__iterator(type===ITERATE_VALUES?ITERATE_KEYS:ITERATE_VALUES,reverse)},flipSequence}function mapFactory(iterable,mapper,context){var mappedSequence=makeSequence(iterable);return mappedSequence.size=iterable.size,mappedSequence.has=function(key){return iterable.has(key)},mappedSequence.get=function(key,notSetValue){var v=iterable.get(key,NOT_SET);return v===NOT_SET?notSetValue:mapper.call(context,v,key,iterable)},mappedSequence.__iterateUncached=function(fn,reverse){var this$0=this;return iterable.__iterate(function(v,k,c){return fn(mapper.call(context,v,k,c),k,this$0)!==!1},reverse)},mappedSequence.__iteratorUncached=function(type,reverse){var iterator=iterable.__iterator(ITERATE_ENTRIES,reverse);return new Iterator(function(){var step=iterator.next();if(step.done)return step;var entry=step.value,key=entry[0];return iteratorValue(type,key,mapper.call(context,entry[1],key,iterable),step)})},mappedSequence}function reverseFactory(iterable,useKeys){var reversedSequence=makeSequence(iterable);return reversedSequence._iter=iterable,reversedSequence.size=iterable.size,reversedSequence.reverse=function(){return iterable},iterable.flip&&(reversedSequence.flip=function(){var flipSequence=flipFactory(iterable);return flipSequence.reverse=function(){return iterable.flip()},flipSequence}),reversedSequence.get=function(key,notSetValue){return iterable.get(useKeys?key:-1-key,notSetValue)},reversedSequence.has=function(key){return iterable.has(useKeys?key:-1-key)},reversedSequence.includes=function(value){return iterable.includes(value)},reversedSequence.cacheResult=cacheResultThrough,reversedSequence.__iterate=function(fn,reverse){var this$0=this;return iterable.__iterate(function(v,k){return fn(v,k,this$0)},!reverse)},reversedSequence.__iterator=function(type,reverse){return iterable.__iterator(type,!reverse)},reversedSequence}function filterFactory(iterable,predicate,context,useKeys){var filterSequence=makeSequence(iterable);return useKeys&&(filterSequence.has=function(key){var v=iterable.get(key,NOT_SET);return v!==NOT_SET&&!!predicate.call(context,v,key,iterable)},filterSequence.get=function(key,notSetValue){var v=iterable.get(key,NOT_SET);return v!==NOT_SET&&predicate.call(context,v,key,iterable)?v:notSetValue}),filterSequence.__iterateUncached=function(fn,reverse){var this$0=this,iterations=0;return iterable.__iterate(function(v,k,c){if(predicate.call(context,v,k,c))return iterations++,fn(v,useKeys?k:iterations-1,this$0)},reverse),iterations},filterSequence.__iteratorUncached=function(type,reverse){var iterator=iterable.__iterator(ITERATE_ENTRIES,reverse),iterations=0;return new Iterator(function(){for(;;){var step=iterator.next();if(step.done)return step;var entry=step.value,key=entry[0],value=entry[1];if(predicate.call(context,value,key,iterable))return iteratorValue(type,useKeys?key:iterations++,value,step)}})},filterSequence}function countByFactory(iterable,grouper,context){var groups=Map().asMutable();return iterable.__iterate(function(v,k){groups.update(grouper.call(context,v,k,iterable),0,function(a){return a+1})}),groups.asImmutable()}function groupByFactory(iterable,grouper,context){var isKeyedIter=isKeyed(iterable),groups=(isOrdered(iterable)?OrderedMap():Map()).asMutable();iterable.__iterate(function(v,k){groups.update(grouper.call(context,v,k,iterable),function(a){return a=a||[],a.push(isKeyedIter?[k,v]:v),a})});var coerce=iterableClass(iterable);return groups.map(function(arr){return reify(iterable,coerce(arr))})}function sliceFactory(iterable,begin,end,useKeys){var originalSize=iterable.size;if(void 0!==begin&&(begin=0|begin),void 0!==end&&(end=0|end),wholeSlice(begin,end,originalSize))return iterable;var resolvedBegin=resolveBegin(begin,originalSize),resolvedEnd=resolveEnd(end,originalSize);if(resolvedBegin!==resolvedBegin||resolvedEnd!==resolvedEnd)return sliceFactory(iterable.toSeq().cacheResult(),begin,end,useKeys);var sliceSize,resolvedSize=resolvedEnd-resolvedBegin;resolvedSize===resolvedSize&&(sliceSize=resolvedSize<0?0:resolvedSize);var sliceSeq=makeSequence(iterable);return sliceSeq.size=0===sliceSize?sliceSize:iterable.size&&sliceSize||void 0,!useKeys&&isSeq(iterable)&&sliceSize>=0&&(sliceSeq.get=function(index,notSetValue){return index=wrapIndex(this,index),index>=0&&indexsliceSize)return iteratorDone();var step=iterator.next();return useKeys||type===ITERATE_VALUES?step:type===ITERATE_KEYS?iteratorValue(type,iterations-1,void 0,step):iteratorValue(type,iterations-1,step.value[1],step)})},sliceSeq}function takeWhileFactory(iterable,predicate,context){var takeSequence=makeSequence(iterable);return takeSequence.__iterateUncached=function(fn,reverse){var this$0=this;if(reverse)return this.cacheResult().__iterate(fn,reverse);var iterations=0;return iterable.__iterate(function(v,k,c){return predicate.call(context,v,k,c)&&++iterations&&fn(v,k,this$0)}),iterations},takeSequence.__iteratorUncached=function(type,reverse){var this$0=this;if(reverse)return this.cacheResult().__iterator(type,reverse);var iterator=iterable.__iterator(ITERATE_ENTRIES,reverse),iterating=!0;return new Iterator(function(){if(!iterating)return iteratorDone();var step=iterator.next();if(step.done)return step;var entry=step.value,k=entry[0],v=entry[1];return predicate.call(context,v,k,this$0)?type===ITERATE_ENTRIES?step:iteratorValue(type,k,v,step):(iterating=!1,iteratorDone())})},takeSequence}function skipWhileFactory(iterable,predicate,context,useKeys){var skipSequence=makeSequence(iterable);return skipSequence.__iterateUncached=function(fn,reverse){var this$0=this;if(reverse)return this.cacheResult().__iterate(fn,reverse);var isSkipping=!0,iterations=0;return iterable.__iterate(function(v,k,c){if(!isSkipping||!(isSkipping=predicate.call(context,v,k,c)))return iterations++,fn(v,useKeys?k:iterations-1,this$0)}),iterations},skipSequence.__iteratorUncached=function(type,reverse){var this$0=this;if(reverse)return this.cacheResult().__iterator(type,reverse);var iterator=iterable.__iterator(ITERATE_ENTRIES,reverse),skipping=!0,iterations=0;return new Iterator(function(){var step,k,v;do{if(step=iterator.next(),step.done)return useKeys||type===ITERATE_VALUES?step:type===ITERATE_KEYS?iteratorValue(type,iterations++,void 0,step):iteratorValue(type,iterations++,step.value[1],step);var entry=step.value;k=entry[0],v=entry[1],skipping&&(skipping=predicate.call(context,v,k,this$0))}while(skipping);return type===ITERATE_ENTRIES?step:iteratorValue(type,k,v,step)})},skipSequence}function concatFactory(iterable,values){var isKeyedIterable=isKeyed(iterable),iters=[iterable].concat(values).map(function(v){return isIterable(v)?isKeyedIterable&&(v=KeyedIterable(v)):v=isKeyedIterable?keyedSeqFromValue(v):indexedSeqFromValue(Array.isArray(v)?v:[v]),v}).filter(function(v){return 0!==v.size});if(0===iters.length)return iterable;if(1===iters.length){var singleton=iters[0];if(singleton===iterable||isKeyedIterable&&isKeyed(singleton)||isIndexed(iterable)&&isIndexed(singleton))return singleton}var concatSeq=new ArraySeq(iters);return isKeyedIterable?concatSeq=concatSeq.toKeyedSeq():isIndexed(iterable)||(concatSeq=concatSeq.toSetSeq()),concatSeq=concatSeq.flatten(!0),concatSeq.size=iters.reduce(function(sum,seq){if(void 0!==sum){var size=seq.size;if(void 0!==size)return sum+size}},0),concatSeq}function flattenFactory(iterable,depth,useKeys){var flatSequence=makeSequence(iterable);return flatSequence.__iterateUncached=function(fn,reverse){function flatDeep(iter,currentDepth){var this$0=this;iter.__iterate(function(v,k){return(!depth||currentDepth0}function zipWithFactory(keyIter,zipper,iters){var zipSequence=makeSequence(keyIter);return zipSequence.size=new ArraySeq(iters).map(function(i){return i.size}).min(),zipSequence.__iterate=function(fn,reverse){for(var step,iterator=this.__iterator(ITERATE_VALUES,reverse),iterations=0;!(step=iterator.next()).done&&fn(step.value,iterations++,this)!==!1;);return iterations},zipSequence.__iteratorUncached=function(type,reverse){var iterators=iters.map(function(i){return i=Iterable(i),getIterator(reverse?i.reverse():i)}),iterations=0,isDone=!1;return new Iterator(function(){var steps;return isDone||(steps=iterators.map(function(i){return i.next()}),isDone=steps.some(function(s){return s.done})),isDone?iteratorDone():iteratorValue(type,iterations++,zipper.apply(null,steps.map(function(s){return s.value})))})},zipSequence}function reify(iter,seq){return isSeq(iter)?seq:iter.constructor(seq)}function validateEntry(entry){if(entry!==Object(entry))throw new TypeError("Expected [K, V] tuple: "+entry)}function resolveSize(iter){return assertNotInfinite(iter.size),ensureSize(iter)}function iterableClass(iterable){return isKeyed(iterable)?KeyedIterable:isIndexed(iterable)?IndexedIterable:SetIterable}function makeSequence(iterable){return Object.create((isKeyed(iterable)?KeyedSeq:isIndexed(iterable)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(a,b){return a>b?1:ab?-1:0}function hashIterable(iterable){
+if(iterable.size===1/0)return 0;var ordered=isOrdered(iterable),keyed=isKeyed(iterable),h=ordered?1:0,size=iterable.__iterate(keyed?ordered?function(v,k){h=31*h+hashMerge(hash(v),hash(k))|0}:function(v,k){h=h+hashMerge(hash(v),hash(k))|0}:ordered?function(v){h=31*h+hash(v)|0}:function(v){h=h+hash(v)|0});return murmurHashOfSize(size,h)}function murmurHashOfSize(size,h){return h=imul(h,3432918353),h=imul(h<<15|h>>>-15,461845907),h=imul(h<<13|h>>>-13,5),h=(h+3864292196|0)^size,h=imul(h^h>>>16,2246822507),h=imul(h^h>>>13,3266489909),h=smi(h^h>>>16)}function hashMerge(a,b){return a^b+2654435769+(a<<6)+(a>>2)|0}var SLICE$0=Array.prototype.slice;createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var IS_ITERABLE_SENTINEL="@@__IMMUTABLE_ITERABLE__@@",IS_KEYED_SENTINEL="@@__IMMUTABLE_KEYED__@@",IS_INDEXED_SENTINEL="@@__IMMUTABLE_INDEXED__@@",IS_ORDERED_SENTINEL="@@__IMMUTABLE_ORDERED__@@",DELETE="delete",SHIFT=5,SIZE=1<maxIndex?iteratorDone():iteratorValue(type,ii,array[reverse?maxIndex-ii++:ii++])})},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(key,notSetValue){return void 0===notSetValue||this.has(key)?this._object[key]:notSetValue},ObjectSeq.prototype.has=function(key){return this._object.hasOwnProperty(key)},ObjectSeq.prototype.__iterate=function(fn,reverse){for(var object=this._object,keys=this._keys,maxIndex=keys.length-1,ii=0;ii<=maxIndex;ii++){var key=keys[reverse?maxIndex-ii:ii];if(fn(object[key],key,this)===!1)return ii+1}return ii},ObjectSeq.prototype.__iterator=function(type,reverse){var object=this._object,keys=this._keys,maxIndex=keys.length-1,ii=0;return new Iterator(function(){var key=keys[reverse?maxIndex-ii:ii];return ii++>maxIndex?iteratorDone():iteratorValue(type,key,object[key])})},ObjectSeq.prototype[IS_ORDERED_SENTINEL]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(fn,reverse){if(reverse)return this.cacheResult().__iterate(fn,reverse);var iterable=this._iterable,iterator=getIterator(iterable),iterations=0;if(isIterator(iterator))for(var step;!(step=iterator.next()).done&&fn(step.value,iterations++,this)!==!1;);return iterations},IterableSeq.prototype.__iteratorUncached=function(type,reverse){if(reverse)return this.cacheResult().__iterator(type,reverse);var iterable=this._iterable,iterator=getIterator(iterable);if(!isIterator(iterator))return new Iterator(iteratorDone);var iterations=0;return new Iterator(function(){var step=iterator.next();return step.done?step:iteratorValue(type,iterations++,step.value)})},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(fn,reverse){if(reverse)return this.cacheResult().__iterate(fn,reverse);for(var iterator=this._iterator,cache=this._iteratorCache,iterations=0;iterations=cache.length){var step=iterator.next();if(step.done)return step;cache[iterations]=step.value}return iteratorValue(type,iterations,cache[iterations++])})};var EMPTY_SEQ;createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Repeat.prototype.get=function(index,notSetValue){return this.has(index)?this._value:notSetValue},Repeat.prototype.includes=function(searchValue){return is(this._value,searchValue)},Repeat.prototype.slice=function(begin,end){var size=this.size;return wholeSlice(begin,end,size)?this:new Repeat(this._value,resolveEnd(end,size)-resolveBegin(begin,size))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(searchValue){return is(this._value,searchValue)?0:-1},Repeat.prototype.lastIndexOf=function(searchValue){return is(this._value,searchValue)?this.size:-1},Repeat.prototype.__iterate=function(fn,reverse){for(var ii=0;ii1?" by "+this._step:"")+" ]"},Range.prototype.get=function(index,notSetValue){return this.has(index)?this._start+wrapIndex(this,index)*this._step:notSetValue},Range.prototype.includes=function(searchValue){var possibleIndex=(searchValue-this._start)/this._step;return possibleIndex>=0&&possibleIndex=0&&indexmaxIndex?iteratorDone():iteratorValue(type,ii++,v)})},Range.prototype.equals=function(other){return other instanceof Range?this._start===other._start&&this._end===other._end&&this._step===other._step:deepEqual(this,other)};var EMPTY_RANGE;createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var weakMap,imul="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(a,b){a=0|a,b=0|b;var c=65535&a,d=65535&b;return c*d+((a>>>16)*d+c*(b>>>16)<<16>>>0)|0},isExtensible=Object.isExtensible,canDefineProperty=function(){try{return Object.defineProperty({},"@",{}),!0}catch(e){return!1}}(),usingWeakMap="function"==typeof WeakMap;usingWeakMap&&(weakMap=new WeakMap);var objHashUID=0,UID_HASH_KEY="__immutablehash__";"function"==typeof Symbol&&(UID_HASH_KEY=Symbol(UID_HASH_KEY));var STRING_HASH_CACHE_MIN_STRLEN=16,STRING_HASH_CACHE_MAX_SIZE=255,STRING_HASH_CACHE_SIZE=0,stringHashCache={};createClass(Map,KeyedCollection),Map.prototype.toString=function(){return this.__toString("Map {","}")},Map.prototype.get=function(k,notSetValue){return this._root?this._root.get(0,void 0,k,notSetValue):notSetValue},Map.prototype.set=function(k,v){return updateMap(this,k,v)},Map.prototype.setIn=function(keyPath,v){return this.updateIn(keyPath,NOT_SET,function(){return v})},Map.prototype.remove=function(k){return updateMap(this,k,NOT_SET)},Map.prototype.deleteIn=function(keyPath){return this.updateIn(keyPath,function(){return NOT_SET})},Map.prototype.update=function(k,notSetValue,updater){return 1===arguments.length?k(this):this.updateIn([k],notSetValue,updater)},Map.prototype.updateIn=function(keyPath,notSetValue,updater){updater||(updater=notSetValue,notSetValue=void 0);var updatedValue=updateInDeepMap(this,forceIterator(keyPath),notSetValue,updater);return updatedValue===NOT_SET?void 0:updatedValue},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(merger){var iters=SLICE$0.call(arguments,1);return mergeIntoMapWith(this,merger,iters)},Map.prototype.mergeIn=function(keyPath){var iters=SLICE$0.call(arguments,1);return this.updateIn(keyPath,emptyMap(),function(m){return"function"==typeof m.merge?m.merge.apply(m,iters):iters[iters.length-1]})},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(merger){var iters=SLICE$0.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(merger),iters)},Map.prototype.mergeDeepIn=function(keyPath){var iters=SLICE$0.call(arguments,1);return this.updateIn(keyPath,emptyMap(),function(m){return"function"==typeof m.mergeDeep?m.mergeDeep.apply(m,iters):iters[iters.length-1]})},Map.prototype.sort=function(comparator){return OrderedMap(sortFactory(this,comparator))},Map.prototype.sortBy=function(mapper,comparator){return OrderedMap(sortFactory(this,comparator,mapper))},Map.prototype.withMutations=function(fn){var mutable=this.asMutable();return fn(mutable),mutable.wasAltered()?mutable.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(type,reverse){return new MapIterator(this,type,reverse)},Map.prototype.__iterate=function(fn,reverse){var this$0=this,iterations=0;return this._root&&this._root.iterate(function(entry){return iterations++,fn(entry[1],entry[0],this$0)},reverse),iterations},Map.prototype.__ensureOwner=function(ownerID){return ownerID===this.__ownerID?this:ownerID?makeMap(this.size,this._root,ownerID,this.__hash):(this.__ownerID=ownerID,this.__altered=!1,this)},Map.isMap=isMap;var IS_MAP_SENTINEL="@@__IMMUTABLE_MAP__@@",MapPrototype=Map.prototype;MapPrototype[IS_MAP_SENTINEL]=!0,MapPrototype[DELETE]=MapPrototype.remove,MapPrototype.removeIn=MapPrototype.deleteIn,ArrayMapNode.prototype.get=function(shift,keyHash,key,notSetValue){for(var entries=this.entries,ii=0,len=entries.length;ii=MAX_ARRAY_MAP_SIZE)return createNodes(ownerID,entries,key,value);var isEditable=ownerID&&ownerID===this.ownerID,newEntries=isEditable?entries:arrCopy(entries);return exists?removed?idx===len-1?newEntries.pop():newEntries[idx]=newEntries.pop():newEntries[idx]=[key,value]:newEntries.push([key,value]),isEditable?(this.entries=newEntries,this):new ArrayMapNode(ownerID,newEntries)}},BitmapIndexedNode.prototype.get=function(shift,keyHash,key,notSetValue){void 0===keyHash&&(keyHash=hash(key));var bit=1<<((0===shift?keyHash:keyHash>>>shift)&MASK),bitmap=this.bitmap;return 0===(bitmap&bit)?notSetValue:this.nodes[popCount(bitmap&bit-1)].get(shift+SHIFT,keyHash,key,notSetValue)},BitmapIndexedNode.prototype.update=function(ownerID,shift,keyHash,key,value,didChangeSize,didAlter){void 0===keyHash&&(keyHash=hash(key));var keyHashFrag=(0===shift?keyHash:keyHash>>>shift)&MASK,bit=1<=MAX_BITMAP_INDEXED_SIZE)return expandNodes(ownerID,nodes,bitmap,keyHashFrag,newNode);if(exists&&!newNode&&2===nodes.length&&isLeafNode(nodes[1^idx]))return nodes[1^idx];if(exists&&newNode&&1===nodes.length&&isLeafNode(newNode))return newNode;var isEditable=ownerID&&ownerID===this.ownerID,newBitmap=exists?newNode?bitmap:bitmap^bit:bitmap|bit,newNodes=exists?newNode?setIn(nodes,idx,newNode,isEditable):spliceOut(nodes,idx,isEditable):spliceIn(nodes,idx,newNode,isEditable);return isEditable?(this.bitmap=newBitmap,this.nodes=newNodes,this):new BitmapIndexedNode(ownerID,newBitmap,newNodes)},HashArrayMapNode.prototype.get=function(shift,keyHash,key,notSetValue){void 0===keyHash&&(keyHash=hash(key));var idx=(0===shift?keyHash:keyHash>>>shift)&MASK,node=this.nodes[idx];return node?node.get(shift+SHIFT,keyHash,key,notSetValue):notSetValue},HashArrayMapNode.prototype.update=function(ownerID,shift,keyHash,key,value,didChangeSize,didAlter){void 0===keyHash&&(keyHash=hash(key));var idx=(0===shift?keyHash:keyHash>>>shift)&MASK,removed=value===NOT_SET,nodes=this.nodes,node=nodes[idx];if(removed&&!node)return this;var newNode=updateNode(node,ownerID,shift+SHIFT,keyHash,key,value,didChangeSize,didAlter);if(newNode===node)return this;var newCount=this.count;if(node){if(!newNode&&(newCount--,newCount=0&&index>>level&MASK;if(originIndex>=this.array.length)return new VNode([],ownerID);var newChild,removingFirst=0===originIndex;if(level>0){var oldChild=this.array[originIndex];if(newChild=oldChild&&oldChild.removeBefore(ownerID,level-SHIFT,index),newChild===oldChild&&removingFirst)return this}if(removingFirst&&!newChild)return this;var editable=editableVNode(this,ownerID);if(!removingFirst)for(var ii=0;ii>>level&MASK;if(sizeIndex>=this.array.length)return this;var newChild;if(level>0){var oldChild=this.array[sizeIndex];if(newChild=oldChild&&oldChild.removeAfter(ownerID,level-SHIFT,index),newChild===oldChild&&sizeIndex===this.array.length-1)return this}var editable=editableVNode(this,ownerID);return editable.array.splice(sizeIndex+1),newChild&&(editable.array[sizeIndex]=newChild),editable};var EMPTY_LIST,DONE={};createClass(OrderedMap,Map),OrderedMap.of=function(){return this(arguments)},OrderedMap.prototype.toString=function(){return this.__toString("OrderedMap {","}")},OrderedMap.prototype.get=function(k,notSetValue){var index=this._map.get(k);return void 0!==index?this._list.get(index)[1]:notSetValue},OrderedMap.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):emptyOrderedMap()},OrderedMap.prototype.set=function(k,v){return updateOrderedMap(this,k,v)},OrderedMap.prototype.remove=function(k){return updateOrderedMap(this,k,NOT_SET)},OrderedMap.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},OrderedMap.prototype.__iterate=function(fn,reverse){var this$0=this;return this._list.__iterate(function(entry){return entry&&fn(entry[1],entry[0],this$0)},reverse)},OrderedMap.prototype.__iterator=function(type,reverse){return this._list.fromEntrySeq().__iterator(type,reverse)},OrderedMap.prototype.__ensureOwner=function(ownerID){if(ownerID===this.__ownerID)return this;var newMap=this._map.__ensureOwner(ownerID),newList=this._list.__ensureOwner(ownerID);return ownerID?makeOrderedMap(newMap,newList,ownerID,this.__hash):(this.__ownerID=ownerID,this._map=newMap,this._list=newList,this)},OrderedMap.isOrderedMap=isOrderedMap,OrderedMap.prototype[IS_ORDERED_SENTINEL]=!0,OrderedMap.prototype[DELETE]=OrderedMap.prototype.remove;var EMPTY_ORDERED_MAP;createClass(ToKeyedSequence,KeyedSeq),ToKeyedSequence.prototype.get=function(key,notSetValue){return this._iter.get(key,notSetValue)},ToKeyedSequence.prototype.has=function(key){return this._iter.has(key)},ToKeyedSequence.prototype.valueSeq=function(){return this._iter.valueSeq()},ToKeyedSequence.prototype.reverse=function(){var this$0=this,reversedSequence=reverseFactory(this,!0);return this._useKeys||(reversedSequence.valueSeq=function(){return this$0._iter.toSeq().reverse()}),reversedSequence},ToKeyedSequence.prototype.map=function(mapper,context){var this$0=this,mappedSequence=mapFactory(this,mapper,context);return this._useKeys||(mappedSequence.valueSeq=function(){return this$0._iter.toSeq().map(mapper,context)}),mappedSequence},ToKeyedSequence.prototype.__iterate=function(fn,reverse){var ii,this$0=this;return this._iter.__iterate(this._useKeys?function(v,k){return fn(v,k,this$0)}:(ii=reverse?resolveSize(this):0,function(v){return fn(v,reverse?--ii:ii++,this$0)}),reverse)},ToKeyedSequence.prototype.__iterator=function(type,reverse){if(this._useKeys)return this._iter.__iterator(type,reverse);var iterator=this._iter.__iterator(ITERATE_VALUES,reverse),ii=reverse?resolveSize(this):0;return new Iterator(function(){var step=iterator.next();return step.done?step:iteratorValue(type,reverse?--ii:ii++,step.value,step)})},ToKeyedSequence.prototype[IS_ORDERED_SENTINEL]=!0,createClass(ToIndexedSequence,IndexedSeq),ToIndexedSequence.prototype.includes=function(value){return this._iter.includes(value)},ToIndexedSequence.prototype.__iterate=function(fn,reverse){var this$0=this,iterations=0;return this._iter.__iterate(function(v){return fn(v,iterations++,this$0)},reverse)},ToIndexedSequence.prototype.__iterator=function(type,reverse){var iterator=this._iter.__iterator(ITERATE_VALUES,reverse),iterations=0;return new Iterator(function(){var step=iterator.next();return step.done?step:iteratorValue(type,iterations++,step.value,step)})},createClass(ToSetSequence,SetSeq),ToSetSequence.prototype.has=function(key){return this._iter.includes(key)},ToSetSequence.prototype.__iterate=function(fn,reverse){var this$0=this;return this._iter.__iterate(function(v){return fn(v,v,this$0)},reverse)},ToSetSequence.prototype.__iterator=function(type,reverse){var iterator=this._iter.__iterator(ITERATE_VALUES,reverse);return new Iterator(function(){var step=iterator.next();return step.done?step:iteratorValue(type,step.value,step.value,step)})},createClass(FromEntriesSequence,KeyedSeq),FromEntriesSequence.prototype.entrySeq=function(){return this._iter.toSeq()},FromEntriesSequence.prototype.__iterate=function(fn,reverse){var this$0=this;return this._iter.__iterate(function(entry){if(entry){validateEntry(entry);var indexedIterable=isIterable(entry);return fn(indexedIterable?entry.get(1):entry[1],indexedIterable?entry.get(0):entry[0],this$0)}},reverse)},FromEntriesSequence.prototype.__iterator=function(type,reverse){var iterator=this._iter.__iterator(ITERATE_VALUES,reverse);return new Iterator(function(){for(;;){var step=iterator.next();if(step.done)return step;var entry=step.value;if(entry){validateEntry(entry);var indexedIterable=isIterable(entry);return iteratorValue(type,indexedIterable?entry.get(0):entry[0],indexedIterable?entry.get(1):entry[1],step)}}})},ToIndexedSequence.prototype.cacheResult=ToKeyedSequence.prototype.cacheResult=ToSetSequence.prototype.cacheResult=FromEntriesSequence.prototype.cacheResult=cacheResultThrough,createClass(Record,KeyedCollection),Record.prototype.toString=function(){return this.__toString(recordName(this)+" {","}")},Record.prototype.has=function(k){return this._defaultValues.hasOwnProperty(k)},Record.prototype.get=function(k,notSetValue){if(!this.has(k))return notSetValue;var defaultVal=this._defaultValues[k];return this._map?this._map.get(k,defaultVal):defaultVal},Record.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var RecordType=this.constructor;return RecordType._empty||(RecordType._empty=makeRecord(this,emptyMap()))},Record.prototype.set=function(k,v){if(!this.has(k))throw new Error('Cannot set unknown key "'+k+'" on '+recordName(this));var newMap=this._map&&this._map.set(k,v);return this.__ownerID||newMap===this._map?this:makeRecord(this,newMap)},Record.prototype.remove=function(k){if(!this.has(k))return this;var newMap=this._map&&this._map.remove(k);return this.__ownerID||newMap===this._map?this:makeRecord(this,newMap)},Record.prototype.wasAltered=function(){return this._map.wasAltered()},Record.prototype.__iterator=function(type,reverse){var this$0=this;return KeyedIterable(this._defaultValues).map(function(_,k){return this$0.get(k)}).__iterator(type,reverse)},Record.prototype.__iterate=function(fn,reverse){var this$0=this;return KeyedIterable(this._defaultValues).map(function(_,k){return this$0.get(k)}).__iterate(fn,reverse)},Record.prototype.__ensureOwner=function(ownerID){if(ownerID===this.__ownerID)return this;var newMap=this._map&&this._map.__ensureOwner(ownerID);return ownerID?makeRecord(this,newMap,ownerID):(this.__ownerID=ownerID,this._map=newMap,this)};var RecordPrototype=Record.prototype;RecordPrototype[DELETE]=RecordPrototype.remove,RecordPrototype.deleteIn=RecordPrototype.removeIn=MapPrototype.removeIn,RecordPrototype.merge=MapPrototype.merge,RecordPrototype.mergeWith=MapPrototype.mergeWith,RecordPrototype.mergeIn=MapPrototype.mergeIn,RecordPrototype.mergeDeep=MapPrototype.mergeDeep,RecordPrototype.mergeDeepWith=MapPrototype.mergeDeepWith,RecordPrototype.mergeDeepIn=MapPrototype.mergeDeepIn,RecordPrototype.setIn=MapPrototype.setIn,RecordPrototype.update=MapPrototype.update,RecordPrototype.updateIn=MapPrototype.updateIn,RecordPrototype.withMutations=MapPrototype.withMutations,RecordPrototype.asMutable=MapPrototype.asMutable,RecordPrototype.asImmutable=MapPrototype.asImmutable,createClass(Set,SetCollection),Set.of=function(){return this(arguments)},Set.fromKeys=function(value){return this(KeyedIterable(value).keySeq())},Set.prototype.toString=function(){return this.__toString("Set {","}")},Set.prototype.has=function(value){return this._map.has(value)},Set.prototype.add=function(value){return updateSet(this,this._map.set(value,!0))},Set.prototype.remove=function(value){return updateSet(this,this._map.remove(value))},Set.prototype.clear=function(){return updateSet(this,this._map.clear())},Set.prototype.union=function(){var iters=SLICE$0.call(arguments,0);return iters=iters.filter(function(x){
+return 0!==x.size}),0===iters.length?this:0!==this.size||this.__ownerID||1!==iters.length?this.withMutations(function(set){for(var ii=0;ii=0;ii--)head={value:arguments[ii],next:head};return this.__ownerID?(this.size=newSize,this._head=head,this.__hash=void 0,this.__altered=!0,this):makeStack(newSize,head)},Stack.prototype.pushAll=function(iter){if(iter=IndexedIterable(iter),0===iter.size)return this;assertNotInfinite(iter.size);var newSize=this.size,head=this._head;return iter.reverse().forEach(function(value){newSize++,head={value:value,next:head}}),this.__ownerID?(this.size=newSize,this._head=head,this.__hash=void 0,this.__altered=!0,this):makeStack(newSize,head)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(iter){return this.pushAll(iter)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(begin,end){if(wholeSlice(begin,end,this.size))return this;var resolvedBegin=resolveBegin(begin,this.size),resolvedEnd=resolveEnd(end,this.size);if(resolvedEnd!==this.size)return IndexedCollection.prototype.slice.call(this,begin,end);for(var newSize=this.size-resolvedBegin,head=this._head;resolvedBegin--;)head=head.next;return this.__ownerID?(this.size=newSize,this._head=head,this.__hash=void 0,this.__altered=!0,this):makeStack(newSize,head)},Stack.prototype.__ensureOwner=function(ownerID){return ownerID===this.__ownerID?this:ownerID?makeStack(this.size,this._head,ownerID,this.__hash):(this.__ownerID=ownerID,this.__altered=!1,this)},Stack.prototype.__iterate=function(fn,reverse){if(reverse)return this.reverse().__iterate(fn);for(var iterations=0,node=this._head;node&&fn(node.value,iterations++,this)!==!1;)node=node.next;return iterations},Stack.prototype.__iterator=function(type,reverse){if(reverse)return this.reverse().__iterator(type);var iterations=0,node=this._head;return new Iterator(function(){if(node){var value=node.value;return node=node.next,iteratorValue(type,iterations++,value)}return iteratorDone()})},Stack.isStack=isStack;var IS_STACK_SENTINEL="@@__IMMUTABLE_STACK__@@",StackPrototype=Stack.prototype;StackPrototype[IS_STACK_SENTINEL]=!0,StackPrototype.withMutations=MapPrototype.withMutations,StackPrototype.asMutable=MapPrototype.asMutable,StackPrototype.asImmutable=MapPrototype.asImmutable,StackPrototype.wasAltered=MapPrototype.wasAltered;var EMPTY_STACK;Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var array=new Array(this.size||0);return this.valueSeq().__iterate(function(v,i){array[i]=v}),array},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map(function(value){return value&&"function"==typeof value.toJS?value.toJS():value}).__toJS()},toJSON:function(){return this.toSeq().map(function(value){return value&&"function"==typeof value.toJSON?value.toJSON():value}).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,(!0))},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var object={};return this.__iterate(function(v,k){object[k]=v}),object},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(head,tail){return 0===this.size?head+tail:head+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+tail},concat:function(){var values=SLICE$0.call(arguments,0);return reify(this,concatFactory(this,values))},includes:function(searchValue){return this.some(function(value){return is(value,searchValue)})},entries:function(){return this.__iterator(ITERATE_ENTRIES)},every:function(predicate,context){assertNotInfinite(this.size);var returnValue=!0;return this.__iterate(function(v,k,c){if(!predicate.call(context,v,k,c))return returnValue=!1,!1}),returnValue},filter:function(predicate,context){return reify(this,filterFactory(this,predicate,context,!0))},find:function(predicate,context,notSetValue){var entry=this.findEntry(predicate,context);return entry?entry[1]:notSetValue},findEntry:function(predicate,context){var found;return this.__iterate(function(v,k,c){if(predicate.call(context,v,k,c))return found=[k,v],!1}),found},findLastEntry:function(predicate,context){return this.toSeq().reverse().findEntry(predicate,context)},forEach:function(sideEffect,context){return assertNotInfinite(this.size),this.__iterate(context?sideEffect.bind(context):sideEffect)},join:function(separator){assertNotInfinite(this.size),separator=void 0!==separator?""+separator:",";var joined="",isFirst=!0;return this.__iterate(function(v){isFirst?isFirst=!1:joined+=separator,joined+=null!==v&&void 0!==v?v.toString():""}),joined},keys:function(){return this.__iterator(ITERATE_KEYS)},map:function(mapper,context){return reify(this,mapFactory(this,mapper,context))},reduce:function(reducer,initialReduction,context){assertNotInfinite(this.size);var reduction,useFirst;return arguments.length<2?useFirst=!0:reduction=initialReduction,this.__iterate(function(v,k,c){useFirst?(useFirst=!1,reduction=v):reduction=reducer.call(context,reduction,v,k,c)}),reduction},reduceRight:function(reducer,initialReduction,context){var reversed=this.toKeyedSeq().reverse();return reversed.reduce.apply(reversed,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(begin,end){return reify(this,sliceFactory(this,begin,end,!0))},some:function(predicate,context){return!this.every(not(predicate),context)},sort:function(comparator){return reify(this,sortFactory(this,comparator))},values:function(){return this.__iterator(ITERATE_VALUES)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(predicate,context){return ensureSize(predicate?this.toSeq().filter(predicate,context):this)},countBy:function(grouper,context){return countByFactory(this,grouper,context)},equals:function(other){return deepEqual(this,other)},entrySeq:function(){var iterable=this;if(iterable._cache)return new ArraySeq(iterable._cache);var entriesSequence=iterable.toSeq().map(entryMapper).toIndexedSeq();return entriesSequence.fromEntrySeq=function(){return iterable.toSeq()},entriesSequence},filterNot:function(predicate,context){return this.filter(not(predicate),context)},findLast:function(predicate,context,notSetValue){return this.toKeyedSeq().reverse().find(predicate,context,notSetValue)},first:function(){return this.find(returnTrue)},flatMap:function(mapper,context){return reify(this,flatMapFactory(this,mapper,context))},flatten:function(depth){return reify(this,flattenFactory(this,depth,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(searchKey,notSetValue){return this.find(function(_,key){return is(key,searchKey)},void 0,notSetValue)},getIn:function(searchKeyPath,notSetValue){for(var step,nested=this,iter=forceIterator(searchKeyPath);!(step=iter.next()).done;){var key=step.value;if(nested=nested&&nested.get?nested.get(key,NOT_SET):NOT_SET,nested===NOT_SET)return notSetValue}return nested},groupBy:function(grouper,context){return groupByFactory(this,grouper,context)},has:function(searchKey){return this.get(searchKey,NOT_SET)!==NOT_SET},hasIn:function(searchKeyPath){return this.getIn(searchKeyPath,NOT_SET)!==NOT_SET},isSubset:function(iter){return iter="function"==typeof iter.includes?iter:Iterable(iter),this.every(function(value){return iter.includes(value)})},isSuperset:function(iter){return iter="function"==typeof iter.isSubset?iter:Iterable(iter),iter.isSubset(this)},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(comparator){return maxFactory(this,comparator)},maxBy:function(mapper,comparator){return maxFactory(this,comparator,mapper)},min:function(comparator){return maxFactory(this,comparator?neg(comparator):defaultNegComparator)},minBy:function(mapper,comparator){return maxFactory(this,comparator?neg(comparator):defaultNegComparator,mapper)},rest:function(){return this.slice(1)},skip:function(amount){return this.slice(Math.max(0,amount))},skipLast:function(amount){return reify(this,this.toSeq().reverse().skip(amount).reverse())},skipWhile:function(predicate,context){return reify(this,skipWhileFactory(this,predicate,context,!0))},skipUntil:function(predicate,context){return this.skipWhile(not(predicate),context)},sortBy:function(mapper,comparator){return reify(this,sortFactory(this,comparator,mapper))},take:function(amount){return this.slice(0,Math.max(0,amount))},takeLast:function(amount){return reify(this,this.toSeq().reverse().take(amount).reverse())},takeWhile:function(predicate,context){return reify(this,takeWhileFactory(this,predicate,context))},takeUntil:function(predicate,context){return this.takeWhile(not(predicate),context)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var IterablePrototype=Iterable.prototype;IterablePrototype[IS_ITERABLE_SENTINEL]=!0,IterablePrototype[ITERATOR_SYMBOL]=IterablePrototype.values,IterablePrototype.__toJS=IterablePrototype.toArray,IterablePrototype.__toStringMapper=quoteString,IterablePrototype.inspect=IterablePrototype.toSource=function(){return this.toString()},IterablePrototype.chain=IterablePrototype.flatMap,IterablePrototype.contains=IterablePrototype.includes,function(){try{Object.defineProperty(IterablePrototype,"length",{get:function(){if(!Iterable.noLengthWarning){var stack;try{throw new Error}catch(error){stack=error.stack}if(stack.indexOf("_wrapObject")===-1)return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+stack),this.size}}})}catch(e){}}(),mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},findKey:function(predicate,context){var entry=this.findEntry(predicate,context);return entry&&entry[0]},findLastKey:function(predicate,context){return this.toSeq().reverse().findKey(predicate,context)},keyOf:function(searchValue){return this.findKey(function(value){return is(value,searchValue)})},lastKeyOf:function(searchValue){return this.findLastKey(function(value){return is(value,searchValue)})},mapEntries:function(mapper,context){var this$0=this,iterations=0;return reify(this,this.toSeq().map(function(v,k){return mapper.call(context,[k,v],iterations++,this$0)}).fromEntrySeq())},mapKeys:function(mapper,context){var this$0=this;return reify(this,this.toSeq().flip().map(function(k,v){return mapper.call(context,k,v,this$0)}).flip())}});var KeyedIterablePrototype=KeyedIterable.prototype;KeyedIterablePrototype[IS_KEYED_SENTINEL]=!0,KeyedIterablePrototype[ITERATOR_SYMBOL]=IterablePrototype.entries,KeyedIterablePrototype.__toJS=IterablePrototype.toObject,KeyedIterablePrototype.__toStringMapper=function(v,k){return JSON.stringify(k)+": "+quoteString(v)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,(!1))},filter:function(predicate,context){return reify(this,filterFactory(this,predicate,context,!1))},findIndex:function(predicate,context){var entry=this.findEntry(predicate,context);return entry?entry[0]:-1},indexOf:function(searchValue){var key=this.toKeyedSeq().keyOf(searchValue);return void 0===key?-1:key},lastIndexOf:function(searchValue){var key=this.toKeyedSeq().reverse().keyOf(searchValue);return void 0===key?-1:key},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(begin,end){return reify(this,sliceFactory(this,begin,end,!1))},splice:function(index,removeNum){var numArgs=arguments.length;if(removeNum=Math.max(0|removeNum,0),0===numArgs||2===numArgs&&!removeNum)return this;index=resolveBegin(index,index<0?this.count():this.size);var spliced=this.slice(0,index);return reify(this,1===numArgs?spliced:spliced.concat(arrCopy(arguments,2),this.slice(index+removeNum)))},findLastIndex:function(predicate,context){var key=this.toKeyedSeq().findLastKey(predicate,context);return void 0===key?-1:key},first:function(){return this.get(0)},flatten:function(depth){return reify(this,flattenFactory(this,depth,!1))},get:function(index,notSetValue){return index=wrapIndex(this,index),index<0||this.size===1/0||void 0!==this.size&&index>this.size?notSetValue:this.find(function(_,key){return key===index},void 0,notSetValue)},has:function(index){return index=wrapIndex(this,index),index>=0&&(void 0!==this.size?this.size===1/0||index0&&traverse(node)),node=node.nextElementSibling}var html5VoidElements=Immutable.Set.of("AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR");return function(){return function(scribe){scribe.registerHTMLFormatter("normalize",function(html){var bin=document.createElement("div");return bin.innerHTML=html,traverse(bin),bin.innerHTML})}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(168),__webpack_require__(169),__webpack_require__(165)],__WEBPACK_AMD_DEFINE_RESULT__=function(inlineElementNames,blockElementNames,Immutable){"use strict";function isBlockElement(node){return blockElementNames.includes(node.nodeName)}function isInlineElement(node){return inlineElementNames.includes(node.nodeName)}function isEmptyInlineElement(node){return!(node.children.length>1)&&((1!==node.children.length||""===node.textContent.trim())&&(0===node.children.length?""===node.textContent.trim():isEmptyInlineElement(node.children[0])))}function isText(node){return node.nodeType===Node.TEXT_NODE}function isEmptyTextNode(node){return isText(node)&&""===node.data}function isFragment(node){return node.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function isBefore(node1,node2){return node1.compareDocumentPosition(node2)&Node.DOCUMENT_POSITION_FOLLOWING}function elementHasClass(Node,className){return function(node){return node.nodeType===Node.ELEMENT_NODE&&node.className===className}}function isSelectionMarkerNode(node){return elementHasClass(Node,"scribe-marker")(node)}function isCaretPositionNode(node){return elementHasClass(Node,"caret-position")(node)}function firstDeepestChild(node){var fs=node.firstChild;return fs&&"BR"!==fs.nodeName?firstDeepestChild(fs):node}function insertAfter(newNode,referenceNode){return referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function removeNode(node){return node.parentNode.removeChild(node)}function getAncestor(node,rootElement,nodeFilter){function isTopContainerElement(element){return rootElement===element}if(!isTopContainerElement(node))for(var currentNode=node.parentNode;currentNode&&!isTopContainerElement(currentNode);){if(nodeFilter(currentNode))return currentNode;currentNode=currentNode.parentNode}}function nextSiblings(node){for(var all=Immutable.List();node=node.nextSibling;)all=all.push(node);return all}function wrap(nodes,parentNode){return nodes[0].parentNode.insertBefore(parentNode,nodes[0]),nodes.forEach(function(node){parentNode.appendChild(node)}),parentNode}function unwrap(node,childNode){for(;childNode.childNodes.length>0;)node.insertBefore(childNode.childNodes[0],childNode);node.removeChild(childNode)}function removeChromeArtifacts(parentElement){function isInlineWithStyle(parentStyle,element){return window.getComputedStyle(element).lineHeight===parentStyle.lineHeight}var nodes=Immutable.List(parentElement.querySelectorAll(inlineElementNames.map(function(elName){return elName+'[style*="line-height"]'}).join(",")));nodes=nodes.filter(isInlineWithStyle.bind(null,window.getComputedStyle(parentElement)));var emptySpans=Immutable.List();nodes.forEach(function(node){node.style.lineHeight=null,node.getAttribute("style")||node.removeAttribute("style"),"SPAN"===node.nodeName&&0===node.attributes.length&&(emptySpans=emptySpans.push(node))}),emptySpans.forEach(function(node){unwrap(node.parentNode,node)})}return{isInlineElement:isInlineElement,isBlockElement:isBlockElement,isEmptyInlineElement:isEmptyInlineElement,isText:isText,isEmptyTextNode:isEmptyTextNode,isFragment:isFragment,isBefore:isBefore,isSelectionMarkerNode:isSelectionMarkerNode,isCaretPositionNode:isCaretPositionNode,firstDeepestChild:firstDeepestChild,insertAfter:insertAfter,removeNode:removeNode,getAncestor:getAncestor,nextSiblings:nextSiblings,wrap:wrap,unwrap:unwrap,removeChromeArtifacts:removeChromeArtifacts,elementHasClass:elementHasClass}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(165)],__WEBPACK_AMD_DEFINE_RESULT__=function(Immutable){var inlineElementNames=Immutable.Set.of("B","BIG","I","SMALL","TT","ABBR","ACRONYM","CITE","CODE","DFN","EM","KBD","STRONG","SAMP","VAR","A","BDO","BR","IMG","MAP","OBJECT","Q","SCRIPT","SPAN","SUB","SUP","BUTTON","INPUT","LABEL","SELECT","TEXTAREA");return inlineElementNames}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(165)],__WEBPACK_AMD_DEFINE_RESULT__=function(Immutable){var blockElementNames=Immutable.Set.of("ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","CANVAS","DD","DIV","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","LI","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TD","TH","TFOOT","UL","VIDEO");return blockElementNames}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";function hasContent(rootNode){for(var treeWalker=document.createTreeWalker(rootNode,NodeFilter.SHOW_ALL,null,!1);treeWalker.nextNode();)if(treeWalker.currentNode&&(~["br"].indexOf(treeWalker.currentNode.nodeName.toLowerCase())||treeWalker.currentNode.length>0))return!0;return!1}return function(){return function(scribe){scribe.el.addEventListener("keydown",function(event){if(13===event.keyCode){var selection=new scribe.api.Selection,range=selection.range,blockNode=selection.getContaining(function(node){return"LI"===node.nodeName||/^(H[1-6])$/.test(node.nodeName)});blockNode||(event.preventDefault(),scribe.transactionManager.run(function(){"BR"===scribe.el.lastChild.nodeName&&scribe.el.removeChild(scribe.el.lastChild);var brNode=document.createElement("br");range.insertNode(brNode),range.collapse(!1);var contentToEndRange=range.cloneRange();contentToEndRange.setEndAfter(scribe.el.lastChild,0);var contentToEndFragment=contentToEndRange.cloneContents();if(!hasContent(contentToEndFragment)){var bogusBrNode=document.createElement("br");range.insertNode(bogusBrNode)}var newRange=range.cloneRange();newRange.setStartAfter(brNode,0),newRange.setEndAfter(brNode,0),selection.selection.removeAllRanges(),selection.selection.addRange(newRange)}))}}.bind(this)),""===scribe.getHTML().trim()&&scribe.setContent("")}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(172),__webpack_require__(173)],__WEBPACK_AMD_DEFINE_RESULT__=function(replaceNbspCharsFormatter,escapeHtmlCharactersFormatter){"use strict";return{replaceNbspCharsFormatter:replaceNbspCharsFormatter,escapeHtmlCharactersFormatter:escapeHtmlCharactersFormatter}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var nbspCharRegExp=/(\s| )+/g;scribe.registerHTMLFormatter("export",function(html){return html.replace(nbspCharRegExp," ")})}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(174)],__WEBPACK_AMD_DEFINE_RESULT__=function(escape){"use strict";return function(){return function(scribe){scribe.registerPlainTextFormatter(escape)}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(148),__webpack_require__(175)],__WEBPACK_AMD_DEFINE_RESULT__=function(baseToString,escapeHtmlChar){function escape(string){return string=baseToString(string),string&&reHasUnescapedHtml.test(string)?string.replace(reUnescapedHtml,escapeHtmlChar):string}var reUnescapedHtml=/[&<>"'`]/g,reHasUnescapedHtml=RegExp(reUnescapedHtml.source);return escape}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){function escapeHtmlChar(chr){return htmlEscapes[chr]}var htmlEscapes={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"};return escapeHtmlChar}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(177),__webpack_require__(165)],__WEBPACK_AMD_DEFINE_RESULT__=function(observeDomChanges,Immutable){"use strict";return function(){return function(scribe){var nodeHelpers=scribe.node;scribe.el.addEventListener("focus",function(){var selection=new scribe.api.Selection;if(selection.range){var isFirefoxBug=scribe.allowsBlockElements()&&selection.range.startContainer===scribe.el;if(isFirefoxBug){var focusElement=nodeHelpers.firstDeepestChild(scribe.el),range=selection.range;range.setStart(focusElement,0),range.setEnd(focusElement,0),selection.selection.removeAllRanges(),selection.selection.addRange(range)}}}.bind(scribe));var applyFormatters=function(){if(!scribe._skipFormatters){var selection=new scribe.api.Selection,isEditorActive=selection.range,runFormatters=function(){isEditorActive&&selection.placeMarkers(),scribe.setHTML(scribe._htmlFormatterFactory.format(scribe.getHTML())),selection.selectMarkers()}.bind(scribe);scribe.transactionManager.run(runFormatters)}delete scribe._skipFormatters}.bind(scribe);observeDomChanges(scribe.el,applyFormatters),scribe.allowsBlockElements()&&scribe.el.addEventListener("keydown",function(event){if(13===event.keyCode){var selection=new scribe.api.Selection,range=selection.range,headingNode=selection.getContaining(function(node){return/^(H[1-6])$/.test(node.nodeName)});if(headingNode&&range.collapsed){var contentToEndRange=range.cloneRange();contentToEndRange.setEndAfter(headingNode,0);var contentToEndFragment=contentToEndRange.cloneContents();""===contentToEndFragment.firstChild.textContent&&(event.preventDefault(),scribe.transactionManager.run(function(){var pNode=document.createElement("p"),brNode=document.createElement("br");pNode.appendChild(brNode),headingNode.parentNode.insertBefore(pNode,headingNode.nextElementSibling),range.setStart(pNode,0),range.setEnd(pNode,0),selection.selection.removeAllRanges(),selection.selection.addRange(range)}))}}}),scribe.allowsBlockElements()&&scribe.el.addEventListener("keydown",function(event){if(13===event.keyCode||8===event.keyCode){var selection=new scribe.api.Selection,range=selection.range;if(range.collapsed){var containerLIElement=selection.getContaining(function(node){return"LI"===node.nodeName});if(containerLIElement&&""===containerLIElement.textContent.trim()){event.preventDefault();var listNode=selection.getContaining(function(node){return"UL"===node.nodeName||"OL"===node.nodeName}),command=scribe.getCommand("OL"===listNode.nodeName?"insertOrderedList":"insertUnorderedList");command.event=event,command.execute()}}}}),scribe.el.addEventListener("paste",function(event){if(event.clipboardData&&event.clipboardData.types.length>0)event.preventDefault(),Immutable.List(event.clipboardData.types).includes("text/html")?scribe.insertHTML(event.clipboardData.getData("text/html")):scribe.insertPlainText(event.clipboardData.getData("text/plain"));else{var selection=new scribe.api.Selection;selection.placeMarkers();var bin=document.createElement("div");document.body.appendChild(bin),bin.setAttribute("contenteditable",!0),bin.focus(),setTimeout(function(){var data=bin.innerHTML;bin.parentNode.removeChild(bin),selection.selectMarkers(),scribe.el.focus(),
+scribe.insertHTML(data)},1)}})}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(167),__webpack_require__(178)],__WEBPACK_AMD_DEFINE_RESULT__=function(nodeHelpers,mutations){function hasRealMutation(n){return!nodeHelpers.isEmptyTextNode(n)&&!nodeHelpers.isSelectionMarkerNode(n)}function includeRealMutations(mutations){return mutations.some(function(mutation){return Array.prototype.some.call(mutation.addedNodes,hasRealMutation)||Array.prototype.some.call(mutation.removedNodes,hasRealMutation)})}function observeDomChanges(el,callback){var runningPostMutation=!1,observer=new MutationObserver(function(mutations){if(!runningPostMutation&&includeRealMutations(mutations)){runningPostMutation=!0;try{callback()}catch(e){throw e}finally{setTimeout(function(){runningPostMutation=!1},0)}}});return observer.observe(el,{childList:!0,subtree:!0}),observer}var maybeWindow="object"==typeof window?window:void 0,MutationObserver=mutations.determineMutationObserver(maybeWindow);return observeDomChanges}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){function determineMutationObserver(window){return"undefined"==typeof window?function(){return{observe:function(){}}}:window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}return{determineMutationObserver:determineMutationObserver}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(180),__webpack_require__(181),__webpack_require__(182),__webpack_require__(183),__webpack_require__(184),__webpack_require__(185),__webpack_require__(186)],__WEBPACK_AMD_DEFINE_RESULT__=function(boldCommand,indentCommand,insertHTMLCommand,insertListCommands,outdentCommand,createLinkCommand,events){"use strict";return{commands:{bold:boldCommand,indent:indentCommand,insertHTML:insertHTMLCommand,insertList:insertListCommands,outdent:outdentCommand,createLink:createLinkCommand},events:events}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var boldCommand=new scribe.api.CommandPatch("bold");boldCommand.queryEnabled=function(){var selection=new scribe.api.Selection,headingNode=selection.getContaining(function(node){return/^(H[1-6])$/.test(node.nodeName)});return scribe.api.CommandPatch.prototype.queryEnabled.apply(this,arguments)&&!headingNode},scribe.commandPatches.bold=boldCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";var INVISIBLE_CHAR="\ufeff";return function(){return function(scribe){var indentCommand=new scribe.api.CommandPatch("indent");indentCommand.execute=function(value){scribe.transactionManager.run(function(){var selection=new scribe.api.Selection,range=selection.range,isCaretOnNewLine="P"===range.commonAncestorContainer.nodeName&&"
"===range.commonAncestorContainer.innerHTML;if(isCaretOnNewLine){var textNode=document.createTextNode(INVISIBLE_CHAR);range.insertNode(textNode),range.setStart(textNode,0),range.setEnd(textNode,0),selection.selection.removeAllRanges(),selection.selection.addRange(range)}scribe.api.CommandPatch.prototype.execute.call(this,value),selection=new scribe.api.Selection;var blockquoteNode=selection.getContaining(function(node){return"BLOCKQUOTE"===node.nodeName});blockquoteNode&&blockquoteNode.removeAttribute("style")}.bind(this))},scribe.commandPatches.indent=indentCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var insertHTMLCommandPatch=new scribe.api.CommandPatch("insertHTML"),nodeHelpers=scribe.node;insertHTMLCommandPatch.execute=function(value){scribe.transactionManager.run(function(){scribe.api.CommandPatch.prototype.execute.call(this,value),nodeHelpers.removeChromeArtifacts(scribe.el)}.bind(this))},scribe.commandPatches.insertHTML=insertHTMLCommandPatch}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var nodeHelpers=scribe.node,InsertListCommandPatch=function(commandName){scribe.api.CommandPatch.call(this,commandName)};InsertListCommandPatch.prototype=Object.create(scribe.api.CommandPatch.prototype),InsertListCommandPatch.prototype.constructor=InsertListCommandPatch,InsertListCommandPatch.prototype.execute=function(value){scribe.transactionManager.run(function(){if(scribe.api.CommandPatch.prototype.execute.call(this,value),this.queryState()){var selection=new scribe.api.Selection,listElement=selection.getContaining(function(node){return"OL"===node.nodeName||"UL"===node.nodeName});if(listElement.nextElementSibling&&0===listElement.nextElementSibling.childNodes.length&&nodeHelpers.removeNode(listElement.nextElementSibling),listElement){var listParentNode=listElement.parentNode;listParentNode&&/^(H[1-6]|P)$/.test(listParentNode.nodeName)&&(selection.placeMarkers(),nodeHelpers.insertAfter(listElement,listParentNode),selection.selectMarkers(),2===listParentNode.childNodes.length&&nodeHelpers.isEmptyTextNode(listParentNode.firstChild)&&nodeHelpers.removeNode(listParentNode),0===listParentNode.childNodes.length&&nodeHelpers.removeNode(listParentNode))}nodeHelpers.removeChromeArtifacts(listElement)}}.bind(this))},InsertListCommandPatch.prototype.queryState=function(){try{return scribe.api.CommandPatch.prototype.queryState.apply(this,arguments)}catch(err){if("NS_ERROR_UNEXPECTED"==err.name)return!1;throw err}},scribe.commandPatches.insertOrderedList=new InsertListCommandPatch("insertOrderedList"),scribe.commandPatches.insertUnorderedList=new InsertListCommandPatch("insertUnorderedList")}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var nodeHelpers=scribe.node,outdentCommand=new scribe.api.CommandPatch("outdent");outdentCommand.execute=function(){scribe.transactionManager.run(function(){var selection=new scribe.api.Selection,range=selection.range,blockquoteNode=selection.getContaining(function(node){return"BLOCKQUOTE"===node.nodeName});if("BLOCKQUOTE"===range.commonAncestorContainer.nodeName){selection.placeMarkers(),selection.selectMarkers(!0);var selectedNodes=range.cloneContents();blockquoteNode.parentNode.insertBefore(selectedNodes,blockquoteNode),range.deleteContents(),selection.selectMarkers(),""===blockquoteNode.textContent&&blockquoteNode.parentNode.removeChild(blockquoteNode)}else{var pNode=selection.getContaining(function(node){return"P"===node.nodeName});if(pNode){var nextSiblingNodes=nodeHelpers.nextSiblings(pNode);if(nextSiblingNodes.size){for(var newContainerNode=document.createElement(blockquoteNode.nodeName);nextSiblingNodes.size;)newContainerNode.appendChild(nextSiblingNodes.first()),nextSiblingNodes=nextSiblingNodes.shift();blockquoteNode.parentNode.insertBefore(newContainerNode,blockquoteNode.nextElementSibling)}selection.placeMarkers(),blockquoteNode.parentNode.insertBefore(pNode,blockquoteNode.nextElementSibling),selection.selectMarkers(),""===blockquoteNode.innerHTML&&blockquoteNode.parentNode.removeChild(blockquoteNode)}else scribe.api.CommandPatch.prototype.execute.call(this)}}.bind(this))},scribe.commandPatches.outdent=outdentCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var createLinkCommand=new scribe.api.CommandPatch("createLink");scribe.commandPatches.createLink=createLinkCommand,createLinkCommand.execute=function(value){var selection=new scribe.api.Selection;if(selection.range.collapsed){var aElement=document.createElement("a");aElement.setAttribute("href",value),aElement.textContent=value,selection.range.insertNode(aElement);var newRange=document.createRange();newRange.setStartBefore(aElement),newRange.setEndAfter(aElement),selection.selection.removeAllRanges(),selection.selection.addRange(newRange)}else scribe.api.CommandPatch.prototype.execute.call(this,value)}}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var nodeHelpers=scribe.node;scribe.allowsBlockElements()&&scribe.el.addEventListener("keyup",function(event){if(8===event.keyCode||46===event.keyCode){var selection=new scribe.api.Selection,containerPElement=selection.getContaining(function(node){return"P"===node.nodeName});containerPElement&&scribe.transactionManager.run(function(){selection.placeMarkers(),nodeHelpers.removeChromeArtifacts(containerPElement),selection.selectMarkers()},!0)}})}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(188),__webpack_require__(189),__webpack_require__(190),__webpack_require__(191)],__WEBPACK_AMD_DEFINE_RESULT__=function(buildCommandPatch,buildCommand,buildSelection,buildSimpleCommand){"use strict";return function(scribe){this.CommandPatch=buildCommandPatch(scribe),this.Command=buildCommand(scribe),this.Selection=buildSelection(scribe),this.SimpleCommand=buildSimpleCommand(this,scribe)}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(scribe){function CommandPatch(commandName){this.commandName=commandName}return CommandPatch.prototype.execute=function(value){scribe.transactionManager.run(function(){document.execCommand(this.commandName,!1,value||null)}.bind(this))},CommandPatch.prototype.queryState=function(){return document.queryCommandState(this.commandName)},CommandPatch.prototype.queryEnabled=function(){return document.queryCommandEnabled(this.commandName)},CommandPatch}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(scribe){function Command(commandName){this.commandName=commandName,this.patch=scribe.commandPatches[this.commandName]}return Command.prototype.execute=function(value){this.patch?this.patch.execute(value):scribe.transactionManager.run(function(){document.execCommand(this.commandName,!1,value||null)}.bind(this))},Command.prototype.queryState=function(){return this.patch?this.patch.queryState():document.queryCommandState(this.commandName)},Command.prototype.queryEnabled=function(){return this.patch?this.patch.queryEnabled():document.queryCommandEnabled(this.commandName)},Command}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(scribe){function createMarker(){var node=document.createElement("em");return node.style.display="none",node.classList.add("scribe-marker"),node}function insertMarker(range,marker){range.insertNode(marker),marker.nextSibling&&nodeHelpers.isEmptyTextNode(marker.nextSibling)&&nodeHelpers.removeNode(marker.nextSibling),marker.previousSibling&&nodeHelpers.isEmptyTextNode(marker.previousSibling)&&nodeHelpers.removeNode(marker.previousSibling)}function Selection(){if(this.selection=rootDoc.getSelection(),this.selection.rangeCount&&this.selection.anchorNode){var startNode=this.selection.anchorNode,startOffset=this.selection.anchorOffset,endNode=this.selection.focusNode,endOffset=this.selection.focusOffset;if(startNode===endNode&&endOffset=2?markers[1]:markers[0]),keepMarkers||this.removeMarkers(),this.selection.removeAllRanges(),this.selection.addRange(newRange)}},Selection.prototype.isCaretOnNewLine=function(){var containerPElement=this.getContaining(function(node){return"P"===node.nodeName});return!!containerPElement&&nodeHelpers.isEmptyInlineElement(containerPElement)},Selection}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(api,scribe){function SimpleCommand(commandName,nodeName){scribe.api.Command.call(this,commandName),this._nodeName=nodeName}return SimpleCommand.prototype=Object.create(api.Command.prototype),SimpleCommand.prototype.constructor=SimpleCommand,SimpleCommand.prototype.queryState=function(){var selection=new scribe.api.Selection;return scribe.api.Command.prototype.queryState.call(this)&&!!selection.getContaining(function(node){return node.nodeName===this._nodeName}.bind(this))},SimpleCommand}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(193),__webpack_require__(194),__webpack_require__(195),__webpack_require__(196),__webpack_require__(197),__webpack_require__(198),__webpack_require__(199)],__WEBPACK_AMD_DEFINE_RESULT__=function(indent,insertList,outdent,redo,subscript,superscript,undo){"use strict";return{indent:indent,insertList:insertList,outdent:outdent,redo:redo,subscript:subscript,superscript:superscript,undo:undo}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var indentCommand=new scribe.api.Command("indent");indentCommand.queryEnabled=function(){var selection=new scribe.api.Selection,listElement=selection.getContaining(function(element){return"UL"===element.nodeName||"OL"===element.nodeName});return scribe.api.Command.prototype.queryEnabled.call(this)&&scribe.allowsBlockElements()&&!listElement},scribe.commands.indent=indentCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(165)],__WEBPACK_AMD_DEFINE_RESULT__=function(Immutable){"use strict";return function(){return function(scribe){var nodeHelpers=scribe.node,InsertListCommand=function(commandName){scribe.api.Command.call(this,commandName)};InsertListCommand.prototype=Object.create(scribe.api.Command.prototype),InsertListCommand.prototype.constructor=InsertListCommand,InsertListCommand.prototype.execute=function(value){function splitList(listItemElements){if(listItemElements.size){for(var newListNode=document.createElement(listNode.nodeName);listItemElements.size;)newListNode.appendChild(listItemElements.first()),listItemElements=listItemElements.shift();listNode.parentNode.insertBefore(newListNode,listNode.nextElementSibling)}}if(this.queryState()){var selection=new scribe.api.Selection,range=selection.range,listNode=selection.getContaining(function(node){return"OL"===node.nodeName||"UL"===node.nodeName}),listItemElement=selection.getContaining(function(node){return"LI"===node.nodeName});scribe.transactionManager.run(function(){if(listItemElement){var nextListItemElements=nodeHelpers.nextSiblings(listItemElement);splitList(nextListItemElements),selection.placeMarkers();var pNode=document.createElement("p");pNode.innerHTML=listItemElement.innerHTML,listNode.parentNode.insertBefore(pNode,listNode.nextElementSibling),listItemElement.parentNode.removeChild(listItemElement)}else{var selectedListItemElements=Immutable.List(listNode.querySelectorAll("li")).filter(function(listItemElement){return range.intersectsNode(listItemElement)}),lastSelectedListItemElement=selectedListItemElements.last(),listItemElementsAfterSelection=nodeHelpers.nextSiblings(lastSelectedListItemElement);splitList(listItemElementsAfterSelection),selection.placeMarkers();var documentFragment=document.createDocumentFragment();selectedListItemElements.forEach(function(listItemElement){var pElement=document.createElement("p");pElement.innerHTML=listItemElement.innerHTML,documentFragment.appendChild(pElement)}),listNode.parentNode.insertBefore(documentFragment,listNode.nextElementSibling),selectedListItemElements.forEach(function(listItemElement){listItemElement.parentNode.removeChild(listItemElement)})}0===listNode.childNodes.length&&listNode.parentNode.removeChild(listNode),selection.selectMarkers()}.bind(this))}else scribe.api.Command.prototype.execute.call(this,value)},InsertListCommand.prototype.queryEnabled=function(){return scribe.api.Command.prototype.queryEnabled.call(this)&&scribe.allowsBlockElements()},scribe.commands.insertOrderedList=new InsertListCommand("insertOrderedList"),scribe.commands.insertUnorderedList=new InsertListCommand("insertUnorderedList")}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var outdentCommand=new scribe.api.Command("outdent");outdentCommand.queryEnabled=function(){var selection=new scribe.api.Selection,listElement=selection.getContaining(function(element){return"UL"===element.nodeName||"OL"===element.nodeName});return scribe.api.Command.prototype.queryEnabled.call(this)&&scribe.allowsBlockElements()&&!listElement},scribe.commands.outdent=outdentCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var redoCommand=new scribe.api.Command("redo");redoCommand.execute=function(){scribe.undoManager.redo()},redoCommand.queryEnabled=function(){return scribe.undoManager.position>0},scribe.commands.redo=redoCommand,scribe.options.undo.enabled&&scribe.el.addEventListener("keydown",function(event){event.shiftKey&&(event.metaKey||event.ctrlKey)&&90===event.keyCode&&(event.preventDefault(),redoCommand.execute())})}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var subscriptCommand=new scribe.api.Command("subscript");scribe.commands.subscript=subscriptCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var superscriptCommand=new scribe.api.Command("superscript");scribe.commands.superscript=superscriptCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var undoCommand=new scribe.api.Command("undo");undoCommand.execute=function(){scribe.undoManager.undo()},undoCommand.queryEnabled=function(){return scribe.undoManager.position0&&this.clearRedo();var transactions;merge&&this.length?(transactions=this._stack.first().push(transaction),this._stack=this._stack.shift().unshift(transactions)):(transactions=Immutable.List.of(transaction),this._stack=this._stack.unshift(transactions),this.length++,this._limit&&this.length>this._limit&&this.clearUndo(this._limit)),this._dispatch("DOMTransaction",transactions)},UndoManager.prototype.undo=function(){if(!(this.position>=this.length)){for(var transactions=this._stack.get(this.position),i=transactions.size;i--;)transactions.get(i).undo();this.position++,this._dispatch("undo",transactions)}},UndoManager.prototype.redo=function(){if(0!==this.position){this.position--;for(var transactions=this._stack.get(this.position),i=0;i=0&&index").replace(/\n/g,"
")})}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_RESULT__=function(){"use strict";return function(){return function(scribe){var linkPromptCommand=new scribe.api.Command("createLink");linkPromptCommand.nodeName="A",linkPromptCommand.execute=function(){var selection=new scribe.api.Selection,range=selection.range,anchorNode=selection.getContaining(function(node){
+return node.nodeName===this.nodeName}.bind(this)),initialLink=anchorNode?anchorNode.href:"",link=window.prompt("Enter a link.",initialLink);if(anchorNode&&(range.selectNode(anchorNode),selection.selection.removeAllRanges(),selection.selection.addRange(range)),link){var urlProtocolRegExp=/^https?\:\/\//,mailtoProtocolRegExp=/^mailto\:/;if(!urlProtocolRegExp.test(link)&&!mailtoProtocolRegExp.test(link))if(/@/.test(link)){var shouldPrefixEmail=window.confirm("The URL you entered appears to be an email address. Do you want to add the required “mailto:” prefix?");shouldPrefixEmail&&(link="mailto:"+link)}else{var shouldPrefixLink=window.confirm("The URL you entered appears to be a link. Do you want to add the required “http://” prefix?");shouldPrefixLink&&(link="http://"+link)}scribe.api.SimpleCommand.prototype.execute.call(this,link)}},linkPromptCommand.queryState=function(){var selection=new scribe.api.Selection;return!!selection.getContaining(function(node){return node.nodeName===this.nodeName}.bind(this))},scribe.commands.linkPrompt=linkPromptCommand}}}.call(exports,__webpack_require__,exports,module),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(209),__webpack_require__(210),__webpack_require__(222)],__WEBPACK_AMD_DEFINE_RESULT__=function(HTMLJanitor,merge,cloneDeep){"use strict";return function(config){var configAllowMarkers=merge(cloneDeep(config),{tags:{em:{"class":"scribe-marker"},br:{}}});return function(scribe){var janitor=new HTMLJanitor(configAllowMarkers);scribe.registerHTMLFormatter("sanitize",janitor.clean.bind(janitor))}}}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__;!function(root,factory){__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof __WEBPACK_AMD_DEFINE_FACTORY__?__WEBPACK_AMD_DEFINE_FACTORY__.call(exports,__webpack_require__,exports,module):__WEBPACK_AMD_DEFINE_FACTORY__,!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}(this,function(){function HTMLJanitor(config){var tagDefinitions=config.tags,tags=Object.keys(tagDefinitions),validConfigValues=tags.map(function(k){return typeof tagDefinitions[k]}).every(function(type){return"object"===type||"boolean"===type||"function"===type});if(!validConfigValues)throw new Error("The configuration was invalid");this.config=config}function isBlockElement(node){return blockElementNames.indexOf(node.nodeName)!==-1}function isInlineElement(node){return inlineElementNames.indexOf(node.nodeName)!==-1}function createTreeWalker(node){return document.createTreeWalker(node,NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_COMMENT,null,!1)}function getAllowedAttrs(config,nodeName,node){return"function"==typeof config.tags[nodeName]?config.tags[nodeName](node):config.tags[nodeName]}function shouldRejectNode(node,allowedAttrs){return"undefined"==typeof allowedAttrs||"boolean"==typeof allowedAttrs&&!allowedAttrs}function shouldRejectAttr(attr,allowedAttrs,node){var attrName=attr.name.toLowerCase();return allowedAttrs!==!0&&("function"==typeof allowedAttrs[attrName]?!allowedAttrs[attrName](attr.value,node):"undefined"==typeof allowedAttrs[attrName]||(allowedAttrs[attrName]===!1||"string"==typeof allowedAttrs[attrName]&&allowedAttrs[attrName]!==attr.value))}var blockElementNames=["P","LI","TD","TH","DIV","H1","H2","H3","H4","H5","H6","PRE"],inlineElementNames=["A","B","STRONG","I","EM","SUB","SUP","U","STRIKE"];return HTMLJanitor.prototype.clean=function(html){var sandbox=document.createElement("div");return sandbox.innerHTML=html,this._sanitize(sandbox),sandbox.innerHTML},HTMLJanitor.prototype._sanitize=function(parentNode){var treeWalker=createTreeWalker(parentNode),node=treeWalker.firstChild();if(node)do if(!node._sanitized)if(node.nodeType!==Node.TEXT_NODE){if(node.nodeType===Node.COMMENT_NODE){parentNode.removeChild(node),this._sanitize(parentNode);break}var containsBlockElement,isInline=isInlineElement(node);isInline&&(containsBlockElement=Array.prototype.some.call(node.childNodes,isBlockElement));var isNotTopContainer=!!parentNode.parentNode,isNestedBlockElement=isBlockElement(parentNode)&&isBlockElement(node)&&isNotTopContainer,nodeName=node.nodeName.toLowerCase(),allowedAttrs=getAllowedAttrs(this.config,nodeName,node),isInvalid=isInline&&containsBlockElement;if(isInvalid||shouldRejectNode(node,allowedAttrs)||!this.config.keepNestedBlockElements&&isNestedBlockElement){if("SCRIPT"!==node.nodeName&&"STYLE"!==node.nodeName)for(;node.childNodes.length>0;)parentNode.insertBefore(node.childNodes[0],node);parentNode.removeChild(node),this._sanitize(parentNode);break}for(var a=0;a"),this.setTextBlockHTML(content),this.focus(),options.keepCaretPosition&&0!==caretPosition.start&&0!==caretPosition.end&&selectionRange(this._scribe.el,{start:caretPosition.start,end:caretPosition.end})}}},function(module,exports,__webpack_require__){function position(el,pos){if(1==arguments.length){if(!selection.rangeCount)return;var indexes={},range=selection.getRangeAt(0),clone=range.cloneRange();return clone.selectNodeContents(el),clone.setEnd(range.endContainer,range.endOffset),indexes.end=clone.toString().length,clone.setStart(range.startContainer,range.startOffset),indexes.start=indexes.end-clone.toString().length,indexes.atStart=0===clone.startOffset,indexes}for(var next,startindex,setSelection=pos.end&&pos.end!==pos.start,length=0,range=document.createRange(),it=iterator(el).select(Node.TEXT_NODE).revisit(!1),start=pos.start>el.textContent.length?el.textContent.length:pos.start,end=pos.end>el.textContent.length?el.textContent.length:pos.end,atStart=pos.atStart;next=it.next();){var olen=length;length+=next.textContent.length;var atLength=atStart?length>start:length>=start;if(!startindex&&atLength&&(startindex=!0,range.setStart(next,start-olen),!setSelection)){range.collapse(!0),makeSelection(el,range);break}if(setSelection&&length>=end){range.setEnd(next,end-olen),makeSelection(el,range);break}}}function makeSelection(el,range){el.focus(),selection.removeAllRanges(),selection.addRange(range)}var iterator=__webpack_require__(231),selection=window.getSelection();module.exports=position},function(module,exports,__webpack_require__){function Iterator(node,root){if(!(this instanceof Iterator))return new Iterator(node,root);if(this.node=this.start=this.peeked=node,this.root=root,this.closingTag=!1,this._revisit=!0,this._selects=[],this._rejects=[],node&&this.higher(node))throw new Error("root must be a parent or ancestor to node")}function traverse(dir,child){var next="nextSibling"==dir;return function(expr,n,peek){expr=this.compile(expr),n=n&&n>0?n:1;for(var node=this.node,closing=this.closingTag,revisit=this._revisit;node;){if(xor(next,closing)&&node[child])node=node[child],closing=!next;else if(1==node.nodeType&&!node[child]&&xor(next,closing)){if(closing=next,!revisit)continue}else if(node[dir])node=node[dir],closing=!next;else if(node=node.parentNode,closing=next,!revisit)continue;if(!node||this.higher(node,this.root))break;if(expr(node)&&this.selects(node,peek)&&this.rejects(node,peek)){if(--n)continue;return peek||(this.node=node),this.closingTag=closing,node}}return null}}var xor,props;try{xor=__webpack_require__(232)}catch(e){xor=__webpack_require__(232)}try{props=__webpack_require__(233)}catch(e){props=__webpack_require__(233)}module.exports=Iterator,Iterator.prototype.reset=function(node){return this.node=node||this.start,this},Iterator.prototype.revisit=function(revisit){return this._revisit=void 0==revisit||revisit,this},Iterator.prototype.opening=function(){return 1==this.node.nodeType&&(this.closingTag=!1),this},Iterator.prototype.atOpening=function(){return!this.closingTag},Iterator.prototype.closing=function(){return 1==this.node.nodeType&&(this.closingTag=!0),this},Iterator.prototype.atClosing=function(){return this.closingTag},Iterator.prototype.next=traverse("nextSibling","firstChild"),Iterator.prototype.previous=Iterator.prototype.prev=traverse("previousSibling","lastChild"),Iterator.prototype.select=function(expr){return expr=this.compile(expr),this._selects.push(expr),this},Iterator.prototype.selects=function(node,peek){var exprs=this._selects,len=exprs.length;if(!len)return!0;for(var i=0;i0?this.next(expr,n,!0):this.prev(expr,Math.abs(n),!0):this.node},Iterator.prototype.use=function(fn){return fn(this),this}},function(module,exports){function xor(a,b){return!a!=!b}module.exports=xor},function(module,exports){function props(str){return str.replace(/\.\w+|\w+ *\(|"[^"]*"|'[^']*'|\/([^\/]+)\//g,"").replace(globals,"").match(/[a-zA-Z_]\w*/g)||[]}function map(str,props,fn){var re=/\.\w+|\w+ *\(|"[^"]*"|'[^']*'|\/([^\/]+)\/|[a-zA-Z_]\w*/g;return str.replace(re,function(_){return"("==_[_.length-1]?fn(_):~props.indexOf(_)?fn(_):_})}function unique(arr){for(var ret=[],i=0;i","","",""].join("\n"),BlockPositioner=function(block,mediator){this.mediator=mediator,this.block=block,this._ensureElement(),this._bindFunctions(),this.initialize()};_Object$assign(BlockPositioner.prototype,__webpack_require__(235),__webpack_require__(236),{total_blocks:0,bound:["onBlockCountChange","onSelectChange","toggle","show","hide"],className:"st-block-positioner",visibleClass:"active",initialize:function(){this.el.insertAdjacentHTML("beforeend",template),this.select=this.$(".st-block-positioner__select")[0],this.select.addEventListener("change",this.onSelectChange),this.mediator.on("block:countUpdate",this.onBlockCountChange)},onBlockCountChange:function(new_count){new_count!==this.total_blocks&&(this.total_blocks=new_count,this.renderPositionList())},onSelectChange:function(){var val=this.select.value;0!==val&&(this.mediator.trigger("block:changePosition",this.block,val,1===val?"before":"after"),this.toggle())},renderPositionList:function(){for(var inner="",i=1;i<=this.total_blocks;i++)inner+="";this.select.innerHTML=inner},toggle:function(){this.select.value=0,this.el.classList.toggle(this.visibleClass)},show:function(){this.el.classList.add(this.visibleClass)},hide:function(){this.el.classList.remove(this.visibleClass)}}),module.exports=BlockPositioner},function(module,exports){"use strict";module.exports={bound:[],_bindFunctions:function(){this.bound.forEach(function(f){this[f]=this[f].bind(this)},this)}}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],_=__webpack_require__(34),Dom=__webpack_require__(69);module.exports={tagName:"div",className:"sir-trevor__view",attributes:{},$:function(selector){return this.el.querySelectorAll(selector)},render:function(){return this},destroy:function(){_.isUndefined(this.stopListening)||this.stopListening(),
+Dom.remove(this.el)},_ensureElement:function(){if(this.el)this._setElement(this.el);else{var attrs=_Object$assign({},_.result(this,"attributes"));this.id&&(attrs.id=this.id),this.className&&(attrs["class"]=this.className);var el=Dom.createElement(this.tagName,attrs);this._setElement(el)}},_setElement:function(element){return this.el=element,this}}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],dropEvents=__webpack_require__(133),EventBus=__webpack_require__(75),Dom=__webpack_require__(69),config=__webpack_require__(68),BlockReorder=function(block_element,mediator){this.block=block_element,this.blockID=this.block.getAttribute("id"),this.mediator=mediator,this._ensureElement(),this._bindFunctions(),this.initialize()};_Object$assign(BlockReorder.prototype,__webpack_require__(235),__webpack_require__(236),{bound:["onMouseDown","onDragStart","onDragEnd","onDrop"],className:"st-block-ui-btn__reorder",tagName:"a",attributes:function(){return{html:'',draggable:"true","data-icon":"move"}},initialize:function(){this.el.addEventListener("mousedown",this.onMouseDown),this.el.addEventListener("dragstart",this.onDragStart),this.el.addEventListener("dragend",this.onDragEnd),dropEvents.dropArea(this.block),this.block.addEventListener("drop",this.onDrop)},blockId:function(){return this.block.getAttribute("id")},onMouseDown:function(){EventBus.trigger("block:reorder:down")},onDrop:function(ev){ev.preventDefault();var dropped_on=this.block,item_id=ev.dataTransfer.getData("text/plain"),block=document.querySelector("#"+item_id);dropped_on.id!==item_id&&Dom.insertAfter(block,dropped_on),this.mediator.trigger("block:rerender",item_id),EventBus.trigger("block:reorder:dropped",item_id)},onDragStart:function(ev){var block=this.block;this.dragEl=block.cloneNode(!0),this.dragEl.classList.add("st-drag-element"),this.dragEl.style.top=block.offsetTop+"px",this.dragEl.style.left=block.offsetLeft+"px",block.parentNode.appendChild(this.dragEl),ev.dataTransfer.setDragImage(this.dragEl,0,0),ev.dataTransfer.setData("text/plain",this.blockId()),this.mediator.trigger("block-controls:hide"),EventBus.trigger("block:reorder:dragstart"),block.classList.add("st-block--dragging")},onDragEnd:function(ev){EventBus.trigger("block:reorder:dragend"),this.block.classList.remove("st-block--dragging"),this.dragEl.parentNode.removeChild(this.dragEl)},render:function(){return this}}),module.exports=BlockReorder},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],config=__webpack_require__(68),BlockDeletion=function(){this._ensureElement(),this._bindFunctions()};_Object$assign(BlockDeletion.prototype,__webpack_require__(235),__webpack_require__(236),{tagName:"a",className:"st-block-ui-btn__delete",attributes:{html:function(){return''},"data-icon":"close"}}),module.exports=BlockDeletion},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(34),utils=__webpack_require__(29),bestNameFromField=function(field){var msg=field.getAttribute("data-st-name")||field.getAttribute("name");return msg||(msg="Field"),utils.capitalize(msg)};module.exports={errors:[],valid:function(){return this.performValidations(),0===this.errors.length},performValidations:function(){this.resetErrors();var required_fields=this.$(".st-required");Array.prototype.forEach.call(required_fields,function(f,i){this.validateField(f)}.bind(this)),this.validations.forEach(this.runValidator,this),this.el.classList.toggle("st-block--with-errors",this.errors.length>0)},validations:[],validateField:function(field){var content=field.getAttribute("contenteditable")?field.textContent:field.value;0===content.length&&this.setError(field,i18n.t("errors:block_empty",{name:bestNameFromField(field)}))},runValidator:function(validator){_.isUndefined(this[validator])||this[validator].call(this)},setError:function(field,reason){var msg=this.addMessage(reason,"st-msg--error");field.classList.add("st-error"),this.errors.push({field:field,reason:reason,msg:msg})},resetErrors:function(){this.errors.forEach(function(error){error.field.classList.remove("st-error"),error.msg.remove()}),this.messages.classList.remove("st-block__messages--is-visible"),this.errors=[]}}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],_=__webpack_require__(34),utils=__webpack_require__(29),EventBus=__webpack_require__(75);module.exports={blockStorage:{},createStore:function(blockData){this.blockStorage={type:utils.underscored(this.type),data:blockData||{}}},save:function(){var data=this._serializeData();_.isEmpty(data)||this.setData(data)},getData:function(){return this.save(),this.blockStorage},getBlockData:function(){return this.save(),this.blockStorage.data},_getData:function(){return this.blockStorage.data},setData:function(blockData){utils.log("Setting data for block "+this.blockID),_Object$assign(this.blockStorage.data,blockData||{})},setAndLoadData:function(blockData){this.setData(blockData),this.beforeLoadingData()},_serializeData:function(){},loadData:function(){},beforeLoadingData:function(){utils.log("loadData for "+this.blockID),EventBus.trigger("editor/block/loadData"),this.loadData(this._getData())},_loadData:function(){utils.log("_loadData is deprecated and will be removed in the future. Please use beforeLoadingData instead."),this.beforeLoadingData()},checkAndLoadData:function(){_.isEmpty(this._getData())||this.beforeLoadingData()}}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],_Object$keys=__webpack_require__(30)["default"],_=__webpack_require__(34),utils=__webpack_require__(29),config=__webpack_require__(68),EventBus=__webpack_require__(75),Blocks=__webpack_require__(242),Dom=__webpack_require__(69),BLOCK_OPTION_KEYS=["convertToMarkdown","convertFromMarkdown","formatBar"],BlockManager=function(SirTrevor){this.options=SirTrevor.options,this.blockOptions=BLOCK_OPTION_KEYS.reduce(function(acc,key){return acc[key]=SirTrevor.options[key],acc},{}),this.instance_scope=SirTrevor.ID,this.mediator=SirTrevor.mediator,this.wrapper=SirTrevor.wrapper,this.blocks=[],this.blockCounts={},this.blockTypes=[],this._setBlocksTypes(),this._setRequired(),this._bindMediatedEvents(),this.initialize()};_Object$assign(BlockManager.prototype,__webpack_require__(235),__webpack_require__(268),__webpack_require__(73),{eventNamespace:"block",mediatedEvents:{create:"createBlock",remove:"removeBlock",rerender:"rerenderBlock",replace:"replaceBlock",focusPrevious:"focusPreviousBlock",focusNext:"focusNextBlock"},initialize:function(){},createBlock:function(type,data,previousSibling){if(type=utils.classify(type),this.canCreateBlock(type)){var block=new Blocks[type](data,this.instance_scope,this.mediator,this.blockOptions);this.blocks.push(block),this._incrementBlockTypeCount(type),this.renderBlock(block,previousSibling),this.triggerBlockCountUpdate(),this.mediator.trigger("block:limitReached",this.blockLimitReached()),EventBus.trigger(data?"block:create:existing":"block:create:new",block),utils.log("Block created of type "+type)}},removeBlock:function(blockID,options){options=_Object$assign({transposeContent:!1,focusOnPrevious:!1},options);var block=this.findBlockById(blockID),type=utils.classify(block.type),previousBlock=this.getPreviousBlock(block),nextBlock=this.getNextBlock(block);if(options.transposeContent&&block.textable){if(!previousBlock&&1===this.blocks.length)return;if(previousBlock&&previousBlock.textable)previousBlock.appendContent(block.getScribeInnerContent(),{keepCaretPosition:!0});else{if(""!==block.getScribeInnerContent())return;previousBlock?previousBlock.focusAtEnd():nextBlock&&nextBlock.focus()}}this.mediator.trigger("block-controls:reset"),this.blocks=this.blocks.filter(function(item){return item.blockID!==block.blockID}),block.remove(),options.focusOnPrevious&&previousBlock&&previousBlock.focusAtEnd(),this._decrementBlockTypeCount(type),this.triggerBlockCountUpdate(),this.mediator.trigger("block:limitReached",this.blockLimitReached()),EventBus.trigger("block:remove",blockID)},replaceBlock:function(blockNode,type,data){var block=this.findBlockById(blockNode.id);this.createBlock(type,data||null,blockNode),this.removeBlock(blockNode.id),block.remove()},renderBlock:function(block,previousSibling){previousSibling?Dom.insertAfter(block.render().el,previousSibling):this.wrapper.appendChild(block.render().el),block.trigger("onRender")},rerenderBlock:function(blockID){var block=this.findBlockById(blockID);_.isUndefined(block)||block.isEmpty()||!block.drop_options.re_render_on_reorder||block.beforeLoadingData()},getPreviousBlock:function(block){var blockPosition=this.getBlockPosition(block.el);if(!(blockPosition<1)){var previousBlock=this.wrapper.querySelectorAll(".st-block")[blockPosition-1];return this.findBlockById(previousBlock.getAttribute("id"))}},getNextBlock:function(block){var blockPosition=this.getBlockPosition(block.el);if(!(blockPosition<0||blockPosition>=this.blocks.length-1))return this.findBlockById(this.wrapper.querySelectorAll(".st-block")[blockPosition+1].getAttribute("id"))},getBlockPosition:function(block){return Array.prototype.indexOf.call(this.wrapper.querySelectorAll(".st-block"),block)},focusPreviousBlock:function(blockID){var block=this.findBlockById(blockID);if(block.textable){var previousBlock=this.getPreviousBlock(block);previousBlock&&previousBlock.textable&&previousBlock.focusAtEnd()}},focusNextBlock:function(blockID){var block=this.findBlockById(blockID);if(block&&block.textable){var nextBlock=this.getNextBlock(block);nextBlock&&nextBlock.textable&&nextBlock.focus()}},triggerBlockCountUpdate:function(){this.mediator.trigger("block:countUpdate",this.blocks.length)},canCreateBlock:function(type){return this.blockLimitReached()?(utils.log("Cannot add any more blocks. Limit reached."),!1):this.isBlockTypeAvailable(type)?!!this.canAddBlockType(type)||(utils.log("Block Limit reached for type "+type),!1):(utils.log("Block type not available "+type),!1)},validateBlockTypesExist:function(shouldValidate){return!(config.skipValidation||!shouldValidate)&&void(this.required||[]).forEach(function(type,index){if(this.isBlockTypeAvailable(type))if(0===this._getBlockTypeCount(type))utils.log("Failed validation on required block type "+type),this.mediator.trigger("errors:add",{text:i18n.t("errors:type_missing",{type:type})});else{var blocks=this.getBlocksByType(type).filter(function(b){return!b.isEmpty()});if(blocks.length>0)return!1;this.mediator.trigger("errors:add",{text:i18n.t("errors:required_type_empty",{type:type})}),utils.log("A required block type "+type+" is empty")}},this)},findBlockById:function(blockID){return this.blocks.find(function(b){return b.blockID===blockID})},getBlocksByType:function(type){return this.blocks.filter(function(b){return utils.classify(b.type)===type})},getBlocksByIDs:function(block_ids){return this.blocks.filter(function(b){return block_ids.includes(b.blockID)})},blockLimitReached:function(){return 0!==this.options.blockLimit&&this.blocks.length>=this.options.blockLimit},isBlockTypeAvailable:function(t){return this.blockTypes.includes(t)},canAddBlockType:function(type){var block_type_limit=this._getBlockTypeLimit(type);return!(0!==block_type_limit&&this._getBlockTypeCount(type)>=block_type_limit)},_setBlocksTypes:function(){this.blockTypes=this.options.blockTypes||_Object$keys(Blocks)},_setRequired:function(){this.required=!1,Array.isArray(this.options.required)&&!_.isEmpty(this.options.required)&&(this.required=this.options.required)},_incrementBlockTypeCount:function(type){this.blockCounts[type]=_.isUndefined(this.blockCounts[type])?1:this.blockCounts[type]+1},_decrementBlockTypeCount:function(type){this.blockCounts[type]=_.isUndefined(this.blockCounts[type])?1:this.blockCounts[type]-1},_getBlockTypeCount:function(type){return _.isUndefined(this.blockCounts[type])?0:this.blockCounts[type]},_blockLimitReached:function(){return 0!==this.options.blockLimit&&this.blocks.length>=this.options.blockLimit},_getBlockTypeLimit:function(t){return this.isBlockTypeAvailable(t)?parseInt(_.isUndefined(this.options.blockTypeLimits[t])?0:this.options.blockTypeLimits[t],10):0}}),module.exports=BlockManager},function(module,exports,__webpack_require__){"use strict";module.exports={Text:__webpack_require__(243),Quote:__webpack_require__(261),Image:__webpack_require__(262),Heading:__webpack_require__(263),List:__webpack_require__(264),Tweet:__webpack_require__(266),Video:__webpack_require__(267)}},function(module,exports,__webpack_require__){"use strict";var Block=__webpack_require__(244),stToHTML=__webpack_require__(253),ScribeTextBlockPlugin=__webpack_require__(254),ScribePastePlugin=__webpack_require__(258),ScribeHeadingPlugin=__webpack_require__(259),ScribeQuotePlugin=__webpack_require__(260);module.exports=Block.extend({type:"text",editorHTML:'',icon_name:"text",textable:!0,toolbarEnabled:!1,configureScribe:function(scribe){scribe.use(new ScribeTextBlockPlugin(this)),scribe.use(new ScribePastePlugin(this)),scribe.use(new ScribeHeadingPlugin(this)),scribe.use(new ScribeQuotePlugin(this)),scribe.on("content-changed",this.toggleEmptyClass.bind(this))},scribeOptions:{allowBlockElements:!0,tags:{p:!0}},loadData:function(data){this.options.convertFromMarkdown&&"html"!==data.format?this.setTextBlockHTML(stToHTML(data.text,this.type)):this.setTextBlockHTML(data.text)},onBlockRender:function(){this.focus(),this.toggleEmptyClass()},toggleEmptyClass:function(){this.el.classList.toggle("st-block--empty",this.isEmpty())},isEmpty:function(){return""===this._scribe.getTextContent()}})},function(module,exports,__webpack_require__){"use strict";var _Object$create=__webpack_require__(70)["default"],_Object$assign=__webpack_require__(2)["default"],_=__webpack_require__(34),ScribeInterface=__webpack_require__(138),config=__webpack_require__(68),utils=__webpack_require__(29),Dom=__webpack_require__(69),Events=__webpack_require__(131),BlockMixins=__webpack_require__(128),SimpleBlock=__webpack_require__(245),BlockReorder=__webpack_require__(237),BlockDeletion=__webpack_require__(238),BlockPositioner=__webpack_require__(234),EventBus=__webpack_require__(75),Spinner=__webpack_require__(251),DELETE_TEMPLATE=__webpack_require__(252),Block=function(data,instance_id,mediator,options){SimpleBlock.apply(this,arguments)};Block.prototype=_Object$create(SimpleBlock.prototype),Block.prototype.constructor=Block,_Object$assign(Block.prototype,SimpleBlock.fn,__webpack_require__(239),{bound:["_handleContentPaste","_onFocus","_onBlur","onDrop","onDeleteClick","clearInsertedStyles","getSelectionForFormatter","onBlockRender","onDeleteConfirm","onPositionerClick"],className:"st-block",attributes:function(){return _Object$assign(SimpleBlock.fn.attributes.call(this))},icon_name:"default",validationFailMsg:function(){return i18n.t("errors:validation_fail",{type:_.isFunction(this.title)?this.title():this.title})},editorHTML:'',toolbarEnabled:!0,availableMixins:["droppable","pastable","uploadable","fetchable","ajaxable","controllable","multi_editable","textable"],droppable:!1,pastable:!1,uploadable:!1,fetchable:!1,ajaxable:!1,multi_editable:!1,textable:!1,drop_options:{},paste_options:{},upload_options:{},formattable:!0,supressKeyListeners:!1,_previousSelection:"",initialize:function(){},toMarkdown:function(markdown){return markdown},toHTML:function(html){return html},withMixin:function(mixin){if(_.isObject(mixin)){var initializeMethod="initialize"+mixin.mixinName;_.isUndefined(this[initializeMethod])&&(_Object$assign(this,mixin),this[initializeMethod]())}},render:function(){if(this.beforeBlockRender(),this._setBlockInner(),this.editor=this.inner.children[0],this.mixinsRequireInputs=!1,this.availableMixins.forEach(function(mixin){if(this[mixin]){var blockMixin=BlockMixins[utils.classify(mixin)];!_.isUndefined(blockMixin.requireInputs)&&blockMixin.requireInputs&&(this.mixinsRequireInputs=!0)}},this),this.mixinsRequireInputs){var input_html=document.createElement("div");input_html.classList.add("st-block__inputs"),this.inner.appendChild(input_html),this.inputs=input_html}return this.hasTextBlock()&&this._initTextBlocks(),this.availableMixins.forEach(function(mixin){this[mixin]&&this.withMixin(BlockMixins[utils.classify(mixin)])},this),this.formattable&&this._initFormatting(),this._blockPrepare(),this},remove:function(){this.ajaxable&&this.resolveAllInQueue(),Dom.remove(this.el)},loading:function(){_.isUndefined(this.spinner)||this.ready(),this.spinner=new Spinner(config.defaults.spinner),this.spinner.spin(this.el),this.el.classList.add("st--is-loading")},ready:function(){this.el.classList.remove("st--is-loading"),_.isUndefined(this.spinner)||(this.spinner.stop(),delete this.spinner)},_serializeData:function(){utils.log("toData for "+this.blockID);var data={};this.hasTextBlock()&&(data.text=this.getTextBlockHTML(),data.format="html");var matcher=['input:not([class="st-paste-block"])','textarea:not([class="st-paste-block"])','select:not([class="st-paste-block"])','button:not([class="st-paste-block"])'].join(",");return this.$(matcher).length>0&&Array.prototype.forEach.call(this.$("input, textarea, select, button"),function(input){var name=input.getAttribute("data-name")||input.getAttribute("name");if(name)if("number"===input.getAttribute("type"))data[name]=parseInt(input.value);else if("checkbox"===input.getAttribute("type")){var value="";input.getAttribute("data-toggle")?(value="off",input.checked===!0&&(value="on")):input.checked===!0&&(value=input.value),data[name]=value}else"radio"===input.getAttribute("type")?input.checked===!0&&(data[name]=input.value):data[name]=input.value}),data},focus:function(){Array.prototype.forEach.call(this.getTextBlock(),function(el){el.focus()})},focusAtEnd:function(){this.focus()},blur:function(){Array.prototype.forEach.call(this.getTextBlock(),function(el){el.blur()})},onFocus:function(){var _this=this;Array.prototype.forEach.call(this.getTextBlock(),function(el){el.addEventListener("focus",_this._onFocus)})},onBlur:function(){var _this2=this;Array.prototype.forEach.call(this.getTextBlock(),function(el){el.addEventListener("blur",_this2._onBlur)})},_onFocus:function(){this.trigger("blockFocus",this.el)},_onBlur:function(){},onBlockRender:function(){this.focus()},onDrop:function(dataTransferObj){},onDeleteConfirm:function(e){e.preventDefault(),this.mediator.trigger("block:remove",this.blockID,{focusOnPrevious:!0})},addDeleteControls:function(){var _this3=this,onDeleteDeny=function(e){e.preventDefault(),_this3.deleteEl.classList.remove("active")};this.ui.insertAdjacentHTML("beforeend",DELETE_TEMPLATE),Events.delegate(this.el,".js-st-block-confirm-delete","click",this.onDeleteConfirm),Events.delegate(this.el,".js-st-block-deny-delete","click",onDeleteDeny)},onDeleteClick:function(e){return e.preventDefault(),e.stopPropagation(),this.isEmpty()?void this.onDeleteConfirm.call(this,new CustomEvent("click")):(this.deleteEl=this.el.querySelector(".st-block__ui-delete-controls"),void this.deleteEl.classList.toggle("active"))},onPositionerClick:function(e){e.preventDefault(),this.positioner.toggle()},beforeLoadingData:function(){this.loading(),this.mixinsRequireInputs&&(Dom.show(this.editor),Dom.hide(this.inputs)),SimpleBlock.fn.beforeLoadingData.call(this),this.ready()},execTextBlockCommand:function(cmdName){if(_.isUndefined(this._scribe))throw"No Scribe instance found to send a command to";return ScribeInterface.execTextBlockCommand(this._scribe,cmdName)},queryTextBlockCommandState:function(cmdName){if(_.isUndefined(this._scribe))throw"No Scribe instance found to query command";return ScribeInterface.queryTextBlockCommandState(this._scribe,cmdName)},_handleContentPaste:function(ev){setTimeout(this.onContentPasted.bind(this,ev,ev.currentTarget),0)},_getBlockClass:function(){return"st-block--"+this.className},_initUIComponents:function(){this.addDeleteControls(),this.positioner=new BlockPositioner(this.el,this.mediator),this._withUIComponent(this.positioner,".st-block-ui-btn__reorder",this.onPositionerClick),this._withUIComponent(new BlockReorder(this.el,this.mediator)),this._withUIComponent(new BlockDeletion,".st-block-ui-btn__delete",this.onDeleteClick),this.onFocus(),this.onBlur()},_initFormatting:function(){var block=this;this.options.formatBar&&this.options.formatBar.commands.forEach(function(cmd){if(!_.isUndefined(cmd.keyCode)){var ctrlDown=!1;Events.delegate(block.el,".st-text-block","keyup",function(ev){17!==ev.which&&224!==ev.which&&91!==ev.which||(ctrlDown=!1)}),Events.delegate(block.el,".st-text-block","keydown",function(ev){17!==ev.which&&224!==ev.which&&91!==ev.which||(ctrlDown=!0),ev.which===cmd.keyCode&&ctrlDown&&(ev.preventDefault(),block.execTextBlockCommand(cmd.cmd))})}})},_initTextBlocks:function(){var _this4=this;Array.prototype.forEach.call(this.getTextBlock(),function(el){el.addEventListener("keyup",_this4.getSelectionForFormatter),el.addEventListener("mouseup",_this4.getSelectionForFormatter),el.addEventListener("DOMNodeInserted",_this4.clearInsertedStyles)});var textBlock=this.getTextBlock()[0];if(!_.isUndefined(textBlock)&&_.isUndefined(this._scribe)){var configureScribe=_.isFunction(this.configureScribe)?this.configureScribe.bind(this):null;this._scribe=ScribeInterface.initScribeInstance(textBlock,this.scribeOptions,configureScribe)}},getSelectionForFormatter:function(){var _this5=this;setTimeout(function(){var selection=window.getSelection(),selectionStr=selection.toString().trim(),en="formatter:"+(""===selectionStr?"hide":"position");_this5.mediator.trigger(en,_this5),EventBus.trigger(en,_this5)},1)},clearInsertedStyles:function(e){var target=e.target;_.isUndefined(target.tagName)&&(target=target.parentNode),target.removeAttribute("style")},hasTextBlock:function(){return this.getTextBlock().length>0},getTextBlock:function(){return _.isUndefined(this.text_block)&&(this.text_block=this.$(".st-text-block")),this.text_block},getTextBlockHTML:function(){return this._scribe.getContent()},setTextBlockHTML:function(html){var returnVal=this._scribe.setContent(html),firstNode=this._scribe.node.firstDeepestChild(this._scribe.el);for("#text"===firstNode.nodeName&&(firstNode.textContent=utils.leftTrim(firstNode.textContent));this._scribe.el.firstChild&&""===this._scribe.el.firstChild.textContent;)this._scribe.el.removeChild(this._scribe.el.firstChild);for(;this._scribe.el.lastChild&&"BR"===this._scribe.el.lastChild.nodeName;)this._scribe.el.removeChild(this._scribe.el.lastChild);return returnVal},isEmpty:function(){return _.isEmpty(this.getBlockData())}}),Block.extend=__webpack_require__(250),module.exports=Block},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],_=__webpack_require__(34),utils=__webpack_require__(29),Dom=__webpack_require__(69),Events=__webpack_require__(131),BlockReorder=__webpack_require__(237),BLOCK_TEMPLATE=__webpack_require__(246),SimpleBlock=function(data,instance_id,mediator,options){this.createStore(data),this.blockID=_.uniqueId("st-block-"),this.instanceID=instance_id,this.mediator=mediator,this.options=options||{},this._ensureElement(),this._bindFunctions(),this.initialize.apply(this,arguments)};_Object$assign(SimpleBlock.prototype,__webpack_require__(235),__webpack_require__(73),__webpack_require__(236),__webpack_require__(240),{focus:function(){},valid:function(){return!0},className:"st-block",block_template:BLOCK_TEMPLATE,attributes:function(){return{id:this.blockID,"data-type":this.type,"data-instance":this.instanceID}},title:function(){return i18n.t("blocks:"+this.type+":title")||utils.titleize(this.type.replace(/[\W_]/g," "))},blockCSSClass:function(){return this.blockCSSClass=utils.toSlug(this.type),this.blockCSSClass},type:"","class":function(){return utils.classify(this.type)},editorHTML:"",initialize:function(){},onBlockRender:function(){},beforeBlockRender:function(){},_setBlockInner:function(){var editor_html=_.result(this,"editorHTML");this.el.insertAdjacentHTML("beforeend",this.block_template(editor_html)),this.inner=this.el.querySelector(".st-block__inner")},render:function(){return this.beforeBlockRender(),this._setBlockInner(),this._blockPrepare(),this},_blockPrepare:function(){this._initUI(),this._initMessages(),this.checkAndLoadData(),this.el.classList.add("st-item-ready"),this.on("onRender",this.onBlockRender),this.save()},_withUIComponent:function(component,className,callback){this.ui.appendChild(component.render().el),className&&callback&&Events.delegate(this.ui,className,"click",callback)},_initUI:function(){var ui_element=Dom.createElement("div",{"class":"st-block__ui"});this.el.appendChild(ui_element),this.ui=ui_element,this._initUIComponents()},_initMessages:function(){var msgs_element=Dom.createElement("div",{"class":"st-block__messages"});this.inner.insertBefore(msgs_element,this.inner.firstChild),this.messages=msgs_element},addMessage:function(msg,additionalClass){return msg=Dom.createElement("span",{html:msg,"class":"st-msg "+additionalClass}),this.messages.appendChild(msg),this.messages.classList.add("st-block__messages--is-visible"),msg},resetMessages:function(){this.messages.innerHTML="",this.messages.classList.remove("st-block__messages--is-visible")},_initUIComponents:function(){this._withUIComponent(new BlockReorder(this.el))}}),SimpleBlock.fn=SimpleBlock.prototype,SimpleBlock.extend=__webpack_require__(250),module.exports=SimpleBlock},function(module,exports,__webpack_require__){"use strict";var BLOCK_ADDITION_TOP_TEMPLATE=__webpack_require__(247),BLOCK_ADDITION_TEMPLATE=__webpack_require__(248),BLOCK_REPLACER_TEMPLATE=__webpack_require__(249);module.exports=function(editor_html){return"\n \n "+editor_html+"\n
\n "+BLOCK_REPLACER_TEMPLATE()+"\n "+BLOCK_ADDITION_TOP_TEMPLATE()+"\n "+BLOCK_ADDITION_TEMPLATE()+"\n "}},function(module,exports,__webpack_require__){"use strict";var config=__webpack_require__(68);module.exports=function(){return'\n \n '}},function(module,exports,__webpack_require__){"use strict";var config=__webpack_require__(68);module.exports=function(){return'\n \n '}},function(module,exports,__webpack_require__){"use strict";var config=__webpack_require__(68);module.exports=function(){return'\n \n '}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"];module.exports=function(protoProps,staticProps){var child,parent=this;child=protoProps&&protoProps.hasOwnProperty("constructor")?protoProps.constructor:function(){return parent.apply(this,arguments)},_Object$assign(child,parent,staticProps);var Surrogate=function(){this.constructor=child};return Surrogate.prototype=parent.prototype,child.prototype=new Surrogate,protoProps&&_Object$assign(child.prototype,protoProps),child.__super__=parent.prototype,child}},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__;!function(root,factory){"object"==typeof module&&module.exports?module.exports=factory():(__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof __WEBPACK_AMD_DEFINE_FACTORY__?__WEBPACK_AMD_DEFINE_FACTORY__.call(exports,__webpack_require__,exports,module):__WEBPACK_AMD_DEFINE_FACTORY__,!(void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))}(this,function(){"use strict";function createEl(tag,prop){var n,el=document.createElement(tag||"div");for(n in prop)el[n]=prop[n];return el}function ins(parent){for(var i=1,n=arguments.length;i',attr)}sheet.addRule(".spin-vml","behavior:url(#default#VML)"),Spinner.prototype.lines=function(el,o){function grp(){return css(vml("group",{coordsize:s+" "+s,coordorigin:-r+" "+-r}),{width:s,height:s})}function seg(i,dx,filter){ins(g,ins(css(grp(),{rotation:360/o.lines*i+"deg",left:~~dx}),ins(css(vml("roundrect",{arcsize:o.corners}),{width:r,height:o.scale*o.width,left:o.scale*o.radius,top:-o.scale*o.width>>1,filter:filter}),vml("fill",{color:getColor(o.color,i),opacity:o.opacity}),vml("stroke",{opacity:0}))))}var i,r=o.scale*(o.length+o.width),s=2*o.scale*r,margin=-(o.width+o.length)*o.scale*2+"px",g=css(grp(),{position:"absolute",top:margin,left:margin});if(o.shadow)for(i=1;i<=o.lines;i++)seg(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=o.lines;i++)seg(i);return ins(el,g)},Spinner.prototype.opacity=function(el,i,val,o){var c=el.firstChild;o=o.shadow&&o.lines||0,c&&i+o>1)+"px"})}for(var seg,i=0,start=(o.lines-1)*(1-o.direction)/2;i\n \n \n \n \n"},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(34),utils=__webpack_require__(29);module.exports=function(markdown,type){var Blocks=__webpack_require__(242);type=utils.classify(type);var html=markdown,shouldWrap="Text"===type;_.isUndefined(shouldWrap)&&(shouldWrap=!1),shouldWrap&&(html=""+html),html=html.replace(/\[([^\]]+)\]\(([^\)]+)\)/gm,function(match,p1,p2){return""+p1.replace(/\n/g,"")+""}),html=utils.reverse(utils.reverse(html).replace(/_(?!\\)((_\\|[^_])*)_(?=$|[^\\])/gm,function(match,p1){return">i/<"+p1.replace(/\n/g,"").replace(/[\s]+$/,"")+">i<"}).replace(/\*\*(?!\\)((\*\*\\|[^\*\*])*)\*\*(?=$|[^\\])/gm,function(match,p1){return">b/<"+p1.replace(/\n/g,"").replace(/[\s]+$/,"")+">b<"})),html=html.replace(/^\> (.+)$/gm,"$1");var block;return Blocks.hasOwnProperty(type)&&(block=Blocks[type],!_.isUndefined(block.prototype.toHTML)&&_.isFunction(block.prototype.toHTML)&&(html=block.prototype.toHTML(html))),shouldWrap&&(html=html.replace(/\n\s*\n/gm,"
"),html=html.replace(/\n/gm,"
")),html=html.replace(/\t/g," ").replace(/\n/g,"
").replace(/\*\*/,"").replace(/__/,""),html=html.replace(/\\\*/g,"*").replace(/\\\[/g,"[").replace(/\\\]/g,"]").replace(/\\\_/g,"_").replace(/\\\(/g,"(").replace(/\\\)/g,")").replace(/\\\-/g,"-"),shouldWrap&&(html+="
"),html}},function(module,exports,__webpack_require__){"use strict";var _Array$from=__webpack_require__(255)["default"],selectionRange=__webpack_require__(230),ScribeTextBlockPlugin=function(block){return function(scribe){var stripFirstEmptyElement=function(div){if(null!==div.firstChild){var firstChild=div.firstChild.childNodes[0];firstChild&&"#text"!==firstChild.nodeName&&""===firstChild.innerText&&div.firstChild.removeChild(firstChild)}},rangeToHTML=function(range,extract){var div=document.createElement("div");return extract?div.appendChild(range.extractContents()):div.appendChild(range.cloneContents()),stripFirstEmptyElement(div),div.firstChild&&"#text"!==div.firstChild.nodeName&&(div=div.lastChild),div.innerHTML.trim()},selectToEnd=function(){var selection=new scribe.api.Selection,range=selection.range.cloneRange();return range.setEndAfter(scribe.el.lastChild,0),range},isAtStartOfBlock=function(){if(""===scribe.getTextContent())return!0;var selection=new scribe.api.Selection,range=selection.range.cloneRange();return range.setStartBefore(scribe.el.firstChild,0),""===rangeToHTML(range,!1)},getTotalLength=function(){var selection=new scribe.api.Selection,range=selection.range.cloneRange();return range.selectNodeContents(scribe.el),range.toString().length},isAtEndOfBlock=function(){var currentRange=selectionRange(scribe.el);return getTotalLength()===currentRange.end&¤tRange.start===currentRange.end},createBlocksFromParagraphs=function(){var fakeContent=document.createElement("div");if(fakeContent.appendChild(selectToEnd().extractContents()),stripFirstEmptyElement(fakeContent),!scribe.allowsBlockElements()){var tempContent=document.createElement("div");tempContent.appendChild(fakeContent),fakeContent=tempContent}if(fakeContent.childNodes.length>=1){var data,nodes=_Array$from(fakeContent.childNodes);nodes.reverse().forEach(function(node){""!==node.innerText&&(data={format:"html",text:node.innerHTML.trim()},block.mediator.trigger("block:create","Text",data,block.el))})}},isAtStart=!1;scribe.el.addEventListener("keydown",function(ev){block.supressKeyListeners||(13!==ev.keyCode||ev.shiftKey?37!==ev.keyCode&&38!==ev.keyCode||!isAtStartOfBlock()?8===ev.keyCode&&isAtStartOfBlock()?(ev.preventDefault(),isAtStart=!0):39!==ev.keyCode&&40!==ev.keyCode||!isAtEndOfBlock()||(ev.preventDefault(),block.mediator.trigger("block:focusNext",block.blockID)):(ev.preventDefault(),block.mediator.trigger("block:focusPrevious",block.blockID)):(ev.preventDefault(),isAtEndOfBlock()?(selectToEnd().extractContents(),block.mediator.trigger("block:create","Text",null,block.el)):createBlocksFromParagraphs(),scribe.allowsBlockElements()&&""===scribe.getTextContent()&&scribe.setContent("
")))}),scribe.el.addEventListener("keyup",function(ev){block.supressKeyListeners||8===ev.keyCode&&isAtStart&&(ev.preventDefault(),block.mediator.trigger("block:remove",block.blockID,{transposeContent:!0}),isAtStart=!1)})}};module.exports=ScribeTextBlockPlugin},function(module,exports,__webpack_require__){module.exports={"default":__webpack_require__(256),__esModule:!0}},function(module,exports,__webpack_require__){__webpack_require__(86),__webpack_require__(257),module.exports=__webpack_require__(7).Array.from},function(module,exports,__webpack_require__){"use strict";var ctx=__webpack_require__(8),$export=__webpack_require__(5),toObject=__webpack_require__(12),call=__webpack_require__(113),isArrayIter=__webpack_require__(114),toLength=__webpack_require__(115),getIterFn=__webpack_require__(116);$export($export.S+$export.F*!__webpack_require__(127)(function(iter){Array.from(iter)}),"Array",{from:function(arrayLike){var length,result,step,iterator,O=toObject(arrayLike),C="function"==typeof this?this:Array,$$=arguments,$$len=$$.length,mapfn=$$len>1?$$[1]:void 0,mapping=void 0!==mapfn,index=0,iterFn=getIterFn(O);if(mapping&&(mapfn=ctx(mapfn,$$len>2?$$[2]:void 0,2)),void 0==iterFn||C==Array&&isArrayIter(iterFn))for(length=toLength(O.length),result=new C(length);length>index;index++)result[index]=mapping?mapfn(O[index],index):O[index];else for(iterator=iterFn.call(O),result=new C;!(step=iterator.next()).done;index++)result[index]=mapping?call(iterator,mapfn,[step.value,index],!0):step.value;return result.length=index,result}})},function(module,exports,__webpack_require__){"use strict";var _Array$from=__webpack_require__(255)["default"],scribePastePlugin=function(block){return function(scribe){var insertHTMLCommandPatch=new scribe.api.CommandPatch("insertHTML");insertHTMLCommandPatch.execute=function(value){var _this=this;scribe.transactionManager.run(function(){scribe.api.CommandPatch.prototype.execute.call(_this,value);var fakeContent=document.createElement("div");if(fakeContent.innerHTML=scribe.getContent(),fakeContent.childNodes.length>1){var nodes=_Array$from(fakeContent.childNodes);scribe.setContent(nodes.shift().innerHTML),nodes.reverse().forEach(function(node){var data={format:"html",text:node.innerHTML};block.mediator.trigger("block:create","Text",data,block.el)}),scribe.el.focus()}})},scribe.commandPatches.insertHTML=insertHTMLCommandPatch}};module.exports=scribePastePlugin},function(module,exports){"use strict";var scribeHeadingPlugin=function(block){return function(scribe){var headingCommand=new scribe.api.Command("heading");headingCommand.queryEnabled=function(){return block.inline_editable},headingCommand.queryState=function(){return"heading"===block.type};var getBlockType=function(){return headingCommand.queryState()?"Text":"Heading"};headingCommand.execute=function(value){var data={format:"html",text:block.getScribeInnerContent()};block.mediator.trigger("block:replace",block.el,getBlockType(),data)},scribe.commands.heading=headingCommand}};module.exports=scribeHeadingPlugin},function(module,exports){"use strict";var scribeQuotePlugin=function(block){return function(scribe){var quoteCommand=new scribe.api.Command("quote");quoteCommand.queryEnabled=function(){return block.inline_editable},quoteCommand.queryState=function(){return"quote"===block.type};var getBlockType=function(){return quoteCommand.queryState()?"Text":"Quote"};quoteCommand.execute=function(value){var data={format:"html",text:block.getScribeInnerContent()};block.mediator.trigger("block:replace",block.el,getBlockType(),data)},scribe.commands.quote=quoteCommand}};module.exports=scribeQuotePlugin},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(34),Block=__webpack_require__(244),stToHTML=__webpack_require__(253),ScribeHeadingPlugin=__webpack_require__(259),ScribeQuotePlugin=__webpack_require__(260),template=_.template(['','','"',' class="st-input-string js-cite-input" type="text" />'].join("\n"));module.exports=Block.extend({type:"quote",icon_name:"quote",textable:!0,toolbarEnabled:!1,editorHTML:function(){return template(this)},configureScribe:function(scribe){scribe.use(new ScribeHeadingPlugin(this)),scribe.use(new ScribeQuotePlugin(this))},loadData:function(data){this.options.convertFromMarkdown&&"html"!==data.format?this.setTextBlockHTML(stToHTML(data.text,this.type)):this.setTextBlockHTML(data.text),data.cite&&(this.$(".js-cite-input")[0].value=data.cite)}})},function(module,exports,__webpack_require__){"use strict";var Dom=__webpack_require__(69),Block=__webpack_require__(244);module.exports=Block.extend({type:"image",droppable:!0,uploadable:!0,icon_name:"image",loadData:function(data){this.editor.innerHTML="",this.editor.appendChild(Dom.createElement("img",{src:data.file.url}))},onDrop:function(transferData){var file=transferData.files[0],urlAPI="undefined"!=typeof URL?URL:"undefined"!=typeof webkitURL?webkitURL:null;/image/.test(file.type)&&(this.loading(),Dom.hide(this.inputs),this.editor.innerHTML="",this.editor.appendChild(Dom.createElement("img",{src:urlAPI.createObjectURL(file)})),Dom.show(this.editor),this.uploader(file,function(data){this.setData(data),this.ready()},function(error){this.addMessage(i18n.t("blocks:image:upload_error")),this.ready()}))}})},function(module,exports,__webpack_require__){"use strict";var Block=__webpack_require__(244),stToHTML=__webpack_require__(253),ScribeTextBlockPlugin=__webpack_require__(254),ScribeHeadingPlugin=__webpack_require__(259),ScribeQuotePlugin=__webpack_require__(260);module.exports=Block.extend({type:"heading",editorHTML:'',configureScribe:function(scribe){scribe.use(new ScribeTextBlockPlugin(this)),scribe.use(new ScribeHeadingPlugin(this)),scribe.use(new ScribeQuotePlugin(this)),scribe.on("content-changed",this.toggleEmptyClass.bind(this))},textable:!0,toolbarEnabled:!1,scribeOptions:{allowBlockElements:!1,tags:{p:!1}},icon_name:"heading",loadData:function(data){this.options.convertFromMarkdown&&"html"!==data.format?this.setTextBlockHTML(stToHTML(data.text,this.type)):this.setTextBlockHTML(data.text)},onBlockRender:function(){this.focus(),this.toggleEmptyClass()},toggleEmptyClass:function(){this.el.classList.toggle("st-block--empty",0===this._scribe.getTextContent().length)}})},function(module,exports,__webpack_require__){"use strict";var Block=__webpack_require__(244),stToHTML=__webpack_require__(253),ScribeListBlockPlugin=__webpack_require__(265);module.exports=Block.extend({type:"list",icon_name:"list",multi_editable:!0,scribeOptions:{allowBlockElements:!1,tags:{p:!1}},configureScribe:function(scribe){scribe.use(new ScribeListBlockPlugin(this))},editorHTML:'',listItemEditorHTML:'',initialize:function(){this.editorIds=[]},beforeLoadingData:function(){this.setupListVariables(),this.loadData(this._getData())},onBlockRender:function(){this.ul||this.setupListVariables(),this.editorIds.length<1&&this.addListItem()},setupListVariables:function(){this.ul=this.inner.querySelector("ul")},loadData:function(data){var block=this;this.options.convertFromMarkdown&&"html"!==data.format&&(data=this.parseFromMarkdown(data.text)),data.listItems.length?data.listItems.forEach(function(li){block.addListItem(li.content)}):block.addListItem()},parseFromMarkdown:function(markdown){var listItems=markdown.replace(/^ - (.+)$/gm,"$1").split("\n");return listItems=listItems.filter(function(item){return item.length}).map(function(item){return{content:stToHTML(item,this.type)}}.bind(this)),{listItems:listItems,format:"html"}},_serializeData:function(){var data={format:"html",listItems:[]};return this.editorIds.forEach(function(editorId){var listItem={content:this.getTextEditor(editorId).scribe.getContent()};data.listItems.push(listItem)}.bind(this)),data},addListItemAfterCurrent:function(content){this.addListItem(content,this.getCurrentTextEditor())},addListItem:function(content,after){content=content||"","
"===content.trim()&&(content="");var editor=this.newTextEditor(this.listItemEditorHTML,content);if(after&&this.ul.lastchild!==after.node){var before=after.node.nextSibling;this.ul.insertBefore(editor.node,before);var idx=this.editorIds.indexOf(after.id)+1;this.editorIds.splice(idx,0,editor.id)}else this.ul.appendChild(editor.node),this.editorIds.push(editor.id);!content&&this.focusOn(editor)},focusOnNeighbor:function(item){var neighbor=this.previousListItem()||this.nextListItem();neighbor&&this.focusOn(neighbor)},focusOn:function(editor){var range,scribe=editor.scribe,selection=new scribe.api.Selection,lastChild=scribe.el.lastChild;selection.range&&(range=selection.range.cloneRange()),editor.el.focus(),range&&(range.setStartAfter(lastChild,1),range.collapse(!1))},focusAtEnd:function(){var lastEditorId=this.editorIds[this.editorIds.length-1];this.appendToTextEditor(lastEditorId)},removeCurrentListItem:function(){if(1!==this.editorIds.length){var item=this.getCurrentTextEditor(),idx=this.editorIds.indexOf(item.id);this.focusOnNeighbor(item),this.editorIds.splice(idx,1),this.ul.removeChild(item.node),this.removeTextEditor(item.id)}},appendToCurrentItem:function(content){this.appendToTextEditor(this.getCurrentTextEditor().id,content)},isLastListItem:function(){return 1===this.editorIds.length},nextListItem:function(){var idx=this.editorIds.indexOf(this.getCurrentTextEditor().id),editorId=this.editorIds[idx+1];return void 0!==editorId?this.getTextEditor(editorId):null},previousListItem:function(){var idx=this.editorIds.indexOf(this.getCurrentTextEditor().id),editorId=this.editorIds[idx-1];return void 0!==editorId?this.getTextEditor(editorId):null}})},function(module,exports){"use strict";var ScribeListBlockPlugin=function(block){return function(scribe){scribe.el.addEventListener("keydown",function(ev){if(!block.supressKeyListeners){var content,rangeToHTML=function(range){var div=document.createElement("div");return div.appendChild(range.extractContents()),div.innerHTML},selectToEnd=function(){var selection=new scribe.api.Selection,range=selection.range.cloneRange();return range.setEndAfter(scribe.el.lastChild,0),range},currentPosition=function(){var selection=new scribe.api.Selection;return selection.range.startOffset};13!==ev.keyCode||ev.shiftKey?8===ev.keyCode&&0===currentPosition()?(ev.preventDefault(),block.isLastListItem()?block.mediator.trigger("block:remove",block.blockID):(content=scribe.getContent(),block.removeCurrentListItem(),block.appendToCurrentItem(content))):46===ev.keyCode:(ev.preventDefault(),0===scribe.getTextContent().length?(block.removeCurrentListItem(),block.mediator.trigger("block:create","Text",null,block.el)):(content=rangeToHTML(selectToEnd()),block.addListItemAfterCurrent(content)))}})}};module.exports=ScribeListBlockPlugin},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(34),utils=__webpack_require__(29),Dom=__webpack_require__(69),Block=__webpack_require__(244),tweet_template=_.template([""].join("\n"));module.exports=Block.extend({type:"tweet",icon_name:"tweet",droppable:!0,pastable:!0,fetchable:!0,drop_options:{re_render_on_reorder:!0},fetchUrl:function(tweetID){return"/tweets/?tweet_id="+tweetID},loadData:function(data){_.isUndefined(data.status_url)&&(data.status_url="");var iframe=this.inner.querySelector("iframe");Dom.remove(iframe),this.inner.insertAdjacentHTML("afterbegin",tweet_template(data));var script=Dom.createElement("script",{src:"//platform.twitter.com/widgets.js"});this.inner.appendChild(script)},onContentPasted:function(event){var input=event.target,val=input.value;this.handleTwitterDropPaste(val)},handleTwitterDropPaste:function(url){if(!this.validTweetUrl(url))return void utils.log("Invalid Tweet URL");var tweetID=url.match(/[^\/]+$/);_.isEmpty(tweetID)||(this.loading(),tweetID=tweetID[0],this.fetch(this.fetchUrl(tweetID),{dataType:"json"},this.onTweetSuccess,this.onTweetFail))},validTweetUrl:function(url){return utils.isURI(url)&&url.indexOf("twitter")!==-1&&url.indexOf("status")!==-1},onTweetSuccess:function(data){var obj={user:{profile_image_url:data.user.profile_image_url,profile_image_url_https:data.user.profile_image_url_https,screen_name:data.user.screen_name,name:data.user.name},id:data.id_str,text:data.text,created_at:data.created_at,entities:data.entities,status_url:"https://twitter.com/"+data.user.screen_name+"/status/"+data.id_str};this.setAndLoadData(obj),this.ready()},onTweetFail:function(){this.addMessage(i18n.t("blocks:tweet:fetch_error")),this.ready()},onDrop:function(transferData){var url=transferData.getData("text/plain");this.handleTwitterDropPaste(url)}})},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(34),utils=__webpack_require__(29),Block=__webpack_require__(244);module.exports=Block.extend({providers:{vimeo:{regex:/(?:http[s]?:\/\/)?(?:www.)?vimeo\.co(?:.+(?:\/)([^\/].*)+$)/,html:''},youtube:{regex:/^.*(?:(?:youtu\.be\/)|(?:youtube\.com)\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*)/,html:''}},type:"video",droppable:!0,pastable:!0,icon_name:"video",loadData:function(data){if(this.providers.hasOwnProperty(data.source)){var source=this.providers[data.source],protocol="file:"===window.location.protocol?"http:":window.location.protocol,aspectRatioClass=source.square?"with-square-media":"with-sixteen-by-nine-media";this.editor.classList.add("st-block__editor--"+aspectRatioClass),this.editor.innerHTML=_.template(source.html,{protocol:protocol,remote_id:data.remote_id,width:this.editor.style.width})}},onContentPasted:function(event){this.handleDropPaste(event.target.value)},matchVideoProvider:function(provider,index,url){var match=provider.regex.exec(url);return null==match||_.isUndefined(match[1])?{}:{source:index,remote_id:match[1]}},handleDropPaste:function(url){if(utils.isURI(url))for(var key in this.providers)this.providers.hasOwnProperty(key)&&this.setAndLoadData(this.matchVideoProvider(this.providers[key],key,url))},onDrop:function(transferData){var url=transferData.getData("text/plain");this.handleDropPaste(url)}})},function(module,exports,__webpack_require__){"use strict";var _Object$keys=__webpack_require__(30)["default"];module.exports={mediatedEvents:{},eventNamespace:null,_bindMediatedEvents:function(){_Object$keys(this.mediatedEvents).forEach(function(eventName){var cb=this.mediatedEvents[eventName];eventName=this.eventNamespace?this.eventNamespace+":"+eventName:eventName,this.mediator.on(eventName,this[cb].bind(this))},this)}}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],_=__webpack_require__(34),config=__webpack_require__(68),Dom=__webpack_require__(69),Events=__webpack_require__(131),FORMAT_BUTTON_TEMPLATE=__webpack_require__(270),FormatBar=function(options,mediator,editor){this.editor=editor,this.options=_Object$assign({},config.defaults.formatBar,options||{}),this.commands=this.options.commands,this.mediator=mediator,this.isShown=!1,this._ensureElement(),this._bindFunctions(),this._bindMediatedEvents(),this.initialize.apply(this,arguments)};_Object$assign(FormatBar.prototype,__webpack_require__(235),__webpack_require__(268),__webpack_require__(73),__webpack_require__(236),{className:"st-format-bar",bound:["onFormatButtonClick","renderBySelection","hide"],eventNamespace:"formatter",mediatedEvents:{position:"renderBySelection",show:"show",hide:"hide"},initialize:function(){var buttons=this.commands.reduce(function(memo,format){return memo+=FORMAT_BUTTON_TEMPLATE(format)},"");this.el.insertAdjacentHTML("beforeend",buttons),Events.delegate(this.el,".st-format-btn","mousedown",this.onFormatButtonClick)},hide:function(){this.block=void 0,this.isShown=!1,this.el.classList.remove("st-format-bar--is-ready"),Dom.remove(this.el)},show:function(){this.isShown||(this.isShown=!0,this.editor.outer.appendChild(this.el),this.el.classList.add("st-format-bar--is-ready"))},remove:function(){Dom.remove(this.el)},renderBySelection:function(block){this.block=block,this.highlightSelectedButtons(),this.show(),this.calculatePosition()},calculatePosition:function(){var selection=window.getSelection(),range=selection.getRangeAt(0),boundary=range.getBoundingClientRect(),coords={},outer=this.editor.outer,outerBoundary=outer.getBoundingClientRect();coords.top=boundary.top-outerBoundary.top+"px",coords.left=(boundary.left+boundary.right)/2-this.el.offsetWidth/2-outerBoundary.left+"px",this.el.style.top=coords.top,this.el.style.left=coords.left},highlightSelectedButtons:function(){var _this=this;[].forEach.call(this.el.querySelectorAll(".st-format-btn"),function(btn){var cmd=btn.getAttribute("data-cmd");btn.classList.toggle("st-format-btn--is-active",_this.block.queryTextBlockCommandState(cmd)),btn=null})},onFormatButtonClick:function(ev){if(ev.preventDefault(),ev.stopPropagation(),_.isUndefined(this.block))throw"Associated block not found";var btn=ev.currentTarget,cmd=btn.getAttribute("data-cmd");return!_.isUndefined(cmd)&&(this.block.execTextBlockCommand(cmd),this.highlightSelectedButtons(),document.activeElement.focus(),!1)}}),module.exports=FormatBar},function(module,exports,__webpack_require__){"use strict";var config=__webpack_require__(68);module.exports=function(_ref){var name=_ref.name,cmd=(_ref.text,_ref.cmd),iconName=_ref.iconName;return'\n \n '}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],_Object$keys=__webpack_require__(30)["default"],_=__webpack_require__(34),config=__webpack_require__(68),utils=__webpack_require__(29),Dom=__webpack_require__(69),Events=__webpack_require__(73),EventBus=__webpack_require__(75),FormEvents=__webpack_require__(272),BlockControls=__webpack_require__(273),BlockAddition=__webpack_require__(275),BlockAdditionTop=__webpack_require__(277),BlockManager=__webpack_require__(241),FormatBar=__webpack_require__(269),EditorStore=__webpack_require__(76),ErrorHandler=__webpack_require__(278),Editor=function(options){this.initialize(options)};_Object$assign(Editor.prototype,__webpack_require__(235),__webpack_require__(73),{bound:["onFormSubmit","hideAllTheThings","changeBlockPosition","removeBlockDragOver","blockLimitReached","blockOrderUpdated"],events:{"block:reorder:dragend":"removeBlockDragOver","block:reorder:dropped":"removeBlockDragOver","block:content:dropped":"removeBlockDragOver"},initialize:function(options){return utils.log("Init SirTrevor.Editor"),this.options=_Object$assign({},config.defaults,options||{}),this.ID=_.uniqueId("st-editor-"),!!this._ensureAndSetElements()&&(!_.isUndefined(this.options.onEditorRender)&&_.isFunction(this.options.onEditorRender)&&(this.onEditorRender=this.options.onEditorRender),this.mediator=_Object$assign({},Events),this._bindFunctions(),config.instances.push(this),this.build(),void FormEvents.bindFormSubmit(this.form))},build:function(){Dom.hide(this.el),this.errorHandler=new ErrorHandler(this.outer,this.mediator,this.options.errorsContainer),this.store=new EditorStore(this.el.value,this.mediator),this.blockManager=new BlockManager(this),this.blockAddition=BlockAddition.create(this),this.BlockAdditionTop=BlockAdditionTop.create(this),this.blockControls=BlockControls.create(this),this.formatBar=new FormatBar(this.options.formatBar,this.mediator,this),this.mediator.on("block:changePosition",this.changeBlockPosition),this.mediator.on("block:limitReached",this.blockLimitReached),this.mediator.on("block:rerender",this.blockOrderUpdated),this.mediator.on("block:create",this.blockOrderUpdated),this.mediator.on("block:remove",this.blockOrderUpdated),this.mediator.on("block:replace",this.blockOrderUpdated),this.dataStore="Please use store.retrieve();",this._setEvents(),window.addEventListener("click",this.hideAllTheThings),document.body.addEventListener("keydown",this.disableBackButton),this.createBlocks(),this.wrapper.classList.add("st-ready"),_.isUndefined(this.onEditorRender)||this.onEditorRender()},createBlocks:function(){var store=this.store.retrieve();store.data.length>0?store.data.forEach(function(block){this.mediator.trigger("block:create",block.type,block.data)},this):this.options.defaultType!==!1&&this.mediator.trigger("block:create",this.options.defaultType,{})},destroy:function(){this.formatBar.destroy(),this.blockAddition.destroy(),this.blockControls.destroy(),this.blockManager.blocks.forEach(function(block){this.mediator.trigger("block:remove",block.blockID)},this),this.mediator.stopListening(),this.stopListening(),config.instances=config.instances.filter(function(instance){return instance.ID!==this.ID},this),window.removeEventListener("click",this.hideAllTheThings),document.body.removeEventListener("keydown",this.disableBackButton),this.store.reset(),Dom.replaceWith(this.outer,this.el)},reinitialize:function(options){this.destroy(),this.initialize(options||this.options)},blockLimitReached:function(toggle){this.wrapper.classList.toggle("st--block-limit-reached",toggle)},blockOrderUpdated:function(){var blockElement=this.wrapper.querySelectorAll(".st-block")[0],hideTopControls=!1;if(blockElement){var block=this.blockManager.findBlockById(blockElement.getAttribute("id"));hideTopControls=block&&block.textable}this._toggleHideTopControls(hideTopControls)},_toggleHideTopControls:function(toggle){this.wrapper.classList.toggle("st--hide-top-controls",toggle)},_setEvents:function(){_Object$keys(this.events).forEach(function(type){EventBus.on(type,this[this.events[type]],this)},this)},hideAllTheThings:function(e){this.blockControls.hide(),this.blockAddition.hide(),null===document.activeElement.getAttribute("contenteditable")&&this.formatBar.hide();var popupSelectors=".st-block__ui-delete-controls";Array.prototype.forEach.call(this.wrapper.querySelectorAll(popupSelectors),function(el){el.classList.remove("active")})},store:function(method,options){return utils.log("The store method has been removed, please call store[methodName]"),this.store[method].call(this,options||{})},removeBlockDragOver:function(){var dragOver=this.outer.querySelector(".st-drag-over");dragOver&&dragOver.classList.remove("st-drag-over")},changeBlockPosition:function(block,selectedPosition){selectedPosition-=1;var blockPosition=this.blockManager.getBlockPosition(block),blockBy=this.wrapper.querySelectorAll(".st-block")[selectedPosition];blockBy&&blockBy.getAttribute("id")!==block.getAttribute("id")&&(this.hideAllTheThings(),blockPosition>selectedPosition?blockBy.parentNode.insertBefore(block,blockBy):Dom.insertAfter(block,blockBy))},onFormSubmit:function(shouldValidate){return shouldValidate=shouldValidate!==!1,utils.log("Handling form submission for Editor "+this.ID),this.mediator.trigger("errors:reset"),this.store.reset(),this.validateBlocks(shouldValidate),this.blockManager.validateBlockTypesExist(shouldValidate),this.mediator.trigger("errors:render"),this.el.value=this.store.toString(),this.errorHandler.errors.length},validateBlocks:function(shouldValidate){var _this=this;Array.prototype.forEach.call(this.wrapper.querySelectorAll(".st-block"),function(block,idx){var _block=_this.blockManager.findBlockById(block.getAttribute("id"));_.isUndefined(_block)||_this.validateAndSaveBlock(_block,shouldValidate)})},validateAndSaveBlock:function(block,shouldValidate){if(!config.skipValidation&&shouldValidate&&!block.valid())return this.mediator.trigger("errors:add",{text:_.result(block,"validationFailMsg")}),void utils.log("Block "+block.blockID+" failed validation");if("text"!==block.type||!block.isEmpty()){var blockData=block.getData();utils.log("Adding data for block "+block.blockID+" to block store:",blockData),this.store.addData(blockData)}},disableBackButton:function(e){var target=e.target||e.srcElement;if(8===e.keyCode){if(target.getAttribute("contenteditable")||"INPUT"===target.tagName||"TEXTAREA"===target.tagName)return;e.preventDefault()}},findBlockById:function(block_id){return this.blockManager.findBlockById(block_id)},getBlocksByType:function(block_type){return this.blockManager.getBlocksByType(block_type)},getBlocksByIDs:function(block_ids){return this.blockManager.getBlocksByIDs(block_ids)},getBlockPosition:function(block){return utils.log("This method has been moved to blockManager.getBlockPosition()"),this.blockManager.getBlockPosition(block)},_ensureAndSetElements:function(){if(_.isUndefined(this.options.el))return utils.log("You must provide an el"),!1;this.el=this.options.el,this.form=Dom.getClosest(this.el,"form");var outer=Dom.createElement("div",{id:this.ID,"class":"st-outer notranslate",dropzone:"copy link move"}),wrapper=Dom.createElement("div",{"class":"st-blocks"});return Dom.wrap(Dom.wrap(this.el,outer),wrapper),this.outer=this.form.querySelector("#"+this.ID),this.wrapper=this.outer.querySelector(".st-blocks"),!0}}),module.exports=Editor},function(module,exports,__webpack_require__){
+"use strict";var config=__webpack_require__(68),utils=__webpack_require__(29),EventBus=__webpack_require__(75),Submittable=__webpack_require__(77),formBound=!1,FormEvents={bindFormSubmit:function(form){formBound||(new Submittable(form),form.addEventListener("submit",this.onFormSubmit),formBound=!0)},onBeforeSubmit:function(shouldValidate){var errors=0;return config.instances.forEach(function(inst,i){errors+=inst.onFormSubmit(shouldValidate)}),utils.log("Total errors: "+errors),errors},onFormSubmit:function(ev){var errors=FormEvents.onBeforeSubmit();errors>0&&(EventBus.trigger("onError"),ev.preventDefault())}};module.exports=FormEvents},function(module,exports,__webpack_require__){"use strict";function generateBlocksHTML(Blocks,availableTypes){return availableTypes.reduce(function(memo,type){return Blocks.hasOwnProperty(type)&&Blocks[type].prototype.toolbarEnabled?memo+=BLOCK_REPLACER_CONTROL_TEMPLATE(Blocks[type].prototype):memo},"")}function render(Blocks,availableTypes){var el=document.createElement("div");el.className="st-block-controls__buttons",el.innerHTML=generateBlocksHTML.apply(null,arguments);var elButtons=document.createElement("div");return elButtons.className="st-block-controls",elButtons.appendChild(el),elButtons}var Blocks=__webpack_require__(242),Events=__webpack_require__(131),BLOCK_REPLACER_CONTROL_TEMPLATE=__webpack_require__(274);module.exports.create=function(SirTrevor){function replaceBlock(e){SirTrevor.mediator.trigger("block:replace",el.parentNode,this.getAttribute("data-type"))}function insert(e){e.stopPropagation();var parent=this.parentNode;parent&&hide()!==parent&&(parent.appendChild(el),parent.classList.toggle("st-block--controls-active"))}function hide(){var parent=el.parentNode;if(parent)return parent.removeChild(el),parent.classList.remove("st-block--controls-active"),parent}function destroy(){SirTrevor=null,el=null}var el=render(Blocks,SirTrevor.blockManager.blockTypes);return Events.delegate(SirTrevor.wrapper,".st-block-replacer","click",insert),Events.delegate(SirTrevor.wrapper,".st-block-controls__button","click",replaceBlock),{el:el,hide:hide,destroy:destroy}}},function(module,exports,__webpack_require__){"use strict";var config=__webpack_require__(68);module.exports=function(block){return'\n \n "}},function(module,exports,__webpack_require__){"use strict";var dropEvents=__webpack_require__(133),EventBus=__webpack_require__(75),Dom=__webpack_require__(69),Events=__webpack_require__(131),TOP_CONTROLS_TEMPLATE=__webpack_require__(276);module.exports.create=function(SirTrevor){function createBlock(e){SirTrevor.mediator.trigger("block:create","Text",null,this.parentNode.parentNode.id?this.parentNode.parentNode:this.parentNode)}function hide(){}function destroy(){SirTrevor=null}function onDrop(ev){ev.preventDefault();var dropped_on=topControls,item_id=ev.dataTransfer.getData("text/plain"),block=document.querySelector("#"+item_id);dropped_on.id!==item_id&&Dom.insertAfter(block,dropped_on),SirTrevor.mediator.trigger("block:rerender",item_id),EventBus.trigger("block:reorder:dropped",item_id)}SirTrevor.wrapper.insertAdjacentHTML("beforeend",TOP_CONTROLS_TEMPLATE());var topControls=SirTrevor.wrapper.querySelector(".st-top-controls");return dropEvents.dropArea(topControls),topControls.addEventListener("drop",onDrop),Events.delegate(SirTrevor.wrapper,".st-block-addition","click",createBlock),{destroy:destroy,hide:hide}}},function(module,exports,__webpack_require__){"use strict";var BLOCK_ADDITION_TEMPLATE=__webpack_require__(248);module.exports=function(){return'\n \n '+BLOCK_ADDITION_TEMPLATE()+"\n
\n "}},function(module,exports,__webpack_require__){"use strict";var Events=__webpack_require__(131);module.exports.create=function(SirTrevor){function createBlock(e){SirTrevor.mediator.trigger("block:create","Text",null,this.parentNode.parentNode.previousSibling)}function hide(){}function destroy(){SirTrevor=null}return Events.delegate(SirTrevor.wrapper,".st-block-addition-top__button","click",createBlock),Events.delegate(SirTrevor.wrapper,".st-block-addition-top__icon","click",createBlock),{destroy:destroy,hide:hide}}},function(module,exports,__webpack_require__){"use strict";var _Object$assign=__webpack_require__(2)["default"],_=__webpack_require__(34),Dom=__webpack_require__(69),ErrorHandler=function(wrapper,mediator,container){this.wrapper=wrapper,this.mediator=mediator,this.el=container,_.isUndefined(this.el)&&(this._ensureElement(),this.wrapper.insertBefore(this.el,this.wrapper.firstChild)),Dom.hide(this.el),this._bindFunctions(),this._bindMediatedEvents(),this.initialize()};_Object$assign(ErrorHandler.prototype,__webpack_require__(235),__webpack_require__(268),__webpack_require__(236),{errors:[],className:"st-errors",eventNamespace:"errors",mediatedEvents:{reset:"reset",add:"addMessage",render:"render"},initialize:function(){var list=document.createElement("ul"),p=document.createElement("p");p.innerHTML=i18n.t("errors:title"),this.el.appendChild(p).appendChild(list),this.list=list},render:function(){return 0!==this.errors.length&&(this.errors.forEach(this.createErrorItem,this),void Dom.show(this.el))},createErrorItem:function(errorObj){var error=document.createElement("li");error.classList.add("st-errors__msg"),error.innerHTML=errorObj.text,this.list.appendChild(error)},addMessage:function(error){this.errors.push(error)},reset:function(){return 0!==this.errors.length&&(this.errors=[],this.list.innerHTML="",void Dom.hide(this.el))}}),module.exports=ErrorHandler},function(module,exports,__webpack_require__){"use strict";var _=__webpack_require__(34),utils=__webpack_require__(29);module.exports=function(content,type){function replaceBolds(match,p1,p2){return _.isUndefined(p2)&&(p2=""),"**"+p1.replace(/<(.)?br(.)?>/g,"")+"**"+p2}function replaceItalics(match,p1,p2){return _.isUndefined(p2)&&(p2=""),"_"+p1.replace(/<(.)?br(.)?>/g,"")+"_"+p2}var Blocks=__webpack_require__(242);type=utils.classify(type);var markdown=content;markdown=markdown.replace(/ /g," "),markdown=markdown.replace(/( class=(")?Mso[a-zA-Z]+(")?)/g,"").replace(//g,"").replace(/\/\*(.*?)\*\//g,"").replace(/<(\/)*(meta|link|span|\\?xml:|st1:|o:|font)(.*?)>/gi,"");var tagStripper,i,badTags=["style","script","applet","embed","noframes","noscript"];for(i=0;i","gi"),markdown=markdown.replace(tagStripper,"");markdown=markdown.replace(/\*/g,"\\*").replace(/\[/g,"\\[").replace(/\]/g,"\\]").replace(/\_/g,"\\_").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\-/g,"\\-");var inlineTags=["em","i","strong","b"];for(i=0;i
"+inlineTags[i]+">","gi"),markdown=markdown.replace(tagStripper,"
");markdown=markdown.replace(/<(\w+)(?:\s+\w+="[^"]+(?:"\$[^"]+"[^"]+)?")*>\s*<\/\1>/gim,"").replace(/\n/gm,"").replace(/(.*?)<\/a>/gim,function(match,p1,p2){return"["+p2.trim().replace(/<(.)?br(.)?>/g,"")+"]("+p1+")"}).replace(/(?:\s*)(.*?)(\s)*?<\/strong>/gim,replaceBolds).replace(/(?:\s*)(.*?)(\s*)?<\/b>/gim,replaceBolds).replace(/(?:\s*)(.*?)(\s*)?<\/em>/gim,replaceItalics).replace(/(?:\s*)(.*?)(\s*)?<\/i>/gim,replaceItalics),markdown=markdown.replace(/([^<>]+)()/g,"$1\n$2").replace(/
/g,"\n
").replace(/(?:
)([^<>]+)(?:
)/g,"$1\n").replace(/(?:
)(?:
)?([^<>]+)(?:
)?(?:<\/div>)/g,"$1\n").replace(/<\/p>/g,"\n\n").replace(/<(.)?br(.)?>/g,"\n").replace(/</g,"<").replace(/>/g,">");var block;return Blocks.hasOwnProperty(type)&&(block=Blocks[type],!_.isUndefined(block.prototype.toMarkdown)&&_.isFunction(block.prototype.toMarkdown)&&(markdown=block.prototype.toMarkdown(markdown))),markdown=markdown.replace(/<\/?[^>]+(>|$)/g,"")}},17]))});
\ No newline at end of file
diff --git a/tests/test_admin.py b/tests/test_admin.py
new file mode 100644
index 0000000..3fbe12d
--- /dev/null
+++ b/tests/test_admin.py
@@ -0,0 +1,24 @@
+from .factories import AdminUserFactory, PostFactory
+from .models import Post
+from .testcases import admin_add_url, admin_change_url, ScreenshotTestCase
+
+
+class TestAdminIntegration(ScreenshotTestCase):
+ """Tests for admin integration of the SirTrevorField."""
+ def test_empty(self):
+ """Sirtrevor is rendered empty when there's no content."""
+ self.login(AdminUserFactory.create())
+ self.driver.get(self.live_server_url + admin_add_url(Post))
+ self.assertScreenshot('body', 'admin-field-empty')
+
+ def test_content(self):
+ """Sirtrevor content is rendered."""
+ self.login(AdminUserFactory.create())
+ post = PostFactory.create(content={
+ 'data': [{
+ 'type': 'video',
+ 'data': {'remote_id': 'dQw4w9WgXcQ', 'source': 'youtube'},
+ }],
+ })
+ self.driver.get(self.live_server_url + admin_change_url(post))
+ self.assertScreenshot('body', 'admin-field-video')
diff --git a/tests/test_widget.py b/tests/test_widget.py
index a08900f..0a47fda 100644
--- a/tests/test_widget.py
+++ b/tests/test_widget.py
@@ -1,4 +1,7 @@
+import json
+
from django.test import TestCase
+from django.utils.html import format_html
from sirtrevor.widgets import SirTrevorWidget
@@ -8,5 +11,17 @@ class TestSirTrevorWidgetRender(TestCase):
def test_render_empty(self):
"""Just a basic textarea when empty."""
result = SirTrevorWidget().render(name='test', value=None)
- expected = ''
+ expected = ''
+ self.assertEqual(result, expected)
+
+ def test_render_content(self):
+ """When given json, it's rendered "escaped" in the page."""
+ data = [{
+ 'type': 'video',
+ 'data': {'remote_id': 'dQw4w9WgXcQ', 'source': 'youtube'},
+ }]
+ json_content = json.dumps(data)
+ result = SirTrevorWidget().render(name='test', value=json_content)
+ template = ''
+ expected = format_html(template, json=json_content)
self.assertEqual(result, expected)
diff --git a/tests/testcases.py b/tests/testcases.py
new file mode 100644
index 0000000..25561cb
--- /dev/null
+++ b/tests/testcases.py
@@ -0,0 +1,52 @@
+from django.conf import settings
+from django.contrib.staticfiles.testing import StaticLiveServerTestCase
+from django.core.urlresolvers import reverse
+from needle.cases import NeedleTestCase
+from needle.driver import NeedlePhantomJS
+
+
+class PhantomJSDriver(NeedlePhantomJS):
+ def __init__(self, *args, **kwargs):
+ path = './node_modules/.bin/phantomjs'
+ kwargs.setdefault('executable_path', path)
+ return super().__init__(*args, **kwargs)
+
+
+class ScreenshotTestCase(NeedleTestCase, StaticLiveServerTestCase):
+ engine_class = 'needle.engines.perceptualdiff_engine.Engine'
+ save_baseline = settings.OVERWRITE_SCREENSHOTS
+
+ @classmethod
+ def get_web_driver(cls):
+ return PhantomJSDriver()
+
+ def login(self, user):
+ """
+ I loathe that we have to log in manually. With a form. Like animals.
+
+ FIXME: Find a way to make this work without filling in a form. Just set
+ a "session" cookie, or something? I tried. I was defeated.
+ """
+ self.driver.get(self.live_server_url + '/admin/')
+ username = self.driver.find_element_by_id('id_username')
+ username.send_keys(user.username)
+ password = self.driver.find_element_by_id('id_password')
+ password.send_keys(user.raw_password)
+ self.driver.find_element_by_css_selector('form').submit()
+
+
+def admin_url_name(obj, view_type):
+ meta = obj._meta
+ return 'admin:{app}_{model}_{view}'.format(
+ app=meta.app_label,
+ model=meta.model_name,
+ view=view_type,
+ )
+
+
+def admin_add_url(obj):
+ return reverse(admin_url_name(obj, 'add'))
+
+
+def admin_change_url(obj):
+ return reverse(admin_url_name(obj, 'change'), args=[obj.pk])
diff --git a/tests/urls.py b/tests/urls.py
new file mode 100644
index 0000000..a3b444a
--- /dev/null
+++ b/tests/urls.py
@@ -0,0 +1,8 @@
+from django.conf.urls import url
+from django.contrib import admin
+from django.contrib.staticfiles.urls import staticfiles_urlpatterns
+
+
+urlpatterns = [
+ url(r'^admin/', admin.site.urls),
+] + staticfiles_urlpatterns()
diff --git a/tox.ini b/tox.ini
index b9d97fa..73e3fd7 100644
--- a/tox.ini
+++ b/tox.ini
@@ -11,7 +11,7 @@ passenv = TERM
commands =
flake8: flake8 .
isort: isort --check-only --recursive sirtrevor tests
- django: coverage run tests/run.py
+ django: coverage run runtests.py
coverage: coverage combine
coverage: coverage report
@@ -19,11 +19,7 @@ deps =
{coverage,django}: -rcov_requirements.txt
django: -rrequirements.txt
django-19: django~=1.9.0
- django-110: django==1.10a1
+ django-110: django~=1.10.0
isort: isort
flake8: flake8
flake8: flake8-commas
-
-
-[testenv:django-110]
-ignore_outcome = true