diff --git a/Gemfile b/Gemfile
index c782fe9a6..a4c83f2c8 100644
--- a/Gemfile
+++ b/Gemfile
@@ -44,6 +44,7 @@ gem "image_processing", "~> 1.12"
gem 'active_model_serializers'
gem 'acts-as-list'
+gem 'aws-actionmailer-ses'
gem 'aws-sdk-rails', '>= 3.8.0'
gem 'aws-sdk-s3'
gem 'carrierwave', '>= 2.2.1'
diff --git a/Gemfile.lock b/Gemfile.lock
index 7feca1338..757569ab1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -102,10 +102,12 @@ GEM
public_suffix (>= 2.0.2, < 7.0)
aes_key_wrap (1.1.0)
ast (2.4.3)
+ aws-actionmailer-ses (1.0.0)
+ actionmailer (>= 7.1.0)
+ aws-sdk-ses (~> 1, >= 1.50.0)
+ aws-sdk-sesv2 (~> 1, >= 1.34.0)
aws-eventstream (1.3.2)
- aws-partitions (1.1078.0)
- aws-record (2.13.2)
- aws-sdk-dynamodb (~> 1, >= 1.85.0)
+ aws-partitions (1.1082.0)
aws-sdk-core (3.222.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
@@ -113,43 +115,22 @@ GEM
base64
jmespath (~> 1, >= 1.6.1)
logger
- aws-sdk-dynamodb (1.129.0)
- aws-sdk-core (~> 3, >= 3.210.0)
- aws-sigv4 (~> 1.5)
aws-sdk-kms (1.99.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sigv4 (~> 1.5)
- aws-sdk-rails (4.1.0)
- actionmailbox (>= 7.0.0)
- aws-record (~> 2)
- aws-sdk-s3 (~> 1, >= 1.123.0)
- aws-sdk-ses (~> 1, >= 1.50.0)
- aws-sdk-sesv2 (~> 1, >= 1.34.0)
- aws-sdk-sns (~> 1, >= 1.61.0)
- aws-sdk-sqs (~> 1, >= 1.56.0)
- aws-sessionstore-dynamodb (~> 2)
- concurrent-ruby (~> 1.3, >= 1.3.1)
- railties (>= 7.0.0)
+ aws-sdk-rails (5.1.0)
+ aws-sdk-core (~> 3)
+ railties (>= 7.1.0)
aws-sdk-s3 (1.183.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
- aws-sdk-ses (1.76.0)
- aws-sdk-core (~> 3, >= 3.210.0)
- aws-sigv4 (~> 1.5)
- aws-sdk-sesv2 (1.66.0)
- aws-sdk-core (~> 3, >= 3.210.0)
- aws-sigv4 (~> 1.5)
- aws-sdk-sns (1.90.0)
- aws-sdk-core (~> 3, >= 3.210.0)
+ aws-sdk-ses (1.82.0)
+ aws-sdk-core (~> 3, >= 3.216.0)
aws-sigv4 (~> 1.5)
- aws-sdk-sqs (1.88.0)
- aws-sdk-core (~> 3, >= 3.210.0)
+ aws-sdk-sesv2 (1.74.0)
+ aws-sdk-core (~> 3, >= 3.216.0)
aws-sigv4 (~> 1.5)
- aws-sessionstore-dynamodb (2.2.0)
- aws-sdk-dynamodb (~> 1, >= 1.85.0)
- rack (>= 2, < 4)
- rack-session (>= 1, < 3)
aws-sigv4 (1.11.0)
aws-eventstream (~> 1, >= 1.0.2)
axe-core-api (4.10.2)
@@ -173,10 +154,10 @@ GEM
bindex (0.8.1)
bootsnap (1.18.4)
msgpack (~> 1.2)
- brakeman (7.0.0)
+ brakeman (7.0.2)
racc
builder (3.3.0)
- bullet (8.0.1)
+ bullet (8.0.3)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
bundler-audit (0.9.2)
@@ -287,7 +268,7 @@ GEM
activesupport (>= 6.0.0)
railties (>= 6.0.0)
io-console (0.8.0)
- irb (1.15.1)
+ irb (1.15.2)
pp (>= 0.6.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
@@ -346,7 +327,7 @@ GEM
mime-types (3.6.2)
logger
mime-types-data (~> 3.2015)
- mime-types-data (3.2025.0325)
+ mime-types-data (3.2025.0402)
mini_magick (5.2.0)
benchmark
logger
@@ -368,7 +349,7 @@ GEM
timeout
net-smtp (0.5.1)
net-protocol
- newrelic_rpm (9.17.0)
+ newrelic_rpm (9.18.0)
nio4r (2.7.4)
nokogiri (1.18.7)
mini_portile2 (~> 2.8.2)
@@ -501,7 +482,7 @@ GEM
redis-namespace (1.11.0)
redis (>= 4)
regexp_parser (2.10.0)
- reline (0.6.0)
+ reline (0.6.1)
io-console (~> 0.5)
request_store (1.7.0)
rack (>= 1.4)
@@ -529,7 +510,7 @@ GEM
rspec-support (3.13.2)
rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
- rubocop (1.75.1)
+ rubocop (1.75.2)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
@@ -537,10 +518,10 @@ GEM
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
- rubocop-ast (>= 1.43.0, < 2.0)
+ rubocop-ast (>= 1.44.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
- rubocop-ast (1.43.0)
+ rubocop-ast (1.44.0)
parser (>= 3.3.7.2)
prism (~> 1.4)
rubocop-rails (2.31.0)
@@ -568,13 +549,13 @@ GEM
sprockets-rails
tilt
securerandom (0.4.1)
- selenium-webdriver (4.30.1)
+ selenium-webdriver (4.31.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
- sidekiq (8.0.1)
+ sidekiq (8.0.2)
connection_pool (>= 2.5.0)
json (>= 2.9.0)
logger (>= 1.6.2)
@@ -658,6 +639,7 @@ DEPENDENCIES
active_model_serializers
acts-as-list
acts-as-taggable-on
+ aws-actionmailer-ses
aws-sdk-rails (>= 3.8.0)
aws-sdk-s3
axe-core-rspec
diff --git a/app/assets/javascripts/quill.js b/app/assets/javascripts/quill.js
new file mode 100644
index 000000000..e4ca7d4d6
--- /dev/null
+++ b/app/assets/javascripts/quill.js
@@ -0,0 +1,11440 @@
+/*! For license information please see quill.js.LICENSE.txt */
+!(function (t, e) {
+ "object" == typeof exports && "object" == typeof module
+ ? (module.exports = e())
+ : "function" == typeof define && define.amd
+ ? define([], e)
+ : "object" == typeof exports
+ ? (exports.Quill = e())
+ : (t.Quill = e());
+})(self, function () {
+ return (function () {
+ var t = {
+ 9698: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Ay: function () {
+ return c;
+ },
+ Ji: function () {
+ return d;
+ },
+ mG: function () {
+ return h;
+ },
+ zo: function () {
+ return u;
+ },
+ });
+ var r = n(6003),
+ i = n(5232),
+ s = n.n(i),
+ o = n(3036),
+ l = n(4850),
+ a = n(5508);
+ class c extends r.BlockBlot {
+ cache = {};
+ delta() {
+ return (
+ null == this.cache.delta && (this.cache.delta = h(this)),
+ this.cache.delta
+ );
+ }
+ deleteAt(t, e) {
+ super.deleteAt(t, e), (this.cache = {});
+ }
+ formatAt(t, e, n, i) {
+ e <= 0 ||
+ (this.scroll.query(n, r.Scope.BLOCK)
+ ? t + e === this.length() && this.format(n, i)
+ : super.formatAt(t, Math.min(e, this.length() - t - 1), n, i),
+ (this.cache = {}));
+ }
+ insertAt(t, e, n) {
+ if (null != n)
+ return super.insertAt(t, e, n), void (this.cache = {});
+ if (0 === e.length) return;
+ const r = e.split("\n"),
+ i = r.shift();
+ i.length > 0 &&
+ (t < this.length() - 1 || null == this.children.tail
+ ? super.insertAt(Math.min(t, this.length() - 1), i)
+ : this.children.tail.insertAt(this.children.tail.length(), i),
+ (this.cache = {}));
+ let s = this;
+ r.reduce(
+ (t, e) => ((s = s.split(t, !0)), s.insertAt(0, e), e.length),
+ t + i.length
+ );
+ }
+ insertBefore(t, e) {
+ const { head: n } = this.children;
+ super.insertBefore(t, e),
+ n instanceof o.A && n.remove(),
+ (this.cache = {});
+ }
+ length() {
+ return (
+ null == this.cache.length &&
+ (this.cache.length = super.length() + 1),
+ this.cache.length
+ );
+ }
+ moveChildren(t, e) {
+ super.moveChildren(t, e), (this.cache = {});
+ }
+ optimize(t) {
+ super.optimize(t), (this.cache = {});
+ }
+ path(t) {
+ return super.path(t, !0);
+ }
+ removeChild(t) {
+ super.removeChild(t), (this.cache = {});
+ }
+ split(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
+ if (e && (0 === t || t >= this.length() - 1)) {
+ const e = this.clone();
+ return 0 === t
+ ? (this.parent.insertBefore(e, this), this)
+ : (this.parent.insertBefore(e, this.next), e);
+ }
+ const n = super.split(t, e);
+ return (this.cache = {}), n;
+ }
+ }
+ (c.blotName = "block"),
+ (c.tagName = "P"),
+ (c.defaultChild = o.A),
+ (c.allowedChildren = [o.A, l.A, r.EmbedBlot, a.A]);
+ class u extends r.EmbedBlot {
+ attach() {
+ super.attach(),
+ (this.attributes = new r.AttributorStore(this.domNode));
+ }
+ delta() {
+ return new (s())().insert(this.value(), {
+ ...this.formats(),
+ ...this.attributes.values(),
+ });
+ }
+ format(t, e) {
+ const n = this.scroll.query(t, r.Scope.BLOCK_ATTRIBUTE);
+ null != n && this.attributes.attribute(n, e);
+ }
+ formatAt(t, e, n, r) {
+ this.format(n, r);
+ }
+ insertAt(t, e, n) {
+ if (null != n) return void super.insertAt(t, e, n);
+ const r = e.split("\n"),
+ i = r.pop(),
+ s = r.map((t) => {
+ const e = this.scroll.create(c.blotName);
+ return e.insertAt(0, t), e;
+ }),
+ o = this.split(t);
+ s.forEach((t) => {
+ this.parent.insertBefore(t, o);
+ }),
+ i && this.parent.insertBefore(this.scroll.create("text", i), o);
+ }
+ }
+ function h(t) {
+ let e =
+ !(arguments.length > 1 && void 0 !== arguments[1]) ||
+ arguments[1];
+ return t
+ .descendants(r.LeafBlot)
+ .reduce(
+ (t, n) =>
+ 0 === n.length() ? t : t.insert(n.value(), d(n, {}, e)),
+ new (s())()
+ )
+ .insert("\n", d(t));
+ }
+ function d(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : {},
+ n =
+ !(arguments.length > 2 && void 0 !== arguments[2]) ||
+ arguments[2];
+ return null == t
+ ? e
+ : ("formats" in t &&
+ "function" == typeof t.formats &&
+ ((e = { ...e, ...t.formats() }), n && delete e["code-token"]),
+ null == t.parent ||
+ "scroll" === t.parent.statics.blotName ||
+ t.parent.statics.scope !== t.statics.scope
+ ? e
+ : d(t.parent, e, n));
+ }
+ u.scope = r.Scope.BLOCK_BLOT;
+ },
+ 3036: function (t, e, n) {
+ "use strict";
+ var r = n(6003);
+ class i extends r.EmbedBlot {
+ static value() {}
+ optimize() {
+ (this.prev || this.next) && this.remove();
+ }
+ length() {
+ return 0;
+ }
+ value() {
+ return "";
+ }
+ }
+ (i.blotName = "break"), (i.tagName = "BR"), (e.A = i);
+ },
+ 580: function (t, e, n) {
+ "use strict";
+ var r = n(6003);
+ class i extends r.ContainerBlot {}
+ e.A = i;
+ },
+ 4541: function (t, e, n) {
+ "use strict";
+ var r = n(6003),
+ i = n(5508);
+ class s extends r.EmbedBlot {
+ static blotName = "cursor";
+ static className = "ql-cursor";
+ static tagName = "span";
+ static CONTENTS = "\ufeff";
+ static value() {}
+ constructor(t, e, n) {
+ super(t, e),
+ (this.selection = n),
+ (this.textNode = document.createTextNode(s.CONTENTS)),
+ this.domNode.appendChild(this.textNode),
+ (this.savedLength = 0);
+ }
+ detach() {
+ null != this.parent && this.parent.removeChild(this);
+ }
+ format(t, e) {
+ if (0 !== this.savedLength) return void super.format(t, e);
+ let n = this,
+ i = 0;
+ for (; null != n && n.statics.scope !== r.Scope.BLOCK_BLOT; )
+ (i += n.offset(n.parent)), (n = n.parent);
+ null != n &&
+ ((this.savedLength = s.CONTENTS.length),
+ n.optimize(),
+ n.formatAt(i, s.CONTENTS.length, t, e),
+ (this.savedLength = 0));
+ }
+ index(t, e) {
+ return t === this.textNode ? 0 : super.index(t, e);
+ }
+ length() {
+ return this.savedLength;
+ }
+ position() {
+ return [this.textNode, this.textNode.data.length];
+ }
+ remove() {
+ super.remove(), (this.parent = null);
+ }
+ restore() {
+ if (this.selection.composing || null == this.parent) return null;
+ const t = this.selection.getNativeRange();
+ for (
+ ;
+ null != this.domNode.lastChild &&
+ this.domNode.lastChild !== this.textNode;
+
+ )
+ this.domNode.parentNode.insertBefore(
+ this.domNode.lastChild,
+ this.domNode
+ );
+ const e = this.prev instanceof i.A ? this.prev : null,
+ n = e ? e.length() : 0,
+ r = this.next instanceof i.A ? this.next : null,
+ o = r ? r.text : "",
+ { textNode: l } = this,
+ a = l.data.split(s.CONTENTS).join("");
+ let c;
+ if (((l.data = s.CONTENTS), e))
+ (c = e),
+ (a || r) && (e.insertAt(e.length(), a + o), r && r.remove());
+ else if (r) (c = r), r.insertAt(0, a);
+ else {
+ const t = document.createTextNode(a);
+ (c = this.scroll.create(t)), this.parent.insertBefore(c, this);
+ }
+ if ((this.remove(), t)) {
+ const i = (t, i) =>
+ e && t === e.domNode
+ ? i
+ : t === l
+ ? n + i - 1
+ : r && t === r.domNode
+ ? n + a.length + i
+ : null,
+ s = i(t.start.node, t.start.offset),
+ o = i(t.end.node, t.end.offset);
+ if (null !== s && null !== o)
+ return {
+ startNode: c.domNode,
+ startOffset: s,
+ endNode: c.domNode,
+ endOffset: o,
+ };
+ }
+ return null;
+ }
+ update(t, e) {
+ if (
+ t.some(
+ (t) =>
+ "characterData" === t.type && t.target === this.textNode
+ )
+ ) {
+ const t = this.restore();
+ t && (e.range = t);
+ }
+ }
+ optimize(t) {
+ super.optimize(t);
+ let { parent: e } = this;
+ for (; e; ) {
+ if ("A" === e.domNode.tagName) {
+ (this.savedLength = s.CONTENTS.length),
+ e.isolate(this.offset(e), this.length()).unwrap(),
+ (this.savedLength = 0);
+ break;
+ }
+ e = e.parent;
+ }
+ }
+ value() {
+ return "";
+ }
+ }
+ e.A = s;
+ },
+ 746: function (t, e, n) {
+ "use strict";
+ var r = n(6003),
+ i = n(5508);
+ const s = "\ufeff";
+ class o extends r.EmbedBlot {
+ constructor(t, e) {
+ super(t, e),
+ (this.contentNode = document.createElement("span")),
+ this.contentNode.setAttribute("contenteditable", "false"),
+ Array.from(this.domNode.childNodes).forEach((t) => {
+ this.contentNode.appendChild(t);
+ }),
+ (this.leftGuard = document.createTextNode(s)),
+ (this.rightGuard = document.createTextNode(s)),
+ this.domNode.appendChild(this.leftGuard),
+ this.domNode.appendChild(this.contentNode),
+ this.domNode.appendChild(this.rightGuard);
+ }
+ index(t, e) {
+ return t === this.leftGuard
+ ? 0
+ : t === this.rightGuard
+ ? 1
+ : super.index(t, e);
+ }
+ restore(t) {
+ let e,
+ n = null;
+ const r = t.data.split(s).join("");
+ if (t === this.leftGuard)
+ if (this.prev instanceof i.A) {
+ const t = this.prev.length();
+ this.prev.insertAt(t, r),
+ (n = {
+ startNode: this.prev.domNode,
+ startOffset: t + r.length,
+ });
+ } else
+ (e = document.createTextNode(r)),
+ this.parent.insertBefore(this.scroll.create(e), this),
+ (n = { startNode: e, startOffset: r.length });
+ else
+ t === this.rightGuard &&
+ (this.next instanceof i.A
+ ? (this.next.insertAt(0, r),
+ (n = {
+ startNode: this.next.domNode,
+ startOffset: r.length,
+ }))
+ : ((e = document.createTextNode(r)),
+ this.parent.insertBefore(
+ this.scroll.create(e),
+ this.next
+ ),
+ (n = { startNode: e, startOffset: r.length })));
+ return (t.data = s), n;
+ }
+ update(t, e) {
+ t.forEach((t) => {
+ if (
+ "characterData" === t.type &&
+ (t.target === this.leftGuard || t.target === this.rightGuard)
+ ) {
+ const n = this.restore(t.target);
+ n && (e.range = n);
+ }
+ });
+ }
+ }
+ e.A = o;
+ },
+ 4850: function (t, e, n) {
+ "use strict";
+ var r = n(6003),
+ i = n(3036),
+ s = n(5508);
+ class o extends r.InlineBlot {
+ static allowedChildren = [o, i.A, r.EmbedBlot, s.A];
+ static order = [
+ "cursor",
+ "inline",
+ "link",
+ "underline",
+ "strike",
+ "italic",
+ "bold",
+ "script",
+ "code",
+ ];
+ static compare(t, e) {
+ const n = o.order.indexOf(t),
+ r = o.order.indexOf(e);
+ return n >= 0 || r >= 0 ? n - r : t === e ? 0 : t < e ? -1 : 1;
+ }
+ formatAt(t, e, n, i) {
+ if (
+ o.compare(this.statics.blotName, n) < 0 &&
+ this.scroll.query(n, r.Scope.BLOT)
+ ) {
+ const r = this.isolate(t, e);
+ i && r.wrap(n, i);
+ } else super.formatAt(t, e, n, i);
+ }
+ optimize(t) {
+ if (
+ (super.optimize(t),
+ this.parent instanceof o &&
+ o.compare(
+ this.statics.blotName,
+ this.parent.statics.blotName
+ ) > 0)
+ ) {
+ const t = this.parent.isolate(this.offset(), this.length());
+ this.moveChildren(t), t.wrap(this);
+ }
+ }
+ }
+ e.A = o;
+ },
+ 5508: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return i;
+ },
+ X: function () {
+ return o;
+ },
+ });
+ var r = n(6003);
+ class i extends r.TextBlot {}
+ const s = {
+ "&": "&",
+ "<": "<",
+ ">": ">",
+ '"': """,
+ "'": "'",
+ };
+ function o(t) {
+ return t.replace(/[&<>"']/g, (t) => s[t]);
+ }
+ },
+ 3729: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ default: function () {
+ return R;
+ },
+ });
+ var r = n(6142),
+ i = n(9698),
+ s = n(3036),
+ o = n(580),
+ l = n(4541),
+ a = n(746),
+ c = n(4850),
+ u = n(6003),
+ h = n(5232),
+ d = n.n(h),
+ f = n(5374);
+ function p(t) {
+ return t instanceof i.Ay || t instanceof i.zo;
+ }
+ function g(t) {
+ return "function" == typeof t.updateContent;
+ }
+ class m extends u.ScrollBlot {
+ static blotName = "scroll";
+ static className = "ql-editor";
+ static tagName = "DIV";
+ static defaultChild = i.Ay;
+ static allowedChildren = [i.Ay, i.zo, o.A];
+ constructor(t, e, n) {
+ let { emitter: r } = n;
+ super(t, e),
+ (this.emitter = r),
+ (this.batch = !1),
+ this.optimize(),
+ this.enable(),
+ this.domNode.addEventListener("dragstart", (t) =>
+ this.handleDragStart(t)
+ );
+ }
+ batchStart() {
+ Array.isArray(this.batch) || (this.batch = []);
+ }
+ batchEnd() {
+ if (!this.batch) return;
+ const t = this.batch;
+ (this.batch = !1), this.update(t);
+ }
+ emitMount(t) {
+ this.emitter.emit(f.A.events.SCROLL_BLOT_MOUNT, t);
+ }
+ emitUnmount(t) {
+ this.emitter.emit(f.A.events.SCROLL_BLOT_UNMOUNT, t);
+ }
+ emitEmbedUpdate(t, e) {
+ this.emitter.emit(f.A.events.SCROLL_EMBED_UPDATE, t, e);
+ }
+ deleteAt(t, e) {
+ const [n, r] = this.line(t),
+ [o] = this.line(t + e);
+ if ((super.deleteAt(t, e), null != o && n !== o && r > 0)) {
+ if (n instanceof i.zo || o instanceof i.zo)
+ return void this.optimize();
+ const t =
+ o.children.head instanceof s.A ? null : o.children.head;
+ n.moveChildren(o, t), n.remove();
+ }
+ this.optimize();
+ }
+ enable() {
+ let t =
+ !(arguments.length > 0 && void 0 !== arguments[0]) ||
+ arguments[0];
+ this.domNode.setAttribute(
+ "contenteditable",
+ t ? "true" : "false"
+ );
+ }
+ formatAt(t, e, n, r) {
+ super.formatAt(t, e, n, r), this.optimize();
+ }
+ insertAt(t, e, n) {
+ if (t >= this.length())
+ if (null == n || null == this.scroll.query(e, u.Scope.BLOCK)) {
+ const t = this.scroll.create(
+ this.statics.defaultChild.blotName
+ );
+ this.appendChild(t),
+ null == n && e.endsWith("\n")
+ ? t.insertAt(0, e.slice(0, -1), n)
+ : t.insertAt(0, e, n);
+ } else {
+ const t = this.scroll.create(e, n);
+ this.appendChild(t);
+ }
+ else super.insertAt(t, e, n);
+ this.optimize();
+ }
+ insertBefore(t, e) {
+ if (t.statics.scope === u.Scope.INLINE_BLOT) {
+ const n = this.scroll.create(
+ this.statics.defaultChild.blotName
+ );
+ n.appendChild(t), super.insertBefore(n, e);
+ } else super.insertBefore(t, e);
+ }
+ insertContents(t, e) {
+ const n = this.deltaToRenderBlocks(
+ e.concat(new (d())().insert("\n"))
+ ),
+ r = n.pop();
+ if (null == r) return;
+ this.batchStart();
+ const s = n.shift();
+ if (s) {
+ const e =
+ "block" === s.type &&
+ (0 === s.delta.length() ||
+ (!this.descendant(i.zo, t)[0] && t < this.length())),
+ n =
+ "block" === s.type
+ ? s.delta
+ : new (d())().insert({ [s.key]: s.value });
+ b(this, t, n);
+ const r = "block" === s.type ? 1 : 0,
+ o = t + n.length() + r;
+ e && this.insertAt(o - 1, "\n");
+ const l = (0, i.Ji)(this.line(t)[0]),
+ a = h.AttributeMap.diff(l, s.attributes) || {};
+ Object.keys(a).forEach((t) => {
+ this.formatAt(o - 1, 1, t, a[t]);
+ }),
+ (t = o);
+ }
+ let [o, l] = this.children.find(t);
+ n.length &&
+ (o && ((o = o.split(l)), (l = 0)),
+ n.forEach((t) => {
+ if ("block" === t.type)
+ b(this.createBlock(t.attributes, o || void 0), 0, t.delta);
+ else {
+ const e = this.create(t.key, t.value);
+ this.insertBefore(e, o || void 0),
+ Object.keys(t.attributes).forEach((n) => {
+ e.format(n, t.attributes[n]);
+ });
+ }
+ })),
+ "block" === r.type &&
+ r.delta.length() &&
+ b(this, o ? o.offset(o.scroll) + l : this.length(), r.delta),
+ this.batchEnd(),
+ this.optimize();
+ }
+ isEnabled() {
+ return "true" === this.domNode.getAttribute("contenteditable");
+ }
+ leaf(t) {
+ const e = this.path(t).pop();
+ if (!e) return [null, -1];
+ const [n, r] = e;
+ return n instanceof u.LeafBlot ? [n, r] : [null, -1];
+ }
+ line(t) {
+ return t === this.length()
+ ? this.line(t - 1)
+ : this.descendant(p, t);
+ }
+ lines() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : 0,
+ e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : Number.MAX_VALUE;
+ const n = (t, e, r) => {
+ let i = [],
+ s = r;
+ return (
+ t.children.forEachAt(e, r, (t, e, r) => {
+ p(t)
+ ? i.push(t)
+ : t instanceof u.ContainerBlot &&
+ (i = i.concat(n(t, e, s))),
+ (s -= r);
+ }),
+ i
+ );
+ };
+ return n(this, t, e);
+ }
+ optimize() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : [],
+ e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : {};
+ this.batch ||
+ (super.optimize(t, e),
+ t.length > 0 &&
+ this.emitter.emit(f.A.events.SCROLL_OPTIMIZE, t, e));
+ }
+ path(t) {
+ return super.path(t).slice(1);
+ }
+ remove() {}
+ update(t) {
+ if (this.batch)
+ return void (
+ Array.isArray(t) && (this.batch = this.batch.concat(t))
+ );
+ let e = f.A.sources.USER;
+ "string" == typeof t && (e = t),
+ Array.isArray(t) || (t = this.observer.takeRecords()),
+ (t = t.filter((t) => {
+ let { target: e } = t;
+ const n = this.find(e, !0);
+ return n && !g(n);
+ })).length > 0 &&
+ this.emitter.emit(f.A.events.SCROLL_BEFORE_UPDATE, e, t),
+ super.update(t.concat([])),
+ t.length > 0 &&
+ this.emitter.emit(f.A.events.SCROLL_UPDATE, e, t);
+ }
+ updateEmbedAt(t, e, n) {
+ const [r] = this.descendant((t) => t instanceof i.zo, t);
+ r && r.statics.blotName === e && g(r) && r.updateContent(n);
+ }
+ handleDragStart(t) {
+ t.preventDefault();
+ }
+ deltaToRenderBlocks(t) {
+ const e = [];
+ let n = new (d())();
+ return (
+ t.forEach((t) => {
+ const r = t?.insert;
+ if (r)
+ if ("string" == typeof r) {
+ const i = r.split("\n");
+ i.slice(0, -1).forEach((r) => {
+ n.insert(r, t.attributes),
+ e.push({
+ type: "block",
+ delta: n,
+ attributes: t.attributes ?? {},
+ }),
+ (n = new (d())());
+ });
+ const s = i[i.length - 1];
+ s && n.insert(s, t.attributes);
+ } else {
+ const i = Object.keys(r)[0];
+ if (!i) return;
+ this.query(i, u.Scope.INLINE)
+ ? n.push(t)
+ : (n.length() &&
+ e.push({ type: "block", delta: n, attributes: {} }),
+ (n = new (d())()),
+ e.push({
+ type: "blockEmbed",
+ key: i,
+ value: r[i],
+ attributes: t.attributes ?? {},
+ }));
+ }
+ }),
+ n.length() &&
+ e.push({ type: "block", delta: n, attributes: {} }),
+ e
+ );
+ }
+ createBlock(t, e) {
+ let n;
+ const r = {};
+ Object.entries(t).forEach((t) => {
+ let [e, i] = t;
+ null != this.query(e, u.Scope.BLOCK & u.Scope.BLOT)
+ ? (n = e)
+ : (r[e] = i);
+ });
+ const i = this.create(
+ n || this.statics.defaultChild.blotName,
+ n ? t[n] : void 0
+ );
+ this.insertBefore(i, e || void 0);
+ const s = i.length();
+ return (
+ Object.entries(r).forEach((t) => {
+ let [e, n] = t;
+ i.formatAt(0, s, e, n);
+ }),
+ i
+ );
+ }
+ }
+ function b(t, e, n) {
+ n.reduce((e, n) => {
+ const r = h.Op.length(n);
+ let s = n.attributes || {};
+ if (null != n.insert)
+ if ("string" == typeof n.insert) {
+ const r = n.insert;
+ t.insertAt(e, r);
+ const [o] = t.descendant(u.LeafBlot, e),
+ l = (0, i.Ji)(o);
+ s = h.AttributeMap.diff(l, s) || {};
+ } else if ("object" == typeof n.insert) {
+ const r = Object.keys(n.insert)[0];
+ if (null == r) return e;
+ if (
+ (t.insertAt(e, r, n.insert[r]),
+ null != t.scroll.query(r, u.Scope.INLINE))
+ ) {
+ const [n] = t.descendant(u.LeafBlot, e),
+ r = (0, i.Ji)(n);
+ s = h.AttributeMap.diff(r, s) || {};
+ }
+ }
+ return (
+ Object.keys(s).forEach((n) => {
+ t.formatAt(e, r, n, s[n]);
+ }),
+ e + r
+ );
+ }, e);
+ }
+ var y = m,
+ v = n(5508),
+ A = n(584),
+ x = n(4266);
+ class N extends x.A {
+ static DEFAULTS = { delay: 1e3, maxStack: 100, userOnly: !1 };
+ lastRecorded = 0;
+ ignoreChange = !1;
+ stack = { undo: [], redo: [] };
+ currentRange = null;
+ constructor(t, e) {
+ super(t, e),
+ this.quill.on(r.Ay.events.EDITOR_CHANGE, (t, e, n, i) => {
+ t === r.Ay.events.SELECTION_CHANGE
+ ? e && i !== r.Ay.sources.SILENT && (this.currentRange = e)
+ : t === r.Ay.events.TEXT_CHANGE &&
+ (this.ignoreChange ||
+ (this.options.userOnly && i !== r.Ay.sources.USER
+ ? this.transform(e)
+ : this.record(e, n)),
+ (this.currentRange = w(this.currentRange, e)));
+ }),
+ this.quill.keyboard.addBinding(
+ { key: "z", shortKey: !0 },
+ this.undo.bind(this)
+ ),
+ this.quill.keyboard.addBinding(
+ { key: ["z", "Z"], shortKey: !0, shiftKey: !0 },
+ this.redo.bind(this)
+ ),
+ /Win/i.test(navigator.platform) &&
+ this.quill.keyboard.addBinding(
+ { key: "y", shortKey: !0 },
+ this.redo.bind(this)
+ ),
+ this.quill.root.addEventListener("beforeinput", (t) => {
+ "historyUndo" === t.inputType
+ ? (this.undo(), t.preventDefault())
+ : "historyRedo" === t.inputType &&
+ (this.redo(), t.preventDefault());
+ });
+ }
+ change(t, e) {
+ if (0 === this.stack[t].length) return;
+ const n = this.stack[t].pop();
+ if (!n) return;
+ const i = this.quill.getContents(),
+ s = n.delta.invert(i);
+ this.stack[e].push({ delta: s, range: w(n.range, s) }),
+ (this.lastRecorded = 0),
+ (this.ignoreChange = !0),
+ this.quill.updateContents(n.delta, r.Ay.sources.USER),
+ (this.ignoreChange = !1),
+ this.restoreSelection(n);
+ }
+ clear() {
+ this.stack = { undo: [], redo: [] };
+ }
+ cutoff() {
+ this.lastRecorded = 0;
+ }
+ record(t, e) {
+ if (0 === t.ops.length) return;
+ this.stack.redo = [];
+ let n = t.invert(e),
+ r = this.currentRange;
+ const i = Date.now();
+ if (
+ this.lastRecorded + this.options.delay > i &&
+ this.stack.undo.length > 0
+ ) {
+ const t = this.stack.undo.pop();
+ t && ((n = n.compose(t.delta)), (r = t.range));
+ } else this.lastRecorded = i;
+ 0 !== n.length() &&
+ (this.stack.undo.push({ delta: n, range: r }),
+ this.stack.undo.length > this.options.maxStack &&
+ this.stack.undo.shift());
+ }
+ redo() {
+ this.change("redo", "undo");
+ }
+ transform(t) {
+ E(this.stack.undo, t), E(this.stack.redo, t);
+ }
+ undo() {
+ this.change("undo", "redo");
+ }
+ restoreSelection(t) {
+ if (t.range) this.quill.setSelection(t.range, r.Ay.sources.USER);
+ else {
+ const e = (function (t, e) {
+ const n = e.reduce((t, e) => t + (e.delete || 0), 0);
+ let r = e.length() - n;
+ return (
+ (function (t, e) {
+ const n = e.ops[e.ops.length - 1];
+ return (
+ null != n &&
+ (null != n.insert
+ ? "string" == typeof n.insert &&
+ n.insert.endsWith("\n")
+ : null != n.attributes &&
+ Object.keys(n.attributes).some(
+ (e) => null != t.query(e, u.Scope.BLOCK)
+ ))
+ );
+ })(t, e) && (r -= 1),
+ r
+ );
+ })(this.quill.scroll, t.delta);
+ this.quill.setSelection(e, r.Ay.sources.USER);
+ }
+ }
+ }
+ function E(t, e) {
+ let n = e;
+ for (let e = t.length - 1; e >= 0; e -= 1) {
+ const r = t[e];
+ (t[e] = {
+ delta: n.transform(r.delta, !0),
+ range: r.range && w(r.range, n),
+ }),
+ (n = r.delta.transform(n)),
+ 0 === t[e].delta.length() && t.splice(e, 1);
+ }
+ }
+ function w(t, e) {
+ if (!t) return t;
+ const n = e.transformPosition(t.index);
+ return {
+ index: n,
+ length: e.transformPosition(t.index + t.length) - n,
+ };
+ }
+ var q = n(8123);
+ class k extends x.A {
+ constructor(t, e) {
+ super(t, e),
+ t.root.addEventListener("drop", (e) => {
+ e.preventDefault();
+ let n = null;
+ if (document.caretRangeFromPoint)
+ n = document.caretRangeFromPoint(e.clientX, e.clientY);
+ else if (document.caretPositionFromPoint) {
+ const t = document.caretPositionFromPoint(
+ e.clientX,
+ e.clientY
+ );
+ (n = document.createRange()),
+ n.setStart(t.offsetNode, t.offset),
+ n.setEnd(t.offsetNode, t.offset);
+ }
+ const r = n && t.selection.normalizeNative(n);
+ if (r) {
+ const n = t.selection.normalizedToRange(r);
+ e.dataTransfer?.files &&
+ this.upload(n, e.dataTransfer.files);
+ }
+ });
+ }
+ upload(t, e) {
+ const n = [];
+ Array.from(e).forEach((t) => {
+ t && this.options.mimetypes?.includes(t.type) && n.push(t);
+ }),
+ n.length > 0 && this.options.handler.call(this, t, n);
+ }
+ }
+ k.DEFAULTS = {
+ mimetypes: ["image/png", "image/jpeg"],
+ handler(t, e) {
+ if (!this.quill.scroll.query("image")) return;
+ const n = e.map(
+ (t) =>
+ new Promise((e) => {
+ const n = new FileReader();
+ (n.onload = () => {
+ e(n.result);
+ }),
+ n.readAsDataURL(t);
+ })
+ );
+ Promise.all(n).then((e) => {
+ const n = e.reduce(
+ (t, e) => t.insert({ image: e }),
+ new (d())().retain(t.index).delete(t.length)
+ );
+ this.quill.updateContents(n, f.A.sources.USER),
+ this.quill.setSelection(
+ t.index + e.length,
+ f.A.sources.SILENT
+ );
+ });
+ },
+ };
+ var _ = k;
+ const L = ["insertText", "insertReplacementText"];
+ class S extends x.A {
+ constructor(t, e) {
+ super(t, e),
+ t.root.addEventListener("beforeinput", (t) => {
+ this.handleBeforeInput(t);
+ }),
+ /Android/i.test(navigator.userAgent) ||
+ t.on(r.Ay.events.COMPOSITION_BEFORE_START, () => {
+ this.handleCompositionStart();
+ });
+ }
+ deleteRange(t) {
+ (0, q.Xo)({ range: t, quill: this.quill });
+ }
+ replaceText(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : "";
+ if (0 === t.length) return !1;
+ if (e) {
+ const n = this.quill.getFormat(t.index, 1);
+ this.deleteRange(t),
+ this.quill.updateContents(
+ new (d())().retain(t.index).insert(e, n),
+ r.Ay.sources.USER
+ );
+ } else this.deleteRange(t);
+ return (
+ this.quill.setSelection(
+ t.index + e.length,
+ 0,
+ r.Ay.sources.SILENT
+ ),
+ !0
+ );
+ }
+ handleBeforeInput(t) {
+ if (
+ this.quill.composition.isComposing ||
+ t.defaultPrevented ||
+ !L.includes(t.inputType)
+ )
+ return;
+ const e = t.getTargetRanges ? t.getTargetRanges()[0] : null;
+ if (!e || !0 === e.collapsed) return;
+ const n = (function (t) {
+ return "string" == typeof t.data
+ ? t.data
+ : t.dataTransfer?.types.includes("text/plain")
+ ? t.dataTransfer.getData("text/plain")
+ : null;
+ })(t);
+ if (null == n) return;
+ const r = this.quill.selection.normalizeNative(e),
+ i = r ? this.quill.selection.normalizedToRange(r) : null;
+ i && this.replaceText(i, n) && t.preventDefault();
+ }
+ handleCompositionStart() {
+ const t = this.quill.getSelection();
+ t && this.replaceText(t);
+ }
+ }
+ var O = S;
+ const T = /Mac/i.test(navigator.platform);
+ class j extends x.A {
+ isListening = !1;
+ selectionChangeDeadline = 0;
+ constructor(t, e) {
+ super(t, e),
+ this.handleArrowKeys(),
+ this.handleNavigationShortcuts();
+ }
+ handleArrowKeys() {
+ this.quill.keyboard.addBinding({
+ key: ["ArrowLeft", "ArrowRight"],
+ offset: 0,
+ shiftKey: null,
+ handler(t, e) {
+ let { line: n, event: i } = e;
+ if (!(n instanceof u.ParentBlot && n.uiNode)) return !0;
+ const s = "rtl" === getComputedStyle(n.domNode).direction;
+ return (
+ !!(
+ (s && "ArrowRight" !== i.key) ||
+ (!s && "ArrowLeft" !== i.key)
+ ) ||
+ (this.quill.setSelection(
+ t.index - 1,
+ t.length + (i.shiftKey ? 1 : 0),
+ r.Ay.sources.USER
+ ),
+ !1)
+ );
+ },
+ });
+ }
+ handleNavigationShortcuts() {
+ this.quill.root.addEventListener("keydown", (t) => {
+ !t.defaultPrevented &&
+ ((t) =>
+ "ArrowLeft" === t.key ||
+ "ArrowRight" === t.key ||
+ "ArrowUp" === t.key ||
+ "ArrowDown" === t.key ||
+ "Home" === t.key ||
+ !(!T || "a" !== t.key || !0 !== t.ctrlKey))(t) &&
+ this.ensureListeningToSelectionChange();
+ });
+ }
+ ensureListeningToSelectionChange() {
+ (this.selectionChangeDeadline = Date.now() + 100),
+ this.isListening ||
+ ((this.isListening = !0),
+ document.addEventListener(
+ "selectionchange",
+ () => {
+ (this.isListening = !1),
+ Date.now() <= this.selectionChangeDeadline &&
+ this.handleSelectionChange();
+ },
+ { once: !0 }
+ ));
+ }
+ handleSelectionChange() {
+ const t = document.getSelection();
+ if (!t) return;
+ const e = t.getRangeAt(0);
+ if (!0 !== e.collapsed || 0 !== e.startOffset) return;
+ const n = this.quill.scroll.find(e.startContainer);
+ if (!(n instanceof u.ParentBlot && n.uiNode)) return;
+ const r = document.createRange();
+ r.setStartAfter(n.uiNode),
+ r.setEndAfter(n.uiNode),
+ t.removeAllRanges(),
+ t.addRange(r);
+ }
+ }
+ var C = j;
+ r.Ay.register({
+ "blots/block": i.Ay,
+ "blots/block/embed": i.zo,
+ "blots/break": s.A,
+ "blots/container": o.A,
+ "blots/cursor": l.A,
+ "blots/embed": a.A,
+ "blots/inline": c.A,
+ "blots/scroll": y,
+ "blots/text": v.A,
+ "modules/clipboard": A.Ay,
+ "modules/history": N,
+ "modules/keyboard": q.Ay,
+ "modules/uploader": _,
+ "modules/input": O,
+ "modules/uiNode": C,
+ });
+ var R = r.Ay;
+ },
+ 5374: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return o;
+ },
+ });
+ var r = n(8920),
+ i = n(7356);
+ const s = (0, n(6078).A)("quill:events");
+ ["selectionchange", "mousedown", "mouseup", "click"].forEach((t) => {
+ document.addEventListener(t, function () {
+ for (
+ var t = arguments.length, e = new Array(t), n = 0;
+ n < t;
+ n++
+ )
+ e[n] = arguments[n];
+ Array.from(document.querySelectorAll(".ql-container")).forEach(
+ (t) => {
+ const n = i.A.get(t);
+ n && n.emitter && n.emitter.handleDOM(...e);
+ }
+ );
+ });
+ });
+ var o = class extends r {
+ static events = {
+ EDITOR_CHANGE: "editor-change",
+ SCROLL_BEFORE_UPDATE: "scroll-before-update",
+ SCROLL_BLOT_MOUNT: "scroll-blot-mount",
+ SCROLL_BLOT_UNMOUNT: "scroll-blot-unmount",
+ SCROLL_OPTIMIZE: "scroll-optimize",
+ SCROLL_UPDATE: "scroll-update",
+ SCROLL_EMBED_UPDATE: "scroll-embed-update",
+ SELECTION_CHANGE: "selection-change",
+ TEXT_CHANGE: "text-change",
+ COMPOSITION_BEFORE_START: "composition-before-start",
+ COMPOSITION_START: "composition-start",
+ COMPOSITION_BEFORE_END: "composition-before-end",
+ COMPOSITION_END: "composition-end",
+ };
+ static sources = { API: "api", SILENT: "silent", USER: "user" };
+ constructor() {
+ super(), (this.domListeners = {}), this.on("error", s.error);
+ }
+ emit() {
+ for (
+ var t = arguments.length, e = new Array(t), n = 0;
+ n < t;
+ n++
+ )
+ e[n] = arguments[n];
+ return s.log.call(s, ...e), super.emit(...e);
+ }
+ handleDOM(t) {
+ for (
+ var e = arguments.length,
+ n = new Array(e > 1 ? e - 1 : 0),
+ r = 1;
+ r < e;
+ r++
+ )
+ n[r - 1] = arguments[r];
+ (this.domListeners[t.type] || []).forEach((e) => {
+ let { node: r, handler: i } = e;
+ (t.target === r || r.contains(t.target)) && i(t, ...n);
+ });
+ }
+ listenDOM(t, e, n) {
+ this.domListeners[t] || (this.domListeners[t] = []),
+ this.domListeners[t].push({ node: e, handler: n });
+ }
+ };
+ },
+ 7356: function (t, e) {
+ "use strict";
+ e.A = new WeakMap();
+ },
+ 6078: function (t, e) {
+ "use strict";
+ const n = ["error", "warn", "log", "info"];
+ let r = "warn";
+ function i(t) {
+ if (r && n.indexOf(t) <= n.indexOf(r)) {
+ for (
+ var e = arguments.length,
+ i = new Array(e > 1 ? e - 1 : 0),
+ s = 1;
+ s < e;
+ s++
+ )
+ i[s - 1] = arguments[s];
+ console[t](...i);
+ }
+ }
+ function s(t) {
+ return n.reduce((e, n) => ((e[n] = i.bind(console, n, t)), e), {});
+ }
+ (s.level = (t) => {
+ r = t;
+ }),
+ (i.level = s.level),
+ (e.A = s);
+ },
+ 4266: function (t, e) {
+ "use strict";
+ e.A = class {
+ static DEFAULTS = {};
+ constructor(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : {};
+ (this.quill = t), (this.options = e);
+ }
+ };
+ },
+ 6142: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Ay: function () {
+ return I;
+ },
+ });
+ var r = n(8347),
+ i = n(6003),
+ s = n(5232),
+ o = n.n(s),
+ l = n(3707),
+ a = n(5123),
+ c = n(9698),
+ u = n(3036),
+ h = n(4541),
+ d = n(5508),
+ f = n(8298);
+ const p = /^[ -~]*$/;
+ function g(t, e, n) {
+ if (0 === t.length) {
+ const [t] = y(n.pop());
+ return e <= 0 ? `${t}>` : `${t}>${g([], e - 1, n)}`;
+ }
+ const [
+ { child: r, offset: i, length: s, indent: o, type: l },
+ ...a
+ ] = t,
+ [c, u] = y(l);
+ if (o > e)
+ return (
+ n.push(l),
+ o === e + 1
+ ? `<${c}>
${m(r, i, s)}${g(a, o, n)}`
+ : `<${c}>${g(t, e + 1, n)}`
+ );
+ const h = n[n.length - 1];
+ if (o === e && l === h)
+ return `${m(r, i, s)}${g(a, o, n)}`;
+ const [d] = y(n.pop());
+ return `${d}>${g(t, e - 1, n)}`;
+ }
+ function m(t, e, n) {
+ let r =
+ arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
+ if ("html" in t && "function" == typeof t.html) return t.html(e, n);
+ if (t instanceof d.A)
+ return (0, d.X)(t.value().slice(e, e + n)).replaceAll(
+ " ",
+ " "
+ );
+ if (t instanceof i.ParentBlot) {
+ if ("list-container" === t.statics.blotName) {
+ const r = [];
+ return (
+ t.children.forEachAt(e, n, (t, e, n) => {
+ const i =
+ "formats" in t && "function" == typeof t.formats
+ ? t.formats()
+ : {};
+ r.push({
+ child: t,
+ offset: e,
+ length: n,
+ indent: i.indent || 0,
+ type: i.list,
+ });
+ }),
+ g(r, -1, [])
+ );
+ }
+ const i = [];
+ if (
+ (t.children.forEachAt(e, n, (t, e, n) => {
+ i.push(m(t, e, n));
+ }),
+ r || "list" === t.statics.blotName)
+ )
+ return i.join("");
+ const { outerHTML: s, innerHTML: o } = t.domNode,
+ [l, a] = s.split(`>${o}<`);
+ return "${i.join("")}<${a}`
+ : `${l}>${i.join("")}<${a}`;
+ }
+ return t.domNode instanceof Element ? t.domNode.outerHTML : "";
+ }
+ function b(t, e) {
+ return Object.keys(e).reduce((n, r) => {
+ if (null == t[r]) return n;
+ const i = e[r];
+ return (
+ i === t[r]
+ ? (n[r] = i)
+ : Array.isArray(i)
+ ? i.indexOf(t[r]) < 0
+ ? (n[r] = i.concat([t[r]]))
+ : (n[r] = i)
+ : (n[r] = [i, t[r]]),
+ n
+ );
+ }, {});
+ }
+ function y(t) {
+ const e = "ordered" === t ? "ol" : "ul";
+ switch (t) {
+ case "checked":
+ return [e, ' data-list="checked"'];
+ case "unchecked":
+ return [e, ' data-list="unchecked"'];
+ default:
+ return [e, ""];
+ }
+ }
+ function v(t) {
+ return t.reduce((t, e) => {
+ if ("string" == typeof e.insert) {
+ const n = e.insert.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
+ return t.insert(n, e.attributes);
+ }
+ return t.push(e);
+ }, new (o())());
+ }
+ function A(t, e) {
+ let { index: n, length: r } = t;
+ return new f.Q(n + e, r);
+ }
+ var x = class {
+ constructor(t) {
+ (this.scroll = t), (this.delta = this.getDelta());
+ }
+ applyDelta(t) {
+ this.scroll.update();
+ let e = this.scroll.length();
+ this.scroll.batchStart();
+ const n = v(t),
+ l = new (o())();
+ return (
+ (function (t) {
+ const e = [];
+ return (
+ t.forEach((t) => {
+ "string" == typeof t.insert
+ ? t.insert.split("\n").forEach((n, r) => {
+ r &&
+ e.push({
+ insert: "\n",
+ attributes: t.attributes,
+ }),
+ n &&
+ e.push({
+ insert: n,
+ attributes: t.attributes,
+ });
+ })
+ : e.push(t);
+ }),
+ e
+ );
+ })(n.ops.slice()).reduce((t, n) => {
+ const o = s.Op.length(n);
+ let a = n.attributes || {},
+ u = !1,
+ h = !1;
+ if (null != n.insert) {
+ if ((l.retain(o), "string" == typeof n.insert)) {
+ const o = n.insert;
+ (h =
+ !o.endsWith("\n") &&
+ (e <= t || !!this.scroll.descendant(c.zo, t)[0])),
+ this.scroll.insertAt(t, o);
+ const [l, u] = this.scroll.line(t);
+ let d = (0, r.A)({}, (0, c.Ji)(l));
+ if (l instanceof c.Ay) {
+ const [t] = l.descendant(i.LeafBlot, u);
+ t && (d = (0, r.A)(d, (0, c.Ji)(t)));
+ }
+ a = s.AttributeMap.diff(d, a) || {};
+ } else if ("object" == typeof n.insert) {
+ const o = Object.keys(n.insert)[0];
+ if (null == o) return t;
+ const l = null != this.scroll.query(o, i.Scope.INLINE);
+ if (l)
+ (e <= t || this.scroll.descendant(c.zo, t)[0]) &&
+ (h = !0);
+ else if (t > 0) {
+ const [e, n] = this.scroll.descendant(
+ i.LeafBlot,
+ t - 1
+ );
+ e instanceof d.A
+ ? "\n" !== e.value()[n] && (u = !0)
+ : e instanceof i.EmbedBlot &&
+ e.statics.scope === i.Scope.INLINE_BLOT &&
+ (u = !0);
+ }
+ if ((this.scroll.insertAt(t, o, n.insert[o]), l)) {
+ const [e] = this.scroll.descendant(i.LeafBlot, t);
+ if (e) {
+ const t = (0, r.A)({}, (0, c.Ji)(e));
+ a = s.AttributeMap.diff(t, a) || {};
+ }
+ }
+ }
+ e += o;
+ } else if (
+ (l.push(n),
+ null !== n.retain && "object" == typeof n.retain)
+ ) {
+ const e = Object.keys(n.retain)[0];
+ if (null == e) return t;
+ this.scroll.updateEmbedAt(t, e, n.retain[e]);
+ }
+ Object.keys(a).forEach((e) => {
+ this.scroll.formatAt(t, o, e, a[e]);
+ });
+ const f = u ? 1 : 0,
+ p = h ? 1 : 0;
+ return (
+ (e += f + p), l.retain(f), l.delete(p), t + o + f + p
+ );
+ }, 0),
+ l.reduce(
+ (t, e) =>
+ "number" == typeof e.delete
+ ? (this.scroll.deleteAt(t, e.delete), t)
+ : t + s.Op.length(e),
+ 0
+ ),
+ this.scroll.batchEnd(),
+ this.scroll.optimize(),
+ this.update(n)
+ );
+ }
+ deleteText(t, e) {
+ return (
+ this.scroll.deleteAt(t, e),
+ this.update(new (o())().retain(t).delete(e))
+ );
+ }
+ formatLine(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : {};
+ this.scroll.update(),
+ Object.keys(n).forEach((r) => {
+ this.scroll.lines(t, Math.max(e, 1)).forEach((t) => {
+ t.format(r, n[r]);
+ });
+ }),
+ this.scroll.optimize();
+ const r = new (o())().retain(t).retain(e, (0, l.A)(n));
+ return this.update(r);
+ }
+ formatText(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : {};
+ Object.keys(n).forEach((r) => {
+ this.scroll.formatAt(t, e, r, n[r]);
+ });
+ const r = new (o())().retain(t).retain(e, (0, l.A)(n));
+ return this.update(r);
+ }
+ getContents(t, e) {
+ return this.delta.slice(t, t + e);
+ }
+ getDelta() {
+ return this.scroll
+ .lines()
+ .reduce((t, e) => t.concat(e.delta()), new (o())());
+ }
+ getFormat(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : 0,
+ n = [],
+ r = [];
+ 0 === e
+ ? this.scroll.path(t).forEach((t) => {
+ const [e] = t;
+ e instanceof c.Ay
+ ? n.push(e)
+ : e instanceof i.LeafBlot && r.push(e);
+ })
+ : ((n = this.scroll.lines(t, e)),
+ (r = this.scroll.descendants(i.LeafBlot, t, e)));
+ const [s, o] = [n, r].map((t) => {
+ const e = t.shift();
+ if (null == e) return {};
+ let n = (0, c.Ji)(e);
+ for (; Object.keys(n).length > 0; ) {
+ const e = t.shift();
+ if (null == e) return n;
+ n = b((0, c.Ji)(e), n);
+ }
+ return n;
+ });
+ return { ...s, ...o };
+ }
+ getHTML(t, e) {
+ const [n, r] = this.scroll.line(t);
+ if (n) {
+ const i = n.length();
+ return n.length() >= r + e && (0 !== r || e !== i)
+ ? m(n, r, e, !0)
+ : m(this.scroll, t, e, !0);
+ }
+ return "";
+ }
+ getText(t, e) {
+ return this.getContents(t, e)
+ .filter((t) => "string" == typeof t.insert)
+ .map((t) => t.insert)
+ .join("");
+ }
+ insertContents(t, e) {
+ const n = v(e),
+ r = new (o())().retain(t).concat(n);
+ return this.scroll.insertContents(t, n), this.update(r);
+ }
+ insertEmbed(t, e, n) {
+ return (
+ this.scroll.insertAt(t, e, n),
+ this.update(new (o())().retain(t).insert({ [e]: n }))
+ );
+ }
+ insertText(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : {};
+ return (
+ (e = e.replace(/\r\n/g, "\n").replace(/\r/g, "\n")),
+ this.scroll.insertAt(t, e),
+ Object.keys(n).forEach((r) => {
+ this.scroll.formatAt(t, e.length, r, n[r]);
+ }),
+ this.update(new (o())().retain(t).insert(e, (0, l.A)(n)))
+ );
+ }
+ isBlank() {
+ if (0 === this.scroll.children.length) return !0;
+ if (this.scroll.children.length > 1) return !1;
+ const t = this.scroll.children.head;
+ if (t?.statics.blotName !== c.Ay.blotName) return !1;
+ const e = t;
+ return (
+ !(e.children.length > 1) && e.children.head instanceof u.A
+ );
+ }
+ removeFormat(t, e) {
+ const n = this.getText(t, e),
+ [r, i] = this.scroll.line(t + e);
+ let s = 0,
+ l = new (o())();
+ null != r &&
+ ((s = r.length() - i),
+ (l = r
+ .delta()
+ .slice(i, i + s - 1)
+ .insert("\n")));
+ const a = this.getContents(t, e + s).diff(
+ new (o())().insert(n).concat(l)
+ ),
+ c = new (o())().retain(t).concat(a);
+ return this.applyDelta(c);
+ }
+ update(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : [],
+ n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : void 0;
+ const r = this.delta;
+ if (
+ 1 === e.length &&
+ "characterData" === e[0].type &&
+ e[0].target.data.match(p) &&
+ this.scroll.find(e[0].target)
+ ) {
+ const i = this.scroll.find(e[0].target),
+ s = (0, c.Ji)(i),
+ l = i.offset(this.scroll),
+ a = e[0].oldValue.replace(h.A.CONTENTS, ""),
+ u = new (o())().insert(a),
+ d = new (o())().insert(i.value()),
+ f = n && {
+ oldRange: A(n.oldRange, -l),
+ newRange: A(n.newRange, -l),
+ };
+ (t = new (o())()
+ .retain(l)
+ .concat(u.diff(d, f))
+ .reduce(
+ (t, e) => (e.insert ? t.insert(e.insert, s) : t.push(e)),
+ new (o())()
+ )),
+ (this.delta = r.compose(t));
+ } else
+ (this.delta = this.getDelta()),
+ (t && (0, a.A)(r.compose(t), this.delta)) ||
+ (t = r.diff(this.delta, n));
+ return t;
+ }
+ },
+ N = n(5374),
+ E = n(7356),
+ w = n(6078),
+ q = n(4266),
+ k = n(746),
+ _ = class {
+ isComposing = !1;
+ constructor(t, e) {
+ (this.scroll = t), (this.emitter = e), this.setupListeners();
+ }
+ setupListeners() {
+ this.scroll.domNode.addEventListener(
+ "compositionstart",
+ (t) => {
+ this.isComposing || this.handleCompositionStart(t);
+ }
+ ),
+ this.scroll.domNode.addEventListener(
+ "compositionend",
+ (t) => {
+ this.isComposing &&
+ queueMicrotask(() => {
+ this.handleCompositionEnd(t);
+ });
+ }
+ );
+ }
+ handleCompositionStart(t) {
+ const e =
+ t.target instanceof Node
+ ? this.scroll.find(t.target, !0)
+ : null;
+ !e ||
+ e instanceof k.A ||
+ (this.emitter.emit(N.A.events.COMPOSITION_BEFORE_START, t),
+ this.scroll.batchStart(),
+ this.emitter.emit(N.A.events.COMPOSITION_START, t),
+ (this.isComposing = !0));
+ }
+ handleCompositionEnd(t) {
+ this.emitter.emit(N.A.events.COMPOSITION_BEFORE_END, t),
+ this.scroll.batchEnd(),
+ this.emitter.emit(N.A.events.COMPOSITION_END, t),
+ (this.isComposing = !1);
+ }
+ },
+ L = n(9609);
+ const S = (t) => {
+ const e = t.getBoundingClientRect(),
+ n =
+ ("offsetWidth" in t && Math.abs(e.width) / t.offsetWidth) ||
+ 1,
+ r =
+ ("offsetHeight" in t &&
+ Math.abs(e.height) / t.offsetHeight) ||
+ 1;
+ return {
+ top: e.top,
+ right: e.left + t.clientWidth * n,
+ bottom: e.top + t.clientHeight * r,
+ left: e.left,
+ };
+ },
+ O = (t) => {
+ const e = parseInt(t, 10);
+ return Number.isNaN(e) ? 0 : e;
+ },
+ T = (t, e, n, r, i, s) =>
+ t < n && e > r
+ ? 0
+ : t < n
+ ? -(n - t + i)
+ : e > r
+ ? e - t > r - n
+ ? t + i - n
+ : e - r + s
+ : 0;
+ const j = ["block", "break", "cursor", "inline", "scroll", "text"];
+ const C = (0, w.A)("quill"),
+ R = new i.Registry();
+ i.ParentBlot.uiClass = "ql-ui";
+ class I {
+ static DEFAULTS = {
+ bounds: null,
+ modules: {
+ clipboard: !0,
+ keyboard: !0,
+ history: !0,
+ uploader: !0,
+ },
+ placeholder: "",
+ readOnly: !1,
+ registry: R,
+ theme: "default",
+ };
+ static events = N.A.events;
+ static sources = N.A.sources;
+ static version = "2.0.3";
+ static imports = {
+ delta: o(),
+ parchment: i,
+ "core/module": q.A,
+ "core/theme": L.A,
+ };
+ static debug(t) {
+ !0 === t && (t = "log"), w.A.level(t);
+ }
+ static find(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
+ return E.A.get(t) || R.find(t, e);
+ }
+ static import(t) {
+ return (
+ null == this.imports[t] &&
+ C.error(
+ `Cannot import ${t}. Are you sure it was registered?`
+ ),
+ this.imports[t]
+ );
+ }
+ static register() {
+ if (
+ "string" !=
+ typeof (arguments.length <= 0 ? void 0 : arguments[0])
+ ) {
+ const t = arguments.length <= 0 ? void 0 : arguments[0],
+ e = !!(arguments.length <= 1 ? void 0 : arguments[1]),
+ n = "attrName" in t ? t.attrName : t.blotName;
+ "string" == typeof n
+ ? this.register(`formats/${n}`, t, e)
+ : Object.keys(t).forEach((n) => {
+ this.register(n, t[n], e);
+ });
+ } else {
+ const t = arguments.length <= 0 ? void 0 : arguments[0],
+ e = arguments.length <= 1 ? void 0 : arguments[1],
+ n = !!(arguments.length <= 2 ? void 0 : arguments[2]);
+ null == this.imports[t] ||
+ n ||
+ C.warn(`Overwriting ${t} with`, e),
+ (this.imports[t] = e),
+ (t.startsWith("blots/") || t.startsWith("formats/")) &&
+ e &&
+ "boolean" != typeof e &&
+ "abstract" !== e.blotName &&
+ R.register(e),
+ "function" == typeof e.register && e.register(R);
+ }
+ }
+ constructor(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : {};
+ if (
+ ((this.options = (function (t, e) {
+ const n = B(t);
+ if (!n) throw new Error("Invalid Quill container");
+ const s =
+ !e.theme || e.theme === I.DEFAULTS.theme
+ ? L.A
+ : I.import(`themes/${e.theme}`);
+ if (!s)
+ throw new Error(
+ `Invalid theme ${e.theme}. Did you register it?`
+ );
+ const { modules: o, ...l } = I.DEFAULTS,
+ { modules: a, ...c } = s.DEFAULTS;
+ let u = M(e.modules);
+ null != u &&
+ u.toolbar &&
+ u.toolbar.constructor !== Object &&
+ (u = { ...u, toolbar: { container: u.toolbar } });
+ const h = (0, r.A)({}, M(o), M(a), u),
+ d = { ...l, ...U(c), ...U(e) };
+ let f = e.registry;
+ return (
+ f
+ ? e.formats &&
+ C.warn(
+ 'Ignoring "formats" option because "registry" is specified'
+ )
+ : (f = e.formats
+ ? ((t, e, n) => {
+ const r = new i.Registry();
+ return (
+ j.forEach((t) => {
+ const n = e.query(t);
+ n && r.register(n);
+ }),
+ t.forEach((t) => {
+ let i = e.query(t);
+ i ||
+ n.error(
+ `Cannot register "${t}" specified in "formats" config. Are you sure it was registered?`
+ );
+ let s = 0;
+ for (; i; )
+ if (
+ (r.register(i),
+ (i =
+ "blotName" in i
+ ? i.requiredContainer ?? null
+ : null),
+ (s += 1),
+ s > 100)
+ ) {
+ n.error(
+ `Cycle detected in registering blot requiredContainer: "${t}"`
+ );
+ break;
+ }
+ }),
+ r
+ );
+ })(e.formats, d.registry, C)
+ : d.registry),
+ {
+ ...d,
+ registry: f,
+ container: n,
+ theme: s,
+ modules: Object.entries(h).reduce((t, e) => {
+ let [n, i] = e;
+ if (!i) return t;
+ const s = I.import(`modules/${n}`);
+ return null == s
+ ? (C.error(
+ `Cannot load ${n} module. Are you sure you registered it?`
+ ),
+ t)
+ : { ...t, [n]: (0, r.A)({}, s.DEFAULTS || {}, i) };
+ }, {}),
+ bounds: B(d.bounds),
+ }
+ );
+ })(t, e)),
+ (this.container = this.options.container),
+ null == this.container)
+ )
+ return void C.error("Invalid Quill container", t);
+ this.options.debug && I.debug(this.options.debug);
+ const n = this.container.innerHTML.trim();
+ this.container.classList.add("ql-container"),
+ (this.container.innerHTML = ""),
+ E.A.set(this.container, this),
+ (this.root = this.addContainer("ql-editor")),
+ this.root.classList.add("ql-blank"),
+ (this.emitter = new N.A());
+ const s = i.ScrollBlot.blotName,
+ l = this.options.registry.query(s);
+ if (!l || !("blotName" in l))
+ throw new Error(`Cannot initialize Quill without "${s}" blot`);
+ if (
+ ((this.scroll = new l(this.options.registry, this.root, {
+ emitter: this.emitter,
+ })),
+ (this.editor = new x(this.scroll)),
+ (this.selection = new f.A(this.scroll, this.emitter)),
+ (this.composition = new _(this.scroll, this.emitter)),
+ (this.theme = new this.options.theme(this, this.options)),
+ (this.keyboard = this.theme.addModule("keyboard")),
+ (this.clipboard = this.theme.addModule("clipboard")),
+ (this.history = this.theme.addModule("history")),
+ (this.uploader = this.theme.addModule("uploader")),
+ this.theme.addModule("input"),
+ this.theme.addModule("uiNode"),
+ this.theme.init(),
+ this.emitter.on(N.A.events.EDITOR_CHANGE, (t) => {
+ t === N.A.events.TEXT_CHANGE &&
+ this.root.classList.toggle(
+ "ql-blank",
+ this.editor.isBlank()
+ );
+ }),
+ this.emitter.on(N.A.events.SCROLL_UPDATE, (t, e) => {
+ const n = this.selection.lastRange,
+ [r] = this.selection.getRange(),
+ i = n && r ? { oldRange: n, newRange: r } : void 0;
+ D.call(this, () => this.editor.update(null, e, i), t);
+ }),
+ this.emitter.on(N.A.events.SCROLL_EMBED_UPDATE, (t, e) => {
+ const n = this.selection.lastRange,
+ [r] = this.selection.getRange(),
+ i = n && r ? { oldRange: n, newRange: r } : void 0;
+ D.call(
+ this,
+ () => {
+ const n = new (o())()
+ .retain(t.offset(this))
+ .retain({ [t.statics.blotName]: e });
+ return this.editor.update(n, [], i);
+ },
+ I.sources.USER
+ );
+ }),
+ n)
+ ) {
+ const t = this.clipboard.convert({
+ html: `${n}
`,
+ text: "\n",
+ });
+ this.setContents(t);
+ }
+ this.history.clear(),
+ this.options.placeholder &&
+ this.root.setAttribute(
+ "data-placeholder",
+ this.options.placeholder
+ ),
+ this.options.readOnly && this.disable(),
+ (this.allowReadOnlyEdits = !1);
+ }
+ addContainer(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : null;
+ if ("string" == typeof t) {
+ const e = t;
+ (t = document.createElement("div")).classList.add(e);
+ }
+ return this.container.insertBefore(t, e), t;
+ }
+ blur() {
+ this.selection.setRange(null);
+ }
+ deleteText(t, e, n) {
+ return (
+ ([t, e, , n] = P(t, e, n)),
+ D.call(this, () => this.editor.deleteText(t, e), n, t, -1 * e)
+ );
+ }
+ disable() {
+ this.enable(!1);
+ }
+ editReadOnly(t) {
+ this.allowReadOnlyEdits = !0;
+ const e = t();
+ return (this.allowReadOnlyEdits = !1), e;
+ }
+ enable() {
+ let t =
+ !(arguments.length > 0 && void 0 !== arguments[0]) ||
+ arguments[0];
+ this.scroll.enable(t),
+ this.container.classList.toggle("ql-disabled", !t);
+ }
+ focus() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : {};
+ this.selection.focus(),
+ t.preventScroll || this.scrollSelectionIntoView();
+ }
+ format(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : N.A.sources.API;
+ return D.call(
+ this,
+ () => {
+ const n = this.getSelection(!0);
+ let r = new (o())();
+ if (null == n) return r;
+ if (this.scroll.query(t, i.Scope.BLOCK))
+ r = this.editor.formatLine(n.index, n.length, { [t]: e });
+ else {
+ if (0 === n.length) return this.selection.format(t, e), r;
+ r = this.editor.formatText(n.index, n.length, { [t]: e });
+ }
+ return this.setSelection(n, N.A.sources.SILENT), r;
+ },
+ n
+ );
+ }
+ formatLine(t, e, n, r, i) {
+ let s;
+ return (
+ ([t, e, s, i] = P(t, e, n, r, i)),
+ D.call(this, () => this.editor.formatLine(t, e, s), i, t, 0)
+ );
+ }
+ formatText(t, e, n, r, i) {
+ let s;
+ return (
+ ([t, e, s, i] = P(t, e, n, r, i)),
+ D.call(this, () => this.editor.formatText(t, e, s), i, t, 0)
+ );
+ }
+ getBounds(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : 0,
+ n = null;
+ if (
+ ((n =
+ "number" == typeof t
+ ? this.selection.getBounds(t, e)
+ : this.selection.getBounds(t.index, t.length)),
+ !n)
+ )
+ return null;
+ const r = this.container.getBoundingClientRect();
+ return {
+ bottom: n.bottom - r.top,
+ height: n.height,
+ left: n.left - r.left,
+ right: n.right - r.left,
+ top: n.top - r.top,
+ width: n.width,
+ };
+ }
+ getContents() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : 0,
+ e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : this.getLength() - t;
+ return ([t, e] = P(t, e)), this.editor.getContents(t, e);
+ }
+ getFormat() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : this.getSelection(!0),
+ e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : 0;
+ return "number" == typeof t
+ ? this.editor.getFormat(t, e)
+ : this.editor.getFormat(t.index, t.length);
+ }
+ getIndex(t) {
+ return t.offset(this.scroll);
+ }
+ getLength() {
+ return this.scroll.length();
+ }
+ getLeaf(t) {
+ return this.scroll.leaf(t);
+ }
+ getLine(t) {
+ return this.scroll.line(t);
+ }
+ getLines() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : 0,
+ e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : Number.MAX_VALUE;
+ return "number" != typeof t
+ ? this.scroll.lines(t.index, t.length)
+ : this.scroll.lines(t, e);
+ }
+ getModule(t) {
+ return this.theme.modules[t];
+ }
+ getSelection() {
+ return (
+ arguments.length > 0 &&
+ void 0 !== arguments[0] &&
+ arguments[0] &&
+ this.focus(),
+ this.update(),
+ this.selection.getRange()[0]
+ );
+ }
+ getSemanticHTML() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : 0,
+ e = arguments.length > 1 ? arguments[1] : void 0;
+ return (
+ "number" == typeof t && (e = e ?? this.getLength() - t),
+ ([t, e] = P(t, e)),
+ this.editor.getHTML(t, e)
+ );
+ }
+ getText() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : 0,
+ e = arguments.length > 1 ? arguments[1] : void 0;
+ return (
+ "number" == typeof t && (e = e ?? this.getLength() - t),
+ ([t, e] = P(t, e)),
+ this.editor.getText(t, e)
+ );
+ }
+ hasFocus() {
+ return this.selection.hasFocus();
+ }
+ insertEmbed(t, e, n) {
+ let r =
+ arguments.length > 3 && void 0 !== arguments[3]
+ ? arguments[3]
+ : I.sources.API;
+ return D.call(this, () => this.editor.insertEmbed(t, e, n), r, t);
+ }
+ insertText(t, e, n, r, i) {
+ let s;
+ return (
+ ([t, , s, i] = P(t, 0, n, r, i)),
+ D.call(
+ this,
+ () => this.editor.insertText(t, e, s),
+ i,
+ t,
+ e.length
+ )
+ );
+ }
+ isEnabled() {
+ return this.scroll.isEnabled();
+ }
+ off() {
+ return this.emitter.off(...arguments);
+ }
+ on() {
+ return this.emitter.on(...arguments);
+ }
+ once() {
+ return this.emitter.once(...arguments);
+ }
+ removeFormat(t, e, n) {
+ return (
+ ([t, e, , n] = P(t, e, n)),
+ D.call(this, () => this.editor.removeFormat(t, e), n, t)
+ );
+ }
+ scrollRectIntoView(t) {
+ ((t, e) => {
+ const n = t.ownerDocument;
+ let r = e,
+ i = t;
+ for (; i; ) {
+ const t = i === n.body,
+ e = t
+ ? {
+ top: 0,
+ right:
+ window.visualViewport?.width ??
+ n.documentElement.clientWidth,
+ bottom:
+ window.visualViewport?.height ??
+ n.documentElement.clientHeight,
+ left: 0,
+ }
+ : S(i),
+ o = getComputedStyle(i),
+ l = T(
+ r.left,
+ r.right,
+ e.left,
+ e.right,
+ O(o.scrollPaddingLeft),
+ O(o.scrollPaddingRight)
+ ),
+ a = T(
+ r.top,
+ r.bottom,
+ e.top,
+ e.bottom,
+ O(o.scrollPaddingTop),
+ O(o.scrollPaddingBottom)
+ );
+ if (l || a)
+ if (t) n.defaultView?.scrollBy(l, a);
+ else {
+ const { scrollLeft: t, scrollTop: e } = i;
+ a && (i.scrollTop += a), l && (i.scrollLeft += l);
+ const n = i.scrollLeft - t,
+ s = i.scrollTop - e;
+ r = {
+ left: r.left - n,
+ top: r.top - s,
+ right: r.right - n,
+ bottom: r.bottom - s,
+ };
+ }
+ i =
+ t || "fixed" === o.position
+ ? null
+ : (s = i).parentElement || s.getRootNode().host || null;
+ }
+ var s;
+ })(this.root, t);
+ }
+ scrollIntoView() {
+ console.warn(
+ "Quill#scrollIntoView() has been deprecated and will be removed in the near future. Please use Quill#scrollSelectionIntoView() instead."
+ ),
+ this.scrollSelectionIntoView();
+ }
+ scrollSelectionIntoView() {
+ const t = this.selection.lastRange,
+ e = t && this.selection.getBounds(t.index, t.length);
+ e && this.scrollRectIntoView(e);
+ }
+ setContents(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : N.A.sources.API;
+ return D.call(
+ this,
+ () => {
+ t = new (o())(t);
+ const e = this.getLength(),
+ n = this.editor.deleteText(0, e),
+ r = this.editor.insertContents(0, t),
+ i = this.editor.deleteText(this.getLength() - 1, 1);
+ return n.compose(r).compose(i);
+ },
+ e
+ );
+ }
+ setSelection(t, e, n) {
+ null == t
+ ? this.selection.setRange(null, e || I.sources.API)
+ : (([t, e, , n] = P(t, e, n)),
+ this.selection.setRange(new f.Q(Math.max(0, t), e), n),
+ n !== N.A.sources.SILENT && this.scrollSelectionIntoView());
+ }
+ setText(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : N.A.sources.API;
+ const n = new (o())().insert(t);
+ return this.setContents(n, e);
+ }
+ update() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : N.A.sources.USER;
+ const e = this.scroll.update(t);
+ return this.selection.update(t), e;
+ }
+ updateContents(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : N.A.sources.API;
+ return D.call(
+ this,
+ () => ((t = new (o())(t)), this.editor.applyDelta(t)),
+ e,
+ !0
+ );
+ }
+ }
+ function B(t) {
+ return "string" == typeof t ? document.querySelector(t) : t;
+ }
+ function M(t) {
+ return Object.entries(t ?? {}).reduce((t, e) => {
+ let [n, r] = e;
+ return { ...t, [n]: !0 === r ? {} : r };
+ }, {});
+ }
+ function U(t) {
+ return Object.fromEntries(
+ Object.entries(t).filter((t) => void 0 !== t[1])
+ );
+ }
+ function D(t, e, n, r) {
+ if (
+ !this.isEnabled() &&
+ e === N.A.sources.USER &&
+ !this.allowReadOnlyEdits
+ )
+ return new (o())();
+ let i = null == n ? null : this.getSelection();
+ const s = this.editor.delta,
+ l = t();
+ if (
+ (null != i &&
+ (!0 === n && (n = i.index),
+ null == r ? (i = z(i, l, e)) : 0 !== r && (i = z(i, n, r, e)),
+ this.setSelection(i, N.A.sources.SILENT)),
+ l.length() > 0)
+ ) {
+ const t = [N.A.events.TEXT_CHANGE, l, s, e];
+ this.emitter.emit(N.A.events.EDITOR_CHANGE, ...t),
+ e !== N.A.sources.SILENT && this.emitter.emit(...t);
+ }
+ return l;
+ }
+ function P(t, e, n, r, i) {
+ let s = {};
+ return (
+ "number" == typeof t.index && "number" == typeof t.length
+ ? "number" != typeof e
+ ? ((i = r), (r = n), (n = e), (e = t.length), (t = t.index))
+ : ((e = t.length), (t = t.index))
+ : "number" != typeof e && ((i = r), (r = n), (n = e), (e = 0)),
+ "object" == typeof n
+ ? ((s = n), (i = r))
+ : "string" == typeof n && (null != r ? (s[n] = r) : (i = n)),
+ [t, e, s, (i = i || N.A.sources.API)]
+ );
+ }
+ function z(t, e, n, r) {
+ const i = "number" == typeof n ? n : 0;
+ if (null == t) return null;
+ let s, o;
+ return (
+ e && "function" == typeof e.transformPosition
+ ? ([s, o] = [t.index, t.index + t.length].map((t) =>
+ e.transformPosition(t, r !== N.A.sources.USER)
+ ))
+ : ([s, o] = [t.index, t.index + t.length].map((t) =>
+ t < e || (t === e && r === N.A.sources.USER)
+ ? t
+ : i >= 0
+ ? t + i
+ : Math.max(e, t + i)
+ )),
+ new f.Q(s, o - s)
+ );
+ }
+ },
+ 8298: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Q: function () {
+ return a;
+ },
+ });
+ var r = n(6003),
+ i = n(5123),
+ s = n(3707),
+ o = n(5374);
+ const l = (0, n(6078).A)("quill:selection");
+ class a {
+ constructor(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : 0;
+ (this.index = t), (this.length = e);
+ }
+ }
+ function c(t, e) {
+ try {
+ e.parentNode;
+ } catch (t) {
+ return !1;
+ }
+ return t.contains(e);
+ }
+ e.A = class {
+ constructor(t, e) {
+ (this.emitter = e),
+ (this.scroll = t),
+ (this.composing = !1),
+ (this.mouseDown = !1),
+ (this.root = this.scroll.domNode),
+ (this.cursor = this.scroll.create("cursor", this)),
+ (this.savedRange = new a(0, 0)),
+ (this.lastRange = this.savedRange),
+ (this.lastNative = null),
+ this.handleComposition(),
+ this.handleDragging(),
+ this.emitter.listenDOM("selectionchange", document, () => {
+ this.mouseDown ||
+ this.composing ||
+ setTimeout(this.update.bind(this, o.A.sources.USER), 1);
+ }),
+ this.emitter.on(o.A.events.SCROLL_BEFORE_UPDATE, () => {
+ if (!this.hasFocus()) return;
+ const t = this.getNativeRange();
+ null != t &&
+ t.start.node !== this.cursor.textNode &&
+ this.emitter.once(o.A.events.SCROLL_UPDATE, (e, n) => {
+ try {
+ this.root.contains(t.start.node) &&
+ this.root.contains(t.end.node) &&
+ this.setNativeRange(
+ t.start.node,
+ t.start.offset,
+ t.end.node,
+ t.end.offset
+ );
+ const r = n.some(
+ (t) =>
+ "characterData" === t.type ||
+ "childList" === t.type ||
+ ("attributes" === t.type && t.target === this.root)
+ );
+ this.update(r ? o.A.sources.SILENT : e);
+ } catch (t) {}
+ });
+ }),
+ this.emitter.on(o.A.events.SCROLL_OPTIMIZE, (t, e) => {
+ if (e.range) {
+ const {
+ startNode: t,
+ startOffset: n,
+ endNode: r,
+ endOffset: i,
+ } = e.range;
+ this.setNativeRange(t, n, r, i),
+ this.update(o.A.sources.SILENT);
+ }
+ }),
+ this.update(o.A.sources.SILENT);
+ }
+ handleComposition() {
+ this.emitter.on(o.A.events.COMPOSITION_BEFORE_START, () => {
+ this.composing = !0;
+ }),
+ this.emitter.on(o.A.events.COMPOSITION_END, () => {
+ if (((this.composing = !1), this.cursor.parent)) {
+ const t = this.cursor.restore();
+ if (!t) return;
+ setTimeout(() => {
+ this.setNativeRange(
+ t.startNode,
+ t.startOffset,
+ t.endNode,
+ t.endOffset
+ );
+ }, 1);
+ }
+ });
+ }
+ handleDragging() {
+ this.emitter.listenDOM("mousedown", document.body, () => {
+ this.mouseDown = !0;
+ }),
+ this.emitter.listenDOM("mouseup", document.body, () => {
+ (this.mouseDown = !1), this.update(o.A.sources.USER);
+ });
+ }
+ focus() {
+ this.hasFocus() ||
+ (this.root.focus({ preventScroll: !0 }),
+ this.setRange(this.savedRange));
+ }
+ format(t, e) {
+ this.scroll.update();
+ const n = this.getNativeRange();
+ if (
+ null != n &&
+ n.native.collapsed &&
+ !this.scroll.query(t, r.Scope.BLOCK)
+ ) {
+ if (n.start.node !== this.cursor.textNode) {
+ const t = this.scroll.find(n.start.node, !1);
+ if (null == t) return;
+ if (t instanceof r.LeafBlot) {
+ const e = t.split(n.start.offset);
+ t.parent.insertBefore(this.cursor, e);
+ } else t.insertBefore(this.cursor, n.start.node);
+ this.cursor.attach();
+ }
+ this.cursor.format(t, e),
+ this.scroll.optimize(),
+ this.setNativeRange(
+ this.cursor.textNode,
+ this.cursor.textNode.data.length
+ ),
+ this.update();
+ }
+ }
+ getBounds(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : 0;
+ const n = this.scroll.length();
+ let r;
+ (t = Math.min(t, n - 1)), (e = Math.min(t + e, n - 1) - t);
+ let [i, s] = this.scroll.leaf(t);
+ if (null == i) return null;
+ if (e > 0 && s === i.length()) {
+ const [e] = this.scroll.leaf(t + 1);
+ if (e) {
+ const [n] = this.scroll.line(t),
+ [r] = this.scroll.line(t + 1);
+ n === r && ((i = e), (s = 0));
+ }
+ }
+ [r, s] = i.position(s, !0);
+ const o = document.createRange();
+ if (e > 0)
+ return (
+ o.setStart(r, s),
+ ([i, s] = this.scroll.leaf(t + e)),
+ null == i
+ ? null
+ : (([r, s] = i.position(s, !0)),
+ o.setEnd(r, s),
+ o.getBoundingClientRect())
+ );
+ let l,
+ a = "left";
+ if (r instanceof Text) {
+ if (!r.data.length) return null;
+ s < r.data.length
+ ? (o.setStart(r, s), o.setEnd(r, s + 1))
+ : (o.setStart(r, s - 1), o.setEnd(r, s), (a = "right")),
+ (l = o.getBoundingClientRect());
+ } else {
+ if (!(i.domNode instanceof Element)) return null;
+ (l = i.domNode.getBoundingClientRect()), s > 0 && (a = "right");
+ }
+ return {
+ bottom: l.top + l.height,
+ height: l.height,
+ left: l[a],
+ right: l[a],
+ top: l.top,
+ width: 0,
+ };
+ }
+ getNativeRange() {
+ const t = document.getSelection();
+ if (null == t || t.rangeCount <= 0) return null;
+ const e = t.getRangeAt(0);
+ if (null == e) return null;
+ const n = this.normalizeNative(e);
+ return l.info("getNativeRange", n), n;
+ }
+ getRange() {
+ const t = this.scroll.domNode;
+ if ("isConnected" in t && !t.isConnected) return [null, null];
+ const e = this.getNativeRange();
+ return null == e ? [null, null] : [this.normalizedToRange(e), e];
+ }
+ hasFocus() {
+ return (
+ document.activeElement === this.root ||
+ (null != document.activeElement &&
+ c(this.root, document.activeElement))
+ );
+ }
+ normalizedToRange(t) {
+ const e = [[t.start.node, t.start.offset]];
+ t.native.collapsed || e.push([t.end.node, t.end.offset]);
+ const n = e.map((t) => {
+ const [e, n] = t,
+ i = this.scroll.find(e, !0),
+ s = i.offset(this.scroll);
+ return 0 === n
+ ? s
+ : i instanceof r.LeafBlot
+ ? s + i.index(e, n)
+ : s + i.length();
+ }),
+ i = Math.min(Math.max(...n), this.scroll.length() - 1),
+ s = Math.min(i, ...n);
+ return new a(s, i - s);
+ }
+ normalizeNative(t) {
+ if (
+ !c(this.root, t.startContainer) ||
+ (!t.collapsed && !c(this.root, t.endContainer))
+ )
+ return null;
+ const e = {
+ start: { node: t.startContainer, offset: t.startOffset },
+ end: { node: t.endContainer, offset: t.endOffset },
+ native: t,
+ };
+ return (
+ [e.start, e.end].forEach((t) => {
+ let { node: e, offset: n } = t;
+ for (; !(e instanceof Text) && e.childNodes.length > 0; )
+ if (e.childNodes.length > n) (e = e.childNodes[n]), (n = 0);
+ else {
+ if (e.childNodes.length !== n) break;
+ (e = e.lastChild),
+ (n =
+ e instanceof Text
+ ? e.data.length
+ : e.childNodes.length > 0
+ ? e.childNodes.length
+ : e.childNodes.length + 1);
+ }
+ (t.node = e), (t.offset = n);
+ }),
+ e
+ );
+ }
+ rangeToNative(t) {
+ const e = this.scroll.length(),
+ n = (t, n) => {
+ t = Math.min(e - 1, t);
+ const [r, i] = this.scroll.leaf(t);
+ return r ? r.position(i, n) : [null, -1];
+ };
+ return [...n(t.index, !1), ...n(t.index + t.length, !0)];
+ }
+ setNativeRange(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : t,
+ r =
+ arguments.length > 3 && void 0 !== arguments[3]
+ ? arguments[3]
+ : e,
+ i =
+ arguments.length > 4 &&
+ void 0 !== arguments[4] &&
+ arguments[4];
+ if (
+ (l.info("setNativeRange", t, e, n, r),
+ null != t &&
+ (null == this.root.parentNode ||
+ null == t.parentNode ||
+ null == n.parentNode))
+ )
+ return;
+ const s = document.getSelection();
+ if (null != s)
+ if (null != t) {
+ this.hasFocus() || this.root.focus({ preventScroll: !0 });
+ const { native: o } = this.getNativeRange() || {};
+ if (
+ null == o ||
+ i ||
+ t !== o.startContainer ||
+ e !== o.startOffset ||
+ n !== o.endContainer ||
+ r !== o.endOffset
+ ) {
+ t instanceof Element &&
+ "BR" === t.tagName &&
+ ((e = Array.from(t.parentNode.childNodes).indexOf(t)),
+ (t = t.parentNode)),
+ n instanceof Element &&
+ "BR" === n.tagName &&
+ ((r = Array.from(n.parentNode.childNodes).indexOf(n)),
+ (n = n.parentNode));
+ const i = document.createRange();
+ i.setStart(t, e),
+ i.setEnd(n, r),
+ s.removeAllRanges(),
+ s.addRange(i);
+ }
+ } else s.removeAllRanges(), this.root.blur();
+ }
+ setRange(t) {
+ let e =
+ arguments.length > 1 &&
+ void 0 !== arguments[1] &&
+ arguments[1],
+ n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : o.A.sources.API;
+ if (
+ ("string" == typeof e && ((n = e), (e = !1)),
+ l.info("setRange", t),
+ null != t)
+ ) {
+ const n = this.rangeToNative(t);
+ this.setNativeRange(...n, e);
+ } else this.setNativeRange(null);
+ this.update(n);
+ }
+ update() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : o.A.sources.USER;
+ const e = this.lastRange,
+ [n, r] = this.getRange();
+ if (
+ ((this.lastRange = n),
+ (this.lastNative = r),
+ null != this.lastRange && (this.savedRange = this.lastRange),
+ !(0, i.A)(e, this.lastRange))
+ ) {
+ if (
+ !this.composing &&
+ null != r &&
+ r.native.collapsed &&
+ r.start.node !== this.cursor.textNode
+ ) {
+ const t = this.cursor.restore();
+ t &&
+ this.setNativeRange(
+ t.startNode,
+ t.startOffset,
+ t.endNode,
+ t.endOffset
+ );
+ }
+ const n = [
+ o.A.events.SELECTION_CHANGE,
+ (0, s.A)(this.lastRange),
+ (0, s.A)(e),
+ t,
+ ];
+ this.emitter.emit(o.A.events.EDITOR_CHANGE, ...n),
+ t !== o.A.sources.SILENT && this.emitter.emit(...n);
+ }
+ }
+ };
+ },
+ 9609: function (t, e) {
+ "use strict";
+ class n {
+ static DEFAULTS = { modules: {} };
+ static themes = { default: n };
+ modules = {};
+ constructor(t, e) {
+ (this.quill = t), (this.options = e);
+ }
+ init() {
+ Object.keys(this.options.modules).forEach((t) => {
+ null == this.modules[t] && this.addModule(t);
+ });
+ }
+ addModule(t) {
+ const e = this.quill.constructor.import(`modules/${t}`);
+ return (
+ (this.modules[t] = new e(
+ this.quill,
+ this.options.modules[t] || {}
+ )),
+ this.modules[t]
+ );
+ }
+ }
+ e.A = n;
+ },
+ 8276: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Hu: function () {
+ return l;
+ },
+ gS: function () {
+ return s;
+ },
+ qh: function () {
+ return o;
+ },
+ });
+ var r = n(6003);
+ const i = {
+ scope: r.Scope.BLOCK,
+ whitelist: ["right", "center", "justify"],
+ },
+ s = new r.Attributor("align", "align", i),
+ o = new r.ClassAttributor("align", "ql-align", i),
+ l = new r.StyleAttributor("align", "text-align", i);
+ },
+ 9541: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ l: function () {
+ return s;
+ },
+ s: function () {
+ return o;
+ },
+ });
+ var r = n(6003),
+ i = n(8638);
+ const s = new r.ClassAttributor("background", "ql-bg", {
+ scope: r.Scope.INLINE,
+ }),
+ o = new i.a2("background", "background-color", {
+ scope: r.Scope.INLINE,
+ });
+ },
+ 9404: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Ay: function () {
+ return h;
+ },
+ Cy: function () {
+ return d;
+ },
+ EJ: function () {
+ return u;
+ },
+ });
+ var r = n(9698),
+ i = n(3036),
+ s = n(4541),
+ o = n(4850),
+ l = n(5508),
+ a = n(580),
+ c = n(6142);
+ class u extends a.A {
+ static create(t) {
+ const e = super.create(t);
+ return e.setAttribute("spellcheck", "false"), e;
+ }
+ code(t, e) {
+ return this.children
+ .map((t) => (t.length() <= 1 ? "" : t.domNode.innerText))
+ .join("\n")
+ .slice(t, t + e);
+ }
+ html(t, e) {
+ return `\n${(0, l.X)(this.code(t, e))}\n`;
+ }
+ }
+ class h extends r.Ay {
+ static TAB = " ";
+ static register() {
+ c.Ay.register(u);
+ }
+ }
+ class d extends o.A {}
+ (d.blotName = "code"),
+ (d.tagName = "CODE"),
+ (h.blotName = "code-block"),
+ (h.className = "ql-code-block"),
+ (h.tagName = "DIV"),
+ (u.blotName = "code-block-container"),
+ (u.className = "ql-code-block-container"),
+ (u.tagName = "DIV"),
+ (u.allowedChildren = [h]),
+ (h.allowedChildren = [l.A, i.A, s.A]),
+ (h.requiredContainer = u);
+ },
+ 8638: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ JM: function () {
+ return o;
+ },
+ a2: function () {
+ return i;
+ },
+ g3: function () {
+ return s;
+ },
+ });
+ var r = n(6003);
+ class i extends r.StyleAttributor {
+ value(t) {
+ let e = super.value(t);
+ return e.startsWith("rgb(")
+ ? ((e = e.replace(/^[^\d]+/, "").replace(/[^\d]+$/, "")),
+ `#${e
+ .split(",")
+ .map((t) => `00${parseInt(t, 10).toString(16)}`.slice(-2))
+ .join("")}`)
+ : e;
+ }
+ }
+ const s = new r.ClassAttributor("color", "ql-color", {
+ scope: r.Scope.INLINE,
+ }),
+ o = new i("color", "color", { scope: r.Scope.INLINE });
+ },
+ 7912: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Mc: function () {
+ return s;
+ },
+ VL: function () {
+ return l;
+ },
+ sY: function () {
+ return o;
+ },
+ });
+ var r = n(6003);
+ const i = { scope: r.Scope.BLOCK, whitelist: ["rtl"] },
+ s = new r.Attributor("direction", "dir", i),
+ o = new r.ClassAttributor("direction", "ql-direction", i),
+ l = new r.StyleAttributor("direction", "direction", i);
+ },
+ 6772: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ q: function () {
+ return s;
+ },
+ z: function () {
+ return l;
+ },
+ });
+ var r = n(6003);
+ const i = {
+ scope: r.Scope.INLINE,
+ whitelist: ["serif", "monospace"],
+ },
+ s = new r.ClassAttributor("font", "ql-font", i);
+ class o extends r.StyleAttributor {
+ value(t) {
+ return super.value(t).replace(/["']/g, "");
+ }
+ }
+ const l = new o("font", "font-family", i);
+ },
+ 664: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ U: function () {
+ return i;
+ },
+ r: function () {
+ return s;
+ },
+ });
+ var r = n(6003);
+ const i = new r.ClassAttributor("size", "ql-size", {
+ scope: r.Scope.INLINE,
+ whitelist: ["small", "large", "huge"],
+ }),
+ s = new r.StyleAttributor("size", "font-size", {
+ scope: r.Scope.INLINE,
+ whitelist: ["10px", "18px", "32px"],
+ });
+ },
+ 584: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Ay: function () {
+ return S;
+ },
+ hV: function () {
+ return I;
+ },
+ });
+ var r = n(6003),
+ i = n(5232),
+ s = n.n(i),
+ o = n(9698),
+ l = n(6078),
+ a = n(4266),
+ c = n(6142),
+ u = n(8276),
+ h = n(9541),
+ d = n(9404),
+ f = n(8638),
+ p = n(7912),
+ g = n(6772),
+ m = n(664),
+ b = n(8123);
+ const y = /font-weight:\s*normal/,
+ v = ["P", "OL", "UL"],
+ A = (t) => t && v.includes(t.tagName),
+ x = /\bmso-list:[^;]*ignore/i,
+ N = /\bmso-list:[^;]*\bl(\d+)/i,
+ E = /\bmso-list:[^;]*\blevel(\d+)/i,
+ w = [
+ function (t) {
+ "urn:schemas-microsoft-com:office:word" ===
+ t.documentElement.getAttribute("xmlns:w") &&
+ ((t) => {
+ const e = Array.from(
+ t.querySelectorAll("[style*=mso-list]")
+ ),
+ n = [],
+ r = [];
+ e.forEach((t) => {
+ (t.getAttribute("style") || "").match(x)
+ ? n.push(t)
+ : r.push(t);
+ }),
+ n.forEach((t) => t.parentNode?.removeChild(t));
+ const i = t.documentElement.innerHTML,
+ s = r
+ .map((t) =>
+ ((t, e) => {
+ const n = t.getAttribute("style"),
+ r = n?.match(N);
+ if (!r) return null;
+ const i = Number(r[1]),
+ s = n?.match(E),
+ o = s ? Number(s[1]) : 1,
+ l = new RegExp(
+ `@list l${i}:level${o}\\s*\\{[^\\}]*mso-level-number-format:\\s*([\\w-]+)`,
+ "i"
+ ),
+ a = e.match(l);
+ return {
+ id: i,
+ indent: o,
+ type:
+ a && "bullet" === a[1] ? "bullet" : "ordered",
+ element: t,
+ };
+ })(t, i)
+ )
+ .filter((t) => t);
+ for (; s.length; ) {
+ const t = [];
+ let e = s.shift();
+ for (; e; )
+ t.push(e),
+ (e =
+ s.length &&
+ s[0]?.element === e.element.nextElementSibling &&
+ s[0].id === e.id
+ ? s.shift()
+ : null);
+ const n = document.createElement("ul");
+ t.forEach((t) => {
+ const e = document.createElement("li");
+ e.setAttribute("data-list", t.type),
+ t.indent > 1 &&
+ e.setAttribute(
+ "class",
+ "ql-indent-" + (t.indent - 1)
+ ),
+ (e.innerHTML = t.element.innerHTML),
+ n.appendChild(e);
+ });
+ const r = t[0]?.element,
+ { parentNode: i } = r ?? {};
+ r && i?.replaceChild(n, r),
+ t.slice(1).forEach((t) => {
+ let { element: e } = t;
+ i?.removeChild(e);
+ });
+ }
+ })(t);
+ },
+ function (t) {
+ t.querySelector('[id^="docs-internal-guid-"]') &&
+ (((t) => {
+ Array.from(t.querySelectorAll('b[style*="font-weight"]'))
+ .filter((t) => t.getAttribute("style")?.match(y))
+ .forEach((e) => {
+ const n = t.createDocumentFragment();
+ n.append(...e.childNodes),
+ e.parentNode?.replaceChild(n, e);
+ });
+ })(t),
+ ((t) => {
+ Array.from(t.querySelectorAll("br"))
+ .filter(
+ (t) =>
+ A(t.previousElementSibling) && A(t.nextElementSibling)
+ )
+ .forEach((t) => {
+ t.parentNode?.removeChild(t);
+ });
+ })(t));
+ },
+ ];
+ const q = (0, l.A)("quill:clipboard"),
+ k = [
+ [
+ Node.TEXT_NODE,
+ function (t, e, n) {
+ let r = t.data;
+ if ("O:P" === t.parentElement?.tagName)
+ return e.insert(r.trim());
+ if (!R(t)) {
+ if (
+ 0 === r.trim().length &&
+ r.includes("\n") &&
+ !(function (t, e) {
+ return (
+ t.previousElementSibling &&
+ t.nextElementSibling &&
+ !j(t.previousElementSibling, e) &&
+ !j(t.nextElementSibling, e)
+ );
+ })(t, n)
+ )
+ return e;
+ (r = r.replace(/[^\S\u00a0]/g, " ")),
+ (r = r.replace(/ {2,}/g, " ")),
+ ((null == t.previousSibling &&
+ null != t.parentElement &&
+ j(t.parentElement, n)) ||
+ (t.previousSibling instanceof Element &&
+ j(t.previousSibling, n))) &&
+ (r = r.replace(/^ /, "")),
+ ((null == t.nextSibling &&
+ null != t.parentElement &&
+ j(t.parentElement, n)) ||
+ (t.nextSibling instanceof Element &&
+ j(t.nextSibling, n))) &&
+ (r = r.replace(/ $/, "")),
+ (r = r.replaceAll(" ", " "));
+ }
+ return e.insert(r);
+ },
+ ],
+ [Node.TEXT_NODE, M],
+ [
+ "br",
+ function (t, e) {
+ return T(e, "\n") || e.insert("\n"), e;
+ },
+ ],
+ [Node.ELEMENT_NODE, M],
+ [
+ Node.ELEMENT_NODE,
+ function (t, e, n) {
+ const i = n.query(t);
+ if (null == i) return e;
+ if (i.prototype instanceof r.EmbedBlot) {
+ const e = {},
+ r = i.value(t);
+ if (null != r)
+ return (
+ (e[i.blotName] = r),
+ new (s())().insert(e, i.formats(t, n))
+ );
+ } else if (
+ (i.prototype instanceof r.BlockBlot &&
+ !T(e, "\n") &&
+ e.insert("\n"),
+ "blotName" in i &&
+ "formats" in i &&
+ "function" == typeof i.formats)
+ )
+ return O(e, i.blotName, i.formats(t, n), n);
+ return e;
+ },
+ ],
+ [
+ Node.ELEMENT_NODE,
+ function (t, e, n) {
+ const i = r.Attributor.keys(t),
+ s = r.ClassAttributor.keys(t),
+ o = r.StyleAttributor.keys(t),
+ l = {};
+ return (
+ i
+ .concat(s)
+ .concat(o)
+ .forEach((e) => {
+ let i = n.query(e, r.Scope.ATTRIBUTE);
+ (null != i &&
+ ((l[i.attrName] = i.value(t)), l[i.attrName])) ||
+ ((i = _[e]),
+ null == i ||
+ (i.attrName !== e && i.keyName !== e) ||
+ (l[i.attrName] = i.value(t) || void 0),
+ (i = L[e]),
+ null == i ||
+ (i.attrName !== e && i.keyName !== e) ||
+ ((i = L[e]),
+ (l[i.attrName] = i.value(t) || void 0)));
+ }),
+ Object.entries(l).reduce((t, e) => {
+ let [r, i] = e;
+ return O(t, r, i, n);
+ }, e)
+ );
+ },
+ ],
+ [
+ Node.ELEMENT_NODE,
+ function (t, e, n) {
+ const r = {},
+ i = t.style || {};
+ return (
+ "italic" === i.fontStyle && (r.italic = !0),
+ "underline" === i.textDecoration && (r.underline = !0),
+ "line-through" === i.textDecoration && (r.strike = !0),
+ (i.fontWeight?.startsWith("bold") ||
+ parseInt(i.fontWeight, 10) >= 700) &&
+ (r.bold = !0),
+ (e = Object.entries(r).reduce((t, e) => {
+ let [r, i] = e;
+ return O(t, r, i, n);
+ }, e)),
+ parseFloat(i.textIndent || 0) > 0
+ ? new (s())().insert("\t").concat(e)
+ : e
+ );
+ },
+ ],
+ [
+ "li",
+ function (t, e, n) {
+ const r = n.query(t);
+ if (null == r || "list" !== r.blotName || !T(e, "\n"))
+ return e;
+ let i = -1,
+ o = t.parentNode;
+ for (; null != o; )
+ ["OL", "UL"].includes(o.tagName) && (i += 1),
+ (o = o.parentNode);
+ return i <= 0
+ ? e
+ : e.reduce(
+ (t, e) =>
+ e.insert
+ ? e.attributes &&
+ "number" == typeof e.attributes.indent
+ ? t.push(e)
+ : t.insert(e.insert, {
+ indent: i,
+ ...(e.attributes || {}),
+ })
+ : t,
+ new (s())()
+ );
+ },
+ ],
+ [
+ "ol, ul",
+ function (t, e, n) {
+ const r = t;
+ let i = "OL" === r.tagName ? "ordered" : "bullet";
+ const s = r.getAttribute("data-checked");
+ return (
+ s && (i = "true" === s ? "checked" : "unchecked"),
+ O(e, "list", i, n)
+ );
+ },
+ ],
+ [
+ "pre",
+ function (t, e, n) {
+ const r = n.query("code-block");
+ return O(
+ e,
+ "code-block",
+ !r ||
+ !("formats" in r) ||
+ "function" != typeof r.formats ||
+ r.formats(t, n),
+ n
+ );
+ },
+ ],
+ [
+ "tr",
+ function (t, e, n) {
+ const r =
+ "TABLE" === t.parentElement?.tagName
+ ? t.parentElement
+ : t.parentElement?.parentElement;
+ return null != r
+ ? O(
+ e,
+ "table",
+ Array.from(r.querySelectorAll("tr")).indexOf(t) + 1,
+ n
+ )
+ : e;
+ },
+ ],
+ ["b", B("bold")],
+ ["i", B("italic")],
+ ["strike", B("strike")],
+ [
+ "style",
+ function () {
+ return new (s())();
+ },
+ ],
+ ],
+ _ = [u.gS, p.Mc].reduce((t, e) => ((t[e.keyName] = e), t), {}),
+ L = [u.Hu, h.s, f.JM, p.VL, g.z, m.r].reduce(
+ (t, e) => ((t[e.keyName] = e), t),
+ {}
+ );
+ class S extends a.A {
+ static DEFAULTS = { matchers: [] };
+ constructor(t, e) {
+ super(t, e),
+ this.quill.root.addEventListener("copy", (t) =>
+ this.onCaptureCopy(t, !1)
+ ),
+ this.quill.root.addEventListener("cut", (t) =>
+ this.onCaptureCopy(t, !0)
+ ),
+ this.quill.root.addEventListener(
+ "paste",
+ this.onCapturePaste.bind(this)
+ ),
+ (this.matchers = []),
+ k.concat(this.options.matchers ?? []).forEach((t) => {
+ let [e, n] = t;
+ this.addMatcher(e, n);
+ });
+ }
+ addMatcher(t, e) {
+ this.matchers.push([t, e]);
+ }
+ convert(t) {
+ let { html: e, text: n } = t,
+ r =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : {};
+ if (r[d.Ay.blotName])
+ return new (s())().insert(n || "", {
+ [d.Ay.blotName]: r[d.Ay.blotName],
+ });
+ if (!e) return new (s())().insert(n || "", r);
+ const i = this.convertHTML(e);
+ return T(i, "\n") &&
+ (null == i.ops[i.ops.length - 1].attributes || r.table)
+ ? i.compose(new (s())().retain(i.length() - 1).delete(1))
+ : i;
+ }
+ normalizeHTML(t) {
+ ((t) => {
+ t.documentElement &&
+ w.forEach((e) => {
+ e(t);
+ });
+ })(t);
+ }
+ convertHTML(t) {
+ const e = new DOMParser().parseFromString(t, "text/html");
+ this.normalizeHTML(e);
+ const n = e.body,
+ r = new WeakMap(),
+ [i, s] = this.prepareMatching(n, r);
+ return I(this.quill.scroll, n, i, s, r);
+ }
+ dangerouslyPasteHTML(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : c.Ay.sources.API;
+ if ("string" == typeof t) {
+ const n = this.convert({ html: t, text: "" });
+ this.quill.setContents(n, e),
+ this.quill.setSelection(0, c.Ay.sources.SILENT);
+ } else {
+ const r = this.convert({ html: e, text: "" });
+ this.quill.updateContents(new (s())().retain(t).concat(r), n),
+ this.quill.setSelection(t + r.length(), c.Ay.sources.SILENT);
+ }
+ }
+ onCaptureCopy(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
+ if (t.defaultPrevented) return;
+ t.preventDefault();
+ const [n] = this.quill.selection.getRange();
+ if (null == n) return;
+ const { html: r, text: i } = this.onCopy(n, e);
+ t.clipboardData?.setData("text/plain", i),
+ t.clipboardData?.setData("text/html", r),
+ e && (0, b.Xo)({ range: n, quill: this.quill });
+ }
+ normalizeURIList(t) {
+ return t
+ .split(/\r?\n/)
+ .filter((t) => "#" !== t[0])
+ .join("\n");
+ }
+ onCapturePaste(t) {
+ if (t.defaultPrevented || !this.quill.isEnabled()) return;
+ t.preventDefault();
+ const e = this.quill.getSelection(!0);
+ if (null == e) return;
+ const n = t.clipboardData?.getData("text/html");
+ let r = t.clipboardData?.getData("text/plain");
+ if (!n && !r) {
+ const e = t.clipboardData?.getData("text/uri-list");
+ e && (r = this.normalizeURIList(e));
+ }
+ const i = Array.from(t.clipboardData?.files || []);
+ if (!n && i.length > 0) this.quill.uploader.upload(e, i);
+ else {
+ if (n && i.length > 0) {
+ const t = new DOMParser().parseFromString(n, "text/html");
+ if (
+ 1 === t.body.childElementCount &&
+ "IMG" === t.body.firstElementChild?.tagName
+ )
+ return void this.quill.uploader.upload(e, i);
+ }
+ this.onPaste(e, { html: n, text: r });
+ }
+ }
+ onCopy(t) {
+ const e = this.quill.getText(t);
+ return { html: this.quill.getSemanticHTML(t), text: e };
+ }
+ onPaste(t, e) {
+ let { text: n, html: r } = e;
+ const i = this.quill.getFormat(t.index),
+ o = this.convert({ text: n, html: r }, i);
+ q.log("onPaste", o, { text: n, html: r });
+ const l = new (s())().retain(t.index).delete(t.length).concat(o);
+ this.quill.updateContents(l, c.Ay.sources.USER),
+ this.quill.setSelection(
+ l.length() - t.length,
+ c.Ay.sources.SILENT
+ ),
+ this.quill.scrollSelectionIntoView();
+ }
+ prepareMatching(t, e) {
+ const n = [],
+ r = [];
+ return (
+ this.matchers.forEach((i) => {
+ const [s, o] = i;
+ switch (s) {
+ case Node.TEXT_NODE:
+ r.push(o);
+ break;
+ case Node.ELEMENT_NODE:
+ n.push(o);
+ break;
+ default:
+ Array.from(t.querySelectorAll(s)).forEach((t) => {
+ if (e.has(t)) {
+ const n = e.get(t);
+ n?.push(o);
+ } else e.set(t, [o]);
+ });
+ }
+ }),
+ [n, r]
+ );
+ }
+ }
+ function O(t, e, n, r) {
+ return r.query(e)
+ ? t.reduce((t, r) => {
+ if (!r.insert) return t;
+ if (r.attributes && r.attributes[e]) return t.push(r);
+ const i = n ? { [e]: n } : {};
+ return t.insert(r.insert, { ...i, ...r.attributes });
+ }, new (s())())
+ : t;
+ }
+ function T(t, e) {
+ let n = "";
+ for (let r = t.ops.length - 1; r >= 0 && n.length < e.length; --r) {
+ const e = t.ops[r];
+ if ("string" != typeof e.insert) break;
+ n = e.insert + n;
+ }
+ return n.slice(-1 * e.length) === e;
+ }
+ function j(t, e) {
+ if (!(t instanceof Element)) return !1;
+ const n = e.query(t);
+ return (
+ !(n && n.prototype instanceof r.EmbedBlot) &&
+ [
+ "address",
+ "article",
+ "blockquote",
+ "canvas",
+ "dd",
+ "div",
+ "dl",
+ "dt",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "footer",
+ "form",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "header",
+ "iframe",
+ "li",
+ "main",
+ "nav",
+ "ol",
+ "output",
+ "p",
+ "pre",
+ "section",
+ "table",
+ "td",
+ "tr",
+ "ul",
+ "video",
+ ].includes(t.tagName.toLowerCase())
+ );
+ }
+ const C = new WeakMap();
+ function R(t) {
+ return (
+ null != t &&
+ (C.has(t) ||
+ ("PRE" === t.tagName
+ ? C.set(t, !0)
+ : C.set(t, R(t.parentNode))),
+ C.get(t))
+ );
+ }
+ function I(t, e, n, r, i) {
+ return e.nodeType === e.TEXT_NODE
+ ? r.reduce((n, r) => r(e, n, t), new (s())())
+ : e.nodeType === e.ELEMENT_NODE
+ ? Array.from(e.childNodes || []).reduce((s, o) => {
+ let l = I(t, o, n, r, i);
+ return (
+ o.nodeType === e.ELEMENT_NODE &&
+ ((l = n.reduce((e, n) => n(o, e, t), l)),
+ (l = (i.get(o) || []).reduce((e, n) => n(o, e, t), l))),
+ s.concat(l)
+ );
+ }, new (s())())
+ : new (s())();
+ }
+ function B(t) {
+ return (e, n, r) => O(n, t, !0, r);
+ }
+ function M(t, e, n) {
+ if (!T(e, "\n")) {
+ if (
+ j(t, n) &&
+ (t.childNodes.length > 0 || t instanceof HTMLParagraphElement)
+ )
+ return e.insert("\n");
+ if (e.length() > 0 && t.nextSibling) {
+ let r = t.nextSibling;
+ for (; null != r; ) {
+ if (j(r, n)) return e.insert("\n");
+ const t = n.query(r);
+ if (t && t.prototype instanceof o.zo) return e.insert("\n");
+ r = r.firstChild;
+ }
+ }
+ }
+ return e;
+ }
+ },
+ 8123: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ Ay: function () {
+ return f;
+ },
+ Xo: function () {
+ return v;
+ },
+ });
+ var r = n(5123),
+ i = n(3707),
+ s = n(5232),
+ o = n.n(s),
+ l = n(6003),
+ a = n(6142),
+ c = n(6078),
+ u = n(4266);
+ const h = (0, c.A)("quill:keyboard"),
+ d = /Mac/i.test(navigator.platform) ? "metaKey" : "ctrlKey";
+ class f extends u.A {
+ static match(t, e) {
+ return (
+ !["altKey", "ctrlKey", "metaKey", "shiftKey"].some(
+ (n) => !!e[n] !== t[n] && null !== e[n]
+ ) &&
+ (e.key === t.key || e.key === t.which)
+ );
+ }
+ constructor(t, e) {
+ super(t, e),
+ (this.bindings = {}),
+ Object.keys(this.options.bindings).forEach((t) => {
+ this.options.bindings[t] &&
+ this.addBinding(this.options.bindings[t]);
+ }),
+ this.addBinding(
+ { key: "Enter", shiftKey: null },
+ this.handleEnter
+ ),
+ this.addBinding(
+ { key: "Enter", metaKey: null, ctrlKey: null, altKey: null },
+ () => {}
+ ),
+ /Firefox/i.test(navigator.userAgent)
+ ? (this.addBinding(
+ { key: "Backspace" },
+ { collapsed: !0 },
+ this.handleBackspace
+ ),
+ this.addBinding(
+ { key: "Delete" },
+ { collapsed: !0 },
+ this.handleDelete
+ ))
+ : (this.addBinding(
+ { key: "Backspace" },
+ { collapsed: !0, prefix: /^.?$/ },
+ this.handleBackspace
+ ),
+ this.addBinding(
+ { key: "Delete" },
+ { collapsed: !0, suffix: /^.?$/ },
+ this.handleDelete
+ )),
+ this.addBinding(
+ { key: "Backspace" },
+ { collapsed: !1 },
+ this.handleDeleteRange
+ ),
+ this.addBinding(
+ { key: "Delete" },
+ { collapsed: !1 },
+ this.handleDeleteRange
+ ),
+ this.addBinding(
+ {
+ key: "Backspace",
+ altKey: null,
+ ctrlKey: null,
+ metaKey: null,
+ shiftKey: null,
+ },
+ { collapsed: !0, offset: 0 },
+ this.handleBackspace
+ ),
+ this.listen();
+ }
+ addBinding(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : {},
+ n =
+ arguments.length > 2 && void 0 !== arguments[2]
+ ? arguments[2]
+ : {};
+ const r = (function (t) {
+ if ("string" == typeof t || "number" == typeof t)
+ t = { key: t };
+ else {
+ if ("object" != typeof t) return null;
+ t = (0, i.A)(t);
+ }
+ return (
+ t.shortKey && ((t[d] = t.shortKey), delete t.shortKey), t
+ );
+ })(t);
+ null != r
+ ? ("function" == typeof e && (e = { handler: e }),
+ "function" == typeof n && (n = { handler: n }),
+ (Array.isArray(r.key) ? r.key : [r.key]).forEach((t) => {
+ const i = { ...r, key: t, ...e, ...n };
+ (this.bindings[i.key] = this.bindings[i.key] || []),
+ this.bindings[i.key].push(i);
+ }))
+ : h.warn("Attempted to add invalid keyboard binding", r);
+ }
+ listen() {
+ this.quill.root.addEventListener("keydown", (t) => {
+ if (t.defaultPrevented || t.isComposing) return;
+ if (
+ 229 === t.keyCode &&
+ ("Enter" === t.key || "Backspace" === t.key)
+ )
+ return;
+ const e = (this.bindings[t.key] || [])
+ .concat(this.bindings[t.which] || [])
+ .filter((e) => f.match(t, e));
+ if (0 === e.length) return;
+ const n = a.Ay.find(t.target, !0);
+ if (n && n.scroll !== this.quill.scroll) return;
+ const i = this.quill.getSelection();
+ if (null == i || !this.quill.hasFocus()) return;
+ const [s, o] = this.quill.getLine(i.index),
+ [c, u] = this.quill.getLeaf(i.index),
+ [h, d] =
+ 0 === i.length
+ ? [c, u]
+ : this.quill.getLeaf(i.index + i.length),
+ p = c instanceof l.TextBlot ? c.value().slice(0, u) : "",
+ g = h instanceof l.TextBlot ? h.value().slice(d) : "",
+ m = {
+ collapsed: 0 === i.length,
+ empty: 0 === i.length && s.length() <= 1,
+ format: this.quill.getFormat(i),
+ line: s,
+ offset: o,
+ prefix: p,
+ suffix: g,
+ event: t,
+ };
+ e.some((t) => {
+ if (null != t.collapsed && t.collapsed !== m.collapsed)
+ return !1;
+ if (null != t.empty && t.empty !== m.empty) return !1;
+ if (null != t.offset && t.offset !== m.offset) return !1;
+ if (Array.isArray(t.format)) {
+ if (t.format.every((t) => null == m.format[t])) return !1;
+ } else if (
+ "object" == typeof t.format &&
+ !Object.keys(t.format).every((e) =>
+ !0 === t.format[e]
+ ? null != m.format[e]
+ : !1 === t.format[e]
+ ? null == m.format[e]
+ : (0, r.A)(t.format[e], m.format[e])
+ )
+ )
+ return !1;
+ return !(
+ (null != t.prefix && !t.prefix.test(m.prefix)) ||
+ (null != t.suffix && !t.suffix.test(m.suffix)) ||
+ !0 === t.handler.call(this, i, m, t)
+ );
+ }) && t.preventDefault();
+ });
+ }
+ handleBackspace(t, e) {
+ const n = /[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(e.prefix)
+ ? 2
+ : 1;
+ if (0 === t.index || this.quill.getLength() <= 1) return;
+ let r = {};
+ const [i] = this.quill.getLine(t.index);
+ let l = new (o())().retain(t.index - n).delete(n);
+ if (0 === e.offset) {
+ const [e] = this.quill.getLine(t.index - 1);
+ if (e && !("block" === e.statics.blotName && e.length() <= 1)) {
+ const e = i.formats(),
+ n = this.quill.getFormat(t.index - 1, 1);
+ if (
+ ((r = s.AttributeMap.diff(e, n) || {}),
+ Object.keys(r).length > 0)
+ ) {
+ const e = new (o())()
+ .retain(t.index + i.length() - 2)
+ .retain(1, r);
+ l = l.compose(e);
+ }
+ }
+ }
+ this.quill.updateContents(l, a.Ay.sources.USER),
+ this.quill.focus();
+ }
+ handleDelete(t, e) {
+ const n = /^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(e.suffix)
+ ? 2
+ : 1;
+ if (t.index >= this.quill.getLength() - n) return;
+ let r = {};
+ const [i] = this.quill.getLine(t.index);
+ let l = new (o())().retain(t.index).delete(n);
+ if (e.offset >= i.length() - 1) {
+ const [e] = this.quill.getLine(t.index + 1);
+ if (e) {
+ const n = i.formats(),
+ o = this.quill.getFormat(t.index, 1);
+ (r = s.AttributeMap.diff(n, o) || {}),
+ Object.keys(r).length > 0 &&
+ (l = l.retain(e.length() - 1).retain(1, r));
+ }
+ }
+ this.quill.updateContents(l, a.Ay.sources.USER),
+ this.quill.focus();
+ }
+ handleDeleteRange(t) {
+ v({ range: t, quill: this.quill }), this.quill.focus();
+ }
+ handleEnter(t, e) {
+ const n = Object.keys(e.format).reduce(
+ (t, n) => (
+ this.quill.scroll.query(n, l.Scope.BLOCK) &&
+ !Array.isArray(e.format[n]) &&
+ (t[n] = e.format[n]),
+ t
+ ),
+ {}
+ ),
+ r = new (o())()
+ .retain(t.index)
+ .delete(t.length)
+ .insert("\n", n);
+ this.quill.updateContents(r, a.Ay.sources.USER),
+ this.quill.setSelection(t.index + 1, a.Ay.sources.SILENT),
+ this.quill.focus();
+ }
+ }
+ const p = {
+ bindings: {
+ bold: b("bold"),
+ italic: b("italic"),
+ underline: b("underline"),
+ indent: {
+ key: "Tab",
+ format: ["blockquote", "indent", "list"],
+ handler(t, e) {
+ return (
+ !(!e.collapsed || 0 === e.offset) ||
+ (this.quill.format("indent", "+1", a.Ay.sources.USER), !1)
+ );
+ },
+ },
+ outdent: {
+ key: "Tab",
+ shiftKey: !0,
+ format: ["blockquote", "indent", "list"],
+ handler(t, e) {
+ return (
+ !(!e.collapsed || 0 === e.offset) ||
+ (this.quill.format("indent", "-1", a.Ay.sources.USER), !1)
+ );
+ },
+ },
+ "outdent backspace": {
+ key: "Backspace",
+ collapsed: !0,
+ shiftKey: null,
+ metaKey: null,
+ ctrlKey: null,
+ altKey: null,
+ format: ["indent", "list"],
+ offset: 0,
+ handler(t, e) {
+ null != e.format.indent
+ ? this.quill.format("indent", "-1", a.Ay.sources.USER)
+ : null != e.format.list &&
+ this.quill.format("list", !1, a.Ay.sources.USER);
+ },
+ },
+ "indent code-block": g(!0),
+ "outdent code-block": g(!1),
+ "remove tab": {
+ key: "Tab",
+ shiftKey: !0,
+ collapsed: !0,
+ prefix: /\t$/,
+ handler(t) {
+ this.quill.deleteText(t.index - 1, 1, a.Ay.sources.USER);
+ },
+ },
+ tab: {
+ key: "Tab",
+ handler(t, e) {
+ if (e.format.table) return !0;
+ this.quill.history.cutoff();
+ const n = new (o())()
+ .retain(t.index)
+ .delete(t.length)
+ .insert("\t");
+ return (
+ this.quill.updateContents(n, a.Ay.sources.USER),
+ this.quill.history.cutoff(),
+ this.quill.setSelection(t.index + 1, a.Ay.sources.SILENT),
+ !1
+ );
+ },
+ },
+ "blockquote empty enter": {
+ key: "Enter",
+ collapsed: !0,
+ format: ["blockquote"],
+ empty: !0,
+ handler() {
+ this.quill.format("blockquote", !1, a.Ay.sources.USER);
+ },
+ },
+ "list empty enter": {
+ key: "Enter",
+ collapsed: !0,
+ format: ["list"],
+ empty: !0,
+ handler(t, e) {
+ const n = { list: !1 };
+ e.format.indent && (n.indent = !1),
+ this.quill.formatLine(
+ t.index,
+ t.length,
+ n,
+ a.Ay.sources.USER
+ );
+ },
+ },
+ "checklist enter": {
+ key: "Enter",
+ collapsed: !0,
+ format: { list: "checked" },
+ handler(t) {
+ const [e, n] = this.quill.getLine(t.index),
+ r = { ...e.formats(), list: "checked" },
+ i = new (o())()
+ .retain(t.index)
+ .insert("\n", r)
+ .retain(e.length() - n - 1)
+ .retain(1, { list: "unchecked" });
+ this.quill.updateContents(i, a.Ay.sources.USER),
+ this.quill.setSelection(t.index + 1, a.Ay.sources.SILENT),
+ this.quill.scrollSelectionIntoView();
+ },
+ },
+ "header enter": {
+ key: "Enter",
+ collapsed: !0,
+ format: ["header"],
+ suffix: /^$/,
+ handler(t, e) {
+ const [n, r] = this.quill.getLine(t.index),
+ i = new (o())()
+ .retain(t.index)
+ .insert("\n", e.format)
+ .retain(n.length() - r - 1)
+ .retain(1, { header: null });
+ this.quill.updateContents(i, a.Ay.sources.USER),
+ this.quill.setSelection(t.index + 1, a.Ay.sources.SILENT),
+ this.quill.scrollSelectionIntoView();
+ },
+ },
+ "table backspace": {
+ key: "Backspace",
+ format: ["table"],
+ collapsed: !0,
+ offset: 0,
+ handler() {},
+ },
+ "table delete": {
+ key: "Delete",
+ format: ["table"],
+ collapsed: !0,
+ suffix: /^$/,
+ handler() {},
+ },
+ "table enter": {
+ key: "Enter",
+ shiftKey: null,
+ format: ["table"],
+ handler(t) {
+ const e = this.quill.getModule("table");
+ if (e) {
+ const [n, r, i, s] = e.getTable(t),
+ l = (function (t, e, n, r) {
+ return null == e.prev && null == e.next
+ ? null == n.prev && null == n.next
+ ? 0 === r
+ ? -1
+ : 1
+ : null == n.prev
+ ? -1
+ : 1
+ : null == e.prev
+ ? -1
+ : null == e.next
+ ? 1
+ : null;
+ })(0, r, i, s);
+ if (null == l) return;
+ let c = n.offset();
+ if (l < 0) {
+ const e = new (o())().retain(c).insert("\n");
+ this.quill.updateContents(e, a.Ay.sources.USER),
+ this.quill.setSelection(
+ t.index + 1,
+ t.length,
+ a.Ay.sources.SILENT
+ );
+ } else if (l > 0) {
+ c += n.length();
+ const t = new (o())().retain(c).insert("\n");
+ this.quill.updateContents(t, a.Ay.sources.USER),
+ this.quill.setSelection(c, a.Ay.sources.USER);
+ }
+ }
+ },
+ },
+ "table tab": {
+ key: "Tab",
+ shiftKey: null,
+ format: ["table"],
+ handler(t, e) {
+ const { event: n, line: r } = e,
+ i = r.offset(this.quill.scroll);
+ n.shiftKey
+ ? this.quill.setSelection(i - 1, a.Ay.sources.USER)
+ : this.quill.setSelection(
+ i + r.length(),
+ a.Ay.sources.USER
+ );
+ },
+ },
+ "list autofill": {
+ key: " ",
+ shiftKey: null,
+ collapsed: !0,
+ format: { "code-block": !1, blockquote: !1, table: !1 },
+ prefix: /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/,
+ handler(t, e) {
+ if (null == this.quill.scroll.query("list")) return !0;
+ const { length: n } = e.prefix,
+ [r, i] = this.quill.getLine(t.index);
+ if (i > n) return !0;
+ let s;
+ switch (e.prefix.trim()) {
+ case "[]":
+ case "[ ]":
+ s = "unchecked";
+ break;
+ case "[x]":
+ s = "checked";
+ break;
+ case "-":
+ case "*":
+ s = "bullet";
+ break;
+ default:
+ s = "ordered";
+ }
+ this.quill.insertText(t.index, " ", a.Ay.sources.USER),
+ this.quill.history.cutoff();
+ const l = new (o())()
+ .retain(t.index - i)
+ .delete(n + 1)
+ .retain(r.length() - 2 - i)
+ .retain(1, { list: s });
+ return (
+ this.quill.updateContents(l, a.Ay.sources.USER),
+ this.quill.history.cutoff(),
+ this.quill.setSelection(t.index - n, a.Ay.sources.SILENT),
+ !1
+ );
+ },
+ },
+ "code exit": {
+ key: "Enter",
+ collapsed: !0,
+ format: ["code-block"],
+ prefix: /^$/,
+ suffix: /^\s*$/,
+ handler(t) {
+ const [e, n] = this.quill.getLine(t.index);
+ let r = 2,
+ i = e;
+ for (
+ ;
+ null != i && i.length() <= 1 && i.formats()["code-block"];
+
+ )
+ if (((i = i.prev), (r -= 1), r <= 0)) {
+ const r = new (o())()
+ .retain(t.index + e.length() - n - 2)
+ .retain(1, { "code-block": null })
+ .delete(1);
+ return (
+ this.quill.updateContents(r, a.Ay.sources.USER),
+ this.quill.setSelection(
+ t.index - 1,
+ a.Ay.sources.SILENT
+ ),
+ !1
+ );
+ }
+ return !0;
+ },
+ },
+ "embed left": m("ArrowLeft", !1),
+ "embed left shift": m("ArrowLeft", !0),
+ "embed right": m("ArrowRight", !1),
+ "embed right shift": m("ArrowRight", !0),
+ "table down": y(!1),
+ "table up": y(!0),
+ },
+ };
+ function g(t) {
+ return {
+ key: "Tab",
+ shiftKey: !t,
+ format: { "code-block": !0 },
+ handler(e, n) {
+ let { event: r } = n;
+ const i = this.quill.scroll.query("code-block"),
+ { TAB: s } = i;
+ if (0 === e.length && !r.shiftKey)
+ return (
+ this.quill.insertText(e.index, s, a.Ay.sources.USER),
+ void this.quill.setSelection(
+ e.index + s.length,
+ a.Ay.sources.SILENT
+ )
+ );
+ const o =
+ 0 === e.length
+ ? this.quill.getLines(e.index, 1)
+ : this.quill.getLines(e);
+ let { index: l, length: c } = e;
+ o.forEach((e, n) => {
+ t
+ ? (e.insertAt(0, s),
+ 0 === n ? (l += s.length) : (c += s.length))
+ : e.domNode.textContent.startsWith(s) &&
+ (e.deleteAt(0, s.length),
+ 0 === n ? (l -= s.length) : (c -= s.length));
+ }),
+ this.quill.update(a.Ay.sources.USER),
+ this.quill.setSelection(l, c, a.Ay.sources.SILENT);
+ },
+ };
+ }
+ function m(t, e) {
+ return {
+ key: t,
+ shiftKey: e,
+ altKey: null,
+ ["ArrowLeft" === t ? "prefix" : "suffix"]: /^$/,
+ handler(n) {
+ let { index: r } = n;
+ "ArrowRight" === t && (r += n.length + 1);
+ const [i] = this.quill.getLeaf(r);
+ return !(
+ i instanceof l.EmbedBlot &&
+ ("ArrowLeft" === t
+ ? e
+ ? this.quill.setSelection(
+ n.index - 1,
+ n.length + 1,
+ a.Ay.sources.USER
+ )
+ : this.quill.setSelection(n.index - 1, a.Ay.sources.USER)
+ : e
+ ? this.quill.setSelection(
+ n.index,
+ n.length + 1,
+ a.Ay.sources.USER
+ )
+ : this.quill.setSelection(
+ n.index + n.length + 1,
+ a.Ay.sources.USER
+ ),
+ 1)
+ );
+ },
+ };
+ }
+ function b(t) {
+ return {
+ key: t[0],
+ shortKey: !0,
+ handler(e, n) {
+ this.quill.format(t, !n.format[t], a.Ay.sources.USER);
+ },
+ };
+ }
+ function y(t) {
+ return {
+ key: t ? "ArrowUp" : "ArrowDown",
+ collapsed: !0,
+ format: ["table"],
+ handler(e, n) {
+ const r = t ? "prev" : "next",
+ i = n.line,
+ s = i.parent[r];
+ if (null != s) {
+ if ("table-row" === s.statics.blotName) {
+ let t = s.children.head,
+ e = i;
+ for (; null != e.prev; ) (e = e.prev), (t = t.next);
+ const r =
+ t.offset(this.quill.scroll) +
+ Math.min(n.offset, t.length() - 1);
+ this.quill.setSelection(r, 0, a.Ay.sources.USER);
+ }
+ } else {
+ const e = i.table()[r];
+ null != e &&
+ (t
+ ? this.quill.setSelection(
+ e.offset(this.quill.scroll) + e.length() - 1,
+ 0,
+ a.Ay.sources.USER
+ )
+ : this.quill.setSelection(
+ e.offset(this.quill.scroll),
+ 0,
+ a.Ay.sources.USER
+ ));
+ }
+ return !1;
+ },
+ };
+ }
+ function v(t) {
+ let { quill: e, range: n } = t;
+ const r = e.getLines(n);
+ let i = {};
+ if (r.length > 1) {
+ const t = r[0].formats(),
+ e = r[r.length - 1].formats();
+ i = s.AttributeMap.diff(e, t) || {};
+ }
+ e.deleteText(n, a.Ay.sources.USER),
+ Object.keys(i).length > 0 &&
+ e.formatLine(n.index, 1, i, a.Ay.sources.USER),
+ e.setSelection(n.index, a.Ay.sources.SILENT);
+ }
+ f.DEFAULTS = p;
+ },
+ 8920: function (t) {
+ "use strict";
+ var e = Object.prototype.hasOwnProperty,
+ n = "~";
+ function r() {}
+ function i(t, e, n) {
+ (this.fn = t), (this.context = e), (this.once = n || !1);
+ }
+ function s(t, e, r, s, o) {
+ if ("function" != typeof r)
+ throw new TypeError("The listener must be a function");
+ var l = new i(r, s || t, o),
+ a = n ? n + e : e;
+ return (
+ t._events[a]
+ ? t._events[a].fn
+ ? (t._events[a] = [t._events[a], l])
+ : t._events[a].push(l)
+ : ((t._events[a] = l), t._eventsCount++),
+ t
+ );
+ }
+ function o(t, e) {
+ 0 == --t._eventsCount ? (t._events = new r()) : delete t._events[e];
+ }
+ function l() {
+ (this._events = new r()), (this._eventsCount = 0);
+ }
+ Object.create &&
+ ((r.prototype = Object.create(null)),
+ new r().__proto__ || (n = !1)),
+ (l.prototype.eventNames = function () {
+ var t,
+ r,
+ i = [];
+ if (0 === this._eventsCount) return i;
+ for (r in (t = this._events))
+ e.call(t, r) && i.push(n ? r.slice(1) : r);
+ return Object.getOwnPropertySymbols
+ ? i.concat(Object.getOwnPropertySymbols(t))
+ : i;
+ }),
+ (l.prototype.listeners = function (t) {
+ var e = n ? n + t : t,
+ r = this._events[e];
+ if (!r) return [];
+ if (r.fn) return [r.fn];
+ for (var i = 0, s = r.length, o = new Array(s); i < s; i++)
+ o[i] = r[i].fn;
+ return o;
+ }),
+ (l.prototype.listenerCount = function (t) {
+ var e = n ? n + t : t,
+ r = this._events[e];
+ return r ? (r.fn ? 1 : r.length) : 0;
+ }),
+ (l.prototype.emit = function (t, e, r, i, s, o) {
+ var l = n ? n + t : t;
+ if (!this._events[l]) return !1;
+ var a,
+ c,
+ u = this._events[l],
+ h = arguments.length;
+ if (u.fn) {
+ switch (
+ (u.once && this.removeListener(t, u.fn, void 0, !0), h)
+ ) {
+ case 1:
+ return u.fn.call(u.context), !0;
+ case 2:
+ return u.fn.call(u.context, e), !0;
+ case 3:
+ return u.fn.call(u.context, e, r), !0;
+ case 4:
+ return u.fn.call(u.context, e, r, i), !0;
+ case 5:
+ return u.fn.call(u.context, e, r, i, s), !0;
+ case 6:
+ return u.fn.call(u.context, e, r, i, s, o), !0;
+ }
+ for (c = 1, a = new Array(h - 1); c < h; c++)
+ a[c - 1] = arguments[c];
+ u.fn.apply(u.context, a);
+ } else {
+ var d,
+ f = u.length;
+ for (c = 0; c < f; c++)
+ switch (
+ (u[c].once && this.removeListener(t, u[c].fn, void 0, !0),
+ h)
+ ) {
+ case 1:
+ u[c].fn.call(u[c].context);
+ break;
+ case 2:
+ u[c].fn.call(u[c].context, e);
+ break;
+ case 3:
+ u[c].fn.call(u[c].context, e, r);
+ break;
+ case 4:
+ u[c].fn.call(u[c].context, e, r, i);
+ break;
+ default:
+ if (!a)
+ for (d = 1, a = new Array(h - 1); d < h; d++)
+ a[d - 1] = arguments[d];
+ u[c].fn.apply(u[c].context, a);
+ }
+ }
+ return !0;
+ }),
+ (l.prototype.on = function (t, e, n) {
+ return s(this, t, e, n, !1);
+ }),
+ (l.prototype.once = function (t, e, n) {
+ return s(this, t, e, n, !0);
+ }),
+ (l.prototype.removeListener = function (t, e, r, i) {
+ var s = n ? n + t : t;
+ if (!this._events[s]) return this;
+ if (!e) return o(this, s), this;
+ var l = this._events[s];
+ if (l.fn)
+ l.fn !== e ||
+ (i && !l.once) ||
+ (r && l.context !== r) ||
+ o(this, s);
+ else {
+ for (var a = 0, c = [], u = l.length; a < u; a++)
+ (l[a].fn !== e ||
+ (i && !l[a].once) ||
+ (r && l[a].context !== r)) &&
+ c.push(l[a]);
+ c.length
+ ? (this._events[s] = 1 === c.length ? c[0] : c)
+ : o(this, s);
+ }
+ return this;
+ }),
+ (l.prototype.removeAllListeners = function (t) {
+ var e;
+ return (
+ t
+ ? ((e = n ? n + t : t), this._events[e] && o(this, e))
+ : ((this._events = new r()), (this._eventsCount = 0)),
+ this
+ );
+ }),
+ (l.prototype.off = l.prototype.removeListener),
+ (l.prototype.addListener = l.prototype.on),
+ (l.prefixed = n),
+ (l.EventEmitter = l),
+ (t.exports = l);
+ },
+ 5090: function (t) {
+ var e = -1,
+ n = 1,
+ r = 0;
+ function i(t, g, m, b, y) {
+ if (t === g) return t ? [[r, t]] : [];
+ if (null != m) {
+ var A = (function (t, e, n) {
+ var r =
+ "number" == typeof n ? { index: n, length: 0 } : n.oldRange,
+ i = "number" == typeof n ? null : n.newRange,
+ s = t.length,
+ o = e.length;
+ if (0 === r.length && (null === i || 0 === i.length)) {
+ var l = r.index,
+ a = t.slice(0, l),
+ c = t.slice(l),
+ u = i ? i.index : null,
+ h = l + o - s;
+ if ((null === u || u === h) && !(h < 0 || h > o)) {
+ var d = e.slice(0, h);
+ if ((g = e.slice(h)) === c) {
+ var f = Math.min(l, h);
+ if ((b = a.slice(0, f)) === (A = d.slice(0, f)))
+ return v(b, a.slice(f), d.slice(f), c);
+ }
+ }
+ if (null === u || u === l) {
+ var p = l,
+ g = ((d = e.slice(0, p)), e.slice(p));
+ if (d === a) {
+ var m = Math.min(s - p, o - p);
+ if (
+ (y = c.slice(c.length - m)) ===
+ (x = g.slice(g.length - m))
+ )
+ return v(
+ a,
+ c.slice(0, c.length - m),
+ g.slice(0, g.length - m),
+ y
+ );
+ }
+ }
+ }
+ if (r.length > 0 && i && 0 === i.length) {
+ var b = t.slice(0, r.index),
+ y = t.slice(r.index + r.length);
+ if (!(o < (f = b.length) + (m = y.length))) {
+ var A = e.slice(0, f),
+ x = e.slice(o - m);
+ if (b === A && y === x)
+ return v(b, t.slice(f, s - m), e.slice(f, o - m), y);
+ }
+ }
+ return null;
+ })(t, g, m);
+ if (A) return A;
+ }
+ var x = o(t, g),
+ N = t.substring(0, x);
+ x = a((t = t.substring(x)), (g = g.substring(x)));
+ var E = t.substring(t.length - x),
+ w = (function (t, l) {
+ var c;
+ if (!t) return [[n, l]];
+ if (!l) return [[e, t]];
+ var u = t.length > l.length ? t : l,
+ h = t.length > l.length ? l : t,
+ d = u.indexOf(h);
+ if (-1 !== d)
+ return (
+ (c = [
+ [n, u.substring(0, d)],
+ [r, h],
+ [n, u.substring(d + h.length)],
+ ]),
+ t.length > l.length && (c[0][0] = c[2][0] = e),
+ c
+ );
+ if (1 === h.length)
+ return [
+ [e, t],
+ [n, l],
+ ];
+ var f = (function (t, e) {
+ var n = t.length > e.length ? t : e,
+ r = t.length > e.length ? e : t;
+ if (n.length < 4 || 2 * r.length < n.length) return null;
+ function i(t, e, n) {
+ for (
+ var r,
+ i,
+ s,
+ l,
+ c = t.substring(n, n + Math.floor(t.length / 4)),
+ u = -1,
+ h = "";
+ -1 !== (u = e.indexOf(c, u + 1));
+
+ ) {
+ var d = o(t.substring(n), e.substring(u)),
+ f = a(t.substring(0, n), e.substring(0, u));
+ h.length < f + d &&
+ ((h = e.substring(u - f, u) + e.substring(u, u + d)),
+ (r = t.substring(0, n - f)),
+ (i = t.substring(n + d)),
+ (s = e.substring(0, u - f)),
+ (l = e.substring(u + d)));
+ }
+ return 2 * h.length >= t.length ? [r, i, s, l, h] : null;
+ }
+ var s,
+ l,
+ c,
+ u,
+ h,
+ d = i(n, r, Math.ceil(n.length / 4)),
+ f = i(n, r, Math.ceil(n.length / 2));
+ return d || f
+ ? ((s = f ? (d && d[4].length > f[4].length ? d : f) : d),
+ t.length > e.length
+ ? ((l = s[0]), (c = s[1]), (u = s[2]), (h = s[3]))
+ : ((u = s[0]), (h = s[1]), (l = s[2]), (c = s[3])),
+ [l, c, u, h, s[4]])
+ : null;
+ })(t, l);
+ if (f) {
+ var p = f[0],
+ g = f[1],
+ m = f[2],
+ b = f[3],
+ y = f[4],
+ v = i(p, m),
+ A = i(g, b);
+ return v.concat([[r, y]], A);
+ }
+ return (function (t, r) {
+ for (
+ var i = t.length,
+ o = r.length,
+ l = Math.ceil((i + o) / 2),
+ a = l,
+ c = 2 * l,
+ u = new Array(c),
+ h = new Array(c),
+ d = 0;
+ d < c;
+ d++
+ )
+ (u[d] = -1), (h[d] = -1);
+ (u[a + 1] = 0), (h[a + 1] = 0);
+ for (
+ var f = i - o,
+ p = f % 2 != 0,
+ g = 0,
+ m = 0,
+ b = 0,
+ y = 0,
+ v = 0;
+ v < l;
+ v++
+ ) {
+ for (var A = -v + g; A <= v - m; A += 2) {
+ for (
+ var x = a + A,
+ N =
+ (_ =
+ A === -v || (A !== v && u[x - 1] < u[x + 1])
+ ? u[x + 1]
+ : u[x - 1] + 1) - A;
+ _ < i && N < o && t.charAt(_) === r.charAt(N);
+
+ )
+ _++, N++;
+ if (((u[x] = _), _ > i)) m += 2;
+ else if (N > o) g += 2;
+ else if (
+ p &&
+ (q = a + f - A) >= 0 &&
+ q < c &&
+ -1 !== h[q] &&
+ _ >= (w = i - h[q])
+ )
+ return s(t, r, _, N);
+ }
+ for (var E = -v + b; E <= v - y; E += 2) {
+ for (
+ var w,
+ q = a + E,
+ k =
+ (w =
+ E === -v || (E !== v && h[q - 1] < h[q + 1])
+ ? h[q + 1]
+ : h[q - 1] + 1) - E;
+ w < i &&
+ k < o &&
+ t.charAt(i - w - 1) === r.charAt(o - k - 1);
+
+ )
+ w++, k++;
+ if (((h[q] = w), w > i)) y += 2;
+ else if (k > o) b += 2;
+ else if (!p) {
+ var _;
+ if ((x = a + f - E) >= 0 && x < c && -1 !== u[x])
+ if (((N = a + (_ = u[x]) - x), _ >= (w = i - w)))
+ return s(t, r, _, N);
+ }
+ }
+ }
+ return [
+ [e, t],
+ [n, r],
+ ];
+ })(t, l);
+ })(
+ (t = t.substring(0, t.length - x)),
+ (g = g.substring(0, g.length - x))
+ );
+ return (
+ N && w.unshift([r, N]),
+ E && w.push([r, E]),
+ p(w, y),
+ b &&
+ (function (t) {
+ for (
+ var i = !1,
+ s = [],
+ o = 0,
+ g = null,
+ m = 0,
+ b = 0,
+ y = 0,
+ v = 0,
+ A = 0;
+ m < t.length;
+
+ )
+ t[m][0] == r
+ ? ((s[o++] = m),
+ (b = v),
+ (y = A),
+ (v = 0),
+ (A = 0),
+ (g = t[m][1]))
+ : (t[m][0] == n
+ ? (v += t[m][1].length)
+ : (A += t[m][1].length),
+ g &&
+ g.length <= Math.max(b, y) &&
+ g.length <= Math.max(v, A) &&
+ (t.splice(s[o - 1], 0, [e, g]),
+ (t[s[o - 1] + 1][0] = n),
+ o--,
+ (m = --o > 0 ? s[o - 1] : -1),
+ (b = 0),
+ (y = 0),
+ (v = 0),
+ (A = 0),
+ (g = null),
+ (i = !0))),
+ m++;
+ for (
+ i && p(t),
+ (function (t) {
+ function e(t, e) {
+ if (!t || !e) return 6;
+ var n = t.charAt(t.length - 1),
+ r = e.charAt(0),
+ i = n.match(c),
+ s = r.match(c),
+ o = i && n.match(u),
+ l = s && r.match(u),
+ a = o && n.match(h),
+ p = l && r.match(h),
+ g = a && t.match(d),
+ m = p && e.match(f);
+ return g || m
+ ? 5
+ : a || p
+ ? 4
+ : i && !o && l
+ ? 3
+ : o || l
+ ? 2
+ : i || s
+ ? 1
+ : 0;
+ }
+ for (var n = 1; n < t.length - 1; ) {
+ if (t[n - 1][0] == r && t[n + 1][0] == r) {
+ var i = t[n - 1][1],
+ s = t[n][1],
+ o = t[n + 1][1],
+ l = a(i, s);
+ if (l) {
+ var p = s.substring(s.length - l);
+ (i = i.substring(0, i.length - l)),
+ (s = p + s.substring(0, s.length - l)),
+ (o = p + o);
+ }
+ for (
+ var g = i, m = s, b = o, y = e(i, s) + e(s, o);
+ s.charAt(0) === o.charAt(0);
+
+ ) {
+ (i += s.charAt(0)),
+ (s = s.substring(1) + o.charAt(0)),
+ (o = o.substring(1));
+ var v = e(i, s) + e(s, o);
+ v >= y && ((y = v), (g = i), (m = s), (b = o));
+ }
+ t[n - 1][1] != g &&
+ (g
+ ? (t[n - 1][1] = g)
+ : (t.splice(n - 1, 1), n--),
+ (t[n][1] = m),
+ b
+ ? (t[n + 1][1] = b)
+ : (t.splice(n + 1, 1), n--));
+ }
+ n++;
+ }
+ })(t),
+ m = 1;
+ m < t.length;
+
+ ) {
+ if (t[m - 1][0] == e && t[m][0] == n) {
+ var x = t[m - 1][1],
+ N = t[m][1],
+ E = l(x, N),
+ w = l(N, x);
+ E >= w
+ ? (E >= x.length / 2 || E >= N.length / 2) &&
+ (t.splice(m, 0, [r, N.substring(0, E)]),
+ (t[m - 1][1] = x.substring(0, x.length - E)),
+ (t[m + 1][1] = N.substring(E)),
+ m++)
+ : (w >= x.length / 2 || w >= N.length / 2) &&
+ (t.splice(m, 0, [r, x.substring(0, w)]),
+ (t[m - 1][0] = n),
+ (t[m - 1][1] = N.substring(0, N.length - w)),
+ (t[m + 1][0] = e),
+ (t[m + 1][1] = x.substring(w)),
+ m++),
+ m++;
+ }
+ m++;
+ }
+ })(w),
+ w
+ );
+ }
+ function s(t, e, n, r) {
+ var s = t.substring(0, n),
+ o = e.substring(0, r),
+ l = t.substring(n),
+ a = e.substring(r),
+ c = i(s, o),
+ u = i(l, a);
+ return c.concat(u);
+ }
+ function o(t, e) {
+ if (!t || !e || t.charAt(0) !== e.charAt(0)) return 0;
+ for (
+ var n = 0, r = Math.min(t.length, e.length), i = r, s = 0;
+ n < i;
+
+ )
+ t.substring(s, i) == e.substring(s, i) ? (s = n = i) : (r = i),
+ (i = Math.floor((r - n) / 2 + n));
+ return g(t.charCodeAt(i - 1)) && i--, i;
+ }
+ function l(t, e) {
+ var n = t.length,
+ r = e.length;
+ if (0 == n || 0 == r) return 0;
+ n > r ? (t = t.substring(n - r)) : n < r && (e = e.substring(0, n));
+ var i = Math.min(n, r);
+ if (t == e) return i;
+ for (var s = 0, o = 1; ; ) {
+ var l = t.substring(i - o),
+ a = e.indexOf(l);
+ if (-1 == a) return s;
+ (o += a),
+ (0 != a && t.substring(i - o) != e.substring(0, o)) ||
+ ((s = o), o++);
+ }
+ }
+ function a(t, e) {
+ if (!t || !e || t.slice(-1) !== e.slice(-1)) return 0;
+ for (
+ var n = 0, r = Math.min(t.length, e.length), i = r, s = 0;
+ n < i;
+
+ )
+ t.substring(t.length - i, t.length - s) ==
+ e.substring(e.length - i, e.length - s)
+ ? (s = n = i)
+ : (r = i),
+ (i = Math.floor((r - n) / 2 + n));
+ return m(t.charCodeAt(t.length - i)) && i--, i;
+ }
+ var c = /[^a-zA-Z0-9]/,
+ u = /\s/,
+ h = /[\r\n]/,
+ d = /\n\r?\n$/,
+ f = /^\r?\n\r?\n/;
+ function p(t, i) {
+ t.push([r, ""]);
+ for (var s, l = 0, c = 0, u = 0, h = "", d = ""; l < t.length; )
+ if (l < t.length - 1 && !t[l][1]) t.splice(l, 1);
+ else
+ switch (t[l][0]) {
+ case n:
+ u++, (d += t[l][1]), l++;
+ break;
+ case e:
+ c++, (h += t[l][1]), l++;
+ break;
+ case r:
+ var f = l - u - c - 1;
+ if (i) {
+ if (f >= 0 && y(t[f][1])) {
+ var g = t[f][1].slice(-1);
+ if (
+ ((t[f][1] = t[f][1].slice(0, -1)),
+ (h = g + h),
+ (d = g + d),
+ !t[f][1])
+ ) {
+ t.splice(f, 1), l--;
+ var m = f - 1;
+ t[m] &&
+ t[m][0] === n &&
+ (u++, (d = t[m][1] + d), m--),
+ t[m] &&
+ t[m][0] === e &&
+ (c++, (h = t[m][1] + h), m--),
+ (f = m);
+ }
+ }
+ b(t[l][1]) &&
+ ((g = t[l][1].charAt(0)),
+ (t[l][1] = t[l][1].slice(1)),
+ (h += g),
+ (d += g));
+ }
+ if (l < t.length - 1 && !t[l][1]) {
+ t.splice(l, 1);
+ break;
+ }
+ if (h.length > 0 || d.length > 0) {
+ h.length > 0 &&
+ d.length > 0 &&
+ (0 !== (s = o(d, h)) &&
+ (f >= 0
+ ? (t[f][1] += d.substring(0, s))
+ : (t.splice(0, 0, [r, d.substring(0, s)]), l++),
+ (d = d.substring(s)),
+ (h = h.substring(s))),
+ 0 !== (s = a(d, h)) &&
+ ((t[l][1] = d.substring(d.length - s) + t[l][1]),
+ (d = d.substring(0, d.length - s)),
+ (h = h.substring(0, h.length - s))));
+ var v = u + c;
+ 0 === h.length && 0 === d.length
+ ? (t.splice(l - v, v), (l -= v))
+ : 0 === h.length
+ ? (t.splice(l - v, v, [n, d]), (l = l - v + 1))
+ : 0 === d.length
+ ? (t.splice(l - v, v, [e, h]), (l = l - v + 1))
+ : (t.splice(l - v, v, [e, h], [n, d]), (l = l - v + 2));
+ }
+ 0 !== l && t[l - 1][0] === r
+ ? ((t[l - 1][1] += t[l][1]), t.splice(l, 1))
+ : l++,
+ (u = 0),
+ (c = 0),
+ (h = ""),
+ (d = "");
+ }
+ "" === t[t.length - 1][1] && t.pop();
+ var A = !1;
+ for (l = 1; l < t.length - 1; )
+ t[l - 1][0] === r &&
+ t[l + 1][0] === r &&
+ (t[l][1].substring(t[l][1].length - t[l - 1][1].length) ===
+ t[l - 1][1]
+ ? ((t[l][1] =
+ t[l - 1][1] +
+ t[l][1].substring(
+ 0,
+ t[l][1].length - t[l - 1][1].length
+ )),
+ (t[l + 1][1] = t[l - 1][1] + t[l + 1][1]),
+ t.splice(l - 1, 1),
+ (A = !0))
+ : t[l][1].substring(0, t[l + 1][1].length) == t[l + 1][1] &&
+ ((t[l - 1][1] += t[l + 1][1]),
+ (t[l][1] =
+ t[l][1].substring(t[l + 1][1].length) + t[l + 1][1]),
+ t.splice(l + 1, 1),
+ (A = !0))),
+ l++;
+ A && p(t, i);
+ }
+ function g(t) {
+ return t >= 55296 && t <= 56319;
+ }
+ function m(t) {
+ return t >= 56320 && t <= 57343;
+ }
+ function b(t) {
+ return m(t.charCodeAt(0));
+ }
+ function y(t) {
+ return g(t.charCodeAt(t.length - 1));
+ }
+ function v(t, i, s, o) {
+ return y(t) || b(o)
+ ? null
+ : (function (t) {
+ for (var e = [], n = 0; n < t.length; n++)
+ t[n][1].length > 0 && e.push(t[n]);
+ return e;
+ })([
+ [r, t],
+ [e, i],
+ [n, s],
+ [r, o],
+ ]);
+ }
+ function A(t, e, n, r) {
+ return i(t, e, n, r, !0);
+ }
+ (A.INSERT = n), (A.DELETE = e), (A.EQUAL = r), (t.exports = A);
+ },
+ 9629: function (t, e, n) {
+ t = n.nmd(t);
+ var r = "__lodash_hash_undefined__",
+ i = 9007199254740991,
+ s = "[object Arguments]",
+ o = "[object Boolean]",
+ l = "[object Date]",
+ a = "[object Function]",
+ c = "[object GeneratorFunction]",
+ u = "[object Map]",
+ h = "[object Number]",
+ d = "[object Object]",
+ f = "[object Promise]",
+ p = "[object RegExp]",
+ g = "[object Set]",
+ m = "[object String]",
+ b = "[object Symbol]",
+ y = "[object WeakMap]",
+ v = "[object ArrayBuffer]",
+ A = "[object DataView]",
+ x = "[object Float32Array]",
+ N = "[object Float64Array]",
+ E = "[object Int8Array]",
+ w = "[object Int16Array]",
+ q = "[object Int32Array]",
+ k = "[object Uint8Array]",
+ _ = "[object Uint8ClampedArray]",
+ L = "[object Uint16Array]",
+ S = "[object Uint32Array]",
+ O = /\w*$/,
+ T = /^\[object .+?Constructor\]$/,
+ j = /^(?:0|[1-9]\d*)$/,
+ C = {};
+ (C[s] =
+ C["[object Array]"] =
+ C[v] =
+ C[A] =
+ C[o] =
+ C[l] =
+ C[x] =
+ C[N] =
+ C[E] =
+ C[w] =
+ C[q] =
+ C[u] =
+ C[h] =
+ C[d] =
+ C[p] =
+ C[g] =
+ C[m] =
+ C[b] =
+ C[k] =
+ C[_] =
+ C[L] =
+ C[S] =
+ !0),
+ (C["[object Error]"] = C[a] = C[y] = !1);
+ var R = "object" == typeof n.g && n.g && n.g.Object === Object && n.g,
+ I =
+ "object" == typeof self && self && self.Object === Object && self,
+ B = R || I || Function("return this")(),
+ M = e && !e.nodeType && e,
+ U = M && t && !t.nodeType && t,
+ D = U && U.exports === M;
+ function P(t, e) {
+ return t.set(e[0], e[1]), t;
+ }
+ function z(t, e) {
+ return t.add(e), t;
+ }
+ function F(t, e, n, r) {
+ var i = -1,
+ s = t ? t.length : 0;
+ for (r && s && (n = t[++i]); ++i < s; ) n = e(n, t[i], i, t);
+ return n;
+ }
+ function H(t) {
+ var e = !1;
+ if (null != t && "function" != typeof t.toString)
+ try {
+ e = !!(t + "");
+ } catch (t) {}
+ return e;
+ }
+ function $(t) {
+ var e = -1,
+ n = Array(t.size);
+ return (
+ t.forEach(function (t, r) {
+ n[++e] = [r, t];
+ }),
+ n
+ );
+ }
+ function V(t, e) {
+ return function (n) {
+ return t(e(n));
+ };
+ }
+ function K(t) {
+ var e = -1,
+ n = Array(t.size);
+ return (
+ t.forEach(function (t) {
+ n[++e] = t;
+ }),
+ n
+ );
+ }
+ var W,
+ Z = Array.prototype,
+ G = Function.prototype,
+ X = Object.prototype,
+ Q = B["__core-js_shared__"],
+ J = (W = /[^.]+$/.exec((Q && Q.keys && Q.keys.IE_PROTO) || ""))
+ ? "Symbol(src)_1." + W
+ : "",
+ Y = G.toString,
+ tt = X.hasOwnProperty,
+ et = X.toString,
+ nt = RegExp(
+ "^" +
+ Y.call(tt)
+ .replace(/[\\^$.*+?()[\]{}|]/g, "\\$&")
+ .replace(
+ /hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,
+ "$1.*?"
+ ) +
+ "$"
+ ),
+ rt = D ? B.Buffer : void 0,
+ it = B.Symbol,
+ st = B.Uint8Array,
+ ot = V(Object.getPrototypeOf, Object),
+ lt = Object.create,
+ at = X.propertyIsEnumerable,
+ ct = Z.splice,
+ ut = Object.getOwnPropertySymbols,
+ ht = rt ? rt.isBuffer : void 0,
+ dt = V(Object.keys, Object),
+ ft = Bt(B, "DataView"),
+ pt = Bt(B, "Map"),
+ gt = Bt(B, "Promise"),
+ mt = Bt(B, "Set"),
+ bt = Bt(B, "WeakMap"),
+ yt = Bt(Object, "create"),
+ vt = zt(ft),
+ At = zt(pt),
+ xt = zt(gt),
+ Nt = zt(mt),
+ Et = zt(bt),
+ wt = it ? it.prototype : void 0,
+ qt = wt ? wt.valueOf : void 0;
+ function kt(t) {
+ var e = -1,
+ n = t ? t.length : 0;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ function _t(t) {
+ var e = -1,
+ n = t ? t.length : 0;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ function Lt(t) {
+ var e = -1,
+ n = t ? t.length : 0;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ function St(t) {
+ this.__data__ = new _t(t);
+ }
+ function Ot(t, e, n) {
+ var r = t[e];
+ (tt.call(t, e) && Ft(r, n) && (void 0 !== n || e in t)) ||
+ (t[e] = n);
+ }
+ function Tt(t, e) {
+ for (var n = t.length; n--; ) if (Ft(t[n][0], e)) return n;
+ return -1;
+ }
+ function jt(t, e, n, r, i, f, y) {
+ var T;
+ if ((r && (T = f ? r(t, i, f, y) : r(t)), void 0 !== T)) return T;
+ if (!Wt(t)) return t;
+ var j = Ht(t);
+ if (j) {
+ if (
+ ((T = (function (t) {
+ var e = t.length,
+ n = t.constructor(e);
+ return (
+ e &&
+ "string" == typeof t[0] &&
+ tt.call(t, "index") &&
+ ((n.index = t.index), (n.input = t.input)),
+ n
+ );
+ })(t)),
+ !e)
+ )
+ return (function (t, e) {
+ var n = -1,
+ r = t.length;
+ for (e || (e = Array(r)); ++n < r; ) e[n] = t[n];
+ return e;
+ })(t, T);
+ } else {
+ var R = Ut(t),
+ I = R == a || R == c;
+ if (Vt(t))
+ return (function (t, e) {
+ if (e) return t.slice();
+ var n = new t.constructor(t.length);
+ return t.copy(n), n;
+ })(t, e);
+ if (R == d || R == s || (I && !f)) {
+ if (H(t)) return f ? t : {};
+ if (
+ ((T = (function (t) {
+ return "function" != typeof t.constructor || Pt(t)
+ ? {}
+ : Wt((e = ot(t)))
+ ? lt(e)
+ : {};
+ var e;
+ })(I ? {} : t)),
+ !e)
+ )
+ return (function (t, e) {
+ return Rt(t, Mt(t), e);
+ })(
+ t,
+ (function (t, e) {
+ return t && Rt(e, Zt(e), t);
+ })(T, t)
+ );
+ } else {
+ if (!C[R]) return f ? t : {};
+ T = (function (t, e, n, r) {
+ var i,
+ s = t.constructor;
+ switch (e) {
+ case v:
+ return Ct(t);
+ case o:
+ case l:
+ return new s(+t);
+ case A:
+ return (function (t, e) {
+ var n = e ? Ct(t.buffer) : t.buffer;
+ return new t.constructor(n, t.byteOffset, t.byteLength);
+ })(t, r);
+ case x:
+ case N:
+ case E:
+ case w:
+ case q:
+ case k:
+ case _:
+ case L:
+ case S:
+ return (function (t, e) {
+ var n = e ? Ct(t.buffer) : t.buffer;
+ return new t.constructor(n, t.byteOffset, t.length);
+ })(t, r);
+ case u:
+ return (function (t, e, n) {
+ return F(
+ e ? n($(t), !0) : $(t),
+ P,
+ new t.constructor()
+ );
+ })(t, r, n);
+ case h:
+ case m:
+ return new s(t);
+ case p:
+ return (function (t) {
+ var e = new t.constructor(t.source, O.exec(t));
+ return (e.lastIndex = t.lastIndex), e;
+ })(t);
+ case g:
+ return (function (t, e, n) {
+ return F(
+ e ? n(K(t), !0) : K(t),
+ z,
+ new t.constructor()
+ );
+ })(t, r, n);
+ case b:
+ return (i = t), qt ? Object(qt.call(i)) : {};
+ }
+ })(t, R, jt, e);
+ }
+ }
+ y || (y = new St());
+ var B = y.get(t);
+ if (B) return B;
+ if ((y.set(t, T), !j))
+ var M = n
+ ? (function (t) {
+ return (function (t, e, n) {
+ var r = e(t);
+ return Ht(t)
+ ? r
+ : (function (t, e) {
+ for (
+ var n = -1, r = e.length, i = t.length;
+ ++n < r;
+
+ )
+ t[i + n] = e[n];
+ return t;
+ })(r, n(t));
+ })(t, Zt, Mt);
+ })(t)
+ : Zt(t);
+ return (
+ (function (t, e) {
+ for (
+ var n = -1, r = t ? t.length : 0;
+ ++n < r && !1 !== e(t[n], n);
+
+ );
+ })(M || t, function (i, s) {
+ M && (i = t[(s = i)]), Ot(T, s, jt(i, e, n, r, s, t, y));
+ }),
+ T
+ );
+ }
+ function Ct(t) {
+ var e = new t.constructor(t.byteLength);
+ return new st(e).set(new st(t)), e;
+ }
+ function Rt(t, e, n, r) {
+ n || (n = {});
+ for (var i = -1, s = e.length; ++i < s; ) {
+ var o = e[i],
+ l = r ? r(n[o], t[o], o, n, t) : void 0;
+ Ot(n, o, void 0 === l ? t[o] : l);
+ }
+ return n;
+ }
+ function It(t, e) {
+ var n,
+ r,
+ i = t.__data__;
+ return (
+ "string" == (r = typeof (n = e)) ||
+ "number" == r ||
+ "symbol" == r ||
+ "boolean" == r
+ ? "__proto__" !== n
+ : null === n
+ )
+ ? i["string" == typeof e ? "string" : "hash"]
+ : i.map;
+ }
+ function Bt(t, e) {
+ var n = (function (t, e) {
+ return null == t ? void 0 : t[e];
+ })(t, e);
+ return (function (t) {
+ return (
+ !(!Wt(t) || ((e = t), J && J in e)) &&
+ (Kt(t) || H(t) ? nt : T).test(zt(t))
+ );
+ var e;
+ })(n)
+ ? n
+ : void 0;
+ }
+ (kt.prototype.clear = function () {
+ this.__data__ = yt ? yt(null) : {};
+ }),
+ (kt.prototype.delete = function (t) {
+ return this.has(t) && delete this.__data__[t];
+ }),
+ (kt.prototype.get = function (t) {
+ var e = this.__data__;
+ if (yt) {
+ var n = e[t];
+ return n === r ? void 0 : n;
+ }
+ return tt.call(e, t) ? e[t] : void 0;
+ }),
+ (kt.prototype.has = function (t) {
+ var e = this.__data__;
+ return yt ? void 0 !== e[t] : tt.call(e, t);
+ }),
+ (kt.prototype.set = function (t, e) {
+ return (this.__data__[t] = yt && void 0 === e ? r : e), this;
+ }),
+ (_t.prototype.clear = function () {
+ this.__data__ = [];
+ }),
+ (_t.prototype.delete = function (t) {
+ var e = this.__data__,
+ n = Tt(e, t);
+ return !(
+ n < 0 || (n == e.length - 1 ? e.pop() : ct.call(e, n, 1), 0)
+ );
+ }),
+ (_t.prototype.get = function (t) {
+ var e = this.__data__,
+ n = Tt(e, t);
+ return n < 0 ? void 0 : e[n][1];
+ }),
+ (_t.prototype.has = function (t) {
+ return Tt(this.__data__, t) > -1;
+ }),
+ (_t.prototype.set = function (t, e) {
+ var n = this.__data__,
+ r = Tt(n, t);
+ return r < 0 ? n.push([t, e]) : (n[r][1] = e), this;
+ }),
+ (Lt.prototype.clear = function () {
+ this.__data__ = {
+ hash: new kt(),
+ map: new (pt || _t)(),
+ string: new kt(),
+ };
+ }),
+ (Lt.prototype.delete = function (t) {
+ return It(this, t).delete(t);
+ }),
+ (Lt.prototype.get = function (t) {
+ return It(this, t).get(t);
+ }),
+ (Lt.prototype.has = function (t) {
+ return It(this, t).has(t);
+ }),
+ (Lt.prototype.set = function (t, e) {
+ return It(this, t).set(t, e), this;
+ }),
+ (St.prototype.clear = function () {
+ this.__data__ = new _t();
+ }),
+ (St.prototype.delete = function (t) {
+ return this.__data__.delete(t);
+ }),
+ (St.prototype.get = function (t) {
+ return this.__data__.get(t);
+ }),
+ (St.prototype.has = function (t) {
+ return this.__data__.has(t);
+ }),
+ (St.prototype.set = function (t, e) {
+ var n = this.__data__;
+ if (n instanceof _t) {
+ var r = n.__data__;
+ if (!pt || r.length < 199) return r.push([t, e]), this;
+ n = this.__data__ = new Lt(r);
+ }
+ return n.set(t, e), this;
+ });
+ var Mt = ut
+ ? V(ut, Object)
+ : function () {
+ return [];
+ },
+ Ut = function (t) {
+ return et.call(t);
+ };
+ function Dt(t, e) {
+ return (
+ !!(e = null == e ? i : e) &&
+ ("number" == typeof t || j.test(t)) &&
+ t > -1 &&
+ t % 1 == 0 &&
+ t < e
+ );
+ }
+ function Pt(t) {
+ var e = t && t.constructor;
+ return t === (("function" == typeof e && e.prototype) || X);
+ }
+ function zt(t) {
+ if (null != t) {
+ try {
+ return Y.call(t);
+ } catch (t) {}
+ try {
+ return t + "";
+ } catch (t) {}
+ }
+ return "";
+ }
+ function Ft(t, e) {
+ return t === e || (t != t && e != e);
+ }
+ ((ft && Ut(new ft(new ArrayBuffer(1))) != A) ||
+ (pt && Ut(new pt()) != u) ||
+ (gt && Ut(gt.resolve()) != f) ||
+ (mt && Ut(new mt()) != g) ||
+ (bt && Ut(new bt()) != y)) &&
+ (Ut = function (t) {
+ var e = et.call(t),
+ n = e == d ? t.constructor : void 0,
+ r = n ? zt(n) : void 0;
+ if (r)
+ switch (r) {
+ case vt:
+ return A;
+ case At:
+ return u;
+ case xt:
+ return f;
+ case Nt:
+ return g;
+ case Et:
+ return y;
+ }
+ return e;
+ });
+ var Ht = Array.isArray;
+ function $t(t) {
+ return (
+ null != t &&
+ (function (t) {
+ return "number" == typeof t && t > -1 && t % 1 == 0 && t <= i;
+ })(t.length) &&
+ !Kt(t)
+ );
+ }
+ var Vt =
+ ht ||
+ function () {
+ return !1;
+ };
+ function Kt(t) {
+ var e = Wt(t) ? et.call(t) : "";
+ return e == a || e == c;
+ }
+ function Wt(t) {
+ var e = typeof t;
+ return !!t && ("object" == e || "function" == e);
+ }
+ function Zt(t) {
+ return $t(t)
+ ? (function (t, e) {
+ var n =
+ Ht(t) ||
+ (function (t) {
+ return (
+ (function (t) {
+ return (
+ (function (t) {
+ return !!t && "object" == typeof t;
+ })(t) && $t(t)
+ );
+ })(t) &&
+ tt.call(t, "callee") &&
+ (!at.call(t, "callee") || et.call(t) == s)
+ );
+ })(t)
+ ? (function (t, e) {
+ for (var n = -1, r = Array(t); ++n < t; )
+ r[n] = e(n);
+ return r;
+ })(t.length, String)
+ : [],
+ r = n.length,
+ i = !!r;
+ for (var o in t)
+ (!e && !tt.call(t, o)) ||
+ (i && ("length" == o || Dt(o, r))) ||
+ n.push(o);
+ return n;
+ })(t)
+ : (function (t) {
+ if (!Pt(t)) return dt(t);
+ var e = [];
+ for (var n in Object(t))
+ tt.call(t, n) && "constructor" != n && e.push(n);
+ return e;
+ })(t);
+ }
+ t.exports = function (t) {
+ return jt(t, !0, !0);
+ };
+ },
+ 4162: function (t, e, n) {
+ t = n.nmd(t);
+ var r = "__lodash_hash_undefined__",
+ i = 1,
+ s = 2,
+ o = 9007199254740991,
+ l = "[object Arguments]",
+ a = "[object Array]",
+ c = "[object AsyncFunction]",
+ u = "[object Boolean]",
+ h = "[object Date]",
+ d = "[object Error]",
+ f = "[object Function]",
+ p = "[object GeneratorFunction]",
+ g = "[object Map]",
+ m = "[object Number]",
+ b = "[object Null]",
+ y = "[object Object]",
+ v = "[object Promise]",
+ A = "[object Proxy]",
+ x = "[object RegExp]",
+ N = "[object Set]",
+ E = "[object String]",
+ w = "[object Undefined]",
+ q = "[object WeakMap]",
+ k = "[object ArrayBuffer]",
+ _ = "[object DataView]",
+ L = /^\[object .+?Constructor\]$/,
+ S = /^(?:0|[1-9]\d*)$/,
+ O = {};
+ (O["[object Float32Array]"] =
+ O["[object Float64Array]"] =
+ O["[object Int8Array]"] =
+ O["[object Int16Array]"] =
+ O["[object Int32Array]"] =
+ O["[object Uint8Array]"] =
+ O["[object Uint8ClampedArray]"] =
+ O["[object Uint16Array]"] =
+ O["[object Uint32Array]"] =
+ !0),
+ (O[l] =
+ O[a] =
+ O[k] =
+ O[u] =
+ O[_] =
+ O[h] =
+ O[d] =
+ O[f] =
+ O[g] =
+ O[m] =
+ O[y] =
+ O[x] =
+ O[N] =
+ O[E] =
+ O[q] =
+ !1);
+ var T = "object" == typeof n.g && n.g && n.g.Object === Object && n.g,
+ j =
+ "object" == typeof self && self && self.Object === Object && self,
+ C = T || j || Function("return this")(),
+ R = e && !e.nodeType && e,
+ I = R && t && !t.nodeType && t,
+ B = I && I.exports === R,
+ M = B && T.process,
+ U = (function () {
+ try {
+ return M && M.binding && M.binding("util");
+ } catch (t) {}
+ })(),
+ D = U && U.isTypedArray;
+ function P(t, e) {
+ for (var n = -1, r = null == t ? 0 : t.length; ++n < r; )
+ if (e(t[n], n, t)) return !0;
+ return !1;
+ }
+ function z(t) {
+ var e = -1,
+ n = Array(t.size);
+ return (
+ t.forEach(function (t, r) {
+ n[++e] = [r, t];
+ }),
+ n
+ );
+ }
+ function F(t) {
+ var e = -1,
+ n = Array(t.size);
+ return (
+ t.forEach(function (t) {
+ n[++e] = t;
+ }),
+ n
+ );
+ }
+ var H,
+ $,
+ V,
+ K = Array.prototype,
+ W = Function.prototype,
+ Z = Object.prototype,
+ G = C["__core-js_shared__"],
+ X = W.toString,
+ Q = Z.hasOwnProperty,
+ J = (H = /[^.]+$/.exec((G && G.keys && G.keys.IE_PROTO) || ""))
+ ? "Symbol(src)_1." + H
+ : "",
+ Y = Z.toString,
+ tt = RegExp(
+ "^" +
+ X.call(Q)
+ .replace(/[\\^$.*+?()[\]{}|]/g, "\\$&")
+ .replace(
+ /hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,
+ "$1.*?"
+ ) +
+ "$"
+ ),
+ et = B ? C.Buffer : void 0,
+ nt = C.Symbol,
+ rt = C.Uint8Array,
+ it = Z.propertyIsEnumerable,
+ st = K.splice,
+ ot = nt ? nt.toStringTag : void 0,
+ lt = Object.getOwnPropertySymbols,
+ at = et ? et.isBuffer : void 0,
+ ct =
+ (($ = Object.keys),
+ (V = Object),
+ function (t) {
+ return $(V(t));
+ }),
+ ut = It(C, "DataView"),
+ ht = It(C, "Map"),
+ dt = It(C, "Promise"),
+ ft = It(C, "Set"),
+ pt = It(C, "WeakMap"),
+ gt = It(Object, "create"),
+ mt = Dt(ut),
+ bt = Dt(ht),
+ yt = Dt(dt),
+ vt = Dt(ft),
+ At = Dt(pt),
+ xt = nt ? nt.prototype : void 0,
+ Nt = xt ? xt.valueOf : void 0;
+ function Et(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ function wt(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ function qt(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ function kt(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.__data__ = new qt(); ++e < n; ) this.add(t[e]);
+ }
+ function _t(t) {
+ var e = (this.__data__ = new wt(t));
+ this.size = e.size;
+ }
+ function Lt(t, e) {
+ for (var n = t.length; n--; ) if (Pt(t[n][0], e)) return n;
+ return -1;
+ }
+ function St(t) {
+ return null == t
+ ? void 0 === t
+ ? w
+ : b
+ : ot && ot in Object(t)
+ ? (function (t) {
+ var e = Q.call(t, ot),
+ n = t[ot];
+ try {
+ t[ot] = void 0;
+ var r = !0;
+ } catch (t) {}
+ var i = Y.call(t);
+ return r && (e ? (t[ot] = n) : delete t[ot]), i;
+ })(t)
+ : (function (t) {
+ return Y.call(t);
+ })(t);
+ }
+ function Ot(t) {
+ return Wt(t) && St(t) == l;
+ }
+ function Tt(t, e, n, r, o) {
+ return (
+ t === e ||
+ (null == t || null == e || (!Wt(t) && !Wt(e))
+ ? t != t && e != e
+ : (function (t, e, n, r, o, c) {
+ var f = Ft(t),
+ p = Ft(e),
+ b = f ? a : Mt(t),
+ v = p ? a : Mt(e),
+ A = (b = b == l ? y : b) == y,
+ w = (v = v == l ? y : v) == y,
+ q = b == v;
+ if (q && Ht(t)) {
+ if (!Ht(e)) return !1;
+ (f = !0), (A = !1);
+ }
+ if (q && !A)
+ return (
+ c || (c = new _t()),
+ f || Zt(t)
+ ? jt(t, e, n, r, o, c)
+ : (function (t, e, n, r, o, l, a) {
+ switch (n) {
+ case _:
+ if (
+ t.byteLength != e.byteLength ||
+ t.byteOffset != e.byteOffset
+ )
+ return !1;
+ (t = t.buffer), (e = e.buffer);
+ case k:
+ return !(
+ t.byteLength != e.byteLength ||
+ !l(new rt(t), new rt(e))
+ );
+ case u:
+ case h:
+ case m:
+ return Pt(+t, +e);
+ case d:
+ return (
+ t.name == e.name && t.message == e.message
+ );
+ case x:
+ case E:
+ return t == e + "";
+ case g:
+ var c = z;
+ case N:
+ var f = r & i;
+ if ((c || (c = F), t.size != e.size && !f))
+ return !1;
+ var p = a.get(t);
+ if (p) return p == e;
+ (r |= s), a.set(t, e);
+ var b = jt(c(t), c(e), r, o, l, a);
+ return a.delete(t), b;
+ case "[object Symbol]":
+ if (Nt) return Nt.call(t) == Nt.call(e);
+ }
+ return !1;
+ })(t, e, b, n, r, o, c)
+ );
+ if (!(n & i)) {
+ var L = A && Q.call(t, "__wrapped__"),
+ S = w && Q.call(e, "__wrapped__");
+ if (L || S) {
+ var O = L ? t.value() : t,
+ T = S ? e.value() : e;
+ return c || (c = new _t()), o(O, T, n, r, c);
+ }
+ }
+ return (
+ !!q &&
+ (c || (c = new _t()),
+ (function (t, e, n, r, s, o) {
+ var l = n & i,
+ a = Ct(t),
+ c = a.length;
+ if (c != Ct(e).length && !l) return !1;
+ for (var u = c; u--; ) {
+ var h = a[u];
+ if (!(l ? h in e : Q.call(e, h))) return !1;
+ }
+ var d = o.get(t);
+ if (d && o.get(e)) return d == e;
+ var f = !0;
+ o.set(t, e), o.set(e, t);
+ for (var p = l; ++u < c; ) {
+ var g = t[(h = a[u])],
+ m = e[h];
+ if (r)
+ var b = l
+ ? r(m, g, h, e, t, o)
+ : r(g, m, h, t, e, o);
+ if (
+ !(void 0 === b ? g === m || s(g, m, n, r, o) : b)
+ ) {
+ f = !1;
+ break;
+ }
+ p || (p = "constructor" == h);
+ }
+ if (f && !p) {
+ var y = t.constructor,
+ v = e.constructor;
+ y == v ||
+ !("constructor" in t) ||
+ !("constructor" in e) ||
+ ("function" == typeof y &&
+ y instanceof y &&
+ "function" == typeof v &&
+ v instanceof v) ||
+ (f = !1);
+ }
+ return o.delete(t), o.delete(e), f;
+ })(t, e, n, r, o, c))
+ );
+ })(t, e, n, r, Tt, o))
+ );
+ }
+ function jt(t, e, n, r, o, l) {
+ var a = n & i,
+ c = t.length,
+ u = e.length;
+ if (c != u && !(a && u > c)) return !1;
+ var h = l.get(t);
+ if (h && l.get(e)) return h == e;
+ var d = -1,
+ f = !0,
+ p = n & s ? new kt() : void 0;
+ for (l.set(t, e), l.set(e, t); ++d < c; ) {
+ var g = t[d],
+ m = e[d];
+ if (r) var b = a ? r(m, g, d, e, t, l) : r(g, m, d, t, e, l);
+ if (void 0 !== b) {
+ if (b) continue;
+ f = !1;
+ break;
+ }
+ if (p) {
+ if (
+ !P(e, function (t, e) {
+ if (((i = e), !p.has(i) && (g === t || o(g, t, n, r, l))))
+ return p.push(e);
+ var i;
+ })
+ ) {
+ f = !1;
+ break;
+ }
+ } else if (g !== m && !o(g, m, n, r, l)) {
+ f = !1;
+ break;
+ }
+ }
+ return l.delete(t), l.delete(e), f;
+ }
+ function Ct(t) {
+ return (function (t, e, n) {
+ var r = e(t);
+ return Ft(t)
+ ? r
+ : (function (t, e) {
+ for (var n = -1, r = e.length, i = t.length; ++n < r; )
+ t[i + n] = e[n];
+ return t;
+ })(r, n(t));
+ })(t, Gt, Bt);
+ }
+ function Rt(t, e) {
+ var n,
+ r,
+ i = t.__data__;
+ return (
+ "string" == (r = typeof (n = e)) ||
+ "number" == r ||
+ "symbol" == r ||
+ "boolean" == r
+ ? "__proto__" !== n
+ : null === n
+ )
+ ? i["string" == typeof e ? "string" : "hash"]
+ : i.map;
+ }
+ function It(t, e) {
+ var n = (function (t, e) {
+ return null == t ? void 0 : t[e];
+ })(t, e);
+ return (function (t) {
+ return (
+ !(
+ !Kt(t) ||
+ (function (t) {
+ return !!J && J in t;
+ })(t)
+ ) && ($t(t) ? tt : L).test(Dt(t))
+ );
+ })(n)
+ ? n
+ : void 0;
+ }
+ (Et.prototype.clear = function () {
+ (this.__data__ = gt ? gt(null) : {}), (this.size = 0);
+ }),
+ (Et.prototype.delete = function (t) {
+ var e = this.has(t) && delete this.__data__[t];
+ return (this.size -= e ? 1 : 0), e;
+ }),
+ (Et.prototype.get = function (t) {
+ var e = this.__data__;
+ if (gt) {
+ var n = e[t];
+ return n === r ? void 0 : n;
+ }
+ return Q.call(e, t) ? e[t] : void 0;
+ }),
+ (Et.prototype.has = function (t) {
+ var e = this.__data__;
+ return gt ? void 0 !== e[t] : Q.call(e, t);
+ }),
+ (Et.prototype.set = function (t, e) {
+ var n = this.__data__;
+ return (
+ (this.size += this.has(t) ? 0 : 1),
+ (n[t] = gt && void 0 === e ? r : e),
+ this
+ );
+ }),
+ (wt.prototype.clear = function () {
+ (this.__data__ = []), (this.size = 0);
+ }),
+ (wt.prototype.delete = function (t) {
+ var e = this.__data__,
+ n = Lt(e, t);
+ return !(
+ n < 0 ||
+ (n == e.length - 1 ? e.pop() : st.call(e, n, 1), --this.size, 0)
+ );
+ }),
+ (wt.prototype.get = function (t) {
+ var e = this.__data__,
+ n = Lt(e, t);
+ return n < 0 ? void 0 : e[n][1];
+ }),
+ (wt.prototype.has = function (t) {
+ return Lt(this.__data__, t) > -1;
+ }),
+ (wt.prototype.set = function (t, e) {
+ var n = this.__data__,
+ r = Lt(n, t);
+ return (
+ r < 0 ? (++this.size, n.push([t, e])) : (n[r][1] = e), this
+ );
+ }),
+ (qt.prototype.clear = function () {
+ (this.size = 0),
+ (this.__data__ = {
+ hash: new Et(),
+ map: new (ht || wt)(),
+ string: new Et(),
+ });
+ }),
+ (qt.prototype.delete = function (t) {
+ var e = Rt(this, t).delete(t);
+ return (this.size -= e ? 1 : 0), e;
+ }),
+ (qt.prototype.get = function (t) {
+ return Rt(this, t).get(t);
+ }),
+ (qt.prototype.has = function (t) {
+ return Rt(this, t).has(t);
+ }),
+ (qt.prototype.set = function (t, e) {
+ var n = Rt(this, t),
+ r = n.size;
+ return n.set(t, e), (this.size += n.size == r ? 0 : 1), this;
+ }),
+ (kt.prototype.add = kt.prototype.push =
+ function (t) {
+ return this.__data__.set(t, r), this;
+ }),
+ (kt.prototype.has = function (t) {
+ return this.__data__.has(t);
+ }),
+ (_t.prototype.clear = function () {
+ (this.__data__ = new wt()), (this.size = 0);
+ }),
+ (_t.prototype.delete = function (t) {
+ var e = this.__data__,
+ n = e.delete(t);
+ return (this.size = e.size), n;
+ }),
+ (_t.prototype.get = function (t) {
+ return this.__data__.get(t);
+ }),
+ (_t.prototype.has = function (t) {
+ return this.__data__.has(t);
+ }),
+ (_t.prototype.set = function (t, e) {
+ var n = this.__data__;
+ if (n instanceof wt) {
+ var r = n.__data__;
+ if (!ht || r.length < 199)
+ return r.push([t, e]), (this.size = ++n.size), this;
+ n = this.__data__ = new qt(r);
+ }
+ return n.set(t, e), (this.size = n.size), this;
+ });
+ var Bt = lt
+ ? function (t) {
+ return null == t
+ ? []
+ : ((t = Object(t)),
+ (function (e, n) {
+ for (
+ var r = -1,
+ i = null == e ? 0 : e.length,
+ s = 0,
+ o = [];
+ ++r < i;
+
+ ) {
+ var l = e[r];
+ (a = l), it.call(t, a) && (o[s++] = l);
+ }
+ var a;
+ return o;
+ })(lt(t)));
+ }
+ : function () {
+ return [];
+ },
+ Mt = St;
+ function Ut(t, e) {
+ return (
+ !!(e = null == e ? o : e) &&
+ ("number" == typeof t || S.test(t)) &&
+ t > -1 &&
+ t % 1 == 0 &&
+ t < e
+ );
+ }
+ function Dt(t) {
+ if (null != t) {
+ try {
+ return X.call(t);
+ } catch (t) {}
+ try {
+ return t + "";
+ } catch (t) {}
+ }
+ return "";
+ }
+ function Pt(t, e) {
+ return t === e || (t != t && e != e);
+ }
+ ((ut && Mt(new ut(new ArrayBuffer(1))) != _) ||
+ (ht && Mt(new ht()) != g) ||
+ (dt && Mt(dt.resolve()) != v) ||
+ (ft && Mt(new ft()) != N) ||
+ (pt && Mt(new pt()) != q)) &&
+ (Mt = function (t) {
+ var e = St(t),
+ n = e == y ? t.constructor : void 0,
+ r = n ? Dt(n) : "";
+ if (r)
+ switch (r) {
+ case mt:
+ return _;
+ case bt:
+ return g;
+ case yt:
+ return v;
+ case vt:
+ return N;
+ case At:
+ return q;
+ }
+ return e;
+ });
+ var zt = Ot(
+ (function () {
+ return arguments;
+ })()
+ )
+ ? Ot
+ : function (t) {
+ return Wt(t) && Q.call(t, "callee") && !it.call(t, "callee");
+ },
+ Ft = Array.isArray,
+ Ht =
+ at ||
+ function () {
+ return !1;
+ };
+ function $t(t) {
+ if (!Kt(t)) return !1;
+ var e = St(t);
+ return e == f || e == p || e == c || e == A;
+ }
+ function Vt(t) {
+ return "number" == typeof t && t > -1 && t % 1 == 0 && t <= o;
+ }
+ function Kt(t) {
+ var e = typeof t;
+ return null != t && ("object" == e || "function" == e);
+ }
+ function Wt(t) {
+ return null != t && "object" == typeof t;
+ }
+ var Zt = D
+ ? (function (t) {
+ return function (e) {
+ return t(e);
+ };
+ })(D)
+ : function (t) {
+ return Wt(t) && Vt(t.length) && !!O[St(t)];
+ };
+ function Gt(t) {
+ return null != (e = t) && Vt(e.length) && !$t(e)
+ ? (function (t, e) {
+ var n = Ft(t),
+ r = !n && zt(t),
+ i = !n && !r && Ht(t),
+ s = !n && !r && !i && Zt(t),
+ o = n || r || i || s,
+ l = o
+ ? (function (t, e) {
+ for (var n = -1, r = Array(t); ++n < t; ) r[n] = e(n);
+ return r;
+ })(t.length, String)
+ : [],
+ a = l.length;
+ for (var c in t)
+ (!e && !Q.call(t, c)) ||
+ (o &&
+ ("length" == c ||
+ (i && ("offset" == c || "parent" == c)) ||
+ (s &&
+ ("buffer" == c ||
+ "byteLength" == c ||
+ "byteOffset" == c)) ||
+ Ut(c, a))) ||
+ l.push(c);
+ return l;
+ })(t)
+ : (function (t) {
+ if (
+ ((n = (e = t) && e.constructor),
+ e !== (("function" == typeof n && n.prototype) || Z))
+ )
+ return ct(t);
+ var e,
+ n,
+ r = [];
+ for (var i in Object(t))
+ Q.call(t, i) && "constructor" != i && r.push(i);
+ return r;
+ })(t);
+ var e;
+ }
+ t.exports = function (t, e) {
+ return Tt(t, e);
+ };
+ },
+ 1270: function (t, e, n) {
+ "use strict";
+ Object.defineProperty(e, "__esModule", { value: !0 });
+ const r = n(9629),
+ i = n(4162);
+ var s;
+ !(function (t) {
+ (t.compose = function (t = {}, e = {}, n = !1) {
+ "object" != typeof t && (t = {}),
+ "object" != typeof e && (e = {});
+ let i = r(e);
+ n ||
+ (i = Object.keys(i).reduce(
+ (t, e) => (null != i[e] && (t[e] = i[e]), t),
+ {}
+ ));
+ for (const n in t)
+ void 0 !== t[n] && void 0 === e[n] && (i[n] = t[n]);
+ return Object.keys(i).length > 0 ? i : void 0;
+ }),
+ (t.diff = function (t = {}, e = {}) {
+ "object" != typeof t && (t = {}),
+ "object" != typeof e && (e = {});
+ const n = Object.keys(t)
+ .concat(Object.keys(e))
+ .reduce(
+ (n, r) => (
+ i(t[r], e[r]) || (n[r] = void 0 === e[r] ? null : e[r]), n
+ ),
+ {}
+ );
+ return Object.keys(n).length > 0 ? n : void 0;
+ }),
+ (t.invert = function (t = {}, e = {}) {
+ t = t || {};
+ const n = Object.keys(e).reduce(
+ (n, r) => (
+ e[r] !== t[r] && void 0 !== t[r] && (n[r] = e[r]), n
+ ),
+ {}
+ );
+ return Object.keys(t).reduce(
+ (n, r) => (
+ t[r] !== e[r] && void 0 === e[r] && (n[r] = null), n
+ ),
+ n
+ );
+ }),
+ (t.transform = function (t, e, n = !1) {
+ if ("object" != typeof t) return e;
+ if ("object" != typeof e) return;
+ if (!n) return e;
+ const r = Object.keys(e).reduce(
+ (n, r) => (void 0 === t[r] && (n[r] = e[r]), n),
+ {}
+ );
+ return Object.keys(r).length > 0 ? r : void 0;
+ });
+ })(s || (s = {})),
+ (e.default = s);
+ },
+ 5232: function (t, e, n) {
+ "use strict";
+ Object.defineProperty(e, "__esModule", { value: !0 }),
+ (e.AttributeMap = e.OpIterator = e.Op = void 0);
+ const r = n(5090),
+ i = n(9629),
+ s = n(4162),
+ o = n(1270);
+ e.AttributeMap = o.default;
+ const l = n(4123);
+ e.Op = l.default;
+ const a = n(7033);
+ e.OpIterator = a.default;
+ const c = String.fromCharCode(0),
+ u = (t, e) => {
+ if ("object" != typeof t || null === t)
+ throw new Error("cannot retain a " + typeof t);
+ if ("object" != typeof e || null === e)
+ throw new Error("cannot retain a " + typeof e);
+ const n = Object.keys(t)[0];
+ if (!n || n !== Object.keys(e)[0])
+ throw new Error(
+ `embed types not matched: ${n} != ${Object.keys(e)[0]}`
+ );
+ return [n, t[n], e[n]];
+ };
+ class h {
+ constructor(t) {
+ Array.isArray(t)
+ ? (this.ops = t)
+ : null != t && Array.isArray(t.ops)
+ ? (this.ops = t.ops)
+ : (this.ops = []);
+ }
+ static registerEmbed(t, e) {
+ this.handlers[t] = e;
+ }
+ static unregisterEmbed(t) {
+ delete this.handlers[t];
+ }
+ static getHandler(t) {
+ const e = this.handlers[t];
+ if (!e) throw new Error(`no handlers for embed type "${t}"`);
+ return e;
+ }
+ insert(t, e) {
+ const n = {};
+ return "string" == typeof t && 0 === t.length
+ ? this
+ : ((n.insert = t),
+ null != e &&
+ "object" == typeof e &&
+ Object.keys(e).length > 0 &&
+ (n.attributes = e),
+ this.push(n));
+ }
+ delete(t) {
+ return t <= 0 ? this : this.push({ delete: t });
+ }
+ retain(t, e) {
+ if ("number" == typeof t && t <= 0) return this;
+ const n = { retain: t };
+ return (
+ null != e &&
+ "object" == typeof e &&
+ Object.keys(e).length > 0 &&
+ (n.attributes = e),
+ this.push(n)
+ );
+ }
+ push(t) {
+ let e = this.ops.length,
+ n = this.ops[e - 1];
+ if (((t = i(t)), "object" == typeof n)) {
+ if ("number" == typeof t.delete && "number" == typeof n.delete)
+ return (
+ (this.ops[e - 1] = { delete: n.delete + t.delete }), this
+ );
+ if (
+ "number" == typeof n.delete &&
+ null != t.insert &&
+ ((e -= 1), (n = this.ops[e - 1]), "object" != typeof n)
+ )
+ return this.ops.unshift(t), this;
+ if (s(t.attributes, n.attributes)) {
+ if (
+ "string" == typeof t.insert &&
+ "string" == typeof n.insert
+ )
+ return (
+ (this.ops[e - 1] = { insert: n.insert + t.insert }),
+ "object" == typeof t.attributes &&
+ (this.ops[e - 1].attributes = t.attributes),
+ this
+ );
+ if (
+ "number" == typeof t.retain &&
+ "number" == typeof n.retain
+ )
+ return (
+ (this.ops[e - 1] = { retain: n.retain + t.retain }),
+ "object" == typeof t.attributes &&
+ (this.ops[e - 1].attributes = t.attributes),
+ this
+ );
+ }
+ }
+ return (
+ e === this.ops.length
+ ? this.ops.push(t)
+ : this.ops.splice(e, 0, t),
+ this
+ );
+ }
+ chop() {
+ const t = this.ops[this.ops.length - 1];
+ return (
+ t &&
+ "number" == typeof t.retain &&
+ !t.attributes &&
+ this.ops.pop(),
+ this
+ );
+ }
+ filter(t) {
+ return this.ops.filter(t);
+ }
+ forEach(t) {
+ this.ops.forEach(t);
+ }
+ map(t) {
+ return this.ops.map(t);
+ }
+ partition(t) {
+ const e = [],
+ n = [];
+ return (
+ this.forEach((r) => {
+ (t(r) ? e : n).push(r);
+ }),
+ [e, n]
+ );
+ }
+ reduce(t, e) {
+ return this.ops.reduce(t, e);
+ }
+ changeLength() {
+ return this.reduce(
+ (t, e) =>
+ e.insert
+ ? t + l.default.length(e)
+ : e.delete
+ ? t - e.delete
+ : t,
+ 0
+ );
+ }
+ length() {
+ return this.reduce((t, e) => t + l.default.length(e), 0);
+ }
+ slice(t = 0, e = 1 / 0) {
+ const n = [],
+ r = new a.default(this.ops);
+ let i = 0;
+ for (; i < e && r.hasNext(); ) {
+ let s;
+ i < t ? (s = r.next(t - i)) : ((s = r.next(e - i)), n.push(s)),
+ (i += l.default.length(s));
+ }
+ return new h(n);
+ }
+ compose(t) {
+ const e = new a.default(this.ops),
+ n = new a.default(t.ops),
+ r = [],
+ i = n.peek();
+ if (
+ null != i &&
+ "number" == typeof i.retain &&
+ null == i.attributes
+ ) {
+ let t = i.retain;
+ for (; "insert" === e.peekType() && e.peekLength() <= t; )
+ (t -= e.peekLength()), r.push(e.next());
+ i.retain - t > 0 && n.next(i.retain - t);
+ }
+ const l = new h(r);
+ for (; e.hasNext() || n.hasNext(); )
+ if ("insert" === n.peekType()) l.push(n.next());
+ else if ("delete" === e.peekType()) l.push(e.next());
+ else {
+ const t = Math.min(e.peekLength(), n.peekLength()),
+ r = e.next(t),
+ i = n.next(t);
+ if (i.retain) {
+ const a = {};
+ if ("number" == typeof r.retain)
+ a.retain = "number" == typeof i.retain ? t : i.retain;
+ else if ("number" == typeof i.retain)
+ null == r.retain
+ ? (a.insert = r.insert)
+ : (a.retain = r.retain);
+ else {
+ const t = null == r.retain ? "insert" : "retain",
+ [e, n, s] = u(r[t], i.retain),
+ o = h.getHandler(e);
+ a[t] = { [e]: o.compose(n, s, "retain" === t) };
+ }
+ const c = o.default.compose(
+ r.attributes,
+ i.attributes,
+ "number" == typeof r.retain
+ );
+ if (
+ (c && (a.attributes = c),
+ l.push(a),
+ !n.hasNext() && s(l.ops[l.ops.length - 1], a))
+ ) {
+ const t = new h(e.rest());
+ return l.concat(t).chop();
+ }
+ } else
+ "number" == typeof i.delete &&
+ ("number" == typeof r.retain ||
+ ("object" == typeof r.retain && null !== r.retain)) &&
+ l.push(i);
+ }
+ return l.chop();
+ }
+ concat(t) {
+ const e = new h(this.ops.slice());
+ return (
+ t.ops.length > 0 &&
+ (e.push(t.ops[0]), (e.ops = e.ops.concat(t.ops.slice(1)))),
+ e
+ );
+ }
+ diff(t, e) {
+ if (this.ops === t.ops) return new h();
+ const n = [this, t].map((e) =>
+ e
+ .map((n) => {
+ if (null != n.insert)
+ return "string" == typeof n.insert ? n.insert : c;
+ throw new Error(
+ "diff() called " +
+ (e === t ? "on" : "with") +
+ " non-document"
+ );
+ })
+ .join("")
+ ),
+ i = new h(),
+ l = r(n[0], n[1], e, !0),
+ u = new a.default(this.ops),
+ d = new a.default(t.ops);
+ return (
+ l.forEach((t) => {
+ let e = t[1].length;
+ for (; e > 0; ) {
+ let n = 0;
+ switch (t[0]) {
+ case r.INSERT:
+ (n = Math.min(d.peekLength(), e)), i.push(d.next(n));
+ break;
+ case r.DELETE:
+ (n = Math.min(e, u.peekLength())),
+ u.next(n),
+ i.delete(n);
+ break;
+ case r.EQUAL:
+ n = Math.min(u.peekLength(), d.peekLength(), e);
+ const t = u.next(n),
+ l = d.next(n);
+ s(t.insert, l.insert)
+ ? i.retain(
+ n,
+ o.default.diff(t.attributes, l.attributes)
+ )
+ : i.push(l).delete(n);
+ }
+ e -= n;
+ }
+ }),
+ i.chop()
+ );
+ }
+ eachLine(t, e = "\n") {
+ const n = new a.default(this.ops);
+ let r = new h(),
+ i = 0;
+ for (; n.hasNext(); ) {
+ if ("insert" !== n.peekType()) return;
+ const s = n.peek(),
+ o = l.default.length(s) - n.peekLength(),
+ a =
+ "string" == typeof s.insert
+ ? s.insert.indexOf(e, o) - o
+ : -1;
+ if (a < 0) r.push(n.next());
+ else if (a > 0) r.push(n.next(a));
+ else {
+ if (!1 === t(r, n.next(1).attributes || {}, i)) return;
+ (i += 1), (r = new h());
+ }
+ }
+ r.length() > 0 && t(r, {}, i);
+ }
+ invert(t) {
+ const e = new h();
+ return (
+ this.reduce((n, r) => {
+ if (r.insert) e.delete(l.default.length(r));
+ else {
+ if ("number" == typeof r.retain && null == r.attributes)
+ return e.retain(r.retain), n + r.retain;
+ if (r.delete || "number" == typeof r.retain) {
+ const i = r.delete || r.retain;
+ return (
+ t.slice(n, n + i).forEach((t) => {
+ r.delete
+ ? e.push(t)
+ : r.retain &&
+ r.attributes &&
+ e.retain(
+ l.default.length(t),
+ o.default.invert(r.attributes, t.attributes)
+ );
+ }),
+ n + i
+ );
+ }
+ if ("object" == typeof r.retain && null !== r.retain) {
+ const i = t.slice(n, n + 1),
+ s = new a.default(i.ops).next(),
+ [l, c, d] = u(r.retain, s.insert),
+ f = h.getHandler(l);
+ return (
+ e.retain(
+ { [l]: f.invert(c, d) },
+ o.default.invert(r.attributes, s.attributes)
+ ),
+ n + 1
+ );
+ }
+ }
+ return n;
+ }, 0),
+ e.chop()
+ );
+ }
+ transform(t, e = !1) {
+ if (((e = !!e), "number" == typeof t))
+ return this.transformPosition(t, e);
+ const n = t,
+ r = new a.default(this.ops),
+ i = new a.default(n.ops),
+ s = new h();
+ for (; r.hasNext() || i.hasNext(); )
+ if (
+ "insert" !== r.peekType() ||
+ (!e && "insert" === i.peekType())
+ )
+ if ("insert" === i.peekType()) s.push(i.next());
+ else {
+ const t = Math.min(r.peekLength(), i.peekLength()),
+ n = r.next(t),
+ l = i.next(t);
+ if (n.delete) continue;
+ if (l.delete) s.push(l);
+ else {
+ const r = n.retain,
+ i = l.retain;
+ let a = "object" == typeof i && null !== i ? i : t;
+ if (
+ "object" == typeof r &&
+ null !== r &&
+ "object" == typeof i &&
+ null !== i
+ ) {
+ const t = Object.keys(r)[0];
+ if (t === Object.keys(i)[0]) {
+ const n = h.getHandler(t);
+ n && (a = { [t]: n.transform(r[t], i[t], e) });
+ }
+ }
+ s.retain(
+ a,
+ o.default.transform(n.attributes, l.attributes, e)
+ );
+ }
+ }
+ else s.retain(l.default.length(r.next()));
+ return s.chop();
+ }
+ transformPosition(t, e = !1) {
+ e = !!e;
+ const n = new a.default(this.ops);
+ let r = 0;
+ for (; n.hasNext() && r <= t; ) {
+ const i = n.peekLength(),
+ s = n.peekType();
+ n.next(),
+ "delete" !== s
+ ? ("insert" === s && (r < t || !e) && (t += i), (r += i))
+ : (t -= Math.min(i, t - r));
+ }
+ return t;
+ }
+ }
+ (h.Op = l.default),
+ (h.OpIterator = a.default),
+ (h.AttributeMap = o.default),
+ (h.handlers = {}),
+ (e.default = h),
+ (t.exports = h),
+ (t.exports.default = h);
+ },
+ 4123: function (t, e) {
+ "use strict";
+ var n;
+ Object.defineProperty(e, "__esModule", { value: !0 }),
+ (function (t) {
+ t.length = function (t) {
+ return "number" == typeof t.delete
+ ? t.delete
+ : "number" == typeof t.retain
+ ? t.retain
+ : "object" == typeof t.retain && null !== t.retain
+ ? 1
+ : "string" == typeof t.insert
+ ? t.insert.length
+ : 1;
+ };
+ })(n || (n = {})),
+ (e.default = n);
+ },
+ 7033: function (t, e, n) {
+ "use strict";
+ Object.defineProperty(e, "__esModule", { value: !0 });
+ const r = n(4123);
+ e.default = class {
+ constructor(t) {
+ (this.ops = t), (this.index = 0), (this.offset = 0);
+ }
+ hasNext() {
+ return this.peekLength() < 1 / 0;
+ }
+ next(t) {
+ t || (t = 1 / 0);
+ const e = this.ops[this.index];
+ if (e) {
+ const n = this.offset,
+ i = r.default.length(e);
+ if (
+ (t >= i - n
+ ? ((t = i - n), (this.index += 1), (this.offset = 0))
+ : (this.offset += t),
+ "number" == typeof e.delete)
+ )
+ return { delete: t };
+ {
+ const r = {};
+ return (
+ e.attributes && (r.attributes = e.attributes),
+ "number" == typeof e.retain
+ ? (r.retain = t)
+ : "object" == typeof e.retain && null !== e.retain
+ ? (r.retain = e.retain)
+ : "string" == typeof e.insert
+ ? (r.insert = e.insert.substr(n, t))
+ : (r.insert = e.insert),
+ r
+ );
+ }
+ }
+ return { retain: 1 / 0 };
+ }
+ peek() {
+ return this.ops[this.index];
+ }
+ peekLength() {
+ return this.ops[this.index]
+ ? r.default.length(this.ops[this.index]) - this.offset
+ : 1 / 0;
+ }
+ peekType() {
+ const t = this.ops[this.index];
+ return t
+ ? "number" == typeof t.delete
+ ? "delete"
+ : "number" == typeof t.retain ||
+ ("object" == typeof t.retain && null !== t.retain)
+ ? "retain"
+ : "insert"
+ : "retain";
+ }
+ rest() {
+ if (this.hasNext()) {
+ if (0 === this.offset) return this.ops.slice(this.index);
+ {
+ const t = this.offset,
+ e = this.index,
+ n = this.next(),
+ r = this.ops.slice(this.index);
+ return (this.offset = t), (this.index = e), [n].concat(r);
+ }
+ }
+ return [];
+ }
+ };
+ },
+ 8820: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return l;
+ },
+ });
+ var r = n(8138),
+ i = function (t, e) {
+ for (var n = t.length; n--; ) if ((0, r.A)(t[n][0], e)) return n;
+ return -1;
+ },
+ s = Array.prototype.splice;
+ function o(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ (o.prototype.clear = function () {
+ (this.__data__ = []), (this.size = 0);
+ }),
+ (o.prototype.delete = function (t) {
+ var e = this.__data__,
+ n = i(e, t);
+ return !(
+ n < 0 ||
+ (n == e.length - 1 ? e.pop() : s.call(e, n, 1), --this.size, 0)
+ );
+ }),
+ (o.prototype.get = function (t) {
+ var e = this.__data__,
+ n = i(e, t);
+ return n < 0 ? void 0 : e[n][1];
+ }),
+ (o.prototype.has = function (t) {
+ return i(this.__data__, t) > -1;
+ }),
+ (o.prototype.set = function (t, e) {
+ var n = this.__data__,
+ r = i(n, t);
+ return (
+ r < 0 ? (++this.size, n.push([t, e])) : (n[r][1] = e), this
+ );
+ });
+ var l = o;
+ },
+ 2461: function (t, e, n) {
+ "use strict";
+ var r = n(2281),
+ i = n(5507),
+ s = (0, r.A)(i.A, "Map");
+ e.A = s;
+ },
+ 3558: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return d;
+ },
+ });
+ var r = (0, n(2281).A)(Object, "create"),
+ i = Object.prototype.hasOwnProperty,
+ s = Object.prototype.hasOwnProperty;
+ function o(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ (o.prototype.clear = function () {
+ (this.__data__ = r ? r(null) : {}), (this.size = 0);
+ }),
+ (o.prototype.delete = function (t) {
+ var e = this.has(t) && delete this.__data__[t];
+ return (this.size -= e ? 1 : 0), e;
+ }),
+ (o.prototype.get = function (t) {
+ var e = this.__data__;
+ if (r) {
+ var n = e[t];
+ return "__lodash_hash_undefined__" === n ? void 0 : n;
+ }
+ return i.call(e, t) ? e[t] : void 0;
+ }),
+ (o.prototype.has = function (t) {
+ var e = this.__data__;
+ return r ? void 0 !== e[t] : s.call(e, t);
+ }),
+ (o.prototype.set = function (t, e) {
+ var n = this.__data__;
+ return (
+ (this.size += this.has(t) ? 0 : 1),
+ (n[t] = r && void 0 === e ? "__lodash_hash_undefined__" : e),
+ this
+ );
+ });
+ var l = o,
+ a = n(8820),
+ c = n(2461),
+ u = function (t, e) {
+ var n,
+ r,
+ i = t.__data__;
+ return (
+ "string" == (r = typeof (n = e)) ||
+ "number" == r ||
+ "symbol" == r ||
+ "boolean" == r
+ ? "__proto__" !== n
+ : null === n
+ )
+ ? i["string" == typeof e ? "string" : "hash"]
+ : i.map;
+ };
+ function h(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.clear(); ++e < n; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ (h.prototype.clear = function () {
+ (this.size = 0),
+ (this.__data__ = {
+ hash: new l(),
+ map: new (c.A || a.A)(),
+ string: new l(),
+ });
+ }),
+ (h.prototype.delete = function (t) {
+ var e = u(this, t).delete(t);
+ return (this.size -= e ? 1 : 0), e;
+ }),
+ (h.prototype.get = function (t) {
+ return u(this, t).get(t);
+ }),
+ (h.prototype.has = function (t) {
+ return u(this, t).has(t);
+ }),
+ (h.prototype.set = function (t, e) {
+ var n = u(this, t),
+ r = n.size;
+ return n.set(t, e), (this.size += n.size == r ? 0 : 1), this;
+ });
+ var d = h;
+ },
+ 2673: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return l;
+ },
+ });
+ var r = n(8820),
+ i = n(2461),
+ s = n(3558);
+ function o(t) {
+ var e = (this.__data__ = new r.A(t));
+ this.size = e.size;
+ }
+ (o.prototype.clear = function () {
+ (this.__data__ = new r.A()), (this.size = 0);
+ }),
+ (o.prototype.delete = function (t) {
+ var e = this.__data__,
+ n = e.delete(t);
+ return (this.size = e.size), n;
+ }),
+ (o.prototype.get = function (t) {
+ return this.__data__.get(t);
+ }),
+ (o.prototype.has = function (t) {
+ return this.__data__.has(t);
+ }),
+ (o.prototype.set = function (t, e) {
+ var n = this.__data__;
+ if (n instanceof r.A) {
+ var o = n.__data__;
+ if (!i.A || o.length < 199)
+ return o.push([t, e]), (this.size = ++n.size), this;
+ n = this.__data__ = new s.A(o);
+ }
+ return n.set(t, e), (this.size = n.size), this;
+ });
+ var l = o;
+ },
+ 439: function (t, e, n) {
+ "use strict";
+ var r = n(5507).A.Symbol;
+ e.A = r;
+ },
+ 7218: function (t, e, n) {
+ "use strict";
+ var r = n(5507).A.Uint8Array;
+ e.A = r;
+ },
+ 6753: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return c;
+ },
+ });
+ var r = n(8412),
+ i = n(723),
+ s = n(776),
+ o = n(3767),
+ l = n(5755),
+ a = Object.prototype.hasOwnProperty,
+ c = function (t, e) {
+ var n = (0, i.A)(t),
+ c = !n && (0, r.A)(t),
+ u = !n && !c && (0, s.A)(t),
+ h = !n && !c && !u && (0, l.A)(t),
+ d = n || c || u || h,
+ f = d
+ ? (function (t, e) {
+ for (var n = -1, r = Array(t); ++n < t; ) r[n] = e(n);
+ return r;
+ })(t.length, String)
+ : [],
+ p = f.length;
+ for (var g in t)
+ (!e && !a.call(t, g)) ||
+ (d &&
+ ("length" == g ||
+ (u && ("offset" == g || "parent" == g)) ||
+ (h &&
+ ("buffer" == g ||
+ "byteLength" == g ||
+ "byteOffset" == g)) ||
+ (0, o.A)(g, p))) ||
+ f.push(g);
+ return f;
+ };
+ },
+ 802: function (t, e) {
+ "use strict";
+ e.A = function (t, e) {
+ for (var n = -1, r = e.length, i = t.length; ++n < r; )
+ t[i + n] = e[n];
+ return t;
+ };
+ },
+ 6437: function (t, e, n) {
+ "use strict";
+ var r = n(6770),
+ i = n(8138),
+ s = Object.prototype.hasOwnProperty;
+ e.A = function (t, e, n) {
+ var o = t[e];
+ (s.call(t, e) && (0, i.A)(o, n) && (void 0 !== n || e in t)) ||
+ (0, r.A)(t, e, n);
+ };
+ },
+ 6770: function (t, e, n) {
+ "use strict";
+ var r = n(7889);
+ e.A = function (t, e, n) {
+ "__proto__" == e && r.A
+ ? (0, r.A)(t, e, {
+ configurable: !0,
+ enumerable: !0,
+ value: n,
+ writable: !0,
+ })
+ : (t[e] = n);
+ };
+ },
+ 1381: function (t, e, n) {
+ "use strict";
+ var r = n(802),
+ i = n(723);
+ e.A = function (t, e, n) {
+ var s = e(t);
+ return (0, i.A)(t) ? s : (0, r.A)(s, n(t));
+ };
+ },
+ 2159: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return u;
+ },
+ });
+ var r = n(439),
+ i = Object.prototype,
+ s = i.hasOwnProperty,
+ o = i.toString,
+ l = r.A ? r.A.toStringTag : void 0,
+ a = Object.prototype.toString,
+ c = r.A ? r.A.toStringTag : void 0,
+ u = function (t) {
+ return null == t
+ ? void 0 === t
+ ? "[object Undefined]"
+ : "[object Null]"
+ : c && c in Object(t)
+ ? (function (t) {
+ var e = s.call(t, l),
+ n = t[l];
+ try {
+ t[l] = void 0;
+ var r = !0;
+ } catch (t) {}
+ var i = o.call(t);
+ return r && (e ? (t[l] = n) : delete t[l]), i;
+ })(t)
+ : (function (t) {
+ return a.call(t);
+ })(t);
+ };
+ },
+ 5771: function (t, e) {
+ "use strict";
+ e.A = function (t) {
+ return function (e) {
+ return t(e);
+ };
+ };
+ },
+ 2899: function (t, e, n) {
+ "use strict";
+ var r = n(7218);
+ e.A = function (t) {
+ var e = new t.constructor(t.byteLength);
+ return new r.A(e).set(new r.A(t)), e;
+ };
+ },
+ 3812: function (t, e, n) {
+ "use strict";
+ var r = n(5507),
+ i =
+ "object" == typeof exports &&
+ exports &&
+ !exports.nodeType &&
+ exports,
+ s =
+ i &&
+ "object" == typeof module &&
+ module &&
+ !module.nodeType &&
+ module,
+ o = s && s.exports === i ? r.A.Buffer : void 0,
+ l = o ? o.allocUnsafe : void 0;
+ e.A = function (t, e) {
+ if (e) return t.slice();
+ var n = t.length,
+ r = l ? l(n) : new t.constructor(n);
+ return t.copy(r), r;
+ };
+ },
+ 1827: function (t, e, n) {
+ "use strict";
+ var r = n(2899);
+ e.A = function (t, e) {
+ var n = e ? (0, r.A)(t.buffer) : t.buffer;
+ return new t.constructor(n, t.byteOffset, t.length);
+ };
+ },
+ 4405: function (t, e) {
+ "use strict";
+ e.A = function (t, e) {
+ var n = -1,
+ r = t.length;
+ for (e || (e = Array(r)); ++n < r; ) e[n] = t[n];
+ return e;
+ };
+ },
+ 9601: function (t, e, n) {
+ "use strict";
+ var r = n(6437),
+ i = n(6770);
+ e.A = function (t, e, n, s) {
+ var o = !n;
+ n || (n = {});
+ for (var l = -1, a = e.length; ++l < a; ) {
+ var c = e[l],
+ u = s ? s(n[c], t[c], c, n, t) : void 0;
+ void 0 === u && (u = t[c]),
+ o ? (0, i.A)(n, c, u) : (0, r.A)(n, c, u);
+ }
+ return n;
+ };
+ },
+ 7889: function (t, e, n) {
+ "use strict";
+ var r = n(2281),
+ i = (function () {
+ try {
+ var t = (0, r.A)(Object, "defineProperty");
+ return t({}, "", {}), t;
+ } catch (t) {}
+ })();
+ e.A = i;
+ },
+ 9646: function (t, e) {
+ "use strict";
+ var n =
+ "object" == typeof global &&
+ global &&
+ global.Object === Object &&
+ global;
+ e.A = n;
+ },
+ 2816: function (t, e, n) {
+ "use strict";
+ var r = n(1381),
+ i = n(9844),
+ s = n(3169);
+ e.A = function (t) {
+ return (0, r.A)(t, s.A, i.A);
+ };
+ },
+ 2281: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return m;
+ },
+ });
+ var r,
+ i = n(7572),
+ s = n(5507).A["__core-js_shared__"],
+ o = (r = /[^.]+$/.exec((s && s.keys && s.keys.IE_PROTO) || ""))
+ ? "Symbol(src)_1." + r
+ : "",
+ l = n(659),
+ a = n(1543),
+ c = /^\[object .+?Constructor\]$/,
+ u = Function.prototype,
+ h = Object.prototype,
+ d = u.toString,
+ f = h.hasOwnProperty,
+ p = RegExp(
+ "^" +
+ d
+ .call(f)
+ .replace(/[\\^$.*+?()[\]{}|]/g, "\\$&")
+ .replace(
+ /hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,
+ "$1.*?"
+ ) +
+ "$"
+ ),
+ g = function (t) {
+ return (
+ !(!(0, l.A)(t) || ((e = t), o && o in e)) &&
+ ((0, i.A)(t) ? p : c).test((0, a.A)(t))
+ );
+ var e;
+ },
+ m = function (t, e) {
+ var n = (function (t, e) {
+ return null == t ? void 0 : t[e];
+ })(t, e);
+ return g(n) ? n : void 0;
+ };
+ },
+ 8769: function (t, e, n) {
+ "use strict";
+ var r = (0, n(2217).A)(Object.getPrototypeOf, Object);
+ e.A = r;
+ },
+ 9844: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return o;
+ },
+ });
+ var r = n(6935),
+ i = Object.prototype.propertyIsEnumerable,
+ s = Object.getOwnPropertySymbols,
+ o = s
+ ? function (t) {
+ return null == t
+ ? []
+ : ((t = Object(t)),
+ (function (t, e) {
+ for (
+ var n = -1,
+ r = null == t ? 0 : t.length,
+ i = 0,
+ s = [];
+ ++n < r;
+
+ ) {
+ var o = t[n];
+ e(o, n, t) && (s[i++] = o);
+ }
+ return s;
+ })(s(t), function (e) {
+ return i.call(t, e);
+ }));
+ }
+ : r.A;
+ },
+ 7995: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return E;
+ },
+ });
+ var r = n(2281),
+ i = n(5507),
+ s = (0, r.A)(i.A, "DataView"),
+ o = n(2461),
+ l = (0, r.A)(i.A, "Promise"),
+ a = (0, r.A)(i.A, "Set"),
+ c = (0, r.A)(i.A, "WeakMap"),
+ u = n(2159),
+ h = n(1543),
+ d = "[object Map]",
+ f = "[object Promise]",
+ p = "[object Set]",
+ g = "[object WeakMap]",
+ m = "[object DataView]",
+ b = (0, h.A)(s),
+ y = (0, h.A)(o.A),
+ v = (0, h.A)(l),
+ A = (0, h.A)(a),
+ x = (0, h.A)(c),
+ N = u.A;
+ ((s && N(new s(new ArrayBuffer(1))) != m) ||
+ (o.A && N(new o.A()) != d) ||
+ (l && N(l.resolve()) != f) ||
+ (a && N(new a()) != p) ||
+ (c && N(new c()) != g)) &&
+ (N = function (t) {
+ var e = (0, u.A)(t),
+ n = "[object Object]" == e ? t.constructor : void 0,
+ r = n ? (0, h.A)(n) : "";
+ if (r)
+ switch (r) {
+ case b:
+ return m;
+ case y:
+ return d;
+ case v:
+ return f;
+ case A:
+ return p;
+ case x:
+ return g;
+ }
+ return e;
+ });
+ var E = N;
+ },
+ 1683: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return a;
+ },
+ });
+ var r = n(659),
+ i = Object.create,
+ s = (function () {
+ function t() {}
+ return function (e) {
+ if (!(0, r.A)(e)) return {};
+ if (i) return i(e);
+ t.prototype = e;
+ var n = new t();
+ return (t.prototype = void 0), n;
+ };
+ })(),
+ o = n(8769),
+ l = n(501),
+ a = function (t) {
+ return "function" != typeof t.constructor || (0, l.A)(t)
+ ? {}
+ : s((0, o.A)(t));
+ };
+ },
+ 3767: function (t, e) {
+ "use strict";
+ var n = /^(?:0|[1-9]\d*)$/;
+ e.A = function (t, e) {
+ var r = typeof t;
+ return (
+ !!(e = null == e ? 9007199254740991 : e) &&
+ ("number" == r || ("symbol" != r && n.test(t))) &&
+ t > -1 &&
+ t % 1 == 0 &&
+ t < e
+ );
+ };
+ },
+ 501: function (t, e) {
+ "use strict";
+ var n = Object.prototype;
+ e.A = function (t) {
+ var e = t && t.constructor;
+ return t === (("function" == typeof e && e.prototype) || n);
+ };
+ },
+ 8795: function (t, e, n) {
+ "use strict";
+ var r = n(9646),
+ i =
+ "object" == typeof exports &&
+ exports &&
+ !exports.nodeType &&
+ exports,
+ s =
+ i &&
+ "object" == typeof module &&
+ module &&
+ !module.nodeType &&
+ module,
+ o = s && s.exports === i && r.A.process,
+ l = (function () {
+ try {
+ return (
+ (s && s.require && s.require("util").types) ||
+ (o && o.binding && o.binding("util"))
+ );
+ } catch (t) {}
+ })();
+ e.A = l;
+ },
+ 2217: function (t, e) {
+ "use strict";
+ e.A = function (t, e) {
+ return function (n) {
+ return t(e(n));
+ };
+ };
+ },
+ 5507: function (t, e, n) {
+ "use strict";
+ var r = n(9646),
+ i =
+ "object" == typeof self && self && self.Object === Object && self,
+ s = r.A || i || Function("return this")();
+ e.A = s;
+ },
+ 1543: function (t, e) {
+ "use strict";
+ var n = Function.prototype.toString;
+ e.A = function (t) {
+ if (null != t) {
+ try {
+ return n.call(t);
+ } catch (t) {}
+ try {
+ return t + "";
+ } catch (t) {}
+ }
+ return "";
+ };
+ },
+ 3707: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return H;
+ },
+ });
+ var r = n(2673),
+ i = n(6437),
+ s = n(9601),
+ o = n(3169),
+ l = n(2624),
+ a = n(3812),
+ c = n(4405),
+ u = n(9844),
+ h = n(802),
+ d = n(8769),
+ f = n(6935),
+ p = Object.getOwnPropertySymbols
+ ? function (t) {
+ for (var e = []; t; )
+ (0, h.A)(e, (0, u.A)(t)), (t = (0, d.A)(t));
+ return e;
+ }
+ : f.A,
+ g = n(2816),
+ m = n(1381),
+ b = function (t) {
+ return (0, m.A)(t, l.A, p);
+ },
+ y = n(7995),
+ v = Object.prototype.hasOwnProperty,
+ A = n(2899),
+ x = /\w*$/,
+ N = n(439),
+ E = N.A ? N.A.prototype : void 0,
+ w = E ? E.valueOf : void 0,
+ q = n(1827),
+ k = function (t, e, n) {
+ var r,
+ i,
+ s,
+ o = t.constructor;
+ switch (e) {
+ case "[object ArrayBuffer]":
+ return (0, A.A)(t);
+ case "[object Boolean]":
+ case "[object Date]":
+ return new o(+t);
+ case "[object DataView]":
+ return (function (t, e) {
+ var n = e ? (0, A.A)(t.buffer) : t.buffer;
+ return new t.constructor(n, t.byteOffset, t.byteLength);
+ })(t, n);
+ case "[object Float32Array]":
+ case "[object Float64Array]":
+ case "[object Int8Array]":
+ case "[object Int16Array]":
+ case "[object Int32Array]":
+ case "[object Uint8Array]":
+ case "[object Uint8ClampedArray]":
+ case "[object Uint16Array]":
+ case "[object Uint32Array]":
+ return (0, q.A)(t, n);
+ case "[object Map]":
+ case "[object Set]":
+ return new o();
+ case "[object Number]":
+ case "[object String]":
+ return new o(t);
+ case "[object RegExp]":
+ return (
+ ((s = new (i = t).constructor(
+ i.source,
+ x.exec(i)
+ )).lastIndex = i.lastIndex),
+ s
+ );
+ case "[object Symbol]":
+ return (r = t), w ? Object(w.call(r)) : {};
+ }
+ },
+ _ = n(1683),
+ L = n(723),
+ S = n(776),
+ O = n(7948),
+ T = n(5771),
+ j = n(8795),
+ C = j.A && j.A.isMap,
+ R = C
+ ? (0, T.A)(C)
+ : function (t) {
+ return (0, O.A)(t) && "[object Map]" == (0, y.A)(t);
+ },
+ I = n(659),
+ B = j.A && j.A.isSet,
+ M = B
+ ? (0, T.A)(B)
+ : function (t) {
+ return (0, O.A)(t) && "[object Set]" == (0, y.A)(t);
+ },
+ U = "[object Arguments]",
+ D = "[object Function]",
+ P = "[object Object]",
+ z = {};
+ (z[U] =
+ z["[object Array]"] =
+ z["[object ArrayBuffer]"] =
+ z["[object DataView]"] =
+ z["[object Boolean]"] =
+ z["[object Date]"] =
+ z["[object Float32Array]"] =
+ z["[object Float64Array]"] =
+ z["[object Int8Array]"] =
+ z["[object Int16Array]"] =
+ z["[object Int32Array]"] =
+ z["[object Map]"] =
+ z["[object Number]"] =
+ z[P] =
+ z["[object RegExp]"] =
+ z["[object Set]"] =
+ z["[object String]"] =
+ z["[object Symbol]"] =
+ z["[object Uint8Array]"] =
+ z["[object Uint8ClampedArray]"] =
+ z["[object Uint16Array]"] =
+ z["[object Uint32Array]"] =
+ !0),
+ (z["[object Error]"] = z[D] = z["[object WeakMap]"] = !1);
+ var F = function t(e, n, h, d, f, m) {
+ var A,
+ x = 1 & n,
+ N = 2 & n,
+ E = 4 & n;
+ if ((h && (A = f ? h(e, d, f, m) : h(e)), void 0 !== A)) return A;
+ if (!(0, I.A)(e)) return e;
+ var w = (0, L.A)(e);
+ if (w) {
+ if (
+ ((A = (function (t) {
+ var e = t.length,
+ n = new t.constructor(e);
+ return (
+ e &&
+ "string" == typeof t[0] &&
+ v.call(t, "index") &&
+ ((n.index = t.index), (n.input = t.input)),
+ n
+ );
+ })(e)),
+ !x)
+ )
+ return (0, c.A)(e, A);
+ } else {
+ var q = (0, y.A)(e),
+ O = q == D || "[object GeneratorFunction]" == q;
+ if ((0, S.A)(e)) return (0, a.A)(e, x);
+ if (q == P || q == U || (O && !f)) {
+ if (((A = N || O ? {} : (0, _.A)(e)), !x))
+ return N
+ ? (function (t, e) {
+ return (0, s.A)(t, p(t), e);
+ })(
+ e,
+ (function (t, e) {
+ return t && (0, s.A)(e, (0, l.A)(e), t);
+ })(A, e)
+ )
+ : (function (t, e) {
+ return (0, s.A)(t, (0, u.A)(t), e);
+ })(
+ e,
+ (function (t, e) {
+ return t && (0, s.A)(e, (0, o.A)(e), t);
+ })(A, e)
+ );
+ } else {
+ if (!z[q]) return f ? e : {};
+ A = k(e, q, x);
+ }
+ }
+ m || (m = new r.A());
+ var T = m.get(e);
+ if (T) return T;
+ m.set(e, A),
+ M(e)
+ ? e.forEach(function (r) {
+ A.add(t(r, n, h, r, e, m));
+ })
+ : R(e) &&
+ e.forEach(function (r, i) {
+ A.set(i, t(r, n, h, i, e, m));
+ });
+ var j = E ? (N ? b : g.A) : N ? l.A : o.A,
+ C = w ? void 0 : j(e);
+ return (
+ (function (t, e) {
+ for (
+ var n = -1, r = null == t ? 0 : t.length;
+ ++n < r && !1 !== e(t[n], n, t);
+
+ );
+ })(C || e, function (r, s) {
+ C && (r = e[(s = r)]), (0, i.A)(A, s, t(r, n, h, s, e, m));
+ }),
+ A
+ );
+ },
+ H = function (t) {
+ return F(t, 5);
+ };
+ },
+ 8138: function (t, e) {
+ "use strict";
+ e.A = function (t, e) {
+ return t === e || (t != t && e != e);
+ };
+ },
+ 8412: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return u;
+ },
+ });
+ var r = n(2159),
+ i = n(7948),
+ s = function (t) {
+ return (0, i.A)(t) && "[object Arguments]" == (0, r.A)(t);
+ },
+ o = Object.prototype,
+ l = o.hasOwnProperty,
+ a = o.propertyIsEnumerable,
+ c = s(
+ (function () {
+ return arguments;
+ })()
+ )
+ ? s
+ : function (t) {
+ return (
+ (0, i.A)(t) && l.call(t, "callee") && !a.call(t, "callee")
+ );
+ },
+ u = c;
+ },
+ 723: function (t, e) {
+ "use strict";
+ var n = Array.isArray;
+ e.A = n;
+ },
+ 3628: function (t, e, n) {
+ "use strict";
+ var r = n(7572),
+ i = n(1628);
+ e.A = function (t) {
+ return null != t && (0, i.A)(t.length) && !(0, r.A)(t);
+ };
+ },
+ 776: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return l;
+ },
+ });
+ var r = n(5507),
+ i =
+ "object" == typeof exports &&
+ exports &&
+ !exports.nodeType &&
+ exports,
+ s =
+ i &&
+ "object" == typeof module &&
+ module &&
+ !module.nodeType &&
+ module,
+ o = s && s.exports === i ? r.A.Buffer : void 0,
+ l =
+ (o ? o.isBuffer : void 0) ||
+ function () {
+ return !1;
+ };
+ },
+ 5123: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return S;
+ },
+ });
+ var r = n(2673),
+ i = n(3558);
+ function s(t) {
+ var e = -1,
+ n = null == t ? 0 : t.length;
+ for (this.__data__ = new i.A(); ++e < n; ) this.add(t[e]);
+ }
+ (s.prototype.add = s.prototype.push =
+ function (t) {
+ return this.__data__.set(t, "__lodash_hash_undefined__"), this;
+ }),
+ (s.prototype.has = function (t) {
+ return this.__data__.has(t);
+ });
+ var o = s,
+ l = function (t, e) {
+ for (var n = -1, r = null == t ? 0 : t.length; ++n < r; )
+ if (e(t[n], n, t)) return !0;
+ return !1;
+ },
+ a = function (t, e, n, r, i, s) {
+ var a = 1 & n,
+ c = t.length,
+ u = e.length;
+ if (c != u && !(a && u > c)) return !1;
+ var h = s.get(t),
+ d = s.get(e);
+ if (h && d) return h == e && d == t;
+ var f = -1,
+ p = !0,
+ g = 2 & n ? new o() : void 0;
+ for (s.set(t, e), s.set(e, t); ++f < c; ) {
+ var m = t[f],
+ b = e[f];
+ if (r) var y = a ? r(b, m, f, e, t, s) : r(m, b, f, t, e, s);
+ if (void 0 !== y) {
+ if (y) continue;
+ p = !1;
+ break;
+ }
+ if (g) {
+ if (
+ !l(e, function (t, e) {
+ if (((o = e), !g.has(o) && (m === t || i(m, t, n, r, s))))
+ return g.push(e);
+ var o;
+ })
+ ) {
+ p = !1;
+ break;
+ }
+ } else if (m !== b && !i(m, b, n, r, s)) {
+ p = !1;
+ break;
+ }
+ }
+ return s.delete(t), s.delete(e), p;
+ },
+ c = n(439),
+ u = n(7218),
+ h = n(8138),
+ d = function (t) {
+ var e = -1,
+ n = Array(t.size);
+ return (
+ t.forEach(function (t, r) {
+ n[++e] = [r, t];
+ }),
+ n
+ );
+ },
+ f = function (t) {
+ var e = -1,
+ n = Array(t.size);
+ return (
+ t.forEach(function (t) {
+ n[++e] = t;
+ }),
+ n
+ );
+ },
+ p = c.A ? c.A.prototype : void 0,
+ g = p ? p.valueOf : void 0,
+ m = n(2816),
+ b = Object.prototype.hasOwnProperty,
+ y = n(7995),
+ v = n(723),
+ A = n(776),
+ x = n(5755),
+ N = "[object Arguments]",
+ E = "[object Array]",
+ w = "[object Object]",
+ q = Object.prototype.hasOwnProperty,
+ k = function (t, e, n, i, s, o) {
+ var l = (0, v.A)(t),
+ c = (0, v.A)(e),
+ p = l ? E : (0, y.A)(t),
+ k = c ? E : (0, y.A)(e),
+ _ = (p = p == N ? w : p) == w,
+ L = (k = k == N ? w : k) == w,
+ S = p == k;
+ if (S && (0, A.A)(t)) {
+ if (!(0, A.A)(e)) return !1;
+ (l = !0), (_ = !1);
+ }
+ if (S && !_)
+ return (
+ o || (o = new r.A()),
+ l || (0, x.A)(t)
+ ? a(t, e, n, i, s, o)
+ : (function (t, e, n, r, i, s, o) {
+ switch (n) {
+ case "[object DataView]":
+ if (
+ t.byteLength != e.byteLength ||
+ t.byteOffset != e.byteOffset
+ )
+ return !1;
+ (t = t.buffer), (e = e.buffer);
+ case "[object ArrayBuffer]":
+ return !(
+ t.byteLength != e.byteLength ||
+ !s(new u.A(t), new u.A(e))
+ );
+ case "[object Boolean]":
+ case "[object Date]":
+ case "[object Number]":
+ return (0, h.A)(+t, +e);
+ case "[object Error]":
+ return t.name == e.name && t.message == e.message;
+ case "[object RegExp]":
+ case "[object String]":
+ return t == e + "";
+ case "[object Map]":
+ var l = d;
+ case "[object Set]":
+ var c = 1 & r;
+ if ((l || (l = f), t.size != e.size && !c))
+ return !1;
+ var p = o.get(t);
+ if (p) return p == e;
+ (r |= 2), o.set(t, e);
+ var m = a(l(t), l(e), r, i, s, o);
+ return o.delete(t), m;
+ case "[object Symbol]":
+ if (g) return g.call(t) == g.call(e);
+ }
+ return !1;
+ })(t, e, p, n, i, s, o)
+ );
+ if (!(1 & n)) {
+ var O = _ && q.call(t, "__wrapped__"),
+ T = L && q.call(e, "__wrapped__");
+ if (O || T) {
+ var j = O ? t.value() : t,
+ C = T ? e.value() : e;
+ return o || (o = new r.A()), s(j, C, n, i, o);
+ }
+ }
+ return (
+ !!S &&
+ (o || (o = new r.A()),
+ (function (t, e, n, r, i, s) {
+ var o = 1 & n,
+ l = (0, m.A)(t),
+ a = l.length;
+ if (a != (0, m.A)(e).length && !o) return !1;
+ for (var c = a; c--; ) {
+ var u = l[c];
+ if (!(o ? u in e : b.call(e, u))) return !1;
+ }
+ var h = s.get(t),
+ d = s.get(e);
+ if (h && d) return h == e && d == t;
+ var f = !0;
+ s.set(t, e), s.set(e, t);
+ for (var p = o; ++c < a; ) {
+ var g = t[(u = l[c])],
+ y = e[u];
+ if (r)
+ var v = o ? r(y, g, u, e, t, s) : r(g, y, u, t, e, s);
+ if (!(void 0 === v ? g === y || i(g, y, n, r, s) : v)) {
+ f = !1;
+ break;
+ }
+ p || (p = "constructor" == u);
+ }
+ if (f && !p) {
+ var A = t.constructor,
+ x = e.constructor;
+ A == x ||
+ !("constructor" in t) ||
+ !("constructor" in e) ||
+ ("function" == typeof A &&
+ A instanceof A &&
+ "function" == typeof x &&
+ x instanceof x) ||
+ (f = !1);
+ }
+ return s.delete(t), s.delete(e), f;
+ })(t, e, n, i, s, o))
+ );
+ },
+ _ = n(7948),
+ L = function t(e, n, r, i, s) {
+ return (
+ e === n ||
+ (null == e || null == n || (!(0, _.A)(e) && !(0, _.A)(n))
+ ? e != e && n != n
+ : k(e, n, r, i, t, s))
+ );
+ },
+ S = function (t, e) {
+ return L(t, e);
+ };
+ },
+ 7572: function (t, e, n) {
+ "use strict";
+ var r = n(2159),
+ i = n(659);
+ e.A = function (t) {
+ if (!(0, i.A)(t)) return !1;
+ var e = (0, r.A)(t);
+ return (
+ "[object Function]" == e ||
+ "[object GeneratorFunction]" == e ||
+ "[object AsyncFunction]" == e ||
+ "[object Proxy]" == e
+ );
+ };
+ },
+ 1628: function (t, e) {
+ "use strict";
+ e.A = function (t) {
+ return (
+ "number" == typeof t &&
+ t > -1 &&
+ t % 1 == 0 &&
+ t <= 9007199254740991
+ );
+ };
+ },
+ 659: function (t, e) {
+ "use strict";
+ e.A = function (t) {
+ var e = typeof t;
+ return null != t && ("object" == e || "function" == e);
+ };
+ },
+ 7948: function (t, e) {
+ "use strict";
+ e.A = function (t) {
+ return null != t && "object" == typeof t;
+ };
+ },
+ 5755: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return u;
+ },
+ });
+ var r = n(2159),
+ i = n(1628),
+ s = n(7948),
+ o = {};
+ (o["[object Float32Array]"] =
+ o["[object Float64Array]"] =
+ o["[object Int8Array]"] =
+ o["[object Int16Array]"] =
+ o["[object Int32Array]"] =
+ o["[object Uint8Array]"] =
+ o["[object Uint8ClampedArray]"] =
+ o["[object Uint16Array]"] =
+ o["[object Uint32Array]"] =
+ !0),
+ (o["[object Arguments]"] =
+ o["[object Array]"] =
+ o["[object ArrayBuffer]"] =
+ o["[object Boolean]"] =
+ o["[object DataView]"] =
+ o["[object Date]"] =
+ o["[object Error]"] =
+ o["[object Function]"] =
+ o["[object Map]"] =
+ o["[object Number]"] =
+ o["[object Object]"] =
+ o["[object RegExp]"] =
+ o["[object Set]"] =
+ o["[object String]"] =
+ o["[object WeakMap]"] =
+ !1);
+ var l = n(5771),
+ a = n(8795),
+ c = a.A && a.A.isTypedArray,
+ u = c
+ ? (0, l.A)(c)
+ : function (t) {
+ return (0, s.A)(t) && (0, i.A)(t.length) && !!o[(0, r.A)(t)];
+ };
+ },
+ 3169: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return a;
+ },
+ });
+ var r = n(6753),
+ i = n(501),
+ s = (0, n(2217).A)(Object.keys, Object),
+ o = Object.prototype.hasOwnProperty,
+ l = n(3628),
+ a = function (t) {
+ return (0, l.A)(t)
+ ? (0, r.A)(t)
+ : (function (t) {
+ if (!(0, i.A)(t)) return s(t);
+ var e = [];
+ for (var n in Object(t))
+ o.call(t, n) && "constructor" != n && e.push(n);
+ return e;
+ })(t);
+ };
+ },
+ 2624: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return c;
+ },
+ });
+ var r = n(6753),
+ i = n(659),
+ s = n(501),
+ o = Object.prototype.hasOwnProperty,
+ l = function (t) {
+ if (!(0, i.A)(t))
+ return (function (t) {
+ var e = [];
+ if (null != t) for (var n in Object(t)) e.push(n);
+ return e;
+ })(t);
+ var e = (0, s.A)(t),
+ n = [];
+ for (var r in t)
+ ("constructor" != r || (!e && o.call(t, r))) && n.push(r);
+ return n;
+ },
+ a = n(3628),
+ c = function (t) {
+ return (0, a.A)(t) ? (0, r.A)(t, !0) : l(t);
+ };
+ },
+ 8347: function (t, e, n) {
+ "use strict";
+ n.d(e, {
+ A: function () {
+ return $;
+ },
+ });
+ var r,
+ i,
+ s,
+ o,
+ l = n(2673),
+ a = n(6770),
+ c = n(8138),
+ u = function (t, e, n) {
+ ((void 0 !== n && !(0, c.A)(t[e], n)) ||
+ (void 0 === n && !(e in t))) &&
+ (0, a.A)(t, e, n);
+ },
+ h = function (t, e, n) {
+ for (var r = -1, i = Object(t), s = n(t), o = s.length; o--; ) {
+ var l = s[++r];
+ if (!1 === e(i[l], l, i)) break;
+ }
+ return t;
+ },
+ d = n(3812),
+ f = n(1827),
+ p = n(4405),
+ g = n(1683),
+ m = n(8412),
+ b = n(723),
+ y = n(3628),
+ v = n(7948),
+ A = n(776),
+ x = n(7572),
+ N = n(659),
+ E = n(2159),
+ w = n(8769),
+ q = Function.prototype,
+ k = Object.prototype,
+ _ = q.toString,
+ L = k.hasOwnProperty,
+ S = _.call(Object),
+ O = n(5755),
+ T = function (t, e) {
+ if (
+ ("constructor" !== e || "function" != typeof t[e]) &&
+ "__proto__" != e
+ )
+ return t[e];
+ },
+ j = n(9601),
+ C = n(2624),
+ R = function (t, e, n, r, i, s, o) {
+ var l,
+ a = T(t, n),
+ c = T(e, n),
+ h = o.get(c);
+ if (h) u(t, n, h);
+ else {
+ var q = s ? s(a, c, n + "", t, e, o) : void 0,
+ k = void 0 === q;
+ if (k) {
+ var R = (0, b.A)(c),
+ I = !R && (0, A.A)(c),
+ B = !R && !I && (0, O.A)(c);
+ (q = c),
+ R || I || B
+ ? (0, b.A)(a)
+ ? (q = a)
+ : ((l = a),
+ (0, v.A)(l) && (0, y.A)(l)
+ ? (q = (0, p.A)(a))
+ : I
+ ? ((k = !1), (q = (0, d.A)(c, !0)))
+ : B
+ ? ((k = !1), (q = (0, f.A)(c, !0)))
+ : (q = []))
+ : (function (t) {
+ if (!(0, v.A)(t) || "[object Object]" != (0, E.A)(t))
+ return !1;
+ var e = (0, w.A)(t);
+ if (null === e) return !0;
+ var n = L.call(e, "constructor") && e.constructor;
+ return (
+ "function" == typeof n &&
+ n instanceof n &&
+ _.call(n) == S
+ );
+ })(c) || (0, m.A)(c)
+ ? ((q = a),
+ (0, m.A)(a)
+ ? (q = (function (t) {
+ return (0, j.A)(t, (0, C.A)(t));
+ })(a))
+ : ((0, N.A)(a) && !(0, x.A)(a)) || (q = (0, g.A)(c)))
+ : (k = !1);
+ }
+ k && (o.set(c, q), i(q, c, r, s, o), o.delete(c)), u(t, n, q);
+ }
+ },
+ I = function t(e, n, r, i, s) {
+ e !== n &&
+ h(
+ n,
+ function (o, a) {
+ if ((s || (s = new l.A()), (0, N.A)(o)))
+ R(e, n, a, r, t, i, s);
+ else {
+ var c = i ? i(T(e, a), o, a + "", e, n, s) : void 0;
+ void 0 === c && (c = o), u(e, a, c);
+ }
+ },
+ C.A
+ );
+ },
+ B = function (t) {
+ return t;
+ },
+ M = Math.max,
+ U = n(7889),
+ D = U.A
+ ? function (t, e) {
+ return (0, U.A)(t, "toString", {
+ configurable: !0,
+ enumerable: !1,
+ value:
+ ((n = e),
+ function () {
+ return n;
+ }),
+ writable: !0,
+ });
+ var n;
+ }
+ : B,
+ P = Date.now,
+ z =
+ ((r = D),
+ (i = 0),
+ (s = 0),
+ function () {
+ var t = P(),
+ e = 16 - (t - s);
+ if (((s = t), e > 0)) {
+ if (++i >= 800) return arguments[0];
+ } else i = 0;
+ return r.apply(void 0, arguments);
+ }),
+ F = function (t, e) {
+ return z(
+ (function (t, e, n) {
+ return (
+ (e = M(void 0 === e ? t.length - 1 : e, 0)),
+ function () {
+ for (
+ var r = arguments,
+ i = -1,
+ s = M(r.length - e, 0),
+ o = Array(s);
+ ++i < s;
+
+ )
+ o[i] = r[e + i];
+ i = -1;
+ for (var l = Array(e + 1); ++i < e; ) l[i] = r[i];
+ return (
+ (l[e] = n(o)),
+ (function (t, e, n) {
+ switch (n.length) {
+ case 0:
+ return t.call(e);
+ case 1:
+ return t.call(e, n[0]);
+ case 2:
+ return t.call(e, n[0], n[1]);
+ case 3:
+ return t.call(e, n[0], n[1], n[2]);
+ }
+ return t.apply(e, n);
+ })(t, this, l)
+ );
+ }
+ );
+ })(t, e, B),
+ t + ""
+ );
+ },
+ H = n(3767),
+ $ =
+ ((o = function (t, e, n) {
+ I(t, e, n);
+ }),
+ F(function (t, e) {
+ var n = -1,
+ r = e.length,
+ i = r > 1 ? e[r - 1] : void 0,
+ s = r > 2 ? e[2] : void 0;
+ for (
+ i =
+ o.length > 3 && "function" == typeof i ? (r--, i) : void 0,
+ s &&
+ (function (t, e, n) {
+ if (!(0, N.A)(n)) return !1;
+ var r = typeof e;
+ return (
+ !!("number" == r
+ ? (0, y.A)(n) && (0, H.A)(e, n.length)
+ : "string" == r && (e in n)) && (0, c.A)(n[e], t)
+ );
+ })(e[0], e[1], s) &&
+ ((i = r < 3 ? void 0 : i), (r = 1)),
+ t = Object(t);
+ ++n < r;
+
+ ) {
+ var l = e[n];
+ l && o(t, l, n);
+ }
+ return t;
+ }));
+ },
+ 6935: function (t, e) {
+ "use strict";
+ e.A = function () {
+ return [];
+ };
+ },
+ 6003: function (t, e, n) {
+ "use strict";
+ n.r(e),
+ n.d(e, {
+ Attributor: function () {
+ return i;
+ },
+ AttributorStore: function () {
+ return d;
+ },
+ BlockBlot: function () {
+ return w;
+ },
+ ClassAttributor: function () {
+ return c;
+ },
+ ContainerBlot: function () {
+ return k;
+ },
+ EmbedBlot: function () {
+ return _;
+ },
+ InlineBlot: function () {
+ return N;
+ },
+ LeafBlot: function () {
+ return m;
+ },
+ ParentBlot: function () {
+ return A;
+ },
+ Registry: function () {
+ return l;
+ },
+ Scope: function () {
+ return r;
+ },
+ ScrollBlot: function () {
+ return O;
+ },
+ StyleAttributor: function () {
+ return h;
+ },
+ TextBlot: function () {
+ return j;
+ },
+ });
+ var r = ((t) => (
+ (t[(t.TYPE = 3)] = "TYPE"),
+ (t[(t.LEVEL = 12)] = "LEVEL"),
+ (t[(t.ATTRIBUTE = 13)] = "ATTRIBUTE"),
+ (t[(t.BLOT = 14)] = "BLOT"),
+ (t[(t.INLINE = 7)] = "INLINE"),
+ (t[(t.BLOCK = 11)] = "BLOCK"),
+ (t[(t.BLOCK_BLOT = 10)] = "BLOCK_BLOT"),
+ (t[(t.INLINE_BLOT = 6)] = "INLINE_BLOT"),
+ (t[(t.BLOCK_ATTRIBUTE = 9)] = "BLOCK_ATTRIBUTE"),
+ (t[(t.INLINE_ATTRIBUTE = 5)] = "INLINE_ATTRIBUTE"),
+ (t[(t.ANY = 15)] = "ANY"),
+ t
+ ))(r || {});
+ class i {
+ constructor(t, e, n = {}) {
+ (this.attrName = t), (this.keyName = e);
+ const i = r.TYPE & r.ATTRIBUTE;
+ (this.scope =
+ null != n.scope ? (n.scope & r.LEVEL) | i : r.ATTRIBUTE),
+ null != n.whitelist && (this.whitelist = n.whitelist);
+ }
+ static keys(t) {
+ return Array.from(t.attributes).map((t) => t.name);
+ }
+ add(t, e) {
+ return (
+ !!this.canAdd(t, e) && (t.setAttribute(this.keyName, e), !0)
+ );
+ }
+ canAdd(t, e) {
+ return (
+ null == this.whitelist ||
+ ("string" == typeof e
+ ? this.whitelist.indexOf(e.replace(/["']/g, "")) > -1
+ : this.whitelist.indexOf(e) > -1)
+ );
+ }
+ remove(t) {
+ t.removeAttribute(this.keyName);
+ }
+ value(t) {
+ const e = t.getAttribute(this.keyName);
+ return this.canAdd(t, e) && e ? e : "";
+ }
+ }
+ class s extends Error {
+ constructor(t) {
+ super((t = "[Parchment] " + t)),
+ (this.message = t),
+ (this.name = this.constructor.name);
+ }
+ }
+ const o = class t {
+ constructor() {
+ (this.attributes = {}),
+ (this.classes = {}),
+ (this.tags = {}),
+ (this.types = {});
+ }
+ static find(t, e = !1) {
+ if (null == t) return null;
+ if (this.blots.has(t)) return this.blots.get(t) || null;
+ if (e) {
+ let n = null;
+ try {
+ n = t.parentNode;
+ } catch {
+ return null;
+ }
+ return this.find(n, e);
+ }
+ return null;
+ }
+ create(e, n, r) {
+ const i = this.query(n);
+ if (null == i) throw new s(`Unable to create ${n} blot`);
+ const o = i,
+ l =
+ n instanceof Node || n.nodeType === Node.TEXT_NODE
+ ? n
+ : o.create(r),
+ a = new o(e, l, r);
+ return t.blots.set(a.domNode, a), a;
+ }
+ find(e, n = !1) {
+ return t.find(e, n);
+ }
+ query(t, e = r.ANY) {
+ let n;
+ return (
+ "string" == typeof t
+ ? (n = this.types[t] || this.attributes[t])
+ : t instanceof Text || t.nodeType === Node.TEXT_NODE
+ ? (n = this.types.text)
+ : "number" == typeof t
+ ? t & r.LEVEL & r.BLOCK
+ ? (n = this.types.block)
+ : t & r.LEVEL & r.INLINE && (n = this.types.inline)
+ : t instanceof Element &&
+ ((t.getAttribute("class") || "")
+ .split(/\s+/)
+ .some((t) => ((n = this.classes[t]), !!n)),
+ (n = n || this.tags[t.tagName])),
+ null == n
+ ? null
+ : "scope" in n &&
+ e & r.LEVEL & n.scope &&
+ e & r.TYPE & n.scope
+ ? n
+ : null
+ );
+ }
+ register(...t) {
+ return t.map((t) => {
+ const e = "blotName" in t,
+ n = "attrName" in t;
+ if (!e && !n) throw new s("Invalid definition");
+ if (e && "abstract" === t.blotName)
+ throw new s("Cannot register abstract class");
+ const r = e ? t.blotName : n ? t.attrName : void 0;
+ return (
+ (this.types[r] = t),
+ n
+ ? "string" == typeof t.keyName &&
+ (this.attributes[t.keyName] = t)
+ : e &&
+ (t.className && (this.classes[t.className] = t),
+ t.tagName &&
+ (Array.isArray(t.tagName)
+ ? (t.tagName = t.tagName.map((t) => t.toUpperCase()))
+ : (t.tagName = t.tagName.toUpperCase()),
+ (Array.isArray(t.tagName)
+ ? t.tagName
+ : [t.tagName]
+ ).forEach((e) => {
+ (null == this.tags[e] || null == t.className) &&
+ (this.tags[e] = t);
+ }))),
+ t
+ );
+ });
+ }
+ };
+ o.blots = new WeakMap();
+ let l = o;
+ function a(t, e) {
+ return (t.getAttribute("class") || "")
+ .split(/\s+/)
+ .filter((t) => 0 === t.indexOf(`${e}-`));
+ }
+ const c = class extends i {
+ static keys(t) {
+ return (t.getAttribute("class") || "")
+ .split(/\s+/)
+ .map((t) => t.split("-").slice(0, -1).join("-"));
+ }
+ add(t, e) {
+ return (
+ !!this.canAdd(t, e) &&
+ (this.remove(t), t.classList.add(`${this.keyName}-${e}`), !0)
+ );
+ }
+ remove(t) {
+ a(t, this.keyName).forEach((e) => {
+ t.classList.remove(e);
+ }),
+ 0 === t.classList.length && t.removeAttribute("class");
+ }
+ value(t) {
+ const e = (a(t, this.keyName)[0] || "").slice(
+ this.keyName.length + 1
+ );
+ return this.canAdd(t, e) ? e : "";
+ }
+ };
+ function u(t) {
+ const e = t.split("-"),
+ n = e
+ .slice(1)
+ .map((t) => t[0].toUpperCase() + t.slice(1))
+ .join("");
+ return e[0] + n;
+ }
+ const h = class extends i {
+ static keys(t) {
+ return (t.getAttribute("style") || "")
+ .split(";")
+ .map((t) => t.split(":")[0].trim());
+ }
+ add(t, e) {
+ return (
+ !!this.canAdd(t, e) && ((t.style[u(this.keyName)] = e), !0)
+ );
+ }
+ remove(t) {
+ (t.style[u(this.keyName)] = ""),
+ t.getAttribute("style") || t.removeAttribute("style");
+ }
+ value(t) {
+ const e = t.style[u(this.keyName)];
+ return this.canAdd(t, e) ? e : "";
+ }
+ },
+ d = class {
+ constructor(t) {
+ (this.attributes = {}), (this.domNode = t), this.build();
+ }
+ attribute(t, e) {
+ e
+ ? t.add(this.domNode, e) &&
+ (null != t.value(this.domNode)
+ ? (this.attributes[t.attrName] = t)
+ : delete this.attributes[t.attrName])
+ : (t.remove(this.domNode),
+ delete this.attributes[t.attrName]);
+ }
+ build() {
+ this.attributes = {};
+ const t = l.find(this.domNode);
+ if (null == t) return;
+ const e = i.keys(this.domNode),
+ n = c.keys(this.domNode),
+ s = h.keys(this.domNode);
+ e.concat(n)
+ .concat(s)
+ .forEach((e) => {
+ const n = t.scroll.query(e, r.ATTRIBUTE);
+ n instanceof i && (this.attributes[n.attrName] = n);
+ });
+ }
+ copy(t) {
+ Object.keys(this.attributes).forEach((e) => {
+ const n = this.attributes[e].value(this.domNode);
+ t.format(e, n);
+ });
+ }
+ move(t) {
+ this.copy(t),
+ Object.keys(this.attributes).forEach((t) => {
+ this.attributes[t].remove(this.domNode);
+ }),
+ (this.attributes = {});
+ }
+ values() {
+ return Object.keys(this.attributes).reduce(
+ (t, e) => (
+ (t[e] = this.attributes[e].value(this.domNode)), t
+ ),
+ {}
+ );
+ }
+ },
+ f = class {
+ constructor(t, e) {
+ (this.scroll = t),
+ (this.domNode = e),
+ l.blots.set(e, this),
+ (this.prev = null),
+ (this.next = null);
+ }
+ static create(t) {
+ if (null == this.tagName)
+ throw new s("Blot definition missing tagName");
+ let e, n;
+ return (
+ Array.isArray(this.tagName)
+ ? ("string" == typeof t
+ ? ((n = t.toUpperCase()),
+ parseInt(n, 10).toString() === n &&
+ (n = parseInt(n, 10)))
+ : "number" == typeof t && (n = t),
+ (e =
+ "number" == typeof n
+ ? document.createElement(this.tagName[n - 1])
+ : n && this.tagName.indexOf(n) > -1
+ ? document.createElement(n)
+ : document.createElement(this.tagName[0])))
+ : (e = document.createElement(this.tagName)),
+ this.className && e.classList.add(this.className),
+ e
+ );
+ }
+ get statics() {
+ return this.constructor;
+ }
+ attach() {}
+ clone() {
+ const t = this.domNode.cloneNode(!1);
+ return this.scroll.create(t);
+ }
+ detach() {
+ null != this.parent && this.parent.removeChild(this),
+ l.blots.delete(this.domNode);
+ }
+ deleteAt(t, e) {
+ this.isolate(t, e).remove();
+ }
+ formatAt(t, e, n, i) {
+ const s = this.isolate(t, e);
+ if (null != this.scroll.query(n, r.BLOT) && i) s.wrap(n, i);
+ else if (null != this.scroll.query(n, r.ATTRIBUTE)) {
+ const t = this.scroll.create(this.statics.scope);
+ s.wrap(t), t.format(n, i);
+ }
+ }
+ insertAt(t, e, n) {
+ const r =
+ null == n
+ ? this.scroll.create("text", e)
+ : this.scroll.create(e, n),
+ i = this.split(t);
+ this.parent.insertBefore(r, i || void 0);
+ }
+ isolate(t, e) {
+ const n = this.split(t);
+ if (null == n) throw new Error("Attempt to isolate at end");
+ return n.split(e), n;
+ }
+ length() {
+ return 1;
+ }
+ offset(t = this.parent) {
+ return null == this.parent || this === t
+ ? 0
+ : this.parent.children.offset(this) + this.parent.offset(t);
+ }
+ optimize(t) {
+ this.statics.requiredContainer &&
+ !(this.parent instanceof this.statics.requiredContainer) &&
+ this.wrap(this.statics.requiredContainer.blotName);
+ }
+ remove() {
+ null != this.domNode.parentNode &&
+ this.domNode.parentNode.removeChild(this.domNode),
+ this.detach();
+ }
+ replaceWith(t, e) {
+ const n = "string" == typeof t ? this.scroll.create(t, e) : t;
+ return (
+ null != this.parent &&
+ (this.parent.insertBefore(n, this.next || void 0),
+ this.remove()),
+ n
+ );
+ }
+ split(t, e) {
+ return 0 === t ? this : this.next;
+ }
+ update(t, e) {}
+ wrap(t, e) {
+ const n = "string" == typeof t ? this.scroll.create(t, e) : t;
+ if (
+ (null != this.parent &&
+ this.parent.insertBefore(n, this.next || void 0),
+ "function" != typeof n.appendChild)
+ )
+ throw new s(`Cannot wrap ${t}`);
+ return n.appendChild(this), n;
+ }
+ };
+ f.blotName = "abstract";
+ let p = f;
+ const g = class extends p {
+ static value(t) {
+ return !0;
+ }
+ index(t, e) {
+ return this.domNode === t ||
+ this.domNode.compareDocumentPosition(t) &
+ Node.DOCUMENT_POSITION_CONTAINED_BY
+ ? Math.min(e, 1)
+ : -1;
+ }
+ position(t, e) {
+ let n = Array.from(this.parent.domNode.childNodes).indexOf(
+ this.domNode
+ );
+ return t > 0 && (n += 1), [this.parent.domNode, n];
+ }
+ value() {
+ return {
+ [this.statics.blotName]: this.statics.value(this.domNode) || !0,
+ };
+ }
+ };
+ g.scope = r.INLINE_BLOT;
+ const m = g;
+ class b {
+ constructor() {
+ (this.head = null), (this.tail = null), (this.length = 0);
+ }
+ append(...t) {
+ if ((this.insertBefore(t[0], null), t.length > 1)) {
+ const e = t.slice(1);
+ this.append(...e);
+ }
+ }
+ at(t) {
+ const e = this.iterator();
+ let n = e();
+ for (; n && t > 0; ) (t -= 1), (n = e());
+ return n;
+ }
+ contains(t) {
+ const e = this.iterator();
+ let n = e();
+ for (; n; ) {
+ if (n === t) return !0;
+ n = e();
+ }
+ return !1;
+ }
+ indexOf(t) {
+ const e = this.iterator();
+ let n = e(),
+ r = 0;
+ for (; n; ) {
+ if (n === t) return r;
+ (r += 1), (n = e());
+ }
+ return -1;
+ }
+ insertBefore(t, e) {
+ null != t &&
+ (this.remove(t),
+ (t.next = e),
+ null != e
+ ? ((t.prev = e.prev),
+ null != e.prev && (e.prev.next = t),
+ (e.prev = t),
+ e === this.head && (this.head = t))
+ : null != this.tail
+ ? ((this.tail.next = t),
+ (t.prev = this.tail),
+ (this.tail = t))
+ : ((t.prev = null), (this.head = this.tail = t)),
+ (this.length += 1));
+ }
+ offset(t) {
+ let e = 0,
+ n = this.head;
+ for (; null != n; ) {
+ if (n === t) return e;
+ (e += n.length()), (n = n.next);
+ }
+ return -1;
+ }
+ remove(t) {
+ this.contains(t) &&
+ (null != t.prev && (t.prev.next = t.next),
+ null != t.next && (t.next.prev = t.prev),
+ t === this.head && (this.head = t.next),
+ t === this.tail && (this.tail = t.prev),
+ (this.length -= 1));
+ }
+ iterator(t = this.head) {
+ return () => {
+ const e = t;
+ return null != t && (t = t.next), e;
+ };
+ }
+ find(t, e = !1) {
+ const n = this.iterator();
+ let r = n();
+ for (; r; ) {
+ const i = r.length();
+ if (
+ t < i ||
+ (e && t === i && (null == r.next || 0 !== r.next.length()))
+ )
+ return [r, t];
+ (t -= i), (r = n());
+ }
+ return [null, 0];
+ }
+ forEach(t) {
+ const e = this.iterator();
+ let n = e();
+ for (; n; ) t(n), (n = e());
+ }
+ forEachAt(t, e, n) {
+ if (e <= 0) return;
+ const [r, i] = this.find(t);
+ let s = t - i;
+ const o = this.iterator(r);
+ let l = o();
+ for (; l && s < t + e; ) {
+ const r = l.length();
+ t > s
+ ? n(l, t - s, Math.min(e, s + r - t))
+ : n(l, 0, Math.min(r, t + e - s)),
+ (s += r),
+ (l = o());
+ }
+ }
+ map(t) {
+ return this.reduce((e, n) => (e.push(t(n)), e), []);
+ }
+ reduce(t, e) {
+ const n = this.iterator();
+ let r = n();
+ for (; r; ) (e = t(e, r)), (r = n());
+ return e;
+ }
+ }
+ function y(t, e) {
+ const n = e.find(t);
+ if (n) return n;
+ try {
+ return e.create(t);
+ } catch {
+ const n = e.create(r.INLINE);
+ return (
+ Array.from(t.childNodes).forEach((t) => {
+ n.domNode.appendChild(t);
+ }),
+ t.parentNode && t.parentNode.replaceChild(n.domNode, t),
+ n.attach(),
+ n
+ );
+ }
+ }
+ const v = class t extends p {
+ constructor(t, e) {
+ super(t, e), (this.uiNode = null), this.build();
+ }
+ appendChild(t) {
+ this.insertBefore(t);
+ }
+ attach() {
+ super.attach(),
+ this.children.forEach((t) => {
+ t.attach();
+ });
+ }
+ attachUI(e) {
+ null != this.uiNode && this.uiNode.remove(),
+ (this.uiNode = e),
+ t.uiClass && this.uiNode.classList.add(t.uiClass),
+ this.uiNode.setAttribute("contenteditable", "false"),
+ this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);
+ }
+ build() {
+ (this.children = new b()),
+ Array.from(this.domNode.childNodes)
+ .filter((t) => t !== this.uiNode)
+ .reverse()
+ .forEach((t) => {
+ try {
+ const e = y(t, this.scroll);
+ this.insertBefore(e, this.children.head || void 0);
+ } catch (t) {
+ if (t instanceof s) return;
+ throw t;
+ }
+ });
+ }
+ deleteAt(t, e) {
+ if (0 === t && e === this.length()) return this.remove();
+ this.children.forEachAt(t, e, (t, e, n) => {
+ t.deleteAt(e, n);
+ });
+ }
+ descendant(e, n = 0) {
+ const [r, i] = this.children.find(n);
+ return (null == e.blotName && e(r)) ||
+ (null != e.blotName && r instanceof e)
+ ? [r, i]
+ : r instanceof t
+ ? r.descendant(e, i)
+ : [null, -1];
+ }
+ descendants(e, n = 0, r = Number.MAX_VALUE) {
+ let i = [],
+ s = r;
+ return (
+ this.children.forEachAt(n, r, (n, r, o) => {
+ ((null == e.blotName && e(n)) ||
+ (null != e.blotName && n instanceof e)) &&
+ i.push(n),
+ n instanceof t && (i = i.concat(n.descendants(e, r, s))),
+ (s -= o);
+ }),
+ i
+ );
+ }
+ detach() {
+ this.children.forEach((t) => {
+ t.detach();
+ }),
+ super.detach();
+ }
+ enforceAllowedChildren() {
+ let e = !1;
+ this.children.forEach((n) => {
+ e ||
+ this.statics.allowedChildren.some((t) => n instanceof t) ||
+ (n.statics.scope === r.BLOCK_BLOT
+ ? (null != n.next && this.splitAfter(n),
+ null != n.prev && this.splitAfter(n.prev),
+ n.parent.unwrap(),
+ (e = !0))
+ : n instanceof t
+ ? n.unwrap()
+ : n.remove());
+ });
+ }
+ formatAt(t, e, n, r) {
+ this.children.forEachAt(t, e, (t, e, i) => {
+ t.formatAt(e, i, n, r);
+ });
+ }
+ insertAt(t, e, n) {
+ const [r, i] = this.children.find(t);
+ if (r) r.insertAt(i, e, n);
+ else {
+ const t =
+ null == n
+ ? this.scroll.create("text", e)
+ : this.scroll.create(e, n);
+ this.appendChild(t);
+ }
+ }
+ insertBefore(t, e) {
+ null != t.parent && t.parent.children.remove(t);
+ let n = null;
+ this.children.insertBefore(t, e || null),
+ (t.parent = this),
+ null != e && (n = e.domNode),
+ (this.domNode.parentNode !== t.domNode ||
+ this.domNode.nextSibling !== n) &&
+ this.domNode.insertBefore(t.domNode, n),
+ t.attach();
+ }
+ length() {
+ return this.children.reduce((t, e) => t + e.length(), 0);
+ }
+ moveChildren(t, e) {
+ this.children.forEach((n) => {
+ t.insertBefore(n, e);
+ });
+ }
+ optimize(t) {
+ if (
+ (super.optimize(t),
+ this.enforceAllowedChildren(),
+ null != this.uiNode &&
+ this.uiNode !== this.domNode.firstChild &&
+ this.domNode.insertBefore(
+ this.uiNode,
+ this.domNode.firstChild
+ ),
+ 0 === this.children.length)
+ )
+ if (null != this.statics.defaultChild) {
+ const t = this.scroll.create(
+ this.statics.defaultChild.blotName
+ );
+ this.appendChild(t);
+ } else this.remove();
+ }
+ path(e, n = !1) {
+ const [r, i] = this.children.find(e, n),
+ s = [[this, e]];
+ return r instanceof t
+ ? s.concat(r.path(i, n))
+ : (null != r && s.push([r, i]), s);
+ }
+ removeChild(t) {
+ this.children.remove(t);
+ }
+ replaceWith(e, n) {
+ const r = "string" == typeof e ? this.scroll.create(e, n) : e;
+ return (
+ r instanceof t && this.moveChildren(r), super.replaceWith(r)
+ );
+ }
+ split(t, e = !1) {
+ if (!e) {
+ if (0 === t) return this;
+ if (t === this.length()) return this.next;
+ }
+ const n = this.clone();
+ return (
+ this.parent && this.parent.insertBefore(n, this.next || void 0),
+ this.children.forEachAt(t, this.length(), (t, r, i) => {
+ const s = t.split(r, e);
+ null != s && n.appendChild(s);
+ }),
+ n
+ );
+ }
+ splitAfter(t) {
+ const e = this.clone();
+ for (; null != t.next; ) e.appendChild(t.next);
+ return (
+ this.parent && this.parent.insertBefore(e, this.next || void 0),
+ e
+ );
+ }
+ unwrap() {
+ this.parent &&
+ this.moveChildren(this.parent, this.next || void 0),
+ this.remove();
+ }
+ update(t, e) {
+ const n = [],
+ r = [];
+ t.forEach((t) => {
+ t.target === this.domNode &&
+ "childList" === t.type &&
+ (n.push(...t.addedNodes), r.push(...t.removedNodes));
+ }),
+ r.forEach((t) => {
+ if (
+ null != t.parentNode &&
+ "IFRAME" !== t.tagName &&
+ document.body.compareDocumentPosition(t) &
+ Node.DOCUMENT_POSITION_CONTAINED_BY
+ )
+ return;
+ const e = this.scroll.find(t);
+ null != e &&
+ (null == e.domNode.parentNode ||
+ e.domNode.parentNode === this.domNode) &&
+ e.detach();
+ }),
+ n
+ .filter(
+ (t) => t.parentNode === this.domNode && t !== this.uiNode
+ )
+ .sort((t, e) =>
+ t === e
+ ? 0
+ : t.compareDocumentPosition(e) &
+ Node.DOCUMENT_POSITION_FOLLOWING
+ ? 1
+ : -1
+ )
+ .forEach((t) => {
+ let e = null;
+ null != t.nextSibling &&
+ (e = this.scroll.find(t.nextSibling));
+ const n = y(t, this.scroll);
+ (n.next !== e || null == n.next) &&
+ (null != n.parent && n.parent.removeChild(this),
+ this.insertBefore(n, e || void 0));
+ }),
+ this.enforceAllowedChildren();
+ }
+ };
+ v.uiClass = "";
+ const A = v,
+ x = class t extends A {
+ static create(t) {
+ return super.create(t);
+ }
+ static formats(e, n) {
+ const r = n.query(t.blotName);
+ if (null == r || e.tagName !== r.tagName) {
+ if ("string" == typeof this.tagName) return !0;
+ if (Array.isArray(this.tagName))
+ return e.tagName.toLowerCase();
+ }
+ }
+ constructor(t, e) {
+ super(t, e), (this.attributes = new d(this.domNode));
+ }
+ format(e, n) {
+ if (e !== this.statics.blotName || n) {
+ const t = this.scroll.query(e, r.INLINE);
+ if (null == t) return;
+ t instanceof i
+ ? this.attributes.attribute(t, n)
+ : n &&
+ (e !== this.statics.blotName ||
+ this.formats()[e] !== n) &&
+ this.replaceWith(e, n);
+ } else
+ this.children.forEach((e) => {
+ e instanceof t || (e = e.wrap(t.blotName, !0)),
+ this.attributes.copy(e);
+ }),
+ this.unwrap();
+ }
+ formats() {
+ const t = this.attributes.values(),
+ e = this.statics.formats(this.domNode, this.scroll);
+ return null != e && (t[this.statics.blotName] = e), t;
+ }
+ formatAt(t, e, n, i) {
+ null != this.formats()[n] || this.scroll.query(n, r.ATTRIBUTE)
+ ? this.isolate(t, e).format(n, i)
+ : super.formatAt(t, e, n, i);
+ }
+ optimize(e) {
+ super.optimize(e);
+ const n = this.formats();
+ if (0 === Object.keys(n).length) return this.unwrap();
+ const r = this.next;
+ r instanceof t &&
+ r.prev === this &&
+ (function (t, e) {
+ if (Object.keys(t).length !== Object.keys(e).length)
+ return !1;
+ for (const n in t) if (t[n] !== e[n]) return !1;
+ return !0;
+ })(n, r.formats()) &&
+ (r.moveChildren(this), r.remove());
+ }
+ replaceWith(t, e) {
+ const n = super.replaceWith(t, e);
+ return this.attributes.copy(n), n;
+ }
+ update(t, e) {
+ super.update(t, e),
+ t.some(
+ (t) => t.target === this.domNode && "attributes" === t.type
+ ) && this.attributes.build();
+ }
+ wrap(e, n) {
+ const r = super.wrap(e, n);
+ return r instanceof t && this.attributes.move(r), r;
+ }
+ };
+ (x.allowedChildren = [x, m]),
+ (x.blotName = "inline"),
+ (x.scope = r.INLINE_BLOT),
+ (x.tagName = "SPAN");
+ const N = x,
+ E = class t extends A {
+ static create(t) {
+ return super.create(t);
+ }
+ static formats(e, n) {
+ const r = n.query(t.blotName);
+ if (null == r || e.tagName !== r.tagName) {
+ if ("string" == typeof this.tagName) return !0;
+ if (Array.isArray(this.tagName))
+ return e.tagName.toLowerCase();
+ }
+ }
+ constructor(t, e) {
+ super(t, e), (this.attributes = new d(this.domNode));
+ }
+ format(e, n) {
+ const s = this.scroll.query(e, r.BLOCK);
+ null != s &&
+ (s instanceof i
+ ? this.attributes.attribute(s, n)
+ : e !== this.statics.blotName || n
+ ? n &&
+ (e !== this.statics.blotName ||
+ this.formats()[e] !== n) &&
+ this.replaceWith(e, n)
+ : this.replaceWith(t.blotName));
+ }
+ formats() {
+ const t = this.attributes.values(),
+ e = this.statics.formats(this.domNode, this.scroll);
+ return null != e && (t[this.statics.blotName] = e), t;
+ }
+ formatAt(t, e, n, i) {
+ null != this.scroll.query(n, r.BLOCK)
+ ? this.format(n, i)
+ : super.formatAt(t, e, n, i);
+ }
+ insertAt(t, e, n) {
+ if (null == n || null != this.scroll.query(e, r.INLINE))
+ super.insertAt(t, e, n);
+ else {
+ const r = this.split(t);
+ if (null == r)
+ throw new Error(
+ "Attempt to insertAt after block boundaries"
+ );
+ {
+ const t = this.scroll.create(e, n);
+ r.parent.insertBefore(t, r);
+ }
+ }
+ }
+ replaceWith(t, e) {
+ const n = super.replaceWith(t, e);
+ return this.attributes.copy(n), n;
+ }
+ update(t, e) {
+ super.update(t, e),
+ t.some(
+ (t) => t.target === this.domNode && "attributes" === t.type
+ ) && this.attributes.build();
+ }
+ };
+ (E.blotName = "block"),
+ (E.scope = r.BLOCK_BLOT),
+ (E.tagName = "P"),
+ (E.allowedChildren = [N, E, m]);
+ const w = E,
+ q = class extends A {
+ checkMerge() {
+ return (
+ null !== this.next &&
+ this.next.statics.blotName === this.statics.blotName
+ );
+ }
+ deleteAt(t, e) {
+ super.deleteAt(t, e), this.enforceAllowedChildren();
+ }
+ formatAt(t, e, n, r) {
+ super.formatAt(t, e, n, r), this.enforceAllowedChildren();
+ }
+ insertAt(t, e, n) {
+ super.insertAt(t, e, n), this.enforceAllowedChildren();
+ }
+ optimize(t) {
+ super.optimize(t),
+ this.children.length > 0 &&
+ null != this.next &&
+ this.checkMerge() &&
+ (this.next.moveChildren(this), this.next.remove());
+ }
+ };
+ (q.blotName = "container"), (q.scope = r.BLOCK_BLOT);
+ const k = q,
+ _ = class extends m {
+ static formats(t, e) {}
+ format(t, e) {
+ super.formatAt(0, this.length(), t, e);
+ }
+ formatAt(t, e, n, r) {
+ 0 === t && e === this.length()
+ ? this.format(n, r)
+ : super.formatAt(t, e, n, r);
+ }
+ formats() {
+ return this.statics.formats(this.domNode, this.scroll);
+ }
+ },
+ L = {
+ attributes: !0,
+ characterData: !0,
+ characterDataOldValue: !0,
+ childList: !0,
+ subtree: !0,
+ },
+ S = class extends A {
+ constructor(t, e) {
+ super(null, e),
+ (this.registry = t),
+ (this.scroll = this),
+ this.build(),
+ (this.observer = new MutationObserver((t) => {
+ this.update(t);
+ })),
+ this.observer.observe(this.domNode, L),
+ this.attach();
+ }
+ create(t, e) {
+ return this.registry.create(this, t, e);
+ }
+ find(t, e = !1) {
+ const n = this.registry.find(t, e);
+ return n
+ ? n.scroll === this
+ ? n
+ : e
+ ? this.find(n.scroll.domNode.parentNode, !0)
+ : null
+ : null;
+ }
+ query(t, e = r.ANY) {
+ return this.registry.query(t, e);
+ }
+ register(...t) {
+ return this.registry.register(...t);
+ }
+ build() {
+ null != this.scroll && super.build();
+ }
+ detach() {
+ super.detach(), this.observer.disconnect();
+ }
+ deleteAt(t, e) {
+ this.update(),
+ 0 === t && e === this.length()
+ ? this.children.forEach((t) => {
+ t.remove();
+ })
+ : super.deleteAt(t, e);
+ }
+ formatAt(t, e, n, r) {
+ this.update(), super.formatAt(t, e, n, r);
+ }
+ insertAt(t, e, n) {
+ this.update(), super.insertAt(t, e, n);
+ }
+ optimize(t = [], e = {}) {
+ super.optimize(e);
+ const n = e.mutationsMap || new WeakMap();
+ let r = Array.from(this.observer.takeRecords());
+ for (; r.length > 0; ) t.push(r.pop());
+ const i = (t, e = !0) => {
+ null == t ||
+ t === this ||
+ (null != t.domNode.parentNode &&
+ (n.has(t.domNode) || n.set(t.domNode, []),
+ e && i(t.parent)));
+ },
+ s = (t) => {
+ n.has(t.domNode) &&
+ (t instanceof A && t.children.forEach(s),
+ n.delete(t.domNode),
+ t.optimize(e));
+ };
+ let o = t;
+ for (let e = 0; o.length > 0; e += 1) {
+ if (e >= 100)
+ throw new Error(
+ "[Parchment] Maximum optimize iterations reached"
+ );
+ for (
+ o.forEach((t) => {
+ const e = this.find(t.target, !0);
+ null != e &&
+ (e.domNode === t.target &&
+ ("childList" === t.type
+ ? (i(this.find(t.previousSibling, !1)),
+ Array.from(t.addedNodes).forEach((t) => {
+ const e = this.find(t, !1);
+ i(e, !1),
+ e instanceof A &&
+ e.children.forEach((t) => {
+ i(t, !1);
+ });
+ }))
+ : "attributes" === t.type && i(e.prev)),
+ i(e));
+ }),
+ this.children.forEach(s),
+ o = Array.from(this.observer.takeRecords()),
+ r = o.slice();
+ r.length > 0;
+
+ )
+ t.push(r.pop());
+ }
+ }
+ update(t, e = {}) {
+ t = t || this.observer.takeRecords();
+ const n = new WeakMap();
+ t
+ .map((t) => {
+ const e = this.find(t.target, !0);
+ return null == e
+ ? null
+ : n.has(e.domNode)
+ ? (n.get(e.domNode).push(t), null)
+ : (n.set(e.domNode, [t]), e);
+ })
+ .forEach((t) => {
+ null != t &&
+ t !== this &&
+ n.has(t.domNode) &&
+ t.update(n.get(t.domNode) || [], e);
+ }),
+ (e.mutationsMap = n),
+ n.has(this.domNode) && super.update(n.get(this.domNode), e),
+ this.optimize(t, e);
+ }
+ };
+ (S.blotName = "scroll"),
+ (S.defaultChild = w),
+ (S.allowedChildren = [w, k]),
+ (S.scope = r.BLOCK_BLOT),
+ (S.tagName = "DIV");
+ const O = S,
+ T = class t extends m {
+ static create(t) {
+ return document.createTextNode(t);
+ }
+ static value(t) {
+ return t.data;
+ }
+ constructor(t, e) {
+ super(t, e), (this.text = this.statics.value(this.domNode));
+ }
+ deleteAt(t, e) {
+ this.domNode.data = this.text =
+ this.text.slice(0, t) + this.text.slice(t + e);
+ }
+ index(t, e) {
+ return this.domNode === t ? e : -1;
+ }
+ insertAt(t, e, n) {
+ null == n
+ ? ((this.text =
+ this.text.slice(0, t) + e + this.text.slice(t)),
+ (this.domNode.data = this.text))
+ : super.insertAt(t, e, n);
+ }
+ length() {
+ return this.text.length;
+ }
+ optimize(e) {
+ super.optimize(e),
+ (this.text = this.statics.value(this.domNode)),
+ 0 === this.text.length
+ ? this.remove()
+ : this.next instanceof t &&
+ this.next.prev === this &&
+ (this.insertAt(this.length(), this.next.value()),
+ this.next.remove());
+ }
+ position(t, e = !1) {
+ return [this.domNode, t];
+ }
+ split(t, e = !1) {
+ if (!e) {
+ if (0 === t) return this;
+ if (t === this.length()) return this.next;
+ }
+ const n = this.scroll.create(this.domNode.splitText(t));
+ return (
+ this.parent.insertBefore(n, this.next || void 0),
+ (this.text = this.statics.value(this.domNode)),
+ n
+ );
+ }
+ update(t, e) {
+ t.some(
+ (t) => "characterData" === t.type && t.target === this.domNode
+ ) && (this.text = this.statics.value(this.domNode));
+ }
+ value() {
+ return this.text;
+ }
+ };
+ (T.blotName = "text"), (T.scope = r.INLINE_BLOT);
+ const j = T;
+ },
+ },
+ e = {};
+ function n(r) {
+ var i = e[r];
+ if (void 0 !== i) return i.exports;
+ var s = (e[r] = { id: r, loaded: !1, exports: {} });
+ return t[r](s, s.exports, n), (s.loaded = !0), s.exports;
+ }
+ (n.n = function (t) {
+ var e =
+ t && t.__esModule
+ ? function () {
+ return t.default;
+ }
+ : function () {
+ return t;
+ };
+ return n.d(e, { a: e }), e;
+ }),
+ (n.d = function (t, e) {
+ for (var r in e)
+ n.o(e, r) &&
+ !n.o(t, r) &&
+ Object.defineProperty(t, r, { enumerable: !0, get: e[r] });
+ }),
+ (n.g = (function () {
+ if ("object" == typeof globalThis) return globalThis;
+ try {
+ return this || new Function("return this")();
+ } catch (t) {
+ if ("object" == typeof window) return window;
+ }
+ })()),
+ (n.o = function (t, e) {
+ return Object.prototype.hasOwnProperty.call(t, e);
+ }),
+ (n.r = function (t) {
+ "undefined" != typeof Symbol &&
+ Symbol.toStringTag &&
+ Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }),
+ Object.defineProperty(t, "__esModule", { value: !0 });
+ }),
+ (n.nmd = function (t) {
+ return (t.paths = []), t.children || (t.children = []), t;
+ });
+ var r = {};
+ return (
+ (function () {
+ "use strict";
+ n.d(r, {
+ default: function () {
+ return It;
+ },
+ });
+ var t = n(3729),
+ e = n(8276),
+ i = n(7912),
+ s = n(6003);
+ class o extends s.ClassAttributor {
+ add(t, e) {
+ let n = 0;
+ if ("+1" === e || "-1" === e) {
+ const r = this.value(t) || 0;
+ n = "+1" === e ? r + 1 : r - 1;
+ } else "number" == typeof e && (n = e);
+ return 0 === n ? (this.remove(t), !0) : super.add(t, n.toString());
+ }
+ canAdd(t, e) {
+ return super.canAdd(t, e) || super.canAdd(t, parseInt(e, 10));
+ }
+ value(t) {
+ return parseInt(super.value(t), 10) || void 0;
+ }
+ }
+ var l = new o("indent", "ql-indent", {
+ scope: s.Scope.BLOCK,
+ whitelist: [1, 2, 3, 4, 5, 6, 7, 8],
+ }),
+ a = n(9698);
+ class c extends a.Ay {
+ static blotName = "blockquote";
+ static tagName = "blockquote";
+ }
+ var u = c;
+ class h extends a.Ay {
+ static blotName = "header";
+ static tagName = ["H1", "H2", "H3", "H4", "H5", "H6"];
+ static formats(t) {
+ return this.tagName.indexOf(t.tagName) + 1;
+ }
+ }
+ var d = h,
+ f = n(580),
+ p = n(6142);
+ class g extends f.A {}
+ (g.blotName = "list-container"), (g.tagName = "OL");
+ class m extends a.Ay {
+ static create(t) {
+ const e = super.create();
+ return e.setAttribute("data-list", t), e;
+ }
+ static formats(t) {
+ return t.getAttribute("data-list") || void 0;
+ }
+ static register() {
+ p.Ay.register(g);
+ }
+ constructor(t, e) {
+ super(t, e);
+ const n = e.ownerDocument.createElement("span"),
+ r = (n) => {
+ if (!t.isEnabled()) return;
+ const r = this.statics.formats(e, t);
+ "checked" === r
+ ? (this.format("list", "unchecked"), n.preventDefault())
+ : "unchecked" === r &&
+ (this.format("list", "checked"), n.preventDefault());
+ };
+ n.addEventListener("mousedown", r),
+ n.addEventListener("touchstart", r),
+ this.attachUI(n);
+ }
+ format(t, e) {
+ t === this.statics.blotName && e
+ ? this.domNode.setAttribute("data-list", e)
+ : super.format(t, e);
+ }
+ }
+ (m.blotName = "list"),
+ (m.tagName = "LI"),
+ (g.allowedChildren = [m]),
+ (m.requiredContainer = g);
+ var b = n(9541),
+ y = n(8638),
+ v = n(6772),
+ A = n(664),
+ x = n(4850);
+ class N extends x.A {
+ static blotName = "bold";
+ static tagName = ["STRONG", "B"];
+ static create() {
+ return super.create();
+ }
+ static formats() {
+ return !0;
+ }
+ optimize(t) {
+ super.optimize(t),
+ this.domNode.tagName !== this.statics.tagName[0] &&
+ this.replaceWith(this.statics.blotName);
+ }
+ }
+ var E = N;
+ class w extends x.A {
+ static blotName = "link";
+ static tagName = "A";
+ static SANITIZED_URL = "about:blank";
+ static PROTOCOL_WHITELIST = ["http", "https", "mailto", "tel", "sms"];
+ static create(t) {
+ const e = super.create(t);
+ return (
+ e.setAttribute("href", this.sanitize(t)),
+ e.setAttribute("rel", "noopener noreferrer"),
+ e.setAttribute("target", "_blank"),
+ e
+ );
+ }
+ static formats(t) {
+ return t.getAttribute("href");
+ }
+ static sanitize(t) {
+ return q(t, this.PROTOCOL_WHITELIST) ? t : this.SANITIZED_URL;
+ }
+ format(t, e) {
+ t === this.statics.blotName && e
+ ? this.domNode.setAttribute("href", this.constructor.sanitize(e))
+ : super.format(t, e);
+ }
+ }
+ function q(t, e) {
+ const n = document.createElement("a");
+ n.href = t;
+ const r = n.href.slice(0, n.href.indexOf(":"));
+ return e.indexOf(r) > -1;
+ }
+ class k extends x.A {
+ static blotName = "script";
+ static tagName = ["SUB", "SUP"];
+ static create(t) {
+ return "super" === t
+ ? document.createElement("sup")
+ : "sub" === t
+ ? document.createElement("sub")
+ : super.create(t);
+ }
+ static formats(t) {
+ return "SUB" === t.tagName
+ ? "sub"
+ : "SUP" === t.tagName
+ ? "super"
+ : void 0;
+ }
+ }
+ var _ = k;
+ class L extends x.A {
+ static blotName = "underline";
+ static tagName = "U";
+ }
+ var S = L,
+ O = n(746);
+ class T extends O.A {
+ static blotName = "formula";
+ static className = "ql-formula";
+ static tagName = "SPAN";
+ static create(t) {
+ if (null == window.katex)
+ throw new Error("Formula module requires KaTeX.");
+ const e = super.create(t);
+ return (
+ "string" == typeof t &&
+ (window.katex.render(t, e, {
+ throwOnError: !1,
+ errorColor: "#f00",
+ }),
+ e.setAttribute("data-value", t)),
+ e
+ );
+ }
+ static value(t) {
+ return t.getAttribute("data-value");
+ }
+ html() {
+ const { formula: t } = this.value();
+ return `${t}`;
+ }
+ }
+ var j = T;
+ const C = ["alt", "height", "width"];
+ class R extends s.EmbedBlot {
+ static blotName = "image";
+ static tagName = "IMG";
+ static create(t) {
+ const e = super.create(t);
+ return (
+ "string" == typeof t && e.setAttribute("src", this.sanitize(t)), e
+ );
+ }
+ static formats(t) {
+ return C.reduce(
+ (e, n) => (t.hasAttribute(n) && (e[n] = t.getAttribute(n)), e),
+ {}
+ );
+ }
+ static match(t) {
+ return (
+ /\.(jpe?g|gif|png)$/.test(t) || /^data:image\/.+;base64/.test(t)
+ );
+ }
+ static sanitize(t) {
+ return q(t, ["http", "https", "data"]) ? t : "//:0";
+ }
+ static value(t) {
+ return t.getAttribute("src");
+ }
+ format(t, e) {
+ C.indexOf(t) > -1
+ ? e
+ ? this.domNode.setAttribute(t, e)
+ : this.domNode.removeAttribute(t)
+ : super.format(t, e);
+ }
+ }
+ var I = R;
+ const B = ["height", "width"];
+ class M extends a.zo {
+ static blotName = "video";
+ static className = "ql-video";
+ static tagName = "IFRAME";
+ static create(t) {
+ const e = super.create(t);
+ return (
+ e.setAttribute("frameborder", "0"),
+ e.setAttribute("allowfullscreen", "true"),
+ e.setAttribute("src", this.sanitize(t)),
+ e
+ );
+ }
+ static formats(t) {
+ return B.reduce(
+ (e, n) => (t.hasAttribute(n) && (e[n] = t.getAttribute(n)), e),
+ {}
+ );
+ }
+ static sanitize(t) {
+ return w.sanitize(t);
+ }
+ static value(t) {
+ return t.getAttribute("src");
+ }
+ format(t, e) {
+ B.indexOf(t) > -1
+ ? e
+ ? this.domNode.setAttribute(t, e)
+ : this.domNode.removeAttribute(t)
+ : super.format(t, e);
+ }
+ html() {
+ const { video: t } = this.value();
+ return `${t}`;
+ }
+ }
+ var U = M,
+ D = n(9404),
+ P = n(5232),
+ z = n.n(P),
+ F = n(4266),
+ H = n(3036),
+ $ = n(4541),
+ V = n(5508),
+ K = n(584);
+ const W = new s.ClassAttributor("code-token", "hljs", {
+ scope: s.Scope.INLINE,
+ });
+ class Z extends x.A {
+ static formats(t, e) {
+ for (; null != t && t !== e.domNode; ) {
+ if (t.classList && t.classList.contains(D.Ay.className))
+ return super.formats(t, e);
+ t = t.parentNode;
+ }
+ }
+ constructor(t, e, n) {
+ super(t, e, n), W.add(this.domNode, n);
+ }
+ format(t, e) {
+ t !== Z.blotName
+ ? super.format(t, e)
+ : e
+ ? W.add(this.domNode, e)
+ : (W.remove(this.domNode),
+ this.domNode.classList.remove(this.statics.className));
+ }
+ optimize() {
+ super.optimize(...arguments),
+ W.value(this.domNode) || this.unwrap();
+ }
+ }
+ (Z.blotName = "code-token"), (Z.className = "ql-token");
+ class G extends D.Ay {
+ static create(t) {
+ const e = super.create(t);
+ return (
+ "string" == typeof t && e.setAttribute("data-language", t), e
+ );
+ }
+ static formats(t) {
+ return t.getAttribute("data-language") || "plain";
+ }
+ static register() {}
+ format(t, e) {
+ t === this.statics.blotName && e
+ ? this.domNode.setAttribute("data-language", e)
+ : super.format(t, e);
+ }
+ replaceWith(t, e) {
+ return (
+ this.formatAt(0, this.length(), Z.blotName, !1),
+ super.replaceWith(t, e)
+ );
+ }
+ }
+ class X extends D.EJ {
+ attach() {
+ super.attach(), (this.forceNext = !1), this.scroll.emitMount(this);
+ }
+ format(t, e) {
+ t === G.blotName &&
+ ((this.forceNext = !0),
+ this.children.forEach((n) => {
+ n.format(t, e);
+ }));
+ }
+ formatAt(t, e, n, r) {
+ n === G.blotName && (this.forceNext = !0),
+ super.formatAt(t, e, n, r);
+ }
+ highlight(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
+ if (null == this.children.head) return;
+ const n = `${Array.from(this.domNode.childNodes)
+ .filter((t) => t !== this.uiNode)
+ .map((t) => t.textContent)
+ .join("\n")}\n`,
+ r = G.formats(this.children.head.domNode);
+ if (e || this.forceNext || this.cachedText !== n) {
+ if (n.trim().length > 0 || null == this.cachedText) {
+ const e = this.children.reduce(
+ (t, e) => t.concat((0, a.mG)(e, !1)),
+ new (z())()
+ ),
+ i = t(n, r);
+ e.diff(i).reduce((t, e) => {
+ let { retain: n, attributes: r } = e;
+ return n
+ ? (r &&
+ Object.keys(r).forEach((e) => {
+ [G.blotName, Z.blotName].includes(e) &&
+ this.formatAt(t, n, e, r[e]);
+ }),
+ t + n)
+ : t;
+ }, 0);
+ }
+ (this.cachedText = n), (this.forceNext = !1);
+ }
+ }
+ html(t, e) {
+ const [n] = this.children.find(t);
+ return `\n${(0, V.X)(this.code(t, e))}\n`;
+ }
+ optimize(t) {
+ if (
+ (super.optimize(t),
+ null != this.parent &&
+ null != this.children.head &&
+ null != this.uiNode)
+ ) {
+ const t = G.formats(this.children.head.domNode);
+ t !== this.uiNode.value && (this.uiNode.value = t);
+ }
+ }
+ }
+ (X.allowedChildren = [G]),
+ (G.requiredContainer = X),
+ (G.allowedChildren = [Z, $.A, V.A, H.A]);
+ class Q extends F.A {
+ static register() {
+ p.Ay.register(Z, !0), p.Ay.register(G, !0), p.Ay.register(X, !0);
+ }
+ constructor(t, e) {
+ if ((super(t, e), null == this.options.hljs))
+ throw new Error(
+ "Syntax module requires highlight.js. Please include the library on the page before Quill."
+ );
+ (this.languages = this.options.languages.reduce((t, e) => {
+ let { key: n } = e;
+ return (t[n] = !0), t;
+ }, {})),
+ (this.highlightBlot = this.highlightBlot.bind(this)),
+ this.initListener(),
+ this.initTimer();
+ }
+ initListener() {
+ this.quill.on(p.Ay.events.SCROLL_BLOT_MOUNT, (t) => {
+ if (!(t instanceof X)) return;
+ const e = this.quill.root.ownerDocument.createElement("select");
+ this.options.languages.forEach((t) => {
+ let { key: n, label: r } = t;
+ const i = e.ownerDocument.createElement("option");
+ (i.textContent = r),
+ i.setAttribute("value", n),
+ e.appendChild(i);
+ }),
+ e.addEventListener("change", () => {
+ t.format(G.blotName, e.value),
+ this.quill.root.focus(),
+ this.highlight(t, !0);
+ }),
+ null == t.uiNode &&
+ (t.attachUI(e),
+ t.children.head &&
+ (e.value = G.formats(t.children.head.domNode)));
+ });
+ }
+ initTimer() {
+ let t = null;
+ this.quill.on(p.Ay.events.SCROLL_OPTIMIZE, () => {
+ t && clearTimeout(t),
+ (t = setTimeout(() => {
+ this.highlight(), (t = null);
+ }, this.options.interval));
+ });
+ }
+ highlight() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : null,
+ e =
+ arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
+ if (this.quill.selection.composing) return;
+ this.quill.update(p.Ay.sources.USER);
+ const n = this.quill.getSelection();
+ (null == t ? this.quill.scroll.descendants(X) : [t]).forEach(
+ (t) => {
+ t.highlight(this.highlightBlot, e);
+ }
+ ),
+ this.quill.update(p.Ay.sources.SILENT),
+ null != n && this.quill.setSelection(n, p.Ay.sources.SILENT);
+ }
+ highlightBlot(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : "plain";
+ if (((e = this.languages[e] ? e : "plain"), "plain" === e))
+ return (0, V.X)(t)
+ .split("\n")
+ .reduce(
+ (t, n, r) => (
+ 0 !== r && t.insert("\n", { [D.Ay.blotName]: e }),
+ t.insert(n)
+ ),
+ new (z())()
+ );
+ const n = this.quill.root.ownerDocument.createElement("div");
+ return (
+ n.classList.add(D.Ay.className),
+ (n.innerHTML = ((t, e, n) => {
+ if ("string" == typeof t.versionString) {
+ const r = t.versionString.split(".")[0];
+ if (parseInt(r, 10) >= 11)
+ return t.highlight(n, { language: e }).value;
+ }
+ return t.highlight(e, n).value;
+ })(this.options.hljs, e, t)),
+ (0, K.hV)(
+ this.quill.scroll,
+ n,
+ [
+ (t, e) => {
+ const n = W.value(t);
+ return n
+ ? e.compose(
+ new (z())().retain(e.length(), { [Z.blotName]: n })
+ )
+ : e;
+ },
+ ],
+ [
+ (t, n) =>
+ t.data
+ .split("\n")
+ .reduce(
+ (t, n, r) => (
+ 0 !== r && t.insert("\n", { [D.Ay.blotName]: e }),
+ t.insert(n)
+ ),
+ n
+ ),
+ ],
+ new WeakMap()
+ )
+ );
+ }
+ }
+ Q.DEFAULTS = {
+ hljs: window.hljs,
+ interval: 1e3,
+ languages: [
+ { key: "plain", label: "Plain" },
+ { key: "bash", label: "Bash" },
+ { key: "cpp", label: "C++" },
+ { key: "cs", label: "C#" },
+ { key: "css", label: "CSS" },
+ { key: "diff", label: "Diff" },
+ { key: "xml", label: "HTML/XML" },
+ { key: "java", label: "Java" },
+ { key: "javascript", label: "JavaScript" },
+ { key: "markdown", label: "Markdown" },
+ { key: "php", label: "PHP" },
+ { key: "python", label: "Python" },
+ { key: "ruby", label: "Ruby" },
+ { key: "sql", label: "SQL" },
+ ],
+ };
+ class J extends a.Ay {
+ static blotName = "table";
+ static tagName = "TD";
+ static create(t) {
+ const e = super.create();
+ return (
+ t
+ ? e.setAttribute("data-row", t)
+ : e.setAttribute("data-row", nt()),
+ e
+ );
+ }
+ static formats(t) {
+ if (t.hasAttribute("data-row")) return t.getAttribute("data-row");
+ }
+ cellOffset() {
+ return this.parent ? this.parent.children.indexOf(this) : -1;
+ }
+ format(t, e) {
+ t === J.blotName && e
+ ? this.domNode.setAttribute("data-row", e)
+ : super.format(t, e);
+ }
+ row() {
+ return this.parent;
+ }
+ rowOffset() {
+ return this.row() ? this.row().rowOffset() : -1;
+ }
+ table() {
+ return this.row() && this.row().table();
+ }
+ }
+ class Y extends f.A {
+ static blotName = "table-row";
+ static tagName = "TR";
+ checkMerge() {
+ if (super.checkMerge() && null != this.next.children.head) {
+ const t = this.children.head.formats(),
+ e = this.children.tail.formats(),
+ n = this.next.children.head.formats(),
+ r = this.next.children.tail.formats();
+ return (
+ t.table === e.table &&
+ t.table === n.table &&
+ t.table === r.table
+ );
+ }
+ return !1;
+ }
+ optimize(t) {
+ super.optimize(t),
+ this.children.forEach((t) => {
+ if (null == t.next) return;
+ const e = t.formats(),
+ n = t.next.formats();
+ if (e.table !== n.table) {
+ const e = this.splitAfter(t);
+ e && e.optimize(), this.prev && this.prev.optimize();
+ }
+ });
+ }
+ rowOffset() {
+ return this.parent ? this.parent.children.indexOf(this) : -1;
+ }
+ table() {
+ return this.parent && this.parent.parent;
+ }
+ }
+ class tt extends f.A {
+ static blotName = "table-body";
+ static tagName = "TBODY";
+ }
+ class et extends f.A {
+ static blotName = "table-container";
+ static tagName = "TABLE";
+ balanceCells() {
+ const t = this.descendants(Y),
+ e = t.reduce((t, e) => Math.max(e.children.length, t), 0);
+ t.forEach((t) => {
+ new Array(e - t.children.length).fill(0).forEach(() => {
+ let e;
+ null != t.children.head &&
+ (e = J.formats(t.children.head.domNode));
+ const n = this.scroll.create(J.blotName, e);
+ t.appendChild(n), n.optimize();
+ });
+ });
+ }
+ cells(t) {
+ return this.rows().map((e) => e.children.at(t));
+ }
+ deleteColumn(t) {
+ const [e] = this.descendant(tt);
+ null != e &&
+ null != e.children.head &&
+ e.children.forEach((e) => {
+ const n = e.children.at(t);
+ null != n && n.remove();
+ });
+ }
+ insertColumn(t) {
+ const [e] = this.descendant(tt);
+ null != e &&
+ null != e.children.head &&
+ e.children.forEach((e) => {
+ const n = e.children.at(t),
+ r = J.formats(e.children.head.domNode),
+ i = this.scroll.create(J.blotName, r);
+ e.insertBefore(i, n);
+ });
+ }
+ insertRow(t) {
+ const [e] = this.descendant(tt);
+ if (null == e || null == e.children.head) return;
+ const n = nt(),
+ r = this.scroll.create(Y.blotName);
+ e.children.head.children.forEach(() => {
+ const t = this.scroll.create(J.blotName, n);
+ r.appendChild(t);
+ });
+ const i = e.children.at(t);
+ e.insertBefore(r, i);
+ }
+ rows() {
+ const t = this.children.head;
+ return null == t ? [] : t.children.map((t) => t);
+ }
+ }
+ function nt() {
+ return `row-${Math.random().toString(36).slice(2, 6)}`;
+ }
+ (et.allowedChildren = [tt]),
+ (tt.requiredContainer = et),
+ (tt.allowedChildren = [Y]),
+ (Y.requiredContainer = tt),
+ (Y.allowedChildren = [J]),
+ (J.requiredContainer = Y);
+ class rt extends F.A {
+ static register() {
+ p.Ay.register(J),
+ p.Ay.register(Y),
+ p.Ay.register(tt),
+ p.Ay.register(et);
+ }
+ constructor() {
+ super(...arguments), this.listenBalanceCells();
+ }
+ balanceTables() {
+ this.quill.scroll.descendants(et).forEach((t) => {
+ t.balanceCells();
+ });
+ }
+ deleteColumn() {
+ const [t, , e] = this.getTable();
+ null != e &&
+ (t.deleteColumn(e.cellOffset()),
+ this.quill.update(p.Ay.sources.USER));
+ }
+ deleteRow() {
+ const [, t] = this.getTable();
+ null != t && (t.remove(), this.quill.update(p.Ay.sources.USER));
+ }
+ deleteTable() {
+ const [t] = this.getTable();
+ if (null == t) return;
+ const e = t.offset();
+ t.remove(),
+ this.quill.update(p.Ay.sources.USER),
+ this.quill.setSelection(e, p.Ay.sources.SILENT);
+ }
+ getTable() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : this.quill.getSelection();
+ if (null == t) return [null, null, null, -1];
+ const [e, n] = this.quill.getLine(t.index);
+ if (null == e || e.statics.blotName !== J.blotName)
+ return [null, null, null, -1];
+ const r = e.parent;
+ return [r.parent.parent, r, e, n];
+ }
+ insertColumn(t) {
+ const e = this.quill.getSelection();
+ if (!e) return;
+ const [n, r, i] = this.getTable(e);
+ if (null == i) return;
+ const s = i.cellOffset();
+ n.insertColumn(s + t), this.quill.update(p.Ay.sources.USER);
+ let o = r.rowOffset();
+ 0 === t && (o += 1),
+ this.quill.setSelection(
+ e.index + o,
+ e.length,
+ p.Ay.sources.SILENT
+ );
+ }
+ insertColumnLeft() {
+ this.insertColumn(0);
+ }
+ insertColumnRight() {
+ this.insertColumn(1);
+ }
+ insertRow(t) {
+ const e = this.quill.getSelection();
+ if (!e) return;
+ const [n, r, i] = this.getTable(e);
+ if (null == i) return;
+ const s = r.rowOffset();
+ n.insertRow(s + t),
+ this.quill.update(p.Ay.sources.USER),
+ t > 0
+ ? this.quill.setSelection(e, p.Ay.sources.SILENT)
+ : this.quill.setSelection(
+ e.index + r.children.length,
+ e.length,
+ p.Ay.sources.SILENT
+ );
+ }
+ insertRowAbove() {
+ this.insertRow(0);
+ }
+ insertRowBelow() {
+ this.insertRow(1);
+ }
+ insertTable(t, e) {
+ const n = this.quill.getSelection();
+ if (null == n) return;
+ const r = new Array(t).fill(0).reduce((t) => {
+ const n = new Array(e).fill("\n").join("");
+ return t.insert(n, { table: nt() });
+ }, new (z())().retain(n.index));
+ this.quill.updateContents(r, p.Ay.sources.USER),
+ this.quill.setSelection(n.index, p.Ay.sources.SILENT),
+ this.balanceTables();
+ }
+ listenBalanceCells() {
+ this.quill.on(p.Ay.events.SCROLL_OPTIMIZE, (t) => {
+ t.some(
+ (t) =>
+ !!["TD", "TR", "TBODY", "TABLE"].includes(t.target.tagName) &&
+ (this.quill.once(p.Ay.events.TEXT_CHANGE, (t, e, n) => {
+ n === p.Ay.sources.USER && this.balanceTables();
+ }),
+ !0)
+ );
+ });
+ }
+ }
+ var it = rt;
+ const st = (0, n(6078).A)("quill:toolbar");
+ class ot extends F.A {
+ constructor(t, e) {
+ if ((super(t, e), Array.isArray(this.options.container))) {
+ const e = document.createElement("div");
+ e.setAttribute("role", "toolbar"),
+ (function (t, e) {
+ Array.isArray(e[0]) || (e = [e]),
+ e.forEach((e) => {
+ const n = document.createElement("span");
+ n.classList.add("ql-formats"),
+ e.forEach((t) => {
+ if ("string" == typeof t) lt(n, t);
+ else {
+ const e = Object.keys(t)[0],
+ r = t[e];
+ Array.isArray(r)
+ ? (function (t, e, n) {
+ const r = document.createElement("select");
+ r.classList.add(`ql-${e}`),
+ n.forEach((t) => {
+ const e =
+ document.createElement("option");
+ !1 !== t
+ ? e.setAttribute("value", String(t))
+ : e.setAttribute(
+ "selected",
+ "selected"
+ ),
+ r.appendChild(e);
+ }),
+ t.appendChild(r);
+ })(n, e, r)
+ : lt(n, e, r);
+ }
+ }),
+ t.appendChild(n);
+ });
+ })(e, this.options.container),
+ t.container?.parentNode?.insertBefore(e, t.container),
+ (this.container = e);
+ } else
+ "string" == typeof this.options.container
+ ? (this.container = document.querySelector(
+ this.options.container
+ ))
+ : (this.container = this.options.container);
+ this.container instanceof HTMLElement
+ ? (this.container.classList.add("ql-toolbar"),
+ (this.controls = []),
+ (this.handlers = {}),
+ this.options.handlers &&
+ Object.keys(this.options.handlers).forEach((t) => {
+ const e = this.options.handlers?.[t];
+ e && this.addHandler(t, e);
+ }),
+ Array.from(
+ this.container.querySelectorAll("button, select")
+ ).forEach((t) => {
+ this.attach(t);
+ }),
+ this.quill.on(p.Ay.events.EDITOR_CHANGE, () => {
+ const [t] = this.quill.selection.getRange();
+ this.update(t);
+ }))
+ : st.error("Container required for toolbar", this.options);
+ }
+ addHandler(t, e) {
+ this.handlers[t] = e;
+ }
+ attach(t) {
+ let e = Array.from(t.classList).find((t) => 0 === t.indexOf("ql-"));
+ if (!e) return;
+ if (
+ ((e = e.slice(3)),
+ "BUTTON" === t.tagName && t.setAttribute("type", "button"),
+ null == this.handlers[e] && null == this.quill.scroll.query(e))
+ )
+ return void st.warn(
+ "ignoring attaching to nonexistent format",
+ e,
+ t
+ );
+ const n = "SELECT" === t.tagName ? "change" : "click";
+ t.addEventListener(n, (n) => {
+ let r;
+ if ("SELECT" === t.tagName) {
+ if (t.selectedIndex < 0) return;
+ const e = t.options[t.selectedIndex];
+ r = !e.hasAttribute("selected") && (e.value || !1);
+ } else
+ (r =
+ !t.classList.contains("ql-active") &&
+ (t.value || !t.hasAttribute("value"))),
+ n.preventDefault();
+ this.quill.focus();
+ const [i] = this.quill.selection.getRange();
+ if (null != this.handlers[e]) this.handlers[e].call(this, r);
+ else if (
+ this.quill.scroll.query(e).prototype instanceof s.EmbedBlot
+ ) {
+ if (((r = prompt(`Enter ${e}`)), !r)) return;
+ this.quill.updateContents(
+ new (z())()
+ .retain(i.index)
+ .delete(i.length)
+ .insert({ [e]: r }),
+ p.Ay.sources.USER
+ );
+ } else this.quill.format(e, r, p.Ay.sources.USER);
+ this.update(i);
+ }),
+ this.controls.push([e, t]);
+ }
+ update(t) {
+ const e = null == t ? {} : this.quill.getFormat(t);
+ this.controls.forEach((n) => {
+ const [r, i] = n;
+ if ("SELECT" === i.tagName) {
+ let n = null;
+ if (null == t) n = null;
+ else if (null == e[r]) n = i.querySelector("option[selected]");
+ else if (!Array.isArray(e[r])) {
+ let t = e[r];
+ "string" == typeof t && (t = t.replace(/"/g, '\\"')),
+ (n = i.querySelector(`option[value="${t}"]`));
+ }
+ null == n
+ ? ((i.value = ""), (i.selectedIndex = -1))
+ : (n.selected = !0);
+ } else if (null == t)
+ i.classList.remove("ql-active"),
+ i.setAttribute("aria-pressed", "false");
+ else if (i.hasAttribute("value")) {
+ const t = e[r],
+ n =
+ t === i.getAttribute("value") ||
+ (null != t && t.toString() === i.getAttribute("value")) ||
+ (null == t && !i.getAttribute("value"));
+ i.classList.toggle("ql-active", n),
+ i.setAttribute("aria-pressed", n.toString());
+ } else {
+ const t = null != e[r];
+ i.classList.toggle("ql-active", t),
+ i.setAttribute("aria-pressed", t.toString());
+ }
+ });
+ }
+ }
+ function lt(t, e, n) {
+ const r = document.createElement("button");
+ r.setAttribute("type", "button"),
+ r.classList.add(`ql-${e}`),
+ r.setAttribute("aria-pressed", "false"),
+ null != n
+ ? ((r.value = n), r.setAttribute("aria-label", `${e}: ${n}`))
+ : r.setAttribute("aria-label", e),
+ t.appendChild(r);
+ }
+ (ot.DEFAULTS = {}),
+ (ot.DEFAULTS = {
+ container: null,
+ handlers: {
+ clean() {
+ const t = this.quill.getSelection();
+ if (null != t)
+ if (0 === t.length) {
+ const t = this.quill.getFormat();
+ Object.keys(t).forEach((t) => {
+ null != this.quill.scroll.query(t, s.Scope.INLINE) &&
+ this.quill.format(t, !1, p.Ay.sources.USER);
+ });
+ } else
+ this.quill.removeFormat(
+ t.index,
+ t.length,
+ p.Ay.sources.USER
+ );
+ },
+ direction(t) {
+ const { align: e } = this.quill.getFormat();
+ "rtl" === t && null == e
+ ? this.quill.format("align", "right", p.Ay.sources.USER)
+ : t ||
+ "right" !== e ||
+ this.quill.format("align", !1, p.Ay.sources.USER),
+ this.quill.format("direction", t, p.Ay.sources.USER);
+ },
+ indent(t) {
+ const e = this.quill.getSelection(),
+ n = this.quill.getFormat(e),
+ r = parseInt(n.indent || 0, 10);
+ if ("+1" === t || "-1" === t) {
+ let e = "+1" === t ? 1 : -1;
+ "rtl" === n.direction && (e *= -1),
+ this.quill.format("indent", r + e, p.Ay.sources.USER);
+ }
+ },
+ link(t) {
+ !0 === t && (t = prompt("Enter link URL:")),
+ this.quill.format("link", t, p.Ay.sources.USER);
+ },
+ list(t) {
+ const e = this.quill.getSelection(),
+ n = this.quill.getFormat(e);
+ "check" === t
+ ? "checked" === n.list || "unchecked" === n.list
+ ? this.quill.format("list", !1, p.Ay.sources.USER)
+ : this.quill.format("list", "unchecked", p.Ay.sources.USER)
+ : this.quill.format("list", t, p.Ay.sources.USER);
+ },
+ },
+ });
+ const at =
+ '';
+ var ct = {
+ align: {
+ "": '',
+ center:
+ '',
+ right:
+ '',
+ justify:
+ '',
+ },
+ background:
+ '',
+ blockquote:
+ '',
+ bold: '',
+ clean:
+ '',
+ code: at,
+ "code-block": at,
+ color:
+ '',
+ direction: {
+ "": '',
+ rtl: '',
+ },
+ formula:
+ '',
+ header: {
+ 1: '',
+ 2: '',
+ 3: '',
+ 4: '',
+ 5: '',
+ 6: '',
+ },
+ italic:
+ '',
+ image:
+ '',
+ indent: {
+ "+1": '',
+ "-1": '',
+ },
+ link: '',
+ list: {
+ bullet:
+ '',
+ check:
+ '',
+ ordered:
+ '',
+ },
+ script: {
+ sub: '',
+ super:
+ '',
+ },
+ strike:
+ '',
+ table:
+ '',
+ underline:
+ '',
+ video:
+ '',
+ };
+ let ut = 0;
+ function ht(t, e) {
+ t.setAttribute(e, `${!("true" === t.getAttribute(e))}`);
+ }
+ var dt = class {
+ constructor(t) {
+ (this.select = t),
+ (this.container = document.createElement("span")),
+ this.buildPicker(),
+ (this.select.style.display = "none"),
+ this.select.parentNode.insertBefore(
+ this.container,
+ this.select
+ ),
+ this.label.addEventListener("mousedown", () => {
+ this.togglePicker();
+ }),
+ this.label.addEventListener("keydown", (t) => {
+ switch (t.key) {
+ case "Enter":
+ this.togglePicker();
+ break;
+ case "Escape":
+ this.escape(), t.preventDefault();
+ }
+ }),
+ this.select.addEventListener("change", this.update.bind(this));
+ }
+ togglePicker() {
+ this.container.classList.toggle("ql-expanded"),
+ ht(this.label, "aria-expanded"),
+ ht(this.options, "aria-hidden");
+ }
+ buildItem(t) {
+ const e = document.createElement("span");
+ (e.tabIndex = "0"),
+ e.setAttribute("role", "button"),
+ e.classList.add("ql-picker-item");
+ const n = t.getAttribute("value");
+ return (
+ n && e.setAttribute("data-value", n),
+ t.textContent && e.setAttribute("data-label", t.textContent),
+ e.addEventListener("click", () => {
+ this.selectItem(e, !0);
+ }),
+ e.addEventListener("keydown", (t) => {
+ switch (t.key) {
+ case "Enter":
+ this.selectItem(e, !0), t.preventDefault();
+ break;
+ case "Escape":
+ this.escape(), t.preventDefault();
+ }
+ }),
+ e
+ );
+ }
+ buildLabel() {
+ const t = document.createElement("span");
+ return (
+ t.classList.add("ql-picker-label"),
+ (t.innerHTML =
+ ''),
+ (t.tabIndex = "0"),
+ t.setAttribute("role", "button"),
+ t.setAttribute("aria-expanded", "false"),
+ this.container.appendChild(t),
+ t
+ );
+ }
+ buildOptions() {
+ const t = document.createElement("span");
+ t.classList.add("ql-picker-options"),
+ t.setAttribute("aria-hidden", "true"),
+ (t.tabIndex = "-1"),
+ (t.id = `ql-picker-options-${ut}`),
+ (ut += 1),
+ this.label.setAttribute("aria-controls", t.id),
+ (this.options = t),
+ Array.from(this.select.options).forEach((e) => {
+ const n = this.buildItem(e);
+ t.appendChild(n), !0 === e.selected && this.selectItem(n);
+ }),
+ this.container.appendChild(t);
+ }
+ buildPicker() {
+ Array.from(this.select.attributes).forEach((t) => {
+ this.container.setAttribute(t.name, t.value);
+ }),
+ this.container.classList.add("ql-picker"),
+ (this.label = this.buildLabel()),
+ this.buildOptions();
+ }
+ escape() {
+ this.close(), setTimeout(() => this.label.focus(), 1);
+ }
+ close() {
+ this.container.classList.remove("ql-expanded"),
+ this.label.setAttribute("aria-expanded", "false"),
+ this.options.setAttribute("aria-hidden", "true");
+ }
+ selectItem(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
+ const n = this.container.querySelector(".ql-selected");
+ t !== n &&
+ (null != n && n.classList.remove("ql-selected"),
+ null != t &&
+ (t.classList.add("ql-selected"),
+ (this.select.selectedIndex = Array.from(
+ t.parentNode.children
+ ).indexOf(t)),
+ t.hasAttribute("data-value")
+ ? this.label.setAttribute(
+ "data-value",
+ t.getAttribute("data-value")
+ )
+ : this.label.removeAttribute("data-value"),
+ t.hasAttribute("data-label")
+ ? this.label.setAttribute(
+ "data-label",
+ t.getAttribute("data-label")
+ )
+ : this.label.removeAttribute("data-label"),
+ e &&
+ (this.select.dispatchEvent(new Event("change")),
+ this.close())));
+ }
+ update() {
+ let t;
+ if (this.select.selectedIndex > -1) {
+ const e =
+ this.container.querySelector(".ql-picker-options").children[
+ this.select.selectedIndex
+ ];
+ (t = this.select.options[this.select.selectedIndex]),
+ this.selectItem(e);
+ } else this.selectItem(null);
+ const e =
+ null != t &&
+ t !== this.select.querySelector("option[selected]");
+ this.label.classList.toggle("ql-active", e);
+ }
+ },
+ ft = class extends dt {
+ constructor(t, e) {
+ super(t),
+ (this.label.innerHTML = e),
+ this.container.classList.add("ql-color-picker"),
+ Array.from(this.container.querySelectorAll(".ql-picker-item"))
+ .slice(0, 7)
+ .forEach((t) => {
+ t.classList.add("ql-primary");
+ });
+ }
+ buildItem(t) {
+ const e = super.buildItem(t);
+ return (
+ (e.style.backgroundColor = t.getAttribute("value") || ""), e
+ );
+ }
+ selectItem(t, e) {
+ super.selectItem(t, e);
+ const n = this.label.querySelector(".ql-color-label"),
+ r = (t && t.getAttribute("data-value")) || "";
+ n &&
+ ("line" === n.tagName
+ ? (n.style.stroke = r)
+ : (n.style.fill = r));
+ }
+ },
+ pt = class extends dt {
+ constructor(t, e) {
+ super(t),
+ this.container.classList.add("ql-icon-picker"),
+ Array.from(
+ this.container.querySelectorAll(".ql-picker-item")
+ ).forEach((t) => {
+ t.innerHTML = e[t.getAttribute("data-value") || ""];
+ }),
+ (this.defaultItem =
+ this.container.querySelector(".ql-selected")),
+ this.selectItem(this.defaultItem);
+ }
+ selectItem(t, e) {
+ super.selectItem(t, e);
+ const n = t || this.defaultItem;
+ if (null != n) {
+ if (this.label.innerHTML === n.innerHTML) return;
+ this.label.innerHTML = n.innerHTML;
+ }
+ }
+ },
+ gt = class {
+ constructor(t, e) {
+ (this.quill = t),
+ (this.boundsContainer = e || document.body),
+ (this.root = t.addContainer("ql-tooltip")),
+ (this.root.innerHTML = this.constructor.TEMPLATE),
+ ((t) => {
+ const { overflowY: e } = getComputedStyle(t, null);
+ return "visible" !== e && "clip" !== e;
+ })(this.quill.root) &&
+ this.quill.root.addEventListener("scroll", () => {
+ this.root.style.marginTop =
+ -1 * this.quill.root.scrollTop + "px";
+ }),
+ this.hide();
+ }
+ hide() {
+ this.root.classList.add("ql-hidden");
+ }
+ position(t) {
+ const e = t.left + t.width / 2 - this.root.offsetWidth / 2,
+ n = t.bottom + this.quill.root.scrollTop;
+ (this.root.style.left = `${e}px`),
+ (this.root.style.top = `${n}px`),
+ this.root.classList.remove("ql-flip");
+ const r = this.boundsContainer.getBoundingClientRect(),
+ i = this.root.getBoundingClientRect();
+ let s = 0;
+ if (
+ (i.right > r.right &&
+ ((s = r.right - i.right),
+ (this.root.style.left = `${e + s}px`)),
+ i.left < r.left &&
+ ((s = r.left - i.left),
+ (this.root.style.left = `${e + s}px`)),
+ i.bottom > r.bottom)
+ ) {
+ const e = i.bottom - i.top,
+ r = t.bottom - t.top + e;
+ (this.root.style.top = n - r + "px"),
+ this.root.classList.add("ql-flip");
+ }
+ return s;
+ }
+ show() {
+ this.root.classList.remove("ql-editing"),
+ this.root.classList.remove("ql-hidden");
+ }
+ },
+ mt = n(8347),
+ bt = n(5374),
+ yt = n(9609);
+ const vt = [!1, "center", "right", "justify"],
+ At = [
+ "#000000",
+ "#e60000",
+ "#ff9900",
+ "#ffff00",
+ "#008a00",
+ "#0066cc",
+ "#9933ff",
+ "#ffffff",
+ "#facccc",
+ "#ffebcc",
+ "#ffffcc",
+ "#cce8cc",
+ "#cce0f5",
+ "#ebd6ff",
+ "#bbbbbb",
+ "#f06666",
+ "#ffc266",
+ "#ffff66",
+ "#66b966",
+ "#66a3e0",
+ "#c285ff",
+ "#888888",
+ "#a10000",
+ "#b26b00",
+ "#b2b200",
+ "#006100",
+ "#0047b2",
+ "#6b24b2",
+ "#444444",
+ "#5c0000",
+ "#663d00",
+ "#666600",
+ "#003700",
+ "#002966",
+ "#3d1466",
+ ],
+ xt = [!1, "serif", "monospace"],
+ Nt = ["1", "2", "3", !1],
+ Et = ["small", !1, "large", "huge"];
+ class wt extends yt.A {
+ constructor(t, e) {
+ super(t, e);
+ const n = (e) => {
+ document.body.contains(t.root)
+ ? (null == this.tooltip ||
+ this.tooltip.root.contains(e.target) ||
+ document.activeElement === this.tooltip.textbox ||
+ this.quill.hasFocus() ||
+ this.tooltip.hide(),
+ null != this.pickers &&
+ this.pickers.forEach((t) => {
+ t.container.contains(e.target) || t.close();
+ }))
+ : document.body.removeEventListener("click", n);
+ };
+ t.emitter.listenDOM("click", document.body, n);
+ }
+ addModule(t) {
+ const e = super.addModule(t);
+ return "toolbar" === t && this.extendToolbar(e), e;
+ }
+ buildButtons(t, e) {
+ Array.from(t).forEach((t) => {
+ (t.getAttribute("class") || "").split(/\s+/).forEach((n) => {
+ if (n.startsWith("ql-") && ((n = n.slice(3)), null != e[n]))
+ if ("direction" === n) t.innerHTML = e[n][""] + e[n].rtl;
+ else if ("string" == typeof e[n]) t.innerHTML = e[n];
+ else {
+ const r = t.value || "";
+ null != r && e[n][r] && (t.innerHTML = e[n][r]);
+ }
+ });
+ });
+ }
+ buildPickers(t, e) {
+ (this.pickers = Array.from(t).map((t) => {
+ if (
+ t.classList.contains("ql-align") &&
+ (null == t.querySelector("option") && kt(t, vt),
+ "object" == typeof e.align)
+ )
+ return new pt(t, e.align);
+ if (
+ t.classList.contains("ql-background") ||
+ t.classList.contains("ql-color")
+ ) {
+ const n = t.classList.contains("ql-background")
+ ? "background"
+ : "color";
+ return (
+ null == t.querySelector("option") &&
+ kt(t, At, "background" === n ? "#ffffff" : "#000000"),
+ new ft(t, e[n])
+ );
+ }
+ return (
+ null == t.querySelector("option") &&
+ (t.classList.contains("ql-font")
+ ? kt(t, xt)
+ : t.classList.contains("ql-header")
+ ? kt(t, Nt)
+ : t.classList.contains("ql-size") && kt(t, Et)),
+ new dt(t)
+ );
+ })),
+ this.quill.on(bt.A.events.EDITOR_CHANGE, () => {
+ this.pickers.forEach((t) => {
+ t.update();
+ });
+ });
+ }
+ }
+ wt.DEFAULTS = (0, mt.A)({}, yt.A.DEFAULTS, {
+ modules: {
+ toolbar: {
+ handlers: {
+ formula() {
+ this.quill.theme.tooltip.edit("formula");
+ },
+ image() {
+ let t = this.container.querySelector(
+ "input.ql-image[type=file]"
+ );
+ null == t &&
+ ((t = document.createElement("input")),
+ t.setAttribute("type", "file"),
+ t.setAttribute(
+ "accept",
+ this.quill.uploader.options.mimetypes.join(", ")
+ ),
+ t.classList.add("ql-image"),
+ t.addEventListener("change", () => {
+ const e = this.quill.getSelection(!0);
+ this.quill.uploader.upload(e, t.files), (t.value = "");
+ }),
+ this.container.appendChild(t)),
+ t.click();
+ },
+ video() {
+ this.quill.theme.tooltip.edit("video");
+ },
+ },
+ },
+ },
+ });
+ class qt extends gt {
+ constructor(t, e) {
+ super(t, e),
+ (this.textbox = this.root.querySelector('input[type="text"]')),
+ this.listen();
+ }
+ listen() {
+ this.textbox.addEventListener("keydown", (t) => {
+ "Enter" === t.key
+ ? (this.save(), t.preventDefault())
+ : "Escape" === t.key && (this.cancel(), t.preventDefault());
+ });
+ }
+ cancel() {
+ this.hide(), this.restoreFocus();
+ }
+ edit() {
+ let t =
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : "link",
+ e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : null;
+ if (
+ (this.root.classList.remove("ql-hidden"),
+ this.root.classList.add("ql-editing"),
+ null == this.textbox)
+ )
+ return;
+ null != e
+ ? (this.textbox.value = e)
+ : t !== this.root.getAttribute("data-mode") &&
+ (this.textbox.value = "");
+ const n = this.quill.getBounds(this.quill.selection.savedRange);
+ null != n && this.position(n),
+ this.textbox.select(),
+ this.textbox.setAttribute(
+ "placeholder",
+ this.textbox.getAttribute(`data-${t}`) || ""
+ ),
+ this.root.setAttribute("data-mode", t);
+ }
+ restoreFocus() {
+ this.quill.focus({ preventScroll: !0 });
+ }
+ save() {
+ let { value: t } = this.textbox;
+ switch (this.root.getAttribute("data-mode")) {
+ case "link": {
+ const { scrollTop: e } = this.quill.root;
+ this.linkRange
+ ? (this.quill.formatText(
+ this.linkRange,
+ "link",
+ t,
+ bt.A.sources.USER
+ ),
+ delete this.linkRange)
+ : (this.restoreFocus(),
+ this.quill.format("link", t, bt.A.sources.USER)),
+ (this.quill.root.scrollTop = e);
+ break;
+ }
+ case "video":
+ t = (function (t) {
+ let e =
+ t.match(
+ /^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/
+ ) ||
+ t.match(
+ /^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/
+ );
+ return e
+ ? `${e[1] || "https"}://www.youtube.com/embed/${
+ e[2]
+ }?showinfo=0`
+ : (e = t.match(
+ /^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/
+ ))
+ ? `${e[1] || "https"}://player.vimeo.com/video/${e[2]}/`
+ : t;
+ })(t);
+ case "formula": {
+ if (!t) break;
+ const e = this.quill.getSelection(!0);
+ if (null != e) {
+ const n = e.index + e.length;
+ this.quill.insertEmbed(
+ n,
+ this.root.getAttribute("data-mode"),
+ t,
+ bt.A.sources.USER
+ ),
+ "formula" === this.root.getAttribute("data-mode") &&
+ this.quill.insertText(n + 1, " ", bt.A.sources.USER),
+ this.quill.setSelection(n + 2, bt.A.sources.USER);
+ }
+ break;
+ }
+ }
+ (this.textbox.value = ""), this.hide();
+ }
+ }
+ function kt(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
+ e.forEach((e) => {
+ const r = document.createElement("option");
+ e === n
+ ? r.setAttribute("selected", "selected")
+ : r.setAttribute("value", String(e)),
+ t.appendChild(r);
+ });
+ }
+ var _t = n(8298);
+ const Lt = [
+ ["bold", "italic", "link"],
+ [{ header: 1 }, { header: 2 }, "blockquote"],
+ ];
+ class St extends qt {
+ static TEMPLATE = [
+ '',
+ '",
+ ].join("");
+ constructor(t, e) {
+ super(t, e),
+ this.quill.on(bt.A.events.EDITOR_CHANGE, (t, e, n, r) => {
+ if (t === bt.A.events.SELECTION_CHANGE)
+ if (null != e && e.length > 0 && r === bt.A.sources.USER) {
+ this.show(),
+ (this.root.style.left = "0px"),
+ (this.root.style.width = ""),
+ (this.root.style.width = `${this.root.offsetWidth}px`);
+ const t = this.quill.getLines(e.index, e.length);
+ if (1 === t.length) {
+ const t = this.quill.getBounds(e);
+ null != t && this.position(t);
+ } else {
+ const n = t[t.length - 1],
+ r = this.quill.getIndex(n),
+ i = Math.min(n.length() - 1, e.index + e.length - r),
+ s = this.quill.getBounds(new _t.Q(r, i));
+ null != s && this.position(s);
+ }
+ } else
+ document.activeElement !== this.textbox &&
+ this.quill.hasFocus() &&
+ this.hide();
+ });
+ }
+ listen() {
+ super.listen(),
+ this.root
+ .querySelector(".ql-close")
+ .addEventListener("click", () => {
+ this.root.classList.remove("ql-editing");
+ }),
+ this.quill.on(bt.A.events.SCROLL_OPTIMIZE, () => {
+ setTimeout(() => {
+ if (this.root.classList.contains("ql-hidden")) return;
+ const t = this.quill.getSelection();
+ if (null != t) {
+ const e = this.quill.getBounds(t);
+ null != e && this.position(e);
+ }
+ }, 1);
+ });
+ }
+ cancel() {
+ this.show();
+ }
+ position(t) {
+ const e = super.position(t),
+ n = this.root.querySelector(".ql-tooltip-arrow");
+ return (
+ (n.style.marginLeft = ""),
+ 0 !== e &&
+ (n.style.marginLeft = -1 * e - n.offsetWidth / 2 + "px"),
+ e
+ );
+ }
+ }
+ class Ot extends wt {
+ constructor(t, e) {
+ null != e.modules.toolbar &&
+ null == e.modules.toolbar.container &&
+ (e.modules.toolbar.container = Lt),
+ super(t, e),
+ this.quill.container.classList.add("ql-bubble");
+ }
+ extendToolbar(t) {
+ (this.tooltip = new St(this.quill, this.options.bounds)),
+ null != t.container &&
+ (this.tooltip.root.appendChild(t.container),
+ this.buildButtons(t.container.querySelectorAll("button"), ct),
+ this.buildPickers(t.container.querySelectorAll("select"), ct));
+ }
+ }
+ Ot.DEFAULTS = (0, mt.A)({}, wt.DEFAULTS, {
+ modules: {
+ toolbar: {
+ handlers: {
+ link(t) {
+ t
+ ? this.quill.theme.tooltip.edit()
+ : this.quill.format("link", !1, p.Ay.sources.USER);
+ },
+ },
+ },
+ },
+ });
+ const Tt = [
+ [{ header: ["1", "2", "3", !1] }],
+ ["bold", "italic", "underline", "link"],
+ [{ list: "ordered" }, { list: "bullet" }],
+ ["clean"],
+ ];
+ class jt extends qt {
+ static TEMPLATE = [
+ '',
+ '',
+ '',
+ '',
+ ].join("");
+ preview = this.root.querySelector("a.ql-preview");
+ listen() {
+ super.listen(),
+ this.root
+ .querySelector("a.ql-action")
+ .addEventListener("click", (t) => {
+ this.root.classList.contains("ql-editing")
+ ? this.save()
+ : this.edit("link", this.preview.textContent),
+ t.preventDefault();
+ }),
+ this.root
+ .querySelector("a.ql-remove")
+ .addEventListener("click", (t) => {
+ if (null != this.linkRange) {
+ const t = this.linkRange;
+ this.restoreFocus(),
+ this.quill.formatText(t, "link", !1, bt.A.sources.USER),
+ delete this.linkRange;
+ }
+ t.preventDefault(), this.hide();
+ }),
+ this.quill.on(bt.A.events.SELECTION_CHANGE, (t, e, n) => {
+ if (null != t) {
+ if (0 === t.length && n === bt.A.sources.USER) {
+ const [e, n] = this.quill.scroll.descendant(w, t.index);
+ if (null != e) {
+ this.linkRange = new _t.Q(t.index - n, e.length());
+ const r = w.formats(e.domNode);
+ (this.preview.textContent = r),
+ this.preview.setAttribute("href", r),
+ this.show();
+ const i = this.quill.getBounds(this.linkRange);
+ return void (null != i && this.position(i));
+ }
+ } else delete this.linkRange;
+ this.hide();
+ }
+ });
+ }
+ show() {
+ super.show(), this.root.removeAttribute("data-mode");
+ }
+ }
+ class Ct extends wt {
+ constructor(t, e) {
+ null != e.modules.toolbar &&
+ null == e.modules.toolbar.container &&
+ (e.modules.toolbar.container = Tt),
+ super(t, e),
+ this.quill.container.classList.add("ql-snow");
+ }
+ extendToolbar(t) {
+ null != t.container &&
+ (t.container.classList.add("ql-snow"),
+ this.buildButtons(t.container.querySelectorAll("button"), ct),
+ this.buildPickers(t.container.querySelectorAll("select"), ct),
+ (this.tooltip = new jt(this.quill, this.options.bounds)),
+ t.container.querySelector(".ql-link") &&
+ this.quill.keyboard.addBinding(
+ { key: "k", shortKey: !0 },
+ (e, n) => {
+ t.handlers.link.call(t, !n.format.link);
+ }
+ ));
+ }
+ }
+ Ct.DEFAULTS = (0, mt.A)({}, wt.DEFAULTS, {
+ modules: {
+ toolbar: {
+ handlers: {
+ link(t) {
+ if (t) {
+ const t = this.quill.getSelection();
+ if (null == t || 0 === t.length) return;
+ let e = this.quill.getText(t);
+ /^\S+@\S+\.\S+$/.test(e) &&
+ 0 !== e.indexOf("mailto:") &&
+ (e = `mailto:${e}`);
+ const { tooltip: n } = this.quill.theme;
+ n.edit("link", e);
+ } else this.quill.format("link", !1, p.Ay.sources.USER);
+ },
+ },
+ },
+ },
+ });
+ var Rt = Ct;
+ t.default.register(
+ {
+ "attributors/attribute/direction": i.Mc,
+ "attributors/class/align": e.qh,
+ "attributors/class/background": b.l,
+ "attributors/class/color": y.g3,
+ "attributors/class/direction": i.sY,
+ "attributors/class/font": v.q,
+ "attributors/class/size": A.U,
+ "attributors/style/align": e.Hu,
+ "attributors/style/background": b.s,
+ "attributors/style/color": y.JM,
+ "attributors/style/direction": i.VL,
+ "attributors/style/font": v.z,
+ "attributors/style/size": A.r,
+ },
+ !0
+ ),
+ t.default.register(
+ {
+ "formats/align": e.qh,
+ "formats/direction": i.sY,
+ "formats/indent": l,
+ "formats/background": b.s,
+ "formats/color": y.JM,
+ "formats/font": v.q,
+ "formats/size": A.U,
+ "formats/blockquote": u,
+ "formats/code-block": D.Ay,
+ "formats/header": d,
+ "formats/list": m,
+ "formats/bold": E,
+ "formats/code": D.Cy,
+ "formats/italic": class extends E {
+ static blotName = "italic";
+ static tagName = ["EM", "I"];
+ },
+ "formats/link": w,
+ "formats/script": _,
+ "formats/strike": class extends E {
+ static blotName = "strike";
+ static tagName = ["S", "STRIKE"];
+ },
+ "formats/underline": S,
+ "formats/formula": j,
+ "formats/image": I,
+ "formats/video": U,
+ "modules/syntax": Q,
+ "modules/table": it,
+ "modules/toolbar": ot,
+ "themes/bubble": Ot,
+ "themes/snow": Rt,
+ "ui/icons": ct,
+ "ui/picker": dt,
+ "ui/icon-picker": pt,
+ "ui/color-picker": ft,
+ "ui/tooltip": gt,
+ },
+ !0
+ );
+ var It = t.default;
+ })(),
+ r.default
+ );
+ })();
+});
+//# sourceMappingURL=quill.js.map
diff --git a/app/assets/stylesheets/quill-snow.css b/app/assets/stylesheets/quill-snow.css
new file mode 100644
index 000000000..c95a80e23
--- /dev/null
+++ b/app/assets/stylesheets/quill-snow.css
@@ -0,0 +1,10 @@
+/*!
+ * Quill Editor v2.0.3
+ * https://quilljs.com
+ * Copyright (c) 2017-2024, Slab
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */
+.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container:not(.ql-disabled) li[data-list=checked] > .ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked] > .ql-ui{cursor:pointer}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor > *{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0}@supports (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;padding-left:1.5em;position:relative}.ql-editor li > .ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked] > .ql-ui,.ql-editor li[data-list=unchecked] > .ql-ui{color:#777}.ql-editor li[data-list=bullet] > .ql-ui:before{content:'\2022'}.ql-editor li[data-list=checked] > .ql-ui:before{content:'\2611'}.ql-editor li[data-list=unchecked] > .ql-ui:before{content:'\2610'}@supports (counter-set:none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered] > .ql-ui:before{content:counter(list-0, decimal) '. '}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1 > .ql-ui:before{content:counter(list-1, lower-alpha) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2 > .ql-ui:before{content:counter(list-2, lower-roman) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3 > .ql-ui:before{content:counter(list-3, decimal) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4 > .ql-ui:before{content:counter(list-4, lower-alpha) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5 > .ql-ui:before{content:counter(list-5, lower-roman) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6 > .ql-ui:before{content:counter(list-6, decimal) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7 > .ql-ui:before{content:counter(list-7, lower-alpha) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8 > .ql-ui:before{content:counter(list-8, lower-roman) '. '}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9 > .ql-ui:before{content:counter(list-9, decimal) '. '}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl > .ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor .ql-ui{position:absolute}.ql-editor.ql-blank::before{color:rgba(0,0,0,0.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:'';display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow{box-sizing:border-box}.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:'';display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor .ql-code-block-container{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor .ql-code-block-container{margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor .ql-code-block-container{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label::before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label::before,.ql-snow .ql-picker.ql-header .ql-picker-item::before{content:'Normal'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before{content:'Heading 1'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before{content:'Heading 2'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before{content:'Heading 3'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before{content:'Heading 4'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before{content:'Heading 5'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before{content:'Heading 6'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label::before,.ql-snow .ql-picker.ql-font .ql-picker-item::before{content:'Sans Serif'}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before{content:'Serif'}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before{content:'Monospace'}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label::before,.ql-snow .ql-picker.ql-size .ql-picker-item::before{content:'Normal'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before{content:'Small'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before{content:'Large'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before{content:'Huge'}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-code-block-container{position:relative}.ql-code-block-container .ql-ui{right:5px;top:5px}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:'Helvetica Neue','Helvetica','Arial',sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:rgba(0,0,0,0.2) 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label{border-color:#ccc}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow + .ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip::before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action::after{border-right:1px solid #ccc;content:'Edit';margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove::before{content:'Remove';margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action::after{border-right:0;content:'Save';padding-right:0}.ql-snow .ql-tooltip[data-mode=link]::before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]::before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]::before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}
+
+/*# sourceMappingURL=quill.snow.css.map*/
\ No newline at end of file
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 6259721a4..9fec0a999 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -149,6 +149,8 @@ def question_type_javascript_params(question)
"form.querySelector(\"##{question.ui_selector}\") && form.querySelector(\"##{question.ui_selector}\").dataset.rawValue"
elsif question.question_type == 'textarea'
"form.querySelector(\"##{question.ui_selector}\") && form.querySelector(\"##{question.ui_selector}\").value"
+ elsif question.question_type == 'rich_textarea'
+ "form.querySelector(\"##{question.ui_selector}\") && form.querySelector(\"##{question.ui_selector}\").value"
elsif question.question_type == 'radio_buttons'
"form.querySelector(\"input[name=#{question.ui_selector}]:checked\") && form.querySelector(\"input[name=#{question.ui_selector}]:checked\").value"
elsif question.question_type == 'star_radio_buttons'
diff --git a/app/models/form.rb b/app/models/form.rb
index e509630de..c624d1d57 100644
--- a/app/models/form.rb
+++ b/app/models/form.rb
@@ -264,6 +264,10 @@ def check_expired
end
end
+ def has_rich_text_questions?
+ questions.where(question_type: "rich_textarea").exists?
+ end
+
def self.archive_expired!
Form.where("expiration_date is not null and expiration_date < NOW() and aasm_state <> 'archived'").find_each do |form|
@event = Event.log_event(Event.names[:form_archived], 'Form', form.uuid, "Form #{form.name} archived at #{DateTime.now}", 1)
diff --git a/app/models/question.rb b/app/models/question.rb
index 56a30683d..12cb7780c 100644
--- a/app/models/question.rb
+++ b/app/models/question.rb
@@ -25,6 +25,7 @@ class Question < ApplicationRecord
'dropdown',
'combobox',
# Custom elements
+ 'rich_textarea',
'text_display',
'custom_text_display',
'states_dropdown',
diff --git a/app/views/admin/forms/example.html.erb b/app/views/admin/forms/example.html.erb
index bea84fc0e..663bdaffd 100644
--- a/app/views/admin/forms/example.html.erb
+++ b/app/views/admin/forms/example.html.erb
@@ -92,6 +92,10 @@
diff --git a/app/views/components/forms/edit/question_types/_rich_textarea.html.erb b/app/views/components/forms/edit/question_types/_rich_textarea.html.erb
new file mode 100644
index 000000000..bfff16c14
--- /dev/null
+++ b/app/views/components/forms/edit/question_types/_rich_textarea.html.erb
@@ -0,0 +1,25 @@
+<%
+ form_options = {
+ class: "usa-textarea",
+ required: question.is_required,
+ maxlength: question.max_length,
+ }
+
+ if question.help_text.present?
+ form_options.merge!({
+ "aria-describedby" => "question-id-#{question.id}-help-text"
+ })
+ end
+%>
+
+
diff --git a/app/views/components/forms/question_types/_rich_textarea.html.erb b/app/views/components/forms/question_types/_rich_textarea.html.erb
new file mode 100644
index 000000000..bfff16c14
--- /dev/null
+++ b/app/views/components/forms/question_types/_rich_textarea.html.erb
@@ -0,0 +1,25 @@
+<%
+ form_options = {
+ class: "usa-textarea",
+ required: question.is_required,
+ maxlength: question.max_length,
+ }
+
+ if question.help_text.present?
+ form_options.merge!({
+ "aria-describedby" => "question-id-#{question.id}-help-text"
+ })
+ end
+%>
+
+
diff --git a/app/views/components/widget/_fba.js.erb b/app/views/components/widget/_fba.js.erb
index 90eb47a2d..865902d96 100644
--- a/app/views/components/widget/_fba.js.erb
+++ b/app/views/components/widget/_fba.js.erb
@@ -27,6 +27,9 @@ function FBAform(d, N) {
},
init: function(options) {
this.javascriptIsEnabled();
+ <%- if form.has_rich_text_questions? %>
+ this.loadQuill();
+ <% end %>
this.options = options;
if (this.options.loadCSS) {
this._loadCss();
@@ -121,7 +124,8 @@ function FBAform(d, N) {
if (customButtonEl != null) {
customButtonEl.setAttribute('data-open-modal', '');
customButtonEl.setAttribute('aria-controls', this.modalId());
- customButtonEl.addEventListener('click', () => d.dispatchEvent(new Event('onTouchpointsModalOpen')));
+ customButtonEl.addEventListener('click', () => d.dispatchEvent(new CustomEvent('onTouchpointsModalOpen', { detail: { form: this } }
+ )));
}
}
}
@@ -387,7 +391,7 @@ function FBAform(d, N) {
this.buttonEl.setAttribute('aria-controls', this.modalId());
this.buttonEl.setAttribute('data-open-modal', '');
this.buttonEl.innerHTML = this.options.modalButtonText;
- this.buttonEl.addEventListener('click', () => d.dispatchEvent(new Event('onTouchpointsModalOpen')));
+ this.buttonEl.addEventListener('click', () => d.dispatchEvent(new CustomEvent('onTouchpointsModalOpen', { detail: { form: this } } )));
this.landmarkElement.appendChild(this.buttonEl);
d.body.appendChild(this.landmarkElement);
@@ -650,6 +654,45 @@ function FBAform(d, N) {
modalId: function() {
return `fba-modal-${this.options.formId}`;
},
+ modalElement: function() {
+ return document.getElementById(this.modalId());
+ },
+ <%- if form.has_rich_text_questions? %>
+ loadQuill: function() {
+ let script = document.createElement("script");
+ script.src = "<%= asset_path('quill.js') %>";
+ script.async = true;
+ script.defer = true;
+ document.head.appendChild(script);
+ setTimeout(this.initQuill, 1000); // TODO: consider using something else besides setTimeout
+ },
+ initQuill: function() {
+ // Loop all .quill form groups and initialize Quill
+ document.querySelectorAll(".quill").forEach((wrapper) => {
+ const editorContainer = wrapper.querySelector(".editor");
+ const hiddenInput = wrapper.querySelector("input[type=hidden]");
+
+ if (editorContainer && hiddenInput) {
+ const quill = new Quill(editorContainer, {
+ theme: 'snow',
+ placeholder: 'Write something...',
+ modules: {
+ toolbar: [
+ ['bold', 'italic', 'underline'],
+ [{ 'list': 'ordered'}, { 'list': 'bullet' }]
+ ]
+ }
+ });
+
+ // Sync to hidden field on change
+ quill.on('text-change', function () {
+ hiddenInput.value = quill.root.innerHTML;
+ });
+ }
+
+ });
+ },
+ <% end %>
<%- if form.enable_turnstile? %>
loadTurnstile: function() {
let script = document.createElement("script");
diff --git a/app/views/components/widget/_widget.css.erb b/app/views/components/widget/_widget.css.erb
index 155eeddd6..25a1b3f44 100644
--- a/app/views/components/widget/_widget.css.erb
+++ b/app/views/components/widget/_widget.css.erb
@@ -1076,3 +1076,7 @@
.fba-modal-dialog .touchpoints-form-wrapper .usa-form {
max-width: 100%;
}
+
+<%- if form.has_rich_text_questions? %>
+ <%= File.read(Rails.root.join("app/assets/stylesheets/quill-snow.css")) %>
+<% end %>
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 7878928ea..8b016ba7f 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -99,7 +99,13 @@
# Reference: https://github.com/ankane/secure_rails
config.action_controller.asset_host = ENV.fetch('TOUCHPOINTS_WEB_DOMAIN')
- config.action_mailer.delivery_method = :ses
+ config.action_mailer.delivery_method = :ses_v2
+ config.action_mailer.ses_v2_settings = {
+ region: ENV.fetch("AWS_SES_REGION"),
+ access_key_id: ENV.fetch("AWS_SES_ACCESS_KEY_ID", nil),
+ secret_access_key: ENV.fetch("AWS_SES_SECRET_ACCESS_KEY", nil)
+ }
+
config.action_mailer.perform_deliveries = true
config.active_record.encryption.primary_key = ENV.fetch("RAILS_ACTIVE_RECORD_PRIMARY_KEY")
diff --git a/config/environments/staging.rb b/config/environments/staging.rb
index 1c1ca0422..f1b5694e3 100644
--- a/config/environments/staging.rb
+++ b/config/environments/staging.rb
@@ -109,7 +109,12 @@
# Reference: https://github.com/ankane/secure_rails
config.action_controller.asset_host = ENV.fetch('TOUCHPOINTS_WEB_DOMAIN')
- config.action_mailer.delivery_method = :ses
+ config.action_mailer.delivery_method = :ses_v2
+ config.action_mailer.ses_v2_settings = {
+ region: ENV.fetch("AWS_SES_REGION"),
+ access_key_id: ENV.fetch("AWS_SES_ACCESS_KEY_ID", nil),
+ secret_access_key: ENV.fetch("AWS_SES_SECRET_ACCESS_KEY", nil)
+ }
config.action_mailer.perform_deliveries = true
config.active_record.encryption.primary_key = ENV.fetch("RAILS_ACTIVE_RECORD_PRIMARY_KEY")
diff --git a/config/initializers/amazon_ses.rb b/config/initializers/amazon_ses.rb
deleted file mode 100644
index c8eff3f27..000000000
--- a/config/initializers/amazon_ses.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# frozen_string_literal: true
-
-Aws::Rails.add_action_mailer_delivery_method(:ses,
- access_key_id: ENV.fetch('AWS_SES_ACCESS_KEY_ID', nil),
- secret_access_key: ENV.fetch('AWS_SES_SECRET_ACCESS_KEY', nil),
- region: ENV.fetch('AWS_SES_REGION', nil))
diff --git a/db/seeds/forms/kitchen_sink.rb b/db/seeds/forms/kitchen_sink.rb
index c2de49956..f53e82cf7 100644
--- a/db/seeds/forms/kitchen_sink.rb
+++ b/db/seeds/forms/kitchen_sink.rb
@@ -49,6 +49,16 @@ def self.kitchen_sink
answer_field: :answer_03,
is_required: false,
})
+ Question.create!({
+ form: custom_form,
+ form_section: text_elements_section,
+ text: "Rich Text Area",
+ question_type: "rich_textarea",
+ help_text: "This is help text for a rich textarea.",
+ position: 4,
+ answer_field: :answer_04,
+ is_required: false,
+ })
option_elements_section = custom_form.form_sections.create(title: "Option elements", position: 2)
radio_button_question = Question.create!({
@@ -57,8 +67,8 @@ def self.kitchen_sink
text: "Custom Question Radio Buttons",
question_type: "radio_buttons",
help_text: "This is help text for radio buttons.",
- position: 4,
- answer_field: :answer_04,
+ position: 5,
+ answer_field: :answer_05,
is_required: true,
})
QuestionOption.create!({
@@ -86,8 +96,8 @@ def self.kitchen_sink
text: "Custom Question Checkboxes",
question_type: "checkbox",
help_text: "This is help text for checkboxes.",
- position: 5,
- answer_field: :answer_05,
+ position: 6,
+ answer_field: :answer_06,
is_required: false,
})
QuestionOption.create!({
@@ -121,8 +131,8 @@ def self.kitchen_sink
text: "Custom Question Dropdown",
question_type: "dropdown",
help_text: "This is help text for a dropdown.",
- position: 6,
- answer_field: :answer_06,
+ position: 7,
+ answer_field: :answer_07,
is_required: false,
})
QuestionOption.create!({
@@ -150,7 +160,7 @@ def self.kitchen_sink
form_section: custom_elements_section,
text: 'Custom text that supports HTML goes here.
',
question_type: "text_display",
- position: 7,
+ position: 8,
answer_field: :answer_15,
is_required: false,
})
@@ -160,7 +170,7 @@ def self.kitchen_sink
form_section: custom_elements_section,
text: "Custom text display",
question_type: "custom_text_display",
- position: 8,
+ position: 9,
answer_field: :answer_16,
is_required: false
})
@@ -170,7 +180,7 @@ def self.kitchen_sink
form_section: custom_elements_section,
text: "Star radio buttons",
question_type: "star_radio_buttons",
- position: 9,
+ position: 10,
answer_field: :answer_17,
is_required: false
})