@hufe921/canvas-editor 0.9.113 → 0.9.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,7 +23,7 @@ var __publicField = (obj, key, value) => {
23
23
  return value;
24
24
  };
25
25
  var index = "";
26
- const version = "0.9.113";
26
+ const version = "0.9.115";
27
27
  var MaxHeightRatio;
28
28
  (function(MaxHeightRatio2) {
29
29
  MaxHeightRatio2["HALF"] = "half";
@@ -532,7 +532,8 @@ const EDITOR_ELEMENT_ZIP_ATTR = [
532
532
  "extension",
533
533
  "externalId",
534
534
  "areaId",
535
- "area"
535
+ "area",
536
+ "hide"
536
537
  ];
537
538
  const TABLE_TD_ZIP_ATTR = [
538
539
  "conceptId",
@@ -5299,6 +5300,7 @@ function convertTextNodeToElement(textNode) {
5299
5300
  function getElementListByHTML(htmlText, options) {
5300
5301
  const elementList = [];
5301
5302
  function findTextNode(dom) {
5303
+ var _a;
5302
5304
  if (dom.nodeType === 3) {
5303
5305
  const element = convertTextNodeToElement(dom);
5304
5306
  if (element) {
@@ -5423,6 +5425,7 @@ function getElementListByHTML(htmlText, options) {
5423
5425
  colgroup: [],
5424
5426
  trList: []
5425
5427
  };
5428
+ const colElements = tableElement.querySelectorAll("colgroup col");
5426
5429
  tableElement.querySelectorAll("tr").forEach((trElement) => {
5427
5430
  const trHeightStr = window.getComputedStyle(trElement).height.replace("px", "");
5428
5431
  const tr = {
@@ -5435,7 +5438,9 @@ function getElementListByHTML(htmlText, options) {
5435
5438
  const td = {
5436
5439
  colspan: tableCell.colSpan,
5437
5440
  rowspan: tableCell.rowSpan,
5438
- value: valueList
5441
+ value: valueList,
5442
+ verticalAlign: window.getComputedStyle(tdElement).verticalAlign,
5443
+ width: parseFloat(window.getComputedStyle(tdElement).width)
5439
5444
  };
5440
5445
  if (tableCell.style.backgroundColor) {
5441
5446
  td.backgroundColor = tableCell.style.backgroundColor;
@@ -5448,8 +5453,9 @@ function getElementListByHTML(htmlText, options) {
5448
5453
  const tdCount = element.trList[0].tdList.reduce((pre, cur) => pre + cur.colspan, 0);
5449
5454
  const width = Math.ceil(options.innerWidth / tdCount);
5450
5455
  for (let i = 0; i < tdCount; i++) {
5456
+ const colElement = (_a = colElements[i]) == null ? void 0 : _a.getAttribute("width");
5451
5457
  element.colgroup.push({
5452
- width
5458
+ width: colElement ? parseFloat(colElement) : width
5453
5459
  });
5454
5460
  }
5455
5461
  elementList.push(element);
@@ -5598,15 +5604,15 @@ function deleteSurroundElementList(elementList, pageNo) {
5598
5604
  }
5599
5605
  }
5600
5606
  function getNonHideElementIndex(elementList, index2, position = LocationPosition.BEFORE) {
5601
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
5602
- if (!((_b = (_a = elementList[index2]) == null ? void 0 : _a.control) == null ? void 0 : _b.hide) && !((_d = (_c = elementList[index2]) == null ? void 0 : _c.area) == null ? void 0 : _d.hide)) {
5607
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
5608
+ if (!((_a = elementList[index2]) == null ? void 0 : _a.hide) && !((_c = (_b = elementList[index2]) == null ? void 0 : _b.control) == null ? void 0 : _c.hide) && !((_e = (_d = elementList[index2]) == null ? void 0 : _d.area) == null ? void 0 : _e.hide)) {
5603
5609
  return index2;
5604
5610
  }
5605
5611
  let i = index2;
5606
5612
  if (position === LocationPosition.BEFORE) {
5607
5613
  i = index2 - 1;
5608
5614
  while (i > 0) {
5609
- if (!((_f = (_e = elementList[i]) == null ? void 0 : _e.control) == null ? void 0 : _f.hide) && !((_h = (_g = elementList[i]) == null ? void 0 : _g.area) == null ? void 0 : _h.hide)) {
5615
+ if (!((_f = elementList[i]) == null ? void 0 : _f.hide) && !((_h = (_g = elementList[i]) == null ? void 0 : _g.control) == null ? void 0 : _h.hide) && !((_j = (_i = elementList[i]) == null ? void 0 : _i.area) == null ? void 0 : _j.hide)) {
5610
5616
  return i;
5611
5617
  }
5612
5618
  i--;
@@ -5614,7 +5620,7 @@ function getNonHideElementIndex(elementList, index2, position = LocationPosition
5614
5620
  } else {
5615
5621
  i = index2 + 1;
5616
5622
  while (i < elementList.length) {
5617
- if (!((_j = (_i = elementList[i]) == null ? void 0 : _i.control) == null ? void 0 : _j.hide) && !((_l = (_k = elementList[i]) == null ? void 0 : _k.area) == null ? void 0 : _l.hide)) {
5623
+ if (!((_k = elementList[i]) == null ? void 0 : _k.hide) && !((_m = (_l = elementList[i]) == null ? void 0 : _l.control) == null ? void 0 : _m.hide) && !((_o = (_n = elementList[i]) == null ? void 0 : _n.area) == null ? void 0 : _o.hide)) {
5618
5624
  return i;
5619
5625
  }
5620
5626
  i++;
@@ -5888,7 +5894,7 @@ class CursorAgent {
5888
5894
  this.container.append(agentCursorDom);
5889
5895
  this.agentCursorDom = agentCursorDom;
5890
5896
  agentCursorDom.onkeydown = (evt) => this._keyDown(evt);
5891
- agentCursorDom.oninput = debounce(this._input.bind(this), 0);
5897
+ agentCursorDom.oninput = this._input.bind(this);
5892
5898
  agentCursorDom.onpaste = (evt) => this._paste(evt);
5893
5899
  agentCursorDom.addEventListener("compositionstart", this._compositionstart.bind(this));
5894
5900
  agentCursorDom.addEventListener("compositionend", this._compositionend.bind(this));
@@ -6776,12 +6782,21 @@ function mousemove(evt, host) {
6776
6782
  });
6777
6783
  if (!~positionResult.index)
6778
6784
  return;
6779
- const { index: index2, isTable, tdValueIndex, tdIndex, trIndex, tableId } = positionResult;
6785
+ const { index: index2, isTable, tdValueIndex, tdIndex, trIndex, tableId, trId, tdId } = positionResult;
6780
6786
  const { index: startIndex, isTable: startIsTable, tdIndex: startTdIndex, trIndex: startTrIndex, tableId: startTableId } = host.mouseDownStartPosition;
6781
6787
  const endIndex = isTable ? tdValueIndex : index2;
6782
6788
  const rangeManager = draw.getRange();
6783
6789
  if (isTable && startIsTable && (tdIndex !== startTdIndex || trIndex !== startTrIndex)) {
6784
6790
  rangeManager.setRange(endIndex, endIndex, tableId, startTdIndex, tdIndex, startTrIndex, trIndex);
6791
+ position.setPositionContext({
6792
+ isTable,
6793
+ index: index2,
6794
+ trIndex,
6795
+ tdIndex,
6796
+ tdId,
6797
+ trId,
6798
+ tableId
6799
+ });
6785
6800
  } else {
6786
6801
  let end = ~endIndex ? endIndex : 0;
6787
6802
  if ((startIsTable || isTable) && startTableId !== tableId)
@@ -6806,31 +6821,54 @@ function mousemove(evt, host) {
6806
6821
  isCompute: false
6807
6822
  });
6808
6823
  }
6809
- function backspace(evt, host) {
6810
- var _a, _b;
6824
+ function backspaceHideElement(host) {
6825
+ var _a, _b, _c, _d;
6811
6826
  const draw = host.getDraw();
6812
- if (draw.isReadonly())
6813
- return;
6814
6827
  const rangeManager = draw.getRange();
6815
- if (!rangeManager.getIsCanInput())
6828
+ const range = rangeManager.getRange();
6829
+ const elementList = draw.getElementList();
6830
+ const element = elementList[range.startIndex];
6831
+ if (!element.hide && !((_a = element.control) == null ? void 0 : _a.hide) && !((_b = element.area) == null ? void 0 : _b.hide))
6816
6832
  return;
6817
- const control = draw.getControl();
6818
- const position = draw.getPosition();
6819
- if (rangeManager.getIsCollapsed()) {
6820
- const range = rangeManager.getRange();
6821
- const elementList = draw.getElementList();
6822
- const element = elementList[range.startIndex];
6823
- if (((_a = element.control) == null ? void 0 : _a.hide) || ((_b = element.area) == null ? void 0 : _b.hide)) {
6824
- const newIndex = control.removeControl(range.startIndex);
6833
+ let index2 = range.startIndex;
6834
+ while (index2 > 0) {
6835
+ const element2 = elementList[index2];
6836
+ let newIndex = null;
6837
+ if (element2.controlId) {
6838
+ newIndex = draw.getControl().removeControl(index2);
6839
+ if (newIndex !== null) {
6840
+ index2 = newIndex;
6841
+ }
6842
+ } else {
6843
+ draw.spliceElementList(elementList, index2, 1);
6844
+ newIndex = index2 - 1;
6845
+ index2--;
6846
+ }
6847
+ const newElement = elementList[newIndex];
6848
+ if (!newElement || !newElement.hide && !((_c = newElement.control) == null ? void 0 : _c.hide) && !((_d = newElement.area) == null ? void 0 : _d.hide)) {
6825
6849
  if (newIndex) {
6826
6850
  range.startIndex = newIndex;
6827
6851
  range.endIndex = newIndex;
6828
6852
  rangeManager.replaceRange(range);
6853
+ const position = draw.getPosition();
6829
6854
  const positionList = position.getPositionList();
6830
6855
  position.setCursorPosition(positionList[newIndex]);
6831
6856
  }
6857
+ break;
6832
6858
  }
6833
6859
  }
6860
+ }
6861
+ function backspace(evt, host) {
6862
+ const draw = host.getDraw();
6863
+ if (draw.isReadonly())
6864
+ return;
6865
+ const rangeManager = draw.getRange();
6866
+ if (!rangeManager.getIsCanInput())
6867
+ return;
6868
+ if (rangeManager.getIsCollapsed()) {
6869
+ backspaceHideElement(host);
6870
+ }
6871
+ const control = draw.getControl();
6834
6872
  const { startIndex, endIndex, isCrossRowCol } = rangeManager.getRange();
6835
6873
  let curIndex;
6836
6874
  if (isCrossRowCol) {
@@ -6855,7 +6893,7 @@ function backspace(evt, host) {
6855
6893
  control.emitControlContentChange();
6856
6894
  }
6857
6895
  } else {
6858
- const cursorPosition = position.getCursorPosition();
6896
+ const cursorPosition = draw.getPosition().getCursorPosition();
6859
6897
  if (!cursorPosition)
6860
6898
  return;
6861
6899
  const { index: index2 } = cursorPosition;
@@ -6902,8 +6940,34 @@ function backspace(evt, host) {
6902
6940
  });
6903
6941
  }
6904
6942
  }
6943
+ function deleteHideElement(host) {
6944
+ var _a, _b, _c, _d;
6945
+ const draw = host.getDraw();
6946
+ const rangeManager = draw.getRange();
6947
+ const range = rangeManager.getRange();
6948
+ const elementList = draw.getElementList();
6949
+ const nextElement = elementList[range.startIndex + 1];
6950
+ if (!nextElement.hide && !((_a = nextElement.control) == null ? void 0 : _a.hide) && !((_b = nextElement.area) == null ? void 0 : _b.hide)) {
6951
+ return;
6952
+ }
6953
+ const index2 = range.startIndex + 1;
6954
+ while (index2 < elementList.length) {
6955
+ const element = elementList[index2];
6956
+ let newIndex = null;
6957
+ if (element.controlId) {
6958
+ newIndex = draw.getControl().removeControl(index2);
6959
+ } else {
6960
+ draw.spliceElementList(elementList, index2, 1);
6961
+ newIndex = index2;
6962
+ }
6963
+ const newElement = elementList[newIndex];
6964
+ if (!newElement || !newElement.hide && !((_c = newElement.control) == null ? void 0 : _c.hide) && !((_d = newElement.area) == null ? void 0 : _d.hide)) {
6965
+ break;
6966
+ }
6967
+ }
6968
+ }
6905
6969
  function del(evt, host) {
6906
- var _a, _b, _c;
6970
+ var _a;
6907
6971
  const draw = host.getDraw();
6908
6972
  if (draw.isReadonly())
6909
6973
  return;
@@ -6914,15 +6978,7 @@ function del(evt, host) {
6914
6978
  const elementList = draw.getElementList();
6915
6979
  const control = draw.getControl();
6916
6980
  if (rangeManager.getIsCollapsed()) {
6917
- const nextElement = elementList[startIndex + 1];
6918
- if (((_a = nextElement == null ? void 0 : nextElement.control) == null ? void 0 : _a.hide) || ((_b = nextElement == null ? void 0 : nextElement.area) == null ? void 0 : _b.hide)) {
6919
- const newIndex = control.removeControl(startIndex + 1);
6920
- if (newIndex) {
6921
- const position = draw.getPosition();
6922
- const positionList = position.getPositionList();
6923
- position.setCursorPosition(positionList[newIndex]);
6924
- }
6925
- }
6981
+ deleteHideElement(host);
6926
6982
  }
6927
6983
  let curIndex;
6928
6984
  if (isCrossRowCol) {
@@ -6946,7 +7002,7 @@ function del(evt, host) {
6946
7002
  if (curIndex) {
6947
7003
  control.emitControlContentChange();
6948
7004
  }
6949
- } else if ((_c = elementList[endIndex + 1]) == null ? void 0 : _c.controlId) {
7005
+ } else if ((_a = elementList[endIndex + 1]) == null ? void 0 : _a.controlId) {
6950
7006
  curIndex = control.removeControl(endIndex + 1);
6951
7007
  } else {
6952
7008
  const position = draw.getPosition();
@@ -8120,11 +8176,9 @@ function compositionend(host, evt) {
8120
8176
  isSubmitHistory: false
8121
8177
  });
8122
8178
  } else {
8123
- setTimeout(() => {
8124
- if (host.compositionInfo) {
8125
- input(evt.data, host);
8126
- }
8127
- }, 1);
8179
+ if (host.compositionInfo) {
8180
+ input(evt.data, host);
8181
+ }
8128
8182
  }
8129
8183
  const cursor = draw.getCursor();
8130
8184
  cursor.clearAgentDomValue();
@@ -8584,7 +8638,7 @@ class Position {
8584
8638
  for (let j = 0; j < curRow.elementList.length; j++) {
8585
8639
  const element = curRow.elementList[j];
8586
8640
  const metrics = element.metrics;
8587
- const offsetY = element.imgDisplay !== ImageDisplay.INLINE && element.type === ElementType.IMAGE || element.type === ElementType.LATEX ? curRow.ascent - metrics.height : curRow.ascent;
8641
+ const offsetY = !element.hide && (element.imgDisplay !== ImageDisplay.INLINE && element.type === ElementType.IMAGE || element.type === ElementType.LATEX) ? curRow.ascent - metrics.height : curRow.ascent;
8588
8642
  if (element.left) {
8589
8643
  x += element.left;
8590
8644
  }
@@ -8635,7 +8689,7 @@ class Position {
8635
8689
  positionList.push(positionItem);
8636
8690
  index2++;
8637
8691
  x += metrics.width;
8638
- if (element.type === ElementType.TABLE) {
8692
+ if (element.type === ElementType.TABLE && !element.hide) {
8639
8693
  const tdPaddingWidth = tdPadding[1] + tdPadding[3];
8640
8694
  const tdPaddingHeight = tdPadding[0] + tdPadding[2];
8641
8695
  for (let t = 0; t < element.trList.length; t++) {
@@ -9071,6 +9125,7 @@ class Position {
9071
9125
  }
9072
9126
  setSurroundPosition(payload) {
9073
9127
  var _a;
9128
+ const { scale } = this.options;
9074
9129
  const { pageNo, row, rowElement, rowElementRect, surroundElementList, availableWidth } = payload;
9075
9130
  let x = rowElementRect.x;
9076
9131
  let rowIncreaseWidth = 0;
@@ -9081,8 +9136,10 @@ class Position {
9081
9136
  if (floatPosition.pageNo !== pageNo)
9082
9137
  continue;
9083
9138
  const surroundRect = __spreadProps(__spreadValues({}, floatPosition), {
9084
- width: surroundElement.width,
9085
- height: surroundElement.height
9139
+ x: floatPosition.x * scale,
9140
+ y: floatPosition.y * scale,
9141
+ width: surroundElement.width * scale,
9142
+ height: surroundElement.height * scale
9086
9143
  });
9087
9144
  if (isRectIntersect(rowElementRect, surroundRect)) {
9088
9145
  row.isSurround = true;
@@ -9963,7 +10020,7 @@ class Search {
9963
10020
  return;
9964
10021
  const text = elementList.map((e) => {
9965
10022
  var _a, _b;
9966
- return !e.type || TEXTLIKE_ELEMENT_TYPE.includes(e.type) && e.controlComponent !== ControlComponent.CHECKBOX && !((_a = e.control) == null ? void 0 : _a.hide) && !((_b = e.area) == null ? void 0 : _b.hide) ? e.value : ZERO;
10023
+ return !e.type || TEXTLIKE_ELEMENT_TYPE.includes(e.type) && e.controlComponent !== ControlComponent.CHECKBOX && !e.hide && !((_a = e.control) == null ? void 0 : _a.hide) && !((_b = e.area) == null ? void 0 : _b.hide) ? e.value : ZERO;
9967
10024
  }).filter(Boolean).join("").toLocaleLowerCase();
9968
10025
  const matchStartIndexList = [];
9969
10026
  let index2 = text.indexOf(payload2);
@@ -10060,7 +10117,7 @@ class Search {
10060
10117
  const isReadonly = this.draw.isReadonly();
10061
10118
  if (isReadonly)
10062
10119
  return;
10063
- if (!payload || new RegExp(`${ZERO}`, "g").test(payload))
10120
+ if (payload === void 0 || payload === null)
10064
10121
  return;
10065
10122
  let matchList = this.getSearchMatchList();
10066
10123
  const replaceIndex = option == null ? void 0 : option.index;
@@ -10100,6 +10157,14 @@ class Search {
10100
10157
  if (!isDesignMode && (((_a = tableElement == null ? void 0 : tableElement.control) == null ? void 0 : _a.deletable) === false || ((_b = tableElement == null ? void 0 : tableElement.title) == null ? void 0 : _b.deletable) === false)) {
10101
10158
  continue;
10102
10159
  }
10160
+ if (payload === "") {
10161
+ this.draw.spliceElementList(tableElementList, curIndex, 1);
10162
+ tableDiffCount--;
10163
+ if (!~firstMatchIndex) {
10164
+ firstMatchIndex = m;
10165
+ }
10166
+ continue;
10167
+ }
10103
10168
  if (curGroupId === match.groupId) {
10104
10169
  this.draw.spliceElementList(tableElementList, curIndex, 1);
10105
10170
  tableDiffCount--;
@@ -10127,6 +10192,14 @@ class Search {
10127
10192
  if (!isDesignMode && (((_c = element == null ? void 0 : element.control) == null ? void 0 : _c.deletable) === false || ((_d = element == null ? void 0 : element.title) == null ? void 0 : _d.deletable) === false) || element.type === ElementType.CONTROL && element.controlComponent !== ControlComponent.VALUE) {
10128
10193
  continue;
10129
10194
  }
10195
+ if (payload === "") {
10196
+ this.draw.spliceElementList(elementList, curIndex, 1);
10197
+ pageDiffCount--;
10198
+ if (!~firstMatchIndex) {
10199
+ firstMatchIndex = m;
10200
+ }
10201
+ continue;
10202
+ }
10130
10203
  if (!~firstMatchIndex) {
10131
10204
  firstMatchIndex = m;
10132
10205
  }
@@ -13680,7 +13753,7 @@ class Control {
13680
13753
  } else {
13681
13754
  element = elementList[index2];
13682
13755
  }
13683
- if (((_a = element.control) == null ? void 0 : _a.hide) || ((_b = element.area) == null ? void 0 : _b.hide)) {
13756
+ if (element.hide || ((_a = element.control) == null ? void 0 : _a.hide) || ((_b = element.area) == null ? void 0 : _b.hide)) {
13684
13757
  const nonHideIndex = getNonHideElementIndex(elementList, newIndex);
13685
13758
  return {
13686
13759
  newIndex: nonHideIndex,
@@ -13738,7 +13811,7 @@ class Control {
13738
13811
  var _a, _b;
13739
13812
  const elementList = context.elementList || this.getElementList();
13740
13813
  const startElement = elementList[startIndex];
13741
- if (!this.draw.isDesignMode() && !((_a = startElement == null ? void 0 : startElement.control) == null ? void 0 : _a.hide) && !((_b = startElement == null ? void 0 : startElement.area) == null ? void 0 : _b.hide)) {
13814
+ if (!this.draw.isDesignMode() && !(startElement == null ? void 0 : startElement.hide) && !((_a = startElement == null ? void 0 : startElement.control) == null ? void 0 : _a.hide) && !((_b = startElement == null ? void 0 : startElement.area) == null ? void 0 : _b.hide)) {
13742
13815
  const { deletable = true } = startElement.control;
13743
13816
  if (!deletable)
13744
13817
  return null;
@@ -14702,7 +14775,7 @@ function WorkerWrapper$3() {
14702
14775
  objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
14703
14776
  }
14704
14777
  }
14705
- const encodedJs$2 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJBRElPPSJyYWRpbyIsdC5MQVRFWD0ibGF0ZXgiLHQuVEFCPSJ0YWIiLHQuREFURT0iZGF0ZSIsdC5CTE9DSz0iYmxvY2siLHQuVElUTEU9InRpdGxlIix0LkFSRUE9ImFyZWEiLHQuTElTVD0ibGlzdCJ9KShhfHwoYT17fSkpO3ZhciBsOyhmdW5jdGlvbih0KXt0LkZJUlNUPSJmaXJzdCIsdC5TRUNPTkQ9InNlY29uZCIsdC5USElSRD0idGhpcmQiLHQuRk9VUlRIPSJmb3VydGgiLHQuRklGVEg9ImZpZnRoIix0LlNJWFRIPSJzaXh0aCJ9KShsfHwobD17fSkpO2NvbnN0IGc9e1tsLkZJUlNUXToxLFtsLlNFQ09ORF06MixbbC5USElSRF06MyxbbC5GT1VSVEhdOjQsW2wuRklGVEhdOjUsW2wuU0lYVEhdOjZ9LEw9W2EuVEVYVCxhLkhZUEVSTElOSyxhLlNVQlNDUklQVCxhLlNVUEVSU0NSSVBULGEuQ09OVFJPTCxhLkRBVEVdLGQ9Ilx1MjAwQiI7ZnVuY3Rpb24gZih0KXtyZXR1cm4hdC50eXBlfHxMLmluY2x1ZGVzKHQudHlwZSl9ZnVuY3Rpb24gQyh0KXtjb25zdHtlbGVtZW50TGlzdDpuLHBvc2l0aW9uTGlzdDp2fT10LEk9W107bGV0IGk9MDtmb3IoO2k8bi5sZW5ndGg7KXtjb25zdCBzPW5baV07aWYocy50aXRsZUlkKXtjb25zdCBvPXMudGl0bGVJZCxlPXMubGV2ZWwsYz17dHlwZTphLlRJVExFLHZhbHVlOiIiLGxldmVsOmUsdGl0bGVJZDpvLHBhZ2VObzp2W2ldLnBhZ2VOb30scj1bXTtmb3IoO2k8bi5sZW5ndGg7KXtjb25zdCB1PW5baV07aWYobyE9PXUudGl0bGVJZCl7aS0tO2JyZWFrfXIucHVzaCh1KSxpKyt9Yy52YWx1ZT1yLmZpbHRlcih1PT5mKHUpKS5tYXAodT0+dS52YWx1ZSkuam9pbigiIikucmVwbGFjZShuZXcgUmVnRXhwKGQsImciKSwiIiksSS5wdXNoKGMpfWkrK31pZighSS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgaD0ocyxvKT0+e2NvbnN0IGU9by5zdWJDYXRhbG9nW28uc3ViQ2F0YWxvZy5sZW5ndGgtMV0sYz1nW2U9PW51bGw/dm9pZCAwOmUubGV2ZWxdLHI9Z1tzLmxldmVsXTtlJiZyPmM/aChzLGUpOm8uc3ViQ2F0YWxvZy5wdXNoKHtpZDpzLnRpdGxlSWQsbmFtZTpzLnZhbHVlLGxldmVsOnMubGV2ZWwscGFnZU5vOnMucGFnZU5vLHN1YkNhdGFsb2c6W119KX0sUj1bXTtmb3IobGV0IHM9MDtzPEkubGVuZ3RoO3MrKyl7Y29uc3Qgbz1JW3NdLGU9UltSLmxlbmd0aC0xXSxjPWdbZT09bnVsbD92b2lkIDA6ZS5sZXZlbF0scj1nW28ubGV2ZWxdO2UmJnI+Yz9oKG8sZSk6Ui5wdXNoKHtpZDpvLnRpdGxlSWQsbmFtZTpvLnZhbHVlLGxldmVsOm8ubGV2ZWwscGFnZU5vOm8ucGFnZU5vLHN1YkNhdGFsb2c6W119KX1yZXR1cm4gUn1vbm1lc3NhZ2U9dD0+e2NvbnN0IG49dC5kYXRhLHY9QyhuKTtwb3N0TWVzc2FnZSh2KX19KSgpO30pKCk7Cg==";
14778
+ const encodedJs$2 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJBRElPPSJyYWRpbyIsdC5MQVRFWD0ibGF0ZXgiLHQuVEFCPSJ0YWIiLHQuREFURT0iZGF0ZSIsdC5CTE9DSz0iYmxvY2siLHQuVElUTEU9InRpdGxlIix0LkFSRUE9ImFyZWEiLHQuTElTVD0ibGlzdCJ9KShhfHwoYT17fSkpO3ZhciBjOyhmdW5jdGlvbih0KXt0LkZJUlNUPSJmaXJzdCIsdC5TRUNPTkQ9InNlY29uZCIsdC5USElSRD0idGhpcmQiLHQuRk9VUlRIPSJmb3VydGgiLHQuRklGVEg9ImZpZnRoIix0LlNJWFRIPSJzaXh0aCJ9KShjfHwoYz17fSkpO2NvbnN0IFI9e1tjLkZJUlNUXToxLFtjLlNFQ09ORF06MixbYy5USElSRF06MyxbYy5GT1VSVEhdOjQsW2MuRklGVEhdOjUsW2MuU0lYVEhdOjZ9LEM9W2EuVEVYVCxhLkhZUEVSTElOSyxhLlNVQlNDUklQVCxhLlNVUEVSU0NSSVBULGEuQ09OVFJPTCxhLkRBVEVdLFM9Ilx1MjAwQiI7ZnVuY3Rpb24gQSh0KXtyZXR1cm4hdC50eXBlfHxDLmluY2x1ZGVzKHQudHlwZSl9ZnVuY3Rpb24gTih0KXt2YXIgRTtjb25zdHtlbGVtZW50TGlzdDpoLHBvc2l0aW9uTGlzdDp2fT10LGQ9W107bGV0IGc9MDtmb3IoO2c8aC5sZW5ndGg7KXtjb25zdCBzPWhbZ10sbD0oZSxvLG4pPT57Y29uc3QgST1lLnRpdGxlSWQsVD1lLmxldmVsLHI9e3R5cGU6YS5USVRMRSx2YWx1ZToiIixsZXZlbDpULHRpdGxlSWQ6SSxwYWdlTm86dltnXS5wYWdlTm99LGk9W107Zm9yKDtuPG8ubGVuZ3RoOyl7Y29uc3QgdT1vW25dO2lmKEkhPT11LnRpdGxlSWQpe24tLTticmVha31pLnB1c2godSksbisrfXJldHVybiByLnZhbHVlPWkuZmlsdGVyKHU9PkEodSkpLm1hcCh1PT51LnZhbHVlKS5qb2luKCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoUywiZyIpLCIiKSx7cG9zaXRpb246bix0aXRsZUVsZW1lbnQ6cn19O2lmKHMudGl0bGVJZCl7Y29uc3R7cG9zaXRpb246ZSx0aXRsZUVsZW1lbnQ6b309bChzLGgsZyk7Zz1lLGQucHVzaChvKX1pZihzLnR5cGU9PT1hLlRBQkxFKXtjb25zdCBlPXMudHJMaXN0O2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtjb25zdCBuPWVbb107Zm9yKGxldCBJPTA7STxuLnRkTGlzdC5sZW5ndGg7SSsrKXtjb25zdCByPW4udGRMaXN0W0ldLnZhbHVlO2lmKHIubGVuZ3RoPjEpe2xldCBpPTE7Zm9yKDtpPHIubGVuZ3RoOyl7aWYoKEU9cltpXSk9PW51bGw/dm9pZCAwOkUudGl0bGVJZCl7Y29uc3R7dGl0bGVFbGVtZW50OnUscG9zaXRpb246T309bChyW2ldLHIsaSk7ZC5wdXNoKHUpLGk9T31pKyt9fX19fWcrK31pZighZC5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgTD0ocyxsKT0+e2NvbnN0IGU9bC5zdWJDYXRhbG9nW2wuc3ViQ2F0YWxvZy5sZW5ndGgtMV0sbz1SW2U9PW51bGw/dm9pZCAwOmUubGV2ZWxdLG49UltzLmxldmVsXTtlJiZuPm8/TChzLGUpOmwuc3ViQ2F0YWxvZy5wdXNoKHtpZDpzLnRpdGxlSWQsbmFtZTpzLnZhbHVlLGxldmVsOnMubGV2ZWwscGFnZU5vOnMucGFnZU5vLHN1YkNhdGFsb2c6W119KX0sZj1bXTtmb3IobGV0IHM9MDtzPGQubGVuZ3RoO3MrKyl7Y29uc3QgbD1kW3NdLGU9ZltmLmxlbmd0aC0xXSxvPVJbZT09bnVsbD92b2lkIDA6ZS5sZXZlbF0sbj1SW2wubGV2ZWxdO2UmJm4+bz9MKGwsZSk6Zi5wdXNoKHtpZDpsLnRpdGxlSWQsbmFtZTpsLnZhbHVlLGxldmVsOmwubGV2ZWwscGFnZU5vOmwucGFnZU5vLHN1YkNhdGFsb2c6W119KX1yZXR1cm4gZn1vbm1lc3NhZ2U9dD0+e2NvbnN0IGg9dC5kYXRhLHY9TihoKTtwb3N0TWVzc2FnZSh2KX19KSgpO30pKCk7Cg==";
14706
14779
  const blob$2 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$2)], { type: "text/javascript;charset=utf-8" });
14707
14780
  function WorkerWrapper$2() {
14708
14781
  const objURL = blob$2 && (window.URL || window.webkitURL).createObjectURL(blob$2);
@@ -14722,7 +14795,7 @@ function WorkerWrapper$1() {
14722
14795
  objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
14723
14796
  }
14724
14797
  }
14725
- const encodedJs = "KCgpPT57dmFyIGZlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxUZT1PYmplY3QuZGVmaW5lUHJvcGVydGllczt2YXIgSWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7dmFyIGFlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIEFlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZGU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt2YXIgbmU9KFQsSSxkKT0+SSBpbiBUP2ZlKFQsSSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pOlRbSV09ZCxnPShULEkpPT57Zm9yKHZhciBkIGluIEl8fChJPXt9KSlBZS5jYWxsKEksZCkmJm5lKFQsZCxJW2RdKTtpZihhZSlmb3IodmFyIGQgb2YgYWUoSSkpZGUuY2FsbChJLGQpJiZuZShULGQsSVtkXSk7cmV0dXJuIFR9LF89KFQsSSk9PlRlKFQsSWUoSSkpOyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgVDsoZnVuY3Rpb24oZSl7ZS5IQUxGPSJoYWxmIixlLk9ORV9USElSRD0ib25lLXRoaXJkIixlLlFVQVJURVI9InF1YXJ0ZXIifSkoVHx8KFQ9e30pKTt2YXIgSTsoZnVuY3Rpb24oZSl7ZS5BUkFCSUM9ImFyYWJpYyIsZS5DSElORVNFPSJjaGluZXNlIn0pKEl8fChJPXt9KSk7dmFyIGQ7KGZ1bmN0aW9uKGUpe2UuSU5MSU5FPSJpbmxpbmUiLGUuQkxPQ0s9ImJsb2NrIixlLlNVUlJPVU5EPSJzdXJyb3VuZCIsZS5GTE9BVF9UT1A9ImZsb2F0LXRvcCIsZS5GTE9BVF9CT1RUT009ImZsb2F0LWJvdHRvbSJ9KShkfHwoZD17fSkpO3ZhciBYOyhmdW5jdGlvbihlKXtlLkJFRk9SRT0iYmVmb3JlIixlLkFGVEVSPSJhZnRlciIsZS5PVVRFUl9CRUZPUkU9Im91dGVyLWJlZm9yZSIsZS5PVVRFUl9BRlRFUj0ib3V0ZXItYWZ0ZXIifSkoWHx8KFg9e30pKTt2YXIgTTsoZnVuY3Rpb24oZSl7ZS5ST1c9InJvdyIsZS5DT0xVTU49ImNvbHVtbiJ9KShNfHwoTT17fSkpO2NvbnN0IFA9Ilx1MjAwQiI7VC5IQUxGKyIiLDEvMixULk9ORV9USElSRCsiIiwxLzMsVC5RVUFSVEVSKyIiLDEvNDtmdW5jdGlvbiBIKGUpe2lmKHR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmU9PSJmdW5jdGlvbiIpcmV0dXJuIHN0cnVjdHVyZWRDbG9uZShlKTtpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiBlO2xldCBzPXt9O3JldHVybiBBcnJheS5pc0FycmF5KGUpP3M9ZS5tYXAoRT0+SChFKSk6T2JqZWN0LmtleXMoZSkuZm9yRWFjaChFPT5zW0VdPUgoZVtFXSkpLHN9ZnVuY3Rpb24gdyhlLHMpe2NvbnN0IEU9e307Zm9yKGNvbnN0IEEgaW4gZSlzLmluY2x1ZGVzKEEpJiYoRVtBXT1lW0FdKTtyZXR1cm4gRX1mdW5jdGlvbiBsZShlLHMpe3JldHVybiBlLmxlbmd0aCE9PXMubGVuZ3RoPyExOiFlLnNvbWUoRT0+IXMuaW5jbHVkZXMoRSkpfXZhciBsOyhmdW5jdGlvbihlKXtlLlRFWFQ9InRleHQiLGUuSU1BR0U9ImltYWdlIixlLlRBQkxFPSJ0YWJsZSIsZS5IWVBFUkxJTks9Imh5cGVybGluayIsZS5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLGUuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLGUuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLGUuUEFHRV9CUkVBSz0icGFnZUJyZWFrIixlLkNPTlRST0w9ImNvbnRyb2wiLGUuQVJFQT0iYXJlYSIsZS5DSEVDS0JPWD0iY2hlY2tib3giLGUuUkFESU89InJhZGlvIixlLkxBVEVYPSJsYXRleCIsZS5UQUI9InRhYiIsZS5EQVRFPSJkYXRlIixlLkJMT0NLPSJibG9jayIsZS5USVRMRT0idGl0bGUiLGUuTElTVD0ibGlzdCJ9KShsfHwobD17fSkpO2NvbnN0IHJlPVsicm93RmxleCIsInJvd01hcmdpbiJdLG9lPVsidHlwZSIsImZvbnQiLCJzaXplIiwiYm9sZCIsImNvbG9yIiwiaXRhbGljIiwiaGlnaGxpZ2h0IiwidW5kZXJsaW5lIiwic3RyaWtlb3V0Iiwicm93RmxleCIsInJvd01hcmdpbiIsImRhc2hBcnJheSIsInRyTGlzdCIsInRhYmxlVG9vbERpc2FibGVkIiwiYm9yZGVyVHlwZSIsImJvcmRlckNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1cmwiLCJjb2xncm91cCIsInZhbHVlTGlzdCIsImNvbnRyb2wiLCJjaGVja2JveCIsInJhZGlvIiwiZGF0ZUZvcm1hdCIsImJsb2NrIiwibGV2ZWwiLCJ0aXRsZSIsImxpc3RUeXBlIiwibGlzdFN0eWxlIiwibGlzdFdyYXAiLCJncm91cElkcyIsImNvbmNlcHRJZCIsImltZ0Rpc3BsYXkiLCJpbWdGbG9hdFBvc2l0aW9uIiwiaW1nVG9vbERpc2FibGVkIiwidGV4dERlY29yYXRpb24iLCJleHRlbnNpb24iLCJleHRlcm5hbElkIiwiYXJlYUlkIiwiYXJlYSJdLHNlPVsiY29uY2VwdElkIiwiZXh0ZW5zaW9uIiwiZXh0ZXJuYWxJZCIsInZlcnRpY2FsQWxpZ24iLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJUeXBlcyIsInNsYXNoVHlwZXMiLCJkaXNhYmxlZCIsImRlbGV0YWJsZSJdLGNlPVsiZm9udCIsInNpemUiLCJib2xkIiwiaGlnaGxpZ2h0IiwiaXRhbGljIiwic3RyaWtlb3V0Il07bC5URVhULGwuSFlQRVJMSU5LLGwuU1VCU0NSSVBULGwuU1VQRVJTQ1JJUFQsbC5DT05UUk9MLGwuREFURSxsLklNQUdFLGwuTEFURVgsbC5CTE9DSyxsLlBBR0VfQlJFQUssbC5TRVBBUkFUT1IsbC5UQUJMRSxsLlRJVExFLGwuTElTVDt2YXIgTjsoZnVuY3Rpb24oZSl7ZS5VTD0idWwiLGUuT0w9Im9sIn0pKE58fChOPXt9KSk7dmFyIE87KGZ1bmN0aW9uKGUpe2UuRElTQz0iZGlzYyIsZS5DSVJDTEU9ImNpcmNsZSIsZS5TUVVBUkU9InNxdWFyZSIsZS5DSEVDS0JPWD0iY2hlY2tib3gifSkoT3x8KE89e30pKTt2YXIgYjsoZnVuY3Rpb24oZSl7ZS5ERUNJTUFMPSJkZWNpbWFsIn0pKGJ8fChiPXt9KSk7dmFyIHY7KGZ1bmN0aW9uKGUpe2VbZS5ESVNDPU8uRElTQ109IkRJU0MiLGVbZS5DSVJDTEU9Ty5DSVJDTEVdPSJDSVJDTEUiLGVbZS5TUVVBUkU9Ty5TUVVBUkVdPSJTUVVBUkUiLGVbZS5ERUNJTUFMPWIuREVDSU1BTF09IkRFQ0lNQUwiLGVbZS5DSEVDS0JPWD1PLkNIRUNLQk9YXT0iQ0hFQ0tCT1gifSkodnx8KHY9e30pKSxPLkRJU0MrIiIsTy5DSVJDTEUrIiIsTy5TUVVBUkUrIiIsTy5DSEVDS0JPWCsiIixOLk9MKyIiLE4uVUwrIiIsdi5ESVNDKyIiLHYuQ0lSQ0xFKyIiLHYuU1FVQVJFKyIiLHYuREVDSU1BTCsiIix2LkNIRUNLQk9YKyIiO3ZhciBmOyhmdW5jdGlvbihlKXtlLkZJUlNUPSJmaXJzdCIsZS5TRUNPTkQ9InNlY29uZCIsZS5USElSRD0idGhpcmQiLGUuRk9VUlRIPSJmb3VydGgiLGUuRklGVEg9ImZpZnRoIixlLlNJWFRIPSJzaXh0aCJ9KShmfHwoZj17fSkpLGYuRklSU1QrIiIsZi5TRUNPTkQrIiIsZi5USElSRCsiIixmLkZPVVJUSCsiIixmLkZJRlRIKyIiLGYuU0lYVEgrIiIsZi5GSVJTVCsiIixmLlNFQ09ORCsiIixmLlRISVJEKyIiLGYuRk9VUlRIKyIiLGYuRklGVEgrIiIsZi5TSVhUSCsiIixmLkZJUlNULGYuU0VDT05ELGYuVEhJUkQsZi5GT1VSVEgsZi5GSUZUSCxmLlNJWFRIO3ZhciBLOyhmdW5jdGlvbihlKXtlLklGUkFNRT0iaWZyYW1lIixlLlZJREVPPSJ2aWRlbyJ9KShLfHwoSz17fSkpO3ZhciB6OyhmdW5jdGlvbihlKXtlLlRFWFQ9InRleHQiLGUuU0VMRUNUPSJzZWxlY3QiLGUuQ0hFQ0tCT1g9ImNoZWNrYm94IixlLlJBRElPPSJyYWRpbyIsZS5EQVRFPSJkYXRlIixlLk5VTUJFUj0ibnVtYmVyIn0pKHp8fCh6PXt9KSk7dmFyIEw7KGZ1bmN0aW9uKGUpe2UuUFJFRklYPSJwcmVmaXgiLGUuUE9TVEZJWD0icG9zdGZpeCIsZS5QUkVfVEVYVD0icHJlVGV4dCIsZS5QT1NUX1RFWFQ9InBvc3RUZXh0IixlLlBMQUNFSE9MREVSPSJwbGFjZWhvbGRlciIsZS5WQUxVRT0idmFsdWUiLGUuQ0hFQ0tCT1g9ImNoZWNrYm94IixlLlJBRElPPSJyYWRpbyJ9KShMfHwoTD17fSkpO3ZhciBHOyhmdW5jdGlvbihlKXtlLlJPV19TVEFSVD0icm93U3RhcnQiLGUuVkFMVUVfU1RBUlQ9InZhbHVlU3RhcnQifSkoR3x8KEc9e30pKTt2YXIgWTsoZnVuY3Rpb24oZSl7ZS5BQ1RJVkU9ImFjdGl2ZSIsZS5JTkFDVElWRT0iaW5hY3RpdmUifSkoWXx8KFk9e30pKTt2YXIgVjsoZnVuY3Rpb24oZSl7ZS5DT01QT05FTlQ9ImNvbXBvbmVudCIsZS5NRU5VPSJtZW51IixlLk1BSU49Im1haW4iLGUuRk9PVEVSPSJmb290ZXIiLGUuQ09OVEVYVE1FTlU9ImNvbnRleHRtZW51IixlLlBPUFVQPSJwb3B1cCIsZS5DQVRBTE9HPSJjYXRhbG9nIixlLkNPTU1FTlQ9ImNvbW1lbnQifSkoVnx8KFY9e30pKTt2YXIgUTsoZnVuY3Rpb24oZSl7ZS5QQUdFPSJwYWdlIixlLlRBQkxFPSJ0YWJsZSJ9KShRfHwoUT17fSkpO3ZhciBXOyhmdW5jdGlvbihlKXtlLkVESVQ9ImVkaXQiLGUuQ0xFQU49ImNsZWFuIixlLlJFQURPTkxZPSJyZWFkb25seSIsZS5GT1JNPSJmb3JtIixlLlBSSU5UPSJwcmludCIsZS5ERVNJR049ImRlc2lnbiJ9KShXfHwoVz17fSkpO3ZhciBxOyhmdW5jdGlvbihlKXtlLkhFQURFUj0iaGVhZGVyIixlLk1BSU49Im1haW4iLGUuRk9PVEVSPSJmb290ZXIifSkocXx8KHE9e30pKTt2YXIgWjsoZnVuY3Rpb24oZSl7ZS5QQUdJTkc9InBhZ2luZyIsZS5DT05USU5VSVRZPSJjb250aW51aXR5In0pKFp8fChaPXt9KSk7dmFyIEo7KGZ1bmN0aW9uKGUpe2UuVkVSVElDQUw9InZlcnRpY2FsIixlLkhPUklaT05UQUw9Imhvcml6b250YWwifSkoSnx8KEo9e30pKTt2YXIgajsoZnVuY3Rpb24oZSl7ZS5CUkVBS19BTEw9ImJyZWFrLWFsbCIsZS5CUkVBS19XT1JEPSJicmVhay13b3JkIn0pKGp8fChqPXt9KSk7dmFyICQ7KGZ1bmN0aW9uKGUpe2UuU1BFRUQ9InNwZWVkIixlLkNPTVBBVElCSUxJVFk9ImNvbXBhdGliaWxpdHkifSkoJHx8KCQ9e30pKTt2YXIgRDsoZnVuY3Rpb24oZSl7ZS5MRUZUPSJsZWZ0IixlLkNFTlRFUj0iY2VudGVyIixlLlJJR0hUPSJyaWdodCIsZS5BTElHTk1FTlQ9ImFsaWdubWVudCIsZS5KVVNUSUZZPSJqdXN0aWZ5In0pKER8fChEPXt9KSk7dmFyIGVlOyhmdW5jdGlvbihlKXtlLkFMTD0iYWxsIixlLkVNUFRZPSJlbXB0eSIsZS5FWFRFUk5BTD0iZXh0ZXJuYWwiLGUuSU5URVJOQUw9ImludGVybmFsIixlLkRBU0g9ImRhc2gifSkoZWV8fChlZT17fSkpO3ZhciB0ZTsoZnVuY3Rpb24oZSl7ZS5UT1A9InRvcCIsZS5SSUdIVD0icmlnaHQiLGUuQk9UVE9NPSJib3R0b20iLGUuTEVGVD0ibGVmdCJ9KSh0ZXx8KHRlPXt9KSk7dmFyIGllOyhmdW5jdGlvbihlKXtlLkZPUldBUkQ9ImZvcndhcmQiLGUuQkFDSz0iYmFjayJ9KShpZXx8KGllPXt9KSk7dmFyIGs7KGZ1bmN0aW9uKGUpe2UuQ09OVEFJTj0iY29udGFpbiIsZS5DT1ZFUj0iY292ZXIifSkoa3x8KGs9e30pKTt2YXIgbTsoZnVuY3Rpb24oZSl7ZS5SRVBFQVQ9InJlcGVhdCIsZS5OT19SRVBFQVQ9Im5vLXJlcGVhdCIsZS5SRVBFQVRfWD0icmVwZWF0LXgiLGUuUkVQRUFUX1k9InJlcGVhdC15In0pKG18fChtPXt9KSksay5DT1ZFUixtLk5PX1JFUEVBVDt2YXIgRjsoZnVuY3Rpb24oZSl7ZS5UT1A9InRvcCIsZS5NSURETEU9Im1pZGRsZSIsZS5CT1RUT009ImJvdHRvbSJ9KShGfHwoRj17fSkpLEYuQk9UVE9NLFQuSEFMRixULkhBTEY7Y29uc3QgdWU9e1BBR0VfTk86IntwYWdlTm99IixQQUdFX0NPVU5UOiJ7cGFnZUNvdW50fSJ9O0QuQ0VOVEVSLHVlLlBBR0VfTk8sSS5BUkFCSUMsRi5CT1RUT007dmFyIHk7KGZ1bmN0aW9uKGUpe2UuVEVYVD0idGV4dCIsZS5JTUFHRT0iaW1hZ2UifSkoeXx8KHk9e30pKSx5LlRFWFQsSS5BUkFCSUM7dmFyIFU7KGZ1bmN0aW9uKGUpe2UuUEFHRT0icGFnZSIsZS5DT05USU5VSVRZPSJjb250aW51aXR5In0pKFV8fChVPXt9KSksVS5DT05USU5VSVRZO2Z1bmN0aW9uIEVlKGUscyl7Y29uc3QgRT1PYmplY3Qua2V5cyhlKSxBPU9iamVjdC5rZXlzKHMpO2lmKEUubGVuZ3RoIT09QS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBSPTA7UjxFLmxlbmd0aDtSKyspe2NvbnN0IGE9RVtSXTtpZihhIT09InZhbHVlIiYmIShhPT09Imdyb3VwSWRzIiYmQXJyYXkuaXNBcnJheShlW2FdKSYmQXJyYXkuaXNBcnJheShzW2FdKSYmbGUoZVthXSxzW2FdKSkmJmVbYV0hPT1zW2FdKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIEIoZSxzPXt9KXtjb25zdHtleHRyYVBpY2tBdHRyczpFfT1zLEE9Wy4uLm9lXTtFJiZBLnB1c2goLi4uRSk7Y29uc3QgUj17dmFsdWU6ZS52YWx1ZT09PVA/YApgOmUudmFsdWV9O3JldHVybiBBLmZvckVhY2goYT0+e2NvbnN0IHA9ZVthXTtwIT09dm9pZCAwJiYoUlthXT1wKX0pLFJ9ZnVuY3Rpb24gaChlLHM9e30pe2NvbnN0e2V4dHJhUGlja0F0dHJzOkUsaXNDbGFzc2lmeUFyZWE6QT0hMSxpc0Nsb25lOlI9ITB9PXMsYT1SP0goZSk6ZSxwPVtdO2xldCBpPTA7Zm9yKDtpPGEubGVuZ3RoOyl7bGV0IHQ9YVtpXTtpZihpPT09MCYmdC52YWx1ZT09PVAmJiF0Lmxpc3RJZCYmKCF0LnR5cGV8fHQudHlwZT09PWwuVEVYVCkpe2krKztjb250aW51ZX1pZih0LmFyZWFJZCl7Y29uc3Qgbj10LmFyZWFJZCx1PXQuYXJlYSxjPVtdO2Zvcig7aTxhLmxlbmd0aDspe2NvbnN0IG89YVtpXTtpZihuIT09by5hcmVhSWQpe2ktLTticmVha31kZWxldGUgby5hcmVhLGRlbGV0ZSBvLmFyZWFJZCxjLnB1c2gobyksaSsrfWNvbnN0IHI9aChjLHMpO2lmKEEpe2NvbnN0IG89e3R5cGU6bC5BUkVBLHZhbHVlOiIiLGFyZWFJZDpuLGFyZWE6dX07by52YWx1ZUxpc3Q9cix0PW99ZWxzZXtwLnNwbGljZShpLDAsLi4ucik7Y29udGludWV9fWVsc2UgaWYodC50aXRsZUlkJiZ0LmxldmVsKXtjb25zdCBuPXQudGl0bGVJZDtpZihuKXtjb25zdCB1PXQubGV2ZWwsYz17dHlwZTpsLlRJVExFLHRpdGxlOnQudGl0bGUsdGl0bGVJZDpuLHZhbHVlOiIiLGxldmVsOnV9LHI9W107Zm9yKDtpPGEubGVuZ3RoOyl7Y29uc3Qgbz1hW2ldO2lmKG4hPT1vLnRpdGxlSWQpe2ktLTticmVha31kZWxldGUgby5sZXZlbCxkZWxldGUgby50aXRsZSxyLnB1c2gobyksaSsrfWMudmFsdWVMaXN0PWgocixzKSx0PWN9fWVsc2UgaWYodC5saXN0SWQmJnQubGlzdFR5cGUpe2NvbnN0IG49dC5saXN0SWQ7aWYobil7Y29uc3QgdT10Lmxpc3RUeXBlLGM9dC5saXN0U3R5bGUscj17dHlwZTpsLkxJU1QsdmFsdWU6IiIsbGlzdElkOm4sbGlzdFR5cGU6dSxsaXN0U3R5bGU6Y30sbz1bXTtmb3IoO2k8YS5sZW5ndGg7KXtjb25zdCBDPWFbaV07aWYobiE9PUMubGlzdElkKXtpLS07YnJlYWt9ZGVsZXRlIEMubGlzdFR5cGUsZGVsZXRlIEMubGlzdFN0eWxlLG8ucHVzaChDKSxpKyt9ci52YWx1ZUxpc3Q9aChvLHMpLHQ9cn19ZWxzZSBpZih0LnR5cGU9PT1sLlRBQkxFKXtpZih0LnBhZ2luZ0lkKXtsZXQgbj1pKzEsdT0wO2Zvcig7bjxhLmxlbmd0aDspe2NvbnN0IGM9YVtuXTtpZihjLnBhZ2luZ0lkPT09dC5wYWdpbmdJZCl0LmhlaWdodCs9Yy5oZWlnaHQsdC50ckxpc3QucHVzaCguLi5jLnRyTGlzdCksbisrLHUrKztlbHNlIGJyZWFrfWkrPXV9aWYodC50ckxpc3QpZm9yKGxldCBuPTA7bjx0LnRyTGlzdC5sZW5ndGg7bisrKXtjb25zdCB1PXQudHJMaXN0W25dO2RlbGV0ZSB1LmlkO2ZvcihsZXQgYz0wO2M8dS50ZExpc3QubGVuZ3RoO2MrKyl7Y29uc3Qgcj11LnRkTGlzdFtjXSxvPXtjb2xzcGFuOnIuY29sc3Bhbixyb3dzcGFuOnIucm93c3Bhbix2YWx1ZTpoKHIudmFsdWUsXyhnKHt9LHMpLHtpc0NsYXNzaWZ5QXJlYTohMX0pKX07c2UuZm9yRWFjaChDPT57Y29uc3QgUz1yW0NdO1MhPT12b2lkIDAmJihvW0NdPVMpfSksdS50ZExpc3RbY109b319fWVsc2UgaWYodC50eXBlPT09bC5IWVBFUkxJTkspe2NvbnN0IG49dC5oeXBlcmxpbmtJZDtpZihuKXtjb25zdCB1PXt0eXBlOmwuSFlQRVJMSU5LLHZhbHVlOiIiLHVybDp0LnVybH0sYz1bXTtmb3IoO2k8YS5sZW5ndGg7KXtjb25zdCByPWFbaV07aWYobiE9PXIuaHlwZXJsaW5rSWQpe2ktLTticmVha31kZWxldGUgci50eXBlLGRlbGV0ZSByLnVybCxjLnB1c2gociksaSsrfXUudmFsdWVMaXN0PWgoYyxzKSx0PXV9fWVsc2UgaWYodC50eXBlPT09bC5EQVRFKXtjb25zdCBuPXQuZGF0ZUlkO2lmKG4pe2NvbnN0IHU9e3R5cGU6bC5EQVRFLHZhbHVlOiIiLGRhdGVGb3JtYXQ6dC5kYXRlRm9ybWF0fSxjPVtdO2Zvcig7aTxhLmxlbmd0aDspe2NvbnN0IHI9YVtpXTtpZihuIT09ci5kYXRlSWQpe2ktLTticmVha31kZWxldGUgci50eXBlLGRlbGV0ZSByLmRhdGVGb3JtYXQsYy5wdXNoKHIpLGkrK311LnZhbHVlTGlzdD1oKGMscyksdD11fX1lbHNlIGlmKHQuY29udHJvbElkKXtjb25zdCBuPXQuY29udHJvbElkO2lmKHQuY29udHJvbENvbXBvbmVudD09PUwuUFJFRklYKXtjb25zdCB1PVtdO2xldCBjPSExLHI9aTtmb3IoO3I8YS5sZW5ndGg7KXtjb25zdCBvPWFbcl07aWYobiE9PW8uY29udHJvbElkKWJyZWFrO28uY29udHJvbENvbXBvbmVudD09PUwuVkFMVUUmJihkZWxldGUgby5jb250cm9sLGRlbGV0ZSBvLmNvbnRyb2xJZCx1LnB1c2gobykpLG8uY29udHJvbENvbXBvbmVudD09PUwuUE9TVEZJWCYmKGM9ITApLHIrK31pZihjKXtjb25zdCBvPXcodCxjZSksQz1nKGcoe30sdC5jb250cm9sKSxvKSxTPV8oZyh7fSx3KHQscmUpKSx7dHlwZTpsLkNPTlRST0wsdmFsdWU6IiIsY29udHJvbDpDLGNvbnRyb2xJZDpufSk7Uy5jb250cm9sLnZhbHVlPWgodSxzKSx0PUIoUyx7ZXh0cmFQaWNrQXR0cnM6RX0pLGkrPXItaS0xfX1pZih0LmNvbnRyb2xDb21wb25lbnQmJihkZWxldGUgdC5jb250cm9sLGRlbGV0ZSB0LmNvbnRyb2xJZCx0LmNvbnRyb2xDb21wb25lbnQhPT1MLlZBTFVFJiZ0LmNvbnRyb2xDb21wb25lbnQhPT1MLlBSRV9URVhUJiZ0LmNvbnRyb2xDb21wb25lbnQhPT1MLlBPU1RfVEVYVCkpe2krKztjb250aW51ZX19Y29uc3QgeD1CKHQse2V4dHJhUGlja0F0dHJzOkV9KTtpZighdC50eXBlfHx0LnR5cGU9PT1sLlRFWFR8fHQudHlwZT09PWwuU1VCU0NSSVBUfHx0LnR5cGU9PT1sLlNVUEVSU0NSSVBUKWZvcig7aTxhLmxlbmd0aDspe2NvbnN0IG49YVtpKzFdO2lmKGkrKyxuJiZFZSh4LEIobix7ZXh0cmFQaWNrQXR0cnM6RX0pKSl7Y29uc3QgdT1uLnZhbHVlPT09UD9gCmA6bi52YWx1ZTt4LnZhbHVlKz11fWVsc2UgYnJlYWt9ZWxzZSBpKys7cC5wdXNoKHgpfXJldHVybiBwfW9ubWVzc2FnZT1lPT57Y29uc3Qgcz1lLmRhdGEse29wdGlvbnM6RSxkYXRhOkF9PXMse2V4dHJhUGlja0F0dHJzOlI9W119PUV8fHt9LGE9e2hlYWRlcjpoKEEuaGVhZGVyLHtleHRyYVBpY2tBdHRyczpSLGlzQ2xvbmU6ITF9KSxtYWluOmgoQS5tYWluLHtleHRyYVBpY2tBdHRyczpSLGlzQ2xhc3NpZnlBcmVhOiEwLGlzQ2xvbmU6ITF9KSxmb290ZXI6aChBLmZvb3Rlcix7ZXh0cmFQaWNrQXR0cnM6Uixpc0Nsb25lOiExfSl9O3Bvc3RNZXNzYWdlKGEpfX0pKCk7fSkoKTsK";
14798
+ const encodedJs = "KCgpPT57dmFyIGZlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxUZT1PYmplY3QuZGVmaW5lUHJvcGVydGllczt2YXIgSWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7dmFyIGFlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIEFlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZGU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt2YXIgbmU9KFQsSSxkKT0+SSBpbiBUP2ZlKFQsSSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pOlRbSV09ZCxnPShULEkpPT57Zm9yKHZhciBkIGluIEl8fChJPXt9KSlBZS5jYWxsKEksZCkmJm5lKFQsZCxJW2RdKTtpZihhZSlmb3IodmFyIGQgb2YgYWUoSSkpZGUuY2FsbChJLGQpJiZuZShULGQsSVtkXSk7cmV0dXJuIFR9LF89KFQsSSk9PlRlKFQsSWUoSSkpOyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgVDsoZnVuY3Rpb24oZSl7ZS5IQUxGPSJoYWxmIixlLk9ORV9USElSRD0ib25lLXRoaXJkIixlLlFVQVJURVI9InF1YXJ0ZXIifSkoVHx8KFQ9e30pKTt2YXIgSTsoZnVuY3Rpb24oZSl7ZS5BUkFCSUM9ImFyYWJpYyIsZS5DSElORVNFPSJjaGluZXNlIn0pKEl8fChJPXt9KSk7dmFyIGQ7KGZ1bmN0aW9uKGUpe2UuSU5MSU5FPSJpbmxpbmUiLGUuQkxPQ0s9ImJsb2NrIixlLlNVUlJPVU5EPSJzdXJyb3VuZCIsZS5GTE9BVF9UT1A9ImZsb2F0LXRvcCIsZS5GTE9BVF9CT1RUT009ImZsb2F0LWJvdHRvbSJ9KShkfHwoZD17fSkpO3ZhciBYOyhmdW5jdGlvbihlKXtlLkJFRk9SRT0iYmVmb3JlIixlLkFGVEVSPSJhZnRlciIsZS5PVVRFUl9CRUZPUkU9Im91dGVyLWJlZm9yZSIsZS5PVVRFUl9BRlRFUj0ib3V0ZXItYWZ0ZXIifSkoWHx8KFg9e30pKTt2YXIgTTsoZnVuY3Rpb24oZSl7ZS5ST1c9InJvdyIsZS5DT0xVTU49ImNvbHVtbiJ9KShNfHwoTT17fSkpO2NvbnN0IFA9Ilx1MjAwQiI7VC5IQUxGKyIiLDEvMixULk9ORV9USElSRCsiIiwxLzMsVC5RVUFSVEVSKyIiLDEvNDtmdW5jdGlvbiBIKGUpe2lmKHR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmU9PSJmdW5jdGlvbiIpcmV0dXJuIHN0cnVjdHVyZWRDbG9uZShlKTtpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiBlO2xldCBzPXt9O3JldHVybiBBcnJheS5pc0FycmF5KGUpP3M9ZS5tYXAoRT0+SChFKSk6T2JqZWN0LmtleXMoZSkuZm9yRWFjaChFPT5zW0VdPUgoZVtFXSkpLHN9ZnVuY3Rpb24gdyhlLHMpe2NvbnN0IEU9e307Zm9yKGNvbnN0IEEgaW4gZSlzLmluY2x1ZGVzKEEpJiYoRVtBXT1lW0FdKTtyZXR1cm4gRX1mdW5jdGlvbiBsZShlLHMpe3JldHVybiBlLmxlbmd0aCE9PXMubGVuZ3RoPyExOiFlLnNvbWUoRT0+IXMuaW5jbHVkZXMoRSkpfXZhciBsOyhmdW5jdGlvbihlKXtlLlRFWFQ9InRleHQiLGUuSU1BR0U9ImltYWdlIixlLlRBQkxFPSJ0YWJsZSIsZS5IWVBFUkxJTks9Imh5cGVybGluayIsZS5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLGUuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLGUuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLGUuUEFHRV9CUkVBSz0icGFnZUJyZWFrIixlLkNPTlRST0w9ImNvbnRyb2wiLGUuQVJFQT0iYXJlYSIsZS5DSEVDS0JPWD0iY2hlY2tib3giLGUuUkFESU89InJhZGlvIixlLkxBVEVYPSJsYXRleCIsZS5UQUI9InRhYiIsZS5EQVRFPSJkYXRlIixlLkJMT0NLPSJibG9jayIsZS5USVRMRT0idGl0bGUiLGUuTElTVD0ibGlzdCJ9KShsfHwobD17fSkpO2NvbnN0IHJlPVsicm93RmxleCIsInJvd01hcmdpbiJdLG9lPVsidHlwZSIsImZvbnQiLCJzaXplIiwiYm9sZCIsImNvbG9yIiwiaXRhbGljIiwiaGlnaGxpZ2h0IiwidW5kZXJsaW5lIiwic3RyaWtlb3V0Iiwicm93RmxleCIsInJvd01hcmdpbiIsImRhc2hBcnJheSIsInRyTGlzdCIsInRhYmxlVG9vbERpc2FibGVkIiwiYm9yZGVyVHlwZSIsImJvcmRlckNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1cmwiLCJjb2xncm91cCIsInZhbHVlTGlzdCIsImNvbnRyb2wiLCJjaGVja2JveCIsInJhZGlvIiwiZGF0ZUZvcm1hdCIsImJsb2NrIiwibGV2ZWwiLCJ0aXRsZSIsImxpc3RUeXBlIiwibGlzdFN0eWxlIiwibGlzdFdyYXAiLCJncm91cElkcyIsImNvbmNlcHRJZCIsImltZ0Rpc3BsYXkiLCJpbWdGbG9hdFBvc2l0aW9uIiwiaW1nVG9vbERpc2FibGVkIiwidGV4dERlY29yYXRpb24iLCJleHRlbnNpb24iLCJleHRlcm5hbElkIiwiYXJlYUlkIiwiYXJlYSIsImhpZGUiXSxzZT1bImNvbmNlcHRJZCIsImV4dGVuc2lvbiIsImV4dGVybmFsSWQiLCJ2ZXJ0aWNhbEFsaWduIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyVHlwZXMiLCJzbGFzaFR5cGVzIiwiZGlzYWJsZWQiLCJkZWxldGFibGUiXSxjZT1bImZvbnQiLCJzaXplIiwiYm9sZCIsImhpZ2hsaWdodCIsIml0YWxpYyIsInN0cmlrZW91dCJdO2wuVEVYVCxsLkhZUEVSTElOSyxsLlNVQlNDUklQVCxsLlNVUEVSU0NSSVBULGwuQ09OVFJPTCxsLkRBVEUsbC5JTUFHRSxsLkxBVEVYLGwuQkxPQ0ssbC5QQUdFX0JSRUFLLGwuU0VQQVJBVE9SLGwuVEFCTEUsbC5USVRMRSxsLkxJU1Q7dmFyIE47KGZ1bmN0aW9uKGUpe2UuVUw9InVsIixlLk9MPSJvbCJ9KShOfHwoTj17fSkpO3ZhciBPOyhmdW5jdGlvbihlKXtlLkRJU0M9ImRpc2MiLGUuQ0lSQ0xFPSJjaXJjbGUiLGUuU1FVQVJFPSJzcXVhcmUiLGUuQ0hFQ0tCT1g9ImNoZWNrYm94In0pKE98fChPPXt9KSk7dmFyIGI7KGZ1bmN0aW9uKGUpe2UuREVDSU1BTD0iZGVjaW1hbCJ9KShifHwoYj17fSkpO3ZhciB2OyhmdW5jdGlvbihlKXtlW2UuRElTQz1PLkRJU0NdPSJESVNDIixlW2UuQ0lSQ0xFPU8uQ0lSQ0xFXT0iQ0lSQ0xFIixlW2UuU1FVQVJFPU8uU1FVQVJFXT0iU1FVQVJFIixlW2UuREVDSU1BTD1iLkRFQ0lNQUxdPSJERUNJTUFMIixlW2UuQ0hFQ0tCT1g9Ty5DSEVDS0JPWF09IkNIRUNLQk9YIn0pKHZ8fCh2PXt9KSksTy5ESVNDKyIiLE8uQ0lSQ0xFKyIiLE8uU1FVQVJFKyIiLE8uQ0hFQ0tCT1grIiIsTi5PTCsiIixOLlVMKyIiLHYuRElTQysiIix2LkNJUkNMRSsiIix2LlNRVUFSRSsiIix2LkRFQ0lNQUwrIiIsdi5DSEVDS0JPWCsiIjt2YXIgZjsoZnVuY3Rpb24oZSl7ZS5GSVJTVD0iZmlyc3QiLGUuU0VDT05EPSJzZWNvbmQiLGUuVEhJUkQ9InRoaXJkIixlLkZPVVJUSD0iZm91cnRoIixlLkZJRlRIPSJmaWZ0aCIsZS5TSVhUSD0ic2l4dGgifSkoZnx8KGY9e30pKSxmLkZJUlNUKyIiLGYuU0VDT05EKyIiLGYuVEhJUkQrIiIsZi5GT1VSVEgrIiIsZi5GSUZUSCsiIixmLlNJWFRIKyIiLGYuRklSU1QrIiIsZi5TRUNPTkQrIiIsZi5USElSRCsiIixmLkZPVVJUSCsiIixmLkZJRlRIKyIiLGYuU0lYVEgrIiIsZi5GSVJTVCxmLlNFQ09ORCxmLlRISVJELGYuRk9VUlRILGYuRklGVEgsZi5TSVhUSDt2YXIgSzsoZnVuY3Rpb24oZSl7ZS5JRlJBTUU9ImlmcmFtZSIsZS5WSURFTz0idmlkZW8ifSkoS3x8KEs9e30pKTt2YXIgejsoZnVuY3Rpb24oZSl7ZS5URVhUPSJ0ZXh0IixlLlNFTEVDVD0ic2VsZWN0IixlLkNIRUNLQk9YPSJjaGVja2JveCIsZS5SQURJTz0icmFkaW8iLGUuREFURT0iZGF0ZSIsZS5OVU1CRVI9Im51bWJlciJ9KSh6fHwoej17fSkpO3ZhciBMOyhmdW5jdGlvbihlKXtlLlBSRUZJWD0icHJlZml4IixlLlBPU1RGSVg9InBvc3RmaXgiLGUuUFJFX1RFWFQ9InByZVRleHQiLGUuUE9TVF9URVhUPSJwb3N0VGV4dCIsZS5QTEFDRUhPTERFUj0icGxhY2Vob2xkZXIiLGUuVkFMVUU9InZhbHVlIixlLkNIRUNLQk9YPSJjaGVja2JveCIsZS5SQURJTz0icmFkaW8ifSkoTHx8KEw9e30pKTt2YXIgRzsoZnVuY3Rpb24oZSl7ZS5ST1dfU1RBUlQ9InJvd1N0YXJ0IixlLlZBTFVFX1NUQVJUPSJ2YWx1ZVN0YXJ0In0pKEd8fChHPXt9KSk7dmFyIFk7KGZ1bmN0aW9uKGUpe2UuQUNUSVZFPSJhY3RpdmUiLGUuSU5BQ1RJVkU9ImluYWN0aXZlIn0pKFl8fChZPXt9KSk7dmFyIFY7KGZ1bmN0aW9uKGUpe2UuQ09NUE9ORU5UPSJjb21wb25lbnQiLGUuTUVOVT0ibWVudSIsZS5NQUlOPSJtYWluIixlLkZPT1RFUj0iZm9vdGVyIixlLkNPTlRFWFRNRU5VPSJjb250ZXh0bWVudSIsZS5QT1BVUD0icG9wdXAiLGUuQ0FUQUxPRz0iY2F0YWxvZyIsZS5DT01NRU5UPSJjb21tZW50In0pKFZ8fChWPXt9KSk7dmFyIFE7KGZ1bmN0aW9uKGUpe2UuUEFHRT0icGFnZSIsZS5UQUJMRT0idGFibGUifSkoUXx8KFE9e30pKTt2YXIgVzsoZnVuY3Rpb24oZSl7ZS5FRElUPSJlZGl0IixlLkNMRUFOPSJjbGVhbiIsZS5SRUFET05MWT0icmVhZG9ubHkiLGUuRk9STT0iZm9ybSIsZS5QUklOVD0icHJpbnQiLGUuREVTSUdOPSJkZXNpZ24ifSkoV3x8KFc9e30pKTt2YXIgcTsoZnVuY3Rpb24oZSl7ZS5IRUFERVI9ImhlYWRlciIsZS5NQUlOPSJtYWluIixlLkZPT1RFUj0iZm9vdGVyIn0pKHF8fChxPXt9KSk7dmFyIFo7KGZ1bmN0aW9uKGUpe2UuUEFHSU5HPSJwYWdpbmciLGUuQ09OVElOVUlUWT0iY29udGludWl0eSJ9KShafHwoWj17fSkpO3ZhciBKOyhmdW5jdGlvbihlKXtlLlZFUlRJQ0FMPSJ2ZXJ0aWNhbCIsZS5IT1JJWk9OVEFMPSJob3Jpem9udGFsIn0pKEp8fChKPXt9KSk7dmFyIGo7KGZ1bmN0aW9uKGUpe2UuQlJFQUtfQUxMPSJicmVhay1hbGwiLGUuQlJFQUtfV09SRD0iYnJlYWstd29yZCJ9KShqfHwoaj17fSkpO3ZhciAkOyhmdW5jdGlvbihlKXtlLlNQRUVEPSJzcGVlZCIsZS5DT01QQVRJQklMSVRZPSJjb21wYXRpYmlsaXR5In0pKCR8fCgkPXt9KSk7dmFyIEQ7KGZ1bmN0aW9uKGUpe2UuTEVGVD0ibGVmdCIsZS5DRU5URVI9ImNlbnRlciIsZS5SSUdIVD0icmlnaHQiLGUuQUxJR05NRU5UPSJhbGlnbm1lbnQiLGUuSlVTVElGWT0ianVzdGlmeSJ9KShEfHwoRD17fSkpO3ZhciBlZTsoZnVuY3Rpb24oZSl7ZS5BTEw9ImFsbCIsZS5FTVBUWT0iZW1wdHkiLGUuRVhURVJOQUw9ImV4dGVybmFsIixlLklOVEVSTkFMPSJpbnRlcm5hbCIsZS5EQVNIPSJkYXNoIn0pKGVlfHwoZWU9e30pKTt2YXIgdGU7KGZ1bmN0aW9uKGUpe2UuVE9QPSJ0b3AiLGUuUklHSFQ9InJpZ2h0IixlLkJPVFRPTT0iYm90dG9tIixlLkxFRlQ9ImxlZnQifSkodGV8fCh0ZT17fSkpO3ZhciBpZTsoZnVuY3Rpb24oZSl7ZS5GT1JXQVJEPSJmb3J3YXJkIixlLkJBQ0s9ImJhY2sifSkoaWV8fChpZT17fSkpO3ZhciBrOyhmdW5jdGlvbihlKXtlLkNPTlRBSU49ImNvbnRhaW4iLGUuQ09WRVI9ImNvdmVyIn0pKGt8fChrPXt9KSk7dmFyIG07KGZ1bmN0aW9uKGUpe2UuUkVQRUFUPSJyZXBlYXQiLGUuTk9fUkVQRUFUPSJuby1yZXBlYXQiLGUuUkVQRUFUX1g9InJlcGVhdC14IixlLlJFUEVBVF9ZPSJyZXBlYXQteSJ9KShtfHwobT17fSkpLGsuQ09WRVIsbS5OT19SRVBFQVQ7dmFyIEY7KGZ1bmN0aW9uKGUpe2UuVE9QPSJ0b3AiLGUuTUlERExFPSJtaWRkbGUiLGUuQk9UVE9NPSJib3R0b20ifSkoRnx8KEY9e30pKSxGLkJPVFRPTSxULkhBTEYsVC5IQUxGO2NvbnN0IHVlPXtQQUdFX05POiJ7cGFnZU5vfSIsUEFHRV9DT1VOVDoie3BhZ2VDb3VudH0ifTtELkNFTlRFUix1ZS5QQUdFX05PLEkuQVJBQklDLEYuQk9UVE9NO3ZhciB5OyhmdW5jdGlvbihlKXtlLlRFWFQ9InRleHQiLGUuSU1BR0U9ImltYWdlIn0pKHl8fCh5PXt9KSkseS5URVhULEkuQVJBQklDO3ZhciBVOyhmdW5jdGlvbihlKXtlLlBBR0U9InBhZ2UiLGUuQ09OVElOVUlUWT0iY29udGludWl0eSJ9KShVfHwoVT17fSkpLFUuQ09OVElOVUlUWTtmdW5jdGlvbiBFZShlLHMpe2NvbnN0IEU9T2JqZWN0LmtleXMoZSksQT1PYmplY3Qua2V5cyhzKTtpZihFLmxlbmd0aCE9PUEubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgUj0wO1I8RS5sZW5ndGg7UisrKXtjb25zdCBhPUVbUl07aWYoYSE9PSJ2YWx1ZSImJiEoYT09PSJncm91cElkcyImJkFycmF5LmlzQXJyYXkoZVthXSkmJkFycmF5LmlzQXJyYXkoc1thXSkmJmxlKGVbYV0sc1thXSkpJiZlW2FdIT09c1thXSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBCKGUscz17fSl7Y29uc3R7ZXh0cmFQaWNrQXR0cnM6RX09cyxBPVsuLi5vZV07RSYmQS5wdXNoKC4uLkUpO2NvbnN0IFI9e3ZhbHVlOmUudmFsdWU9PT1QP2AKYDplLnZhbHVlfTtyZXR1cm4gQS5mb3JFYWNoKGE9Pntjb25zdCBwPWVbYV07cCE9PXZvaWQgMCYmKFJbYV09cCl9KSxSfWZ1bmN0aW9uIGgoZSxzPXt9KXtjb25zdHtleHRyYVBpY2tBdHRyczpFLGlzQ2xhc3NpZnlBcmVhOkE9ITEsaXNDbG9uZTpSPSEwfT1zLGE9Uj9IKGUpOmUscD1bXTtsZXQgaT0wO2Zvcig7aTxhLmxlbmd0aDspe2xldCB0PWFbaV07aWYoaT09PTAmJnQudmFsdWU9PT1QJiYhdC5saXN0SWQmJighdC50eXBlfHx0LnR5cGU9PT1sLlRFWFQpKXtpKys7Y29udGludWV9aWYodC5hcmVhSWQpe2NvbnN0IG49dC5hcmVhSWQsdT10LmFyZWEsYz1bXTtmb3IoO2k8YS5sZW5ndGg7KXtjb25zdCBvPWFbaV07aWYobiE9PW8uYXJlYUlkKXtpLS07YnJlYWt9ZGVsZXRlIG8uYXJlYSxkZWxldGUgby5hcmVhSWQsYy5wdXNoKG8pLGkrK31jb25zdCByPWgoYyxzKTtpZihBKXtjb25zdCBvPXt0eXBlOmwuQVJFQSx2YWx1ZToiIixhcmVhSWQ6bixhcmVhOnV9O28udmFsdWVMaXN0PXIsdD1vfWVsc2V7cC5zcGxpY2UoaSwwLC4uLnIpO2NvbnRpbnVlfX1lbHNlIGlmKHQudGl0bGVJZCYmdC5sZXZlbCl7Y29uc3Qgbj10LnRpdGxlSWQ7aWYobil7Y29uc3QgdT10LmxldmVsLGM9e3R5cGU6bC5USVRMRSx0aXRsZTp0LnRpdGxlLHRpdGxlSWQ6bix2YWx1ZToiIixsZXZlbDp1fSxyPVtdO2Zvcig7aTxhLmxlbmd0aDspe2NvbnN0IG89YVtpXTtpZihuIT09by50aXRsZUlkKXtpLS07YnJlYWt9ZGVsZXRlIG8ubGV2ZWwsZGVsZXRlIG8udGl0bGUsci5wdXNoKG8pLGkrK31jLnZhbHVlTGlzdD1oKHIscyksdD1jfX1lbHNlIGlmKHQubGlzdElkJiZ0Lmxpc3RUeXBlKXtjb25zdCBuPXQubGlzdElkO2lmKG4pe2NvbnN0IHU9dC5saXN0VHlwZSxjPXQubGlzdFN0eWxlLHI9e3R5cGU6bC5MSVNULHZhbHVlOiIiLGxpc3RJZDpuLGxpc3RUeXBlOnUsbGlzdFN0eWxlOmN9LG89W107Zm9yKDtpPGEubGVuZ3RoOyl7Y29uc3QgQz1hW2ldO2lmKG4hPT1DLmxpc3RJZCl7aS0tO2JyZWFrfWRlbGV0ZSBDLmxpc3RUeXBlLGRlbGV0ZSBDLmxpc3RTdHlsZSxvLnB1c2goQyksaSsrfXIudmFsdWVMaXN0PWgobyxzKSx0PXJ9fWVsc2UgaWYodC50eXBlPT09bC5UQUJMRSl7aWYodC5wYWdpbmdJZCl7bGV0IG49aSsxLHU9MDtmb3IoO248YS5sZW5ndGg7KXtjb25zdCBjPWFbbl07aWYoYy5wYWdpbmdJZD09PXQucGFnaW5nSWQpdC5oZWlnaHQrPWMuaGVpZ2h0LHQudHJMaXN0LnB1c2goLi4uYy50ckxpc3QpLG4rKyx1Kys7ZWxzZSBicmVha31pKz11fWlmKHQudHJMaXN0KWZvcihsZXQgbj0wO248dC50ckxpc3QubGVuZ3RoO24rKyl7Y29uc3QgdT10LnRyTGlzdFtuXTtkZWxldGUgdS5pZDtmb3IobGV0IGM9MDtjPHUudGRMaXN0Lmxlbmd0aDtjKyspe2NvbnN0IHI9dS50ZExpc3RbY10sbz17Y29sc3BhbjpyLmNvbHNwYW4scm93c3BhbjpyLnJvd3NwYW4sdmFsdWU6aChyLnZhbHVlLF8oZyh7fSxzKSx7aXNDbGFzc2lmeUFyZWE6ITF9KSl9O3NlLmZvckVhY2goQz0+e2NvbnN0IFM9cltDXTtTIT09dm9pZCAwJiYob1tDXT1TKX0pLHUudGRMaXN0W2NdPW99fX1lbHNlIGlmKHQudHlwZT09PWwuSFlQRVJMSU5LKXtjb25zdCBuPXQuaHlwZXJsaW5rSWQ7aWYobil7Y29uc3QgdT17dHlwZTpsLkhZUEVSTElOSyx2YWx1ZToiIix1cmw6dC51cmx9LGM9W107Zm9yKDtpPGEubGVuZ3RoOyl7Y29uc3Qgcj1hW2ldO2lmKG4hPT1yLmh5cGVybGlua0lkKXtpLS07YnJlYWt9ZGVsZXRlIHIudHlwZSxkZWxldGUgci51cmwsYy5wdXNoKHIpLGkrK311LnZhbHVlTGlzdD1oKGMscyksdD11fX1lbHNlIGlmKHQudHlwZT09PWwuREFURSl7Y29uc3Qgbj10LmRhdGVJZDtpZihuKXtjb25zdCB1PXt0eXBlOmwuREFURSx2YWx1ZToiIixkYXRlRm9ybWF0OnQuZGF0ZUZvcm1hdH0sYz1bXTtmb3IoO2k8YS5sZW5ndGg7KXtjb25zdCByPWFbaV07aWYobiE9PXIuZGF0ZUlkKXtpLS07YnJlYWt9ZGVsZXRlIHIudHlwZSxkZWxldGUgci5kYXRlRm9ybWF0LGMucHVzaChyKSxpKyt9dS52YWx1ZUxpc3Q9aChjLHMpLHQ9dX19ZWxzZSBpZih0LmNvbnRyb2xJZCl7Y29uc3Qgbj10LmNvbnRyb2xJZDtpZih0LmNvbnRyb2xDb21wb25lbnQ9PT1MLlBSRUZJWCl7Y29uc3QgdT1bXTtsZXQgYz0hMSxyPWk7Zm9yKDtyPGEubGVuZ3RoOyl7Y29uc3Qgbz1hW3JdO2lmKG4hPT1vLmNvbnRyb2xJZClicmVhaztvLmNvbnRyb2xDb21wb25lbnQ9PT1MLlZBTFVFJiYoZGVsZXRlIG8uY29udHJvbCxkZWxldGUgby5jb250cm9sSWQsdS5wdXNoKG8pKSxvLmNvbnRyb2xDb21wb25lbnQ9PT1MLlBPU1RGSVgmJihjPSEwKSxyKyt9aWYoYyl7Y29uc3Qgbz13KHQsY2UpLEM9ZyhnKHt9LHQuY29udHJvbCksbyksUz1fKGcoe30sdyh0LHJlKSkse3R5cGU6bC5DT05UUk9MLHZhbHVlOiIiLGNvbnRyb2w6Qyxjb250cm9sSWQ6bn0pO1MuY29udHJvbC52YWx1ZT1oKHUscyksdD1CKFMse2V4dHJhUGlja0F0dHJzOkV9KSxpKz1yLWktMX19aWYodC5jb250cm9sQ29tcG9uZW50JiYoZGVsZXRlIHQuY29udHJvbCxkZWxldGUgdC5jb250cm9sSWQsdC5jb250cm9sQ29tcG9uZW50IT09TC5WQUxVRSYmdC5jb250cm9sQ29tcG9uZW50IT09TC5QUkVfVEVYVCYmdC5jb250cm9sQ29tcG9uZW50IT09TC5QT1NUX1RFWFQpKXtpKys7Y29udGludWV9fWNvbnN0IHg9Qih0LHtleHRyYVBpY2tBdHRyczpFfSk7aWYoIXQudHlwZXx8dC50eXBlPT09bC5URVhUfHx0LnR5cGU9PT1sLlNVQlNDUklQVHx8dC50eXBlPT09bC5TVVBFUlNDUklQVClmb3IoO2k8YS5sZW5ndGg7KXtjb25zdCBuPWFbaSsxXTtpZihpKyssbiYmRWUoeCxCKG4se2V4dHJhUGlja0F0dHJzOkV9KSkpe2NvbnN0IHU9bi52YWx1ZT09PVA/YApgOm4udmFsdWU7eC52YWx1ZSs9dX1lbHNlIGJyZWFrfWVsc2UgaSsrO3AucHVzaCh4KX1yZXR1cm4gcH1vbm1lc3NhZ2U9ZT0+e2NvbnN0IHM9ZS5kYXRhLHtvcHRpb25zOkUsZGF0YTpBfT1zLHtleHRyYVBpY2tBdHRyczpSPVtdfT1FfHx7fSxhPXtoZWFkZXI6aChBLmhlYWRlcix7ZXh0cmFQaWNrQXR0cnM6Uixpc0Nsb25lOiExfSksbWFpbjpoKEEubWFpbix7ZXh0cmFQaWNrQXR0cnM6Uixpc0NsYXNzaWZ5QXJlYTohMCxpc0Nsb25lOiExfSksZm9vdGVyOmgoQS5mb290ZXIse2V4dHJhUGlja0F0dHJzOlIsaXNDbG9uZTohMX0pfTtwb3N0TWVzc2FnZShhKX19KSgpO30pKCk7Cg==";
14726
14799
  const blob = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs)], { type: "text/javascript;charset=utf-8" });
14727
14800
  function WorkerWrapper() {
14728
14801
  const objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);
@@ -17537,19 +17610,28 @@ class Area {
17537
17610
  }
17538
17611
  }
17539
17612
  insertArea(payload) {
17613
+ const { id, value, area, position, range } = payload;
17540
17614
  if (this.zone.getZone() !== EditorZone.MAIN) {
17541
17615
  this.zone.setZone(EditorZone.MAIN);
17542
17616
  }
17543
17617
  this.draw.getPosition().setPositionContext({
17544
17618
  isTable: false
17545
17619
  });
17546
- const { id, value, area, position } = payload;
17547
- if (position === LocationPosition.BEFORE) {
17548
- this.range.setRange(0, 0);
17549
- } else {
17620
+ if (range && !this.getActiveAreaId()) {
17621
+ const { startIndex, endIndex } = range;
17550
17622
  const elementList = this.draw.getOriginalMainElementList();
17551
- const lastIndex = elementList.length - 1;
17552
- this.range.setRange(lastIndex, lastIndex);
17623
+ if (!elementList[startIndex] || !elementList[endIndex]) {
17624
+ return null;
17625
+ }
17626
+ this.range.setRange(range.startIndex, range.endIndex);
17627
+ } else {
17628
+ if (position === LocationPosition.BEFORE) {
17629
+ this.range.setRange(0, 0);
17630
+ } else {
17631
+ const elementList = this.draw.getOriginalMainElementList();
17632
+ const lastIndex = elementList.length - 1;
17633
+ this.range.setRange(lastIndex, lastIndex);
17634
+ }
17553
17635
  }
17554
17636
  const areaId = id || getUUID();
17555
17637
  this.draw.insertElementList([
@@ -17640,20 +17722,34 @@ class Area {
17640
17722
  value: zipElementList(areaInfo.elementList)
17641
17723
  };
17642
17724
  }
17643
- getContextByAreaId(areaId) {
17725
+ getContextByAreaId(areaId, options) {
17726
+ var _a, _b, _c;
17644
17727
  const elementList = this.draw.getOriginalMainElementList();
17645
17728
  for (let e = 0; e < elementList.length; e++) {
17646
17729
  const element = elementList[e];
17647
- if (element.areaId === areaId) {
17648
- const positionList = this.position.getOriginalMainPositionList();
17649
- return {
17650
- range: {
17651
- startIndex: e,
17652
- endIndex: e
17653
- },
17654
- elementPosition: positionList[e]
17655
- };
17730
+ if ((options == null ? void 0 : options.position) === LocationPosition.OUTER_BEFORE) {
17731
+ if (((_a = elementList[e + 1]) == null ? void 0 : _a.areaId) !== areaId)
17732
+ continue;
17733
+ } else if ((options == null ? void 0 : options.position) === LocationPosition.AFTER) {
17734
+ if (!(element.areaId === areaId && ((_b = elementList[e + 1]) == null ? void 0 : _b.areaId) !== areaId)) {
17735
+ continue;
17736
+ }
17737
+ } else if ((options == null ? void 0 : options.position) === LocationPosition.OUTER_AFTER) {
17738
+ if (!(element.areaId !== areaId && ((_c = elementList[e - 1]) == null ? void 0 : _c.areaId) === areaId)) {
17739
+ continue;
17740
+ }
17741
+ } else {
17742
+ if (element.areaId !== areaId)
17743
+ continue;
17656
17744
  }
17745
+ const positionList = this.position.getOriginalMainPositionList();
17746
+ return {
17747
+ range: {
17748
+ startIndex: e,
17749
+ endIndex: e
17750
+ },
17751
+ elementPosition: positionList[e]
17752
+ };
17657
17753
  }
17658
17754
  return null;
17659
17755
  }
@@ -18318,7 +18414,7 @@ class Draw {
18318
18414
  let deleteIndex = endIndex - 1;
18319
18415
  while (deleteIndex >= start) {
18320
18416
  const deleteElement = elementList[deleteIndex];
18321
- if (((_c = deleteElement == null ? void 0 : deleteElement.control) == null ? void 0 : _c.hide) || ((_d = deleteElement == null ? void 0 : deleteElement.area) == null ? void 0 : _d.hide) || tdDeletable !== false && ((_e = deleteElement == null ? void 0 : deleteElement.control) == null ? void 0 : _e.deletable) !== false && (!deleteElement.controlId || this.mode !== EditorMode.FORM || !modeRule[this.mode].controlDeletableDisabled) && ((_f = deleteElement == null ? void 0 : deleteElement.title) == null ? void 0 : _f.deletable) !== false && (group2.deletable !== false || !((_g = deleteElement.groupIds) == null ? void 0 : _g.length)) && (((_h = deleteElement == null ? void 0 : deleteElement.area) == null ? void 0 : _h.deletable) !== false || (deleteElement == null ? void 0 : deleteElement.areaIndex) !== 0)) {
18417
+ if ((deleteElement == null ? void 0 : deleteElement.hide) || ((_c = deleteElement == null ? void 0 : deleteElement.control) == null ? void 0 : _c.hide) || ((_d = deleteElement == null ? void 0 : deleteElement.area) == null ? void 0 : _d.hide) || tdDeletable !== false && ((_e = deleteElement == null ? void 0 : deleteElement.control) == null ? void 0 : _e.deletable) !== false && (!deleteElement.controlId || this.mode !== EditorMode.FORM || !modeRule[this.mode].controlDeletableDisabled) && ((_f = deleteElement == null ? void 0 : deleteElement.title) == null ? void 0 : _f.deletable) !== false && (group2.deletable !== false || !((_g = deleteElement.groupIds) == null ? void 0 : _g.length)) && (((_h = deleteElement == null ? void 0 : deleteElement.area) == null ? void 0 : _h.deletable) !== false || (deleteElement == null ? void 0 : deleteElement.areaIndex) !== 0)) {
18322
18418
  elementList.splice(deleteIndex, 1);
18323
18419
  }
18324
18420
  deleteIndex--;
@@ -18720,7 +18816,7 @@ class Draw {
18720
18816
  return defaultBasicRowMarginHeight * ((_a = el.rowMargin) != null ? _a : defaultRowMargin) * scale;
18721
18817
  }
18722
18818
  computeRowList(payload) {
18723
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
18819
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
18724
18820
  const { innerWidth, elementList, isPagingMode = false, isFromTable = false, startX = 0, startY = 0, pageHeight = 0, mainOuterHeight = 0, surroundElementList = [] } = payload;
18725
18821
  const { defaultSize, defaultRowMargin, scale, table: { tdPadding, defaultTrMinHeight }, defaultTabWidth } = this.options;
18726
18822
  const defaultBasicRowMarginHeight = this.getDefaultBasicRowMarginHeight();
@@ -18760,8 +18856,11 @@ class Draw {
18760
18856
  const isStartElement = curRow.elementList.length === 1;
18761
18857
  x += isStartElement ? offsetX : 0;
18762
18858
  y += isStartElement ? curRow.offsetY || 0 : 0;
18763
- if ((((_d = element.control) == null ? void 0 : _d.hide) || ((_e = element.area) == null ? void 0 : _e.hide)) && !this.isDesignMode()) {
18764
- metrics.height = ((_f = curRow.elementList[curRow.elementList.length - 1]) == null ? void 0 : _f.metrics.height) || this.options.defaultSize * scale;
18859
+ if ((element.hide || ((_d = element.control) == null ? void 0 : _d.hide) || ((_e = element.area) == null ? void 0 : _e.hide)) && !this.isDesignMode()) {
18860
+ const preElement2 = curRow.elementList[curRow.elementList.length - 1];
18861
+ metrics.height = (preElement2 == null ? void 0 : preElement2.metrics.height) || this.options.defaultSize * scale;
18862
+ metrics.boundingBoxAscent = (preElement2 == null ? void 0 : preElement2.metrics.boundingBoxAscent) || 0;
18863
+ metrics.boundingBoxDescent = (preElement2 == null ? void 0 : preElement2.metrics.boundingBoxDescent) || 0;
18765
18864
  } else if (element.type === ElementType.IMAGE || element.type === ElementType.LATEX) {
18766
18865
  if (element.imgDisplay === ImageDisplay.SURROUND || element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
18767
18866
  metrics.width = 0;
@@ -18806,7 +18905,7 @@ class Draw {
18806
18905
  elementList.splice(i + 1, combineCount);
18807
18906
  }
18808
18907
  }
18809
- element.pagingIndex = (_g = element.pagingIndex) != null ? _g : 0;
18908
+ element.pagingIndex = (_f = element.pagingIndex) != null ? _f : 0;
18810
18909
  const trList = element.trList;
18811
18910
  for (let t = 0; t < trList.length; t++) {
18812
18911
  const tr = trList[t];
@@ -18888,7 +18987,7 @@ class Draw {
18888
18987
  metrics.height = elementHeight;
18889
18988
  metrics.boundingBoxDescent = elementHeight;
18890
18989
  metrics.boundingBoxAscent = -rowMargin;
18891
- if (((_h = elementList[i + 1]) == null ? void 0 : _h.type) === ElementType.TABLE) {
18990
+ if (((_g = elementList[i + 1]) == null ? void 0 : _g.type) === ElementType.TABLE) {
18892
18991
  metrics.boundingBoxAscent -= rowMargin;
18893
18992
  }
18894
18993
  if (isPagingMode) {
@@ -18898,7 +18997,7 @@ class Draw {
18898
18997
  for (let r = 0; r < rowList.length; r++) {
18899
18998
  const row = rowList[r];
18900
18999
  const rowOffsetY = row.offsetY || 0;
18901
- if (row.height + curPagePreHeight + rowOffsetY > height2 || ((_i = rowList[r - 1]) == null ? void 0 : _i.isPageBreak)) {
19000
+ if (row.height + curPagePreHeight + rowOffsetY > height2 || ((_h = rowList[r - 1]) == null ? void 0 : _h.isPageBreak)) {
18902
19001
  curPagePreHeight = marginHeight + row.height + rowOffsetY;
18903
19002
  } else {
18904
19003
  curPagePreHeight += row.height + rowOffsetY;
@@ -18920,7 +19019,7 @@ class Draw {
18920
19019
  const trHeight = tr.height * scale;
18921
19020
  if (curPagePreHeight + rowMarginHeight + preTrHeight + trHeight > height2) {
18922
19021
  const rowColCount = tr.tdList.reduce((pre, cur) => pre + cur.colspan, 0);
18923
- if (((_j = element.colgroup) == null ? void 0 : _j.length) !== rowColCount) {
19022
+ if (((_i = element.colgroup) == null ? void 0 : _i.length) !== rowColCount) {
18924
19023
  deleteCount = 0;
18925
19024
  }
18926
19025
  break;
@@ -19038,14 +19137,14 @@ class Draw {
19038
19137
  metrics.boundingBoxDescent += metrics.height / 2;
19039
19138
  }
19040
19139
  }
19041
- const ascent = element.imgDisplay !== ImageDisplay.INLINE && element.type === ElementType.IMAGE || element.type === ElementType.LATEX ? metrics.height + rowMargin : metrics.boundingBoxAscent + rowMargin;
19140
+ const ascent = !element.hide && (element.imgDisplay !== ImageDisplay.INLINE && element.type === ElementType.IMAGE || element.type === ElementType.LATEX) ? metrics.height + rowMargin : metrics.boundingBoxAscent + rowMargin;
19042
19141
  const height = rowMargin + metrics.boundingBoxAscent + metrics.boundingBoxDescent + rowMargin;
19043
19142
  const rowElement = Object.assign(element, {
19044
19143
  metrics,
19045
19144
  left: 0,
19046
19145
  style: this.getElementFont(element, scale)
19047
19146
  });
19048
- if ((_k = rowElement.control) == null ? void 0 : _k.minWidth) {
19147
+ if ((_j = rowElement.control) == null ? void 0 : _j.minWidth) {
19049
19148
  if (rowElement.controlComponent) {
19050
19149
  controlRealWidth += metrics.width;
19051
19150
  }
@@ -19101,7 +19200,7 @@ class Draw {
19101
19200
  x = surroundPosition.x;
19102
19201
  curRowWidth += surroundPosition.rowIncreaseWidth;
19103
19202
  x += metrics.width;
19104
- const isForceBreak = element.type === ElementType.SEPARATOR || element.type === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.BLOCK || element.type === ElementType.BLOCK || (preElement == null ? void 0 : preElement.imgDisplay) === ImageDisplay.INLINE || element.imgDisplay === ImageDisplay.INLINE || (preElement == null ? void 0 : preElement.listId) !== element.listId || (preElement == null ? void 0 : preElement.areaId) !== element.areaId && !((_l = element.area) == null ? void 0 : _l.hide) || ((_m = element.control) == null ? void 0 : _m.flexDirection) === FlexDirection.COLUMN && (element.controlComponent === ControlComponent.CHECKBOX || element.controlComponent === ControlComponent.RADIO) && (preElement == null ? void 0 : preElement.controlComponent) === ControlComponent.VALUE || i !== 0 && element.value === ZERO && !((_n = element.area) == null ? void 0 : _n.hide);
19203
+ const isForceBreak = element.type === ElementType.SEPARATOR || element.type === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.BLOCK || element.type === ElementType.BLOCK || (preElement == null ? void 0 : preElement.imgDisplay) === ImageDisplay.INLINE || element.imgDisplay === ImageDisplay.INLINE || (preElement == null ? void 0 : preElement.listId) !== element.listId || (preElement == null ? void 0 : preElement.areaId) !== element.areaId && !((_k = element.area) == null ? void 0 : _k.hide) || ((_l = element.control) == null ? void 0 : _l.flexDirection) === FlexDirection.COLUMN && (element.controlComponent === ControlComponent.CHECKBOX || element.controlComponent === ControlComponent.RADIO) && (preElement == null ? void 0 : preElement.controlComponent) === ControlComponent.VALUE || i !== 0 && element.value === ZERO && !((_m = element.area) == null ? void 0 : _m.hide);
19105
19204
  const isWidthNotEnough = curRowWidth > availableWidth;
19106
19205
  const isWrap = isForceBreak || isWidthNotEnough;
19107
19206
  if (isWrap) {
@@ -19112,10 +19211,10 @@ class Draw {
19112
19211
  elementList: [rowElement],
19113
19212
  ascent,
19114
19213
  rowIndex: curRow.rowIndex + 1,
19115
- rowFlex: ((_o = elementList[i]) == null ? void 0 : _o.rowFlex) || ((_p = elementList[i + 1]) == null ? void 0 : _p.rowFlex),
19214
+ rowFlex: ((_n = elementList[i]) == null ? void 0 : _n.rowFlex) || ((_o = elementList[i + 1]) == null ? void 0 : _o.rowFlex),
19116
19215
  isPageBreak: element.type === ElementType.PAGE_BREAK
19117
19216
  };
19118
- if (rowElement.controlComponent !== ControlComponent.PREFIX && ((_q = rowElement.control) == null ? void 0 : _q.indentation) === ControlIndentation.VALUE_START) {
19217
+ if (rowElement.controlComponent !== ControlComponent.PREFIX && ((_p = rowElement.control) == null ? void 0 : _p.indentation) === ControlIndentation.VALUE_START) {
19119
19218
  const preStartIndex = curRow.elementList.findIndex((el) => el.controlId === rowElement.controlId && el.controlComponent !== ControlComponent.PREFIX);
19120
19219
  if (~preStartIndex) {
19121
19220
  const preRowPositionList = this.position.computeRowPosition({
@@ -19133,11 +19232,11 @@ class Draw {
19133
19232
  row.offsetX = listStyleMap.get(element.listId);
19134
19233
  row.listIndex = listIndex;
19135
19234
  }
19136
- row.offsetY = !isFromTable && ((_r = element.area) == null ? void 0 : _r.top) && element.areaId !== ((_s = elementList[i - 1]) == null ? void 0 : _s.areaId) ? element.area.top * scale : 0;
19235
+ row.offsetY = !isFromTable && ((_q = element.area) == null ? void 0 : _q.top) && element.areaId !== ((_r = elementList[i - 1]) == null ? void 0 : _r.areaId) ? element.area.top * scale : 0;
19137
19236
  rowList.push(row);
19138
19237
  } else {
19139
19238
  curRow.width += metrics.width;
19140
- if (i === 0 && (getIsBlockElement(elementList[1]) || !!((_t = elementList[1]) == null ? void 0 : _t.areaId))) {
19239
+ if (i === 0 && (getIsBlockElement(elementList[1]) || !!((_s = elementList[1]) == null ? void 0 : _s.areaId))) {
19141
19240
  curRow.height = defaultBasicRowMarginHeight;
19142
19241
  curRow.ascent = defaultBasicRowMarginHeight;
19143
19242
  } else if (curRow.height < height) {
@@ -19149,7 +19248,7 @@ class Draw {
19149
19248
  if (isWrap || i === elementList.length - 1) {
19150
19249
  curRow.isWidthNotEnough = isWidthNotEnough && !isForceBreak;
19151
19250
  if (!curRow.isSurround && ((preElement == null ? void 0 : preElement.rowFlex) === RowFlex.JUSTIFY || (preElement == null ? void 0 : preElement.rowFlex) === RowFlex.ALIGNMENT && curRow.isWidthNotEnough)) {
19152
- const rowElementList = ((_u = curRow.elementList[0]) == null ? void 0 : _u.value) === ZERO ? curRow.elementList.slice(1) : curRow.elementList;
19251
+ const rowElementList = ((_t = curRow.elementList[0]) == null ? void 0 : _t.value) === ZERO ? curRow.elementList.slice(1) : curRow.elementList;
19153
19252
  const gap = (availableWidth - curRow.width) / (rowElementList.length - 1);
19154
19253
  for (let e = 0; e < rowElementList.length - 1; e++) {
19155
19254
  const el = rowElementList[e];
@@ -19276,7 +19375,7 @@ class Draw {
19276
19375
  const metrics = element.metrics;
19277
19376
  const { ascent: offsetY, coordinate: { leftTop: [x, y] } } = positionList[curRow.startIndex + j];
19278
19377
  const preElement = curRow.elementList[j - 1];
19279
- if ((((_a = element.control) == null ? void 0 : _a.hide) || ((_b = element.area) == null ? void 0 : _b.hide)) && !this.isDesignMode()) {
19378
+ if ((element.hide || ((_a = element.control) == null ? void 0 : _a.hide) || ((_b = element.area) == null ? void 0 : _b.hide)) && !this.isDesignMode()) {
19280
19379
  this.textParticle.complete();
19281
19380
  } else if (element.type === ElementType.IMAGE) {
19282
19381
  this.textParticle.complete();
@@ -19427,7 +19526,7 @@ class Draw {
19427
19526
  this.group.recordFillInfo(element, x, y, metrics.width, curRow.height);
19428
19527
  }
19429
19528
  index2++;
19430
- if (element.type === ElementType.TABLE) {
19529
+ if (element.type === ElementType.TABLE && !element.hide) {
19431
19530
  const tdPaddingWidth = tdPadding[1] + tdPadding[3];
19432
19531
  for (let t = 0; t < element.trList.length; t++) {
19433
19532
  const tr = element.trList[t];
@@ -21156,18 +21255,12 @@ class CommandAdapt {
21156
21255
  const { startIndex, endIndex } = this.range.getRange();
21157
21256
  if (!~startIndex && !~endIndex)
21158
21257
  return null;
21159
- const { id, conceptId, value, width, height, imgDisplay } = payload;
21160
- const imageId = id || getUUID();
21258
+ const imageId = payload.id || getUUID();
21161
21259
  this.insertElementList([
21162
- {
21163
- value,
21164
- width,
21165
- height,
21166
- conceptId,
21260
+ __spreadProps(__spreadValues({}, payload), {
21167
21261
  id: imageId,
21168
- type: ElementType.IMAGE,
21169
- imgDisplay
21170
- }
21262
+ type: ElementType.IMAGE
21263
+ })
21171
21264
  ]);
21172
21265
  return imageId;
21173
21266
  }
@@ -21763,24 +21856,64 @@ class CommandAdapt {
21763
21856
  return this.workerManager.getCatalog();
21764
21857
  }
21765
21858
  locationCatalog(titleId) {
21766
- var _a;
21767
- const elementList = this.draw.getOriginalMainElementList();
21768
- let newIndex = -1;
21769
- for (let e = 0; e < elementList.length; e++) {
21770
- const element = elementList[e];
21771
- if (element.titleId === titleId && ((_a = elementList[e + 1]) == null ? void 0 : _a.titleId) !== titleId) {
21772
- newIndex = e;
21773
- break;
21859
+ const elementList = this.draw.getOriginalElementList();
21860
+ function getPosition(elementList2, titleId2) {
21861
+ var _a;
21862
+ for (let e = 0; e < elementList2.length; e++) {
21863
+ const element = elementList2[e];
21864
+ if (element.type === ElementType.TABLE) {
21865
+ const trList = element.trList;
21866
+ for (let r = 0; r < trList.length; r++) {
21867
+ const tr = trList[r];
21868
+ for (let d = 0; d < tr.tdList.length; d++) {
21869
+ const td = tr.tdList[d];
21870
+ const range = getPosition(td.value, titleId2);
21871
+ if (range) {
21872
+ return __spreadProps(__spreadValues({}, range), {
21873
+ isTable: true,
21874
+ index: e,
21875
+ trIndex: r,
21876
+ tdIndex: d,
21877
+ tdId: td.id,
21878
+ trId: tr.id,
21879
+ tableId: element.id
21880
+ });
21881
+ }
21882
+ }
21883
+ }
21884
+ }
21885
+ if (element.titleId === titleId2) {
21886
+ let newIndex = e;
21887
+ while (newIndex < elementList2.length) {
21888
+ if (((_a = elementList2[newIndex + 1]) == null ? void 0 : _a.titleId) !== titleId2) {
21889
+ return {
21890
+ isTable: false,
21891
+ startIndex: newIndex,
21892
+ endIndex: newIndex
21893
+ };
21894
+ }
21895
+ newIndex++;
21896
+ }
21897
+ }
21774
21898
  }
21899
+ return null;
21775
21900
  }
21776
- if (!~newIndex)
21901
+ const context = getPosition(elementList, titleId);
21902
+ if (!context)
21777
21903
  return;
21904
+ const { isTable, index: index2, startTdIndex, endTdIndex, startTrIndex, endTrIndex, trIndex, tdIndex, tdId, trId, tableId, endIndex } = context;
21778
21905
  this.position.setPositionContext({
21779
- isTable: false
21906
+ isTable,
21907
+ index: index2,
21908
+ trIndex,
21909
+ tdIndex,
21910
+ tdId,
21911
+ trId,
21912
+ tableId
21780
21913
  });
21781
- this.range.setRange(newIndex, newIndex);
21914
+ this.range.setRange(endIndex, endIndex, tableId, startTdIndex, endTdIndex, startTrIndex, endTrIndex);
21782
21915
  this.draw.render({
21783
- curIndex: newIndex,
21916
+ curIndex: endIndex,
21784
21917
  isCompute: false,
21785
21918
  isSubmitHistory: false
21786
21919
  });
@@ -22189,8 +22322,20 @@ class CommandAdapt {
22189
22322
  setAreaProperties(payload) {
22190
22323
  this.draw.getArea().setAreaProperties(payload);
22191
22324
  }
22192
- locationArea(areaId) {
22193
- const context = this.draw.getArea().getContextByAreaId(areaId);
22325
+ locationArea(areaId, options) {
22326
+ if ((options == null ? void 0 : options.isAppendLastLineBreak) && (options == null ? void 0 : options.position) === LocationPosition.OUTER_AFTER) {
22327
+ const elementList = this.draw.getOriginalMainElementList();
22328
+ if (elementList[elementList.length - 1].areaId === areaId) {
22329
+ this.draw.appendElementList([
22330
+ {
22331
+ value: ZERO
22332
+ }
22333
+ ], {
22334
+ isSubmitHistory: false
22335
+ });
22336
+ }
22337
+ }
22338
+ const context = this.draw.getArea().getContextByAreaId(areaId, options);
22194
22339
  if (!context)
22195
22340
  return;
22196
22341
  const { range: { endIndex }, elementPosition } = context;
@@ -22199,15 +22344,13 @@ class CommandAdapt {
22199
22344
  });
22200
22345
  this.range.setRange(endIndex, endIndex);
22201
22346
  this.draw.render({
22202
- isSetCursor: false,
22347
+ curIndex: endIndex,
22348
+ isSetCursor: true,
22203
22349
  isCompute: false,
22204
22350
  isSubmitHistory: false
22205
22351
  });
22206
22352
  const cursor = this.draw.getCursor();
22207
22353
  this.position.setCursorPosition(elementPosition);
22208
- cursor.drawCursor({
22209
- hitLineStartIndex: endIndex
22210
- });
22211
22354
  cursor.moveCursorToVisible({
22212
22355
  cursorPosition: elementPosition,
22213
22356
  direction: MoveDirection.UP