@wcardinal/wcardinal-ui 0.371.0 → 0.373.0

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.
Files changed (85) hide show
  1. package/dist/types/wcardinal/ui/d-table-body.d.ts +23 -3
  2. package/dist/types/wcardinal/ui/shape/e-shape-connector-container-impl.d.ts +1 -1
  3. package/dist/types/wcardinal/ui/shape/e-shape-connector-container.d.ts +2 -1
  4. package/dist/types/wcardinal/ui/shape/e-shape-connector-edge-container-impl.d.ts +2 -1
  5. package/dist/types/wcardinal/ui/shape/e-shape-connector-edge-container.d.ts +2 -1
  6. package/dist/types/wcardinal/ui/shape/e-shape-connector-edge-impl.d.ts +1 -1
  7. package/dist/types/wcardinal/ui/shape/e-shape-connector-edge.d.ts +1 -1
  8. package/dist/types/wcardinal/ui/shape/e-shape-deleter.d.ts +2 -0
  9. package/dist/types/wcardinal/ui/shape/e-shape.d.ts +6 -8
  10. package/dist/types/wcardinal/ui/shape/variant/e-shape-base.d.ts +10 -13
  11. package/dist/types/wcardinal/ui/shape/variant/e-shape-connector-line.d.ts +6 -5
  12. package/dist/types/wcardinal/ui/shape/variant/e-shape-group-size-parent.d.ts +4 -3
  13. package/dist/types/wcardinal/ui/shape/variant/e-shape-lock-part.d.ts +8 -0
  14. package/dist/types/wcardinal/ui/shape/variant/e-shape-lock.d.ts +9 -0
  15. package/dist/types/wcardinal/ui/shape/variant/index.d.ts +2 -0
  16. package/dist/wcardinal/ui/d-chart-axis-base-bar.js +3 -2
  17. package/dist/wcardinal/ui/d-chart-axis-base-bar.js.map +1 -1
  18. package/dist/wcardinal/ui/d-chart-axis-base-tick-container.js +7 -6
  19. package/dist/wcardinal/ui/d-chart-axis-base-tick-container.js.map +1 -1
  20. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.js +7 -6
  21. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.js.map +1 -1
  22. package/dist/wcardinal/ui/d-chart-series-line-of-any.js +3 -2
  23. package/dist/wcardinal/ui/d-chart-series-line-of-any.js.map +1 -1
  24. package/dist/wcardinal/ui/d-chart-series-line.js +3 -2
  25. package/dist/wcardinal/ui/d-chart-series-line.js.map +1 -1
  26. package/dist/wcardinal/ui/d-chart-series-linear.js +3 -2
  27. package/dist/wcardinal/ui/d-chart-series-linear.js.map +1 -1
  28. package/dist/wcardinal/ui/d-diagram-canvas-editor-snap.js +5 -4
  29. package/dist/wcardinal/ui/d-diagram-canvas-editor-snap.js.map +1 -1
  30. package/dist/wcardinal/ui/d-table-body.js +31 -8
  31. package/dist/wcardinal/ui/d-table-body.js.map +1 -1
  32. package/dist/wcardinal/ui/shape/e-shape-capability.js +1 -1
  33. package/dist/wcardinal/ui/shape/e-shape-capability.js.map +1 -1
  34. package/dist/wcardinal/ui/shape/e-shape-connector-container-impl.js +4 -2
  35. package/dist/wcardinal/ui/shape/e-shape-connector-container-impl.js.map +1 -1
  36. package/dist/wcardinal/ui/shape/e-shape-connector-container.js.map +1 -1
  37. package/dist/wcardinal/ui/shape/e-shape-connector-edge-container-impl.js +3 -3
  38. package/dist/wcardinal/ui/shape/e-shape-connector-edge-container-impl.js.map +1 -1
  39. package/dist/wcardinal/ui/shape/e-shape-connector-edge-container.js.map +1 -1
  40. package/dist/wcardinal/ui/shape/e-shape-connector-edge-impl.js +2 -2
  41. package/dist/wcardinal/ui/shape/e-shape-connector-edge-impl.js.map +1 -1
  42. package/dist/wcardinal/ui/shape/e-shape-connector-edge.js.map +1 -1
  43. package/dist/wcardinal/ui/shape/e-shape-deleter.js +18 -2
  44. package/dist/wcardinal/ui/shape/e-shape-deleter.js.map +1 -1
  45. package/dist/wcardinal/ui/shape/e-shape-runtime-impl.js +5 -4
  46. package/dist/wcardinal/ui/shape/e-shape-runtime-impl.js.map +1 -1
  47. package/dist/wcardinal/ui/shape/e-shape-transforms.js +5 -4
  48. package/dist/wcardinal/ui/shape/e-shape-transforms.js.map +1 -1
  49. package/dist/wcardinal/ui/shape/e-shape.js.map +1 -1
  50. package/dist/wcardinal/ui/shape/variant/deserialize-connector-line.js +3 -2
  51. package/dist/wcardinal/ui/shape/variant/deserialize-connector-line.js.map +1 -1
  52. package/dist/wcardinal/ui/shape/variant/e-shape-base.js +59 -73
  53. package/dist/wcardinal/ui/shape/variant/e-shape-base.js.map +1 -1
  54. package/dist/wcardinal/ui/shape/variant/e-shape-connector-line.js +18 -18
  55. package/dist/wcardinal/ui/shape/variant/e-shape-connector-line.js.map +1 -1
  56. package/dist/wcardinal/ui/shape/variant/e-shape-group-size-editor.js +33 -26
  57. package/dist/wcardinal/ui/shape/variant/e-shape-group-size-editor.js.map +1 -1
  58. package/dist/wcardinal/ui/shape/variant/e-shape-group-size-layout.js +3 -2
  59. package/dist/wcardinal/ui/shape/variant/e-shape-group-size-layout.js.map +1 -1
  60. package/dist/wcardinal/ui/shape/variant/e-shape-group-size-parent.js.map +1 -1
  61. package/dist/wcardinal/ui/shape/variant/e-shape-group.js +2 -0
  62. package/dist/wcardinal/ui/shape/variant/e-shape-group.js.map +1 -1
  63. package/dist/wcardinal/ui/shape/variant/e-shape-lock-part.js +8 -0
  64. package/dist/wcardinal/ui/shape/variant/e-shape-lock-part.js.map +1 -0
  65. package/dist/wcardinal/ui/shape/variant/e-shape-lock.js +31 -0
  66. package/dist/wcardinal/ui/shape/variant/e-shape-lock.js.map +1 -0
  67. package/dist/wcardinal/ui/shape/variant/index.js +2 -0
  68. package/dist/wcardinal/ui/shape/variant/index.js.map +1 -1
  69. package/dist/wcardinal/ui/shape/variant/to-resized.js +3 -2
  70. package/dist/wcardinal/ui/shape/variant/to-resized.js.map +1 -1
  71. package/dist/wcardinal/ui/theme/dark/d-theme-dark-atlas.js +1 -1
  72. package/dist/wcardinal/ui/theme/dark/d-theme-dark-atlas.js.map +1 -1
  73. package/dist/wcardinal/ui/theme/white/d-theme-white-atlas.js +1 -1
  74. package/dist/wcardinal/ui/theme/white/d-theme-white-atlas.js.map +1 -1
  75. package/dist/wcardinal-ui-theme-dark.js +2 -2
  76. package/dist/wcardinal-ui-theme-dark.min.js +2 -2
  77. package/dist/wcardinal-ui-theme-dark.min.js.map +1 -1
  78. package/dist/wcardinal-ui-theme-white.js +2 -2
  79. package/dist/wcardinal-ui-theme-white.min.js +2 -2
  80. package/dist/wcardinal-ui-theme-white.min.js.map +1 -1
  81. package/dist/wcardinal-ui.cjs.js +246 -176
  82. package/dist/wcardinal-ui.js +244 -174
  83. package/dist/wcardinal-ui.min.js +2 -2
  84. package/dist/wcardinal-ui.min.js.map +1 -1
  85. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.371.0
2
+ Winter Cardinal UI v0.373.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -2560,9 +2560,11 @@
2560
2560
  });
2561
2561
  return this;
2562
2562
  };
2563
- EShapeConnectorContainerImpl.prototype.detach = function () {
2563
+ EShapeConnectorContainerImpl.prototype.detach = function (exceptions) {
2564
2564
  this._edges.forEach(function (edge) {
2565
- edge.set(null);
2565
+ if (exceptions == null || !exceptions.has(edge.parent)) {
2566
+ edge.set(null);
2567
+ }
2566
2568
  });
2567
2569
  return this;
2568
2570
  };
@@ -4472,7 +4474,7 @@
4472
4474
  var GROUP = PRIMITIVE | UNGROUPING;
4473
4475
  var EMBEDDED = ID | COORDINATE | REPLACING | GROUPING | TEXT$2 | DATA | ACTION | LAYER | DATA_MAPPING;
4474
4476
  var EMBEDDED_ACCEPTOR_EDGE = ID | COORDINATE | REPLACING | FILL$1 | STROKE$1 | TEXT$2 | TEXTURE | DATA | ACTION | CURSOR$1 | LAYER;
4475
- var CONNECTOR = ID | REPLACING | FILL$1 | STROKE$1 | LINE | LINE_TAIL | LINE_HEAD | TEXT$2 | TEXTURE | DATA | ACTION | CURSOR$1 | LAYER | CHILDREN$1;
4477
+ var CONNECTOR = ID | SHAPE | TEXT$2 | TEXTURE | DATA | ACTION | CURSOR$1 | LAYER | CHILDREN$1;
4476
4478
  var ALL = PRIMITIVE | STROKE_SIDE | BORDER_RADIUS | DATA_MAPPING | UNGROUPING;
4477
4479
  var EShapeCapability = {
4478
4480
  NONE: NONE,
@@ -4638,6 +4640,44 @@
4638
4640
  return EShapeCapabilityContainerImpl;
4639
4641
  }());
4640
4642
 
4643
+ var EShapeLock = /** @class */ (function () {
4644
+ function EShapeLock() {
4645
+ this._count = 0;
4646
+ this._flag = 0;
4647
+ }
4648
+ EShapeLock.prototype.lock = function () {
4649
+ this._count += 1;
4650
+ if (this._count === 1) {
4651
+ this._flag = 0;
4652
+ return true;
4653
+ }
4654
+ return false;
4655
+ };
4656
+ EShapeLock.prototype.unlock = function () {
4657
+ this._count -= 1;
4658
+ return this._count <= 0 && this._flag !== 0;
4659
+ };
4660
+ EShapeLock.prototype.isLocked = function (high) {
4661
+ if (0 < this._count) {
4662
+ this._flag |= high ? 3 : 1;
4663
+ return true;
4664
+ }
4665
+ return false;
4666
+ };
4667
+ EShapeLock.prototype.isHigh = function () {
4668
+ return 1 < this._flag;
4669
+ };
4670
+ return EShapeLock;
4671
+ }());
4672
+
4673
+ var EShapeLockPart = {
4674
+ TRANSFORM: 1,
4675
+ TRANSFORM_PARENT: 2,
4676
+ UPLOADED: 4,
4677
+ TRANSFORM_AND_UPLOADED: 7,
4678
+ CONNECTOR: 8
4679
+ };
4680
+
4641
4681
  /*
4642
4682
  * Copyright (C) 2019 Toshiba Corporation
4643
4683
  * SPDX-License-Identifier: Apache-2.0
@@ -4650,13 +4690,11 @@
4650
4690
  _this.uuid = 0;
4651
4691
  _this.type = type;
4652
4692
  _this.transform = _this.newTransform();
4653
- _this._onTransformChangeLock = 0;
4654
- _this._isOnTransformChanged = false;
4655
4693
  _this.action = new EShapeAction();
4656
4694
  _this._visible = true;
4657
- _this._uploadedUpdateLock = 0;
4658
- _this._isUploadedUpdated = false;
4659
- _this._isUploadedUpdatedRecursively = false;
4695
+ _this._lockTransform = new EShapeLock();
4696
+ _this._lockTransformParent = new EShapeLock();
4697
+ _this._lockUploaded = new EShapeLock();
4660
4698
  _this._boundsTransformId = NaN;
4661
4699
  _this._boundsInternalTransformId = NaN;
4662
4700
  _this._boundsLocalTransformId = NaN;
@@ -4697,6 +4735,9 @@
4697
4735
  this.onParentTransformChange();
4698
4736
  };
4699
4737
  EShapeBase.prototype.onParentTransformChange = function () {
4738
+ if (this._lockTransformParent.isLocked()) {
4739
+ return;
4740
+ }
4700
4741
  this.updateUploaded();
4701
4742
  var connector = this._connector;
4702
4743
  if (connector != null) {
@@ -4708,79 +4749,62 @@
4708
4749
  }
4709
4750
  };
4710
4751
  EShapeBase.prototype.onTransformChange_ = function () {
4711
- if (this._onTransformChangeLock === 0) {
4712
- var parent_1 = this.parent;
4713
- if (parent_1 != null) {
4714
- parent_1.onChildTransformChange();
4715
- }
4752
+ if (this._lockTransform.isLocked()) {
4753
+ return;
4716
4754
  }
4717
- else {
4718
- this._isOnTransformChanged = true;
4755
+ var parent = this.parent;
4756
+ if (parent != null) {
4757
+ parent.onChildTransformChange();
4719
4758
  }
4720
4759
  };
4721
- EShapeBase.prototype.disallowOnTransformChange = function () {
4722
- this._onTransformChangeLock += 1;
4723
- if (this._onTransformChangeLock === 1) {
4724
- this._isOnTransformChanged = false;
4760
+ EShapeBase.prototype.lock = function (part) {
4761
+ if (part & EShapeLockPart.TRANSFORM) {
4762
+ this._lockTransform.lock();
4763
+ }
4764
+ if (part & EShapeLockPart.TRANSFORM_PARENT) {
4765
+ this._lockTransformParent.lock();
4725
4766
  }
4767
+ if (part & EShapeLockPart.UPLOADED) {
4768
+ this._lockUploaded.lock();
4769
+ }
4770
+ return this;
4726
4771
  };
4727
- EShapeBase.prototype.allowOnTransformChange = function (invokeOnTransformChange) {
4728
- this._onTransformChangeLock -= 1;
4729
- if (this._onTransformChangeLock === 0) {
4730
- if (this._isOnTransformChanged) {
4731
- this._isOnTransformChanged = false;
4732
- if (invokeOnTransformChange) {
4733
- this.onTransformChange();
4734
- }
4772
+ EShapeBase.prototype.unlock = function (part, invoke) {
4773
+ if (part & EShapeLockPart.UPLOADED) {
4774
+ var lockUploaded = this._lockUploaded;
4775
+ if (lockUploaded.unlock() && invoke) {
4776
+ this.updateUploaded(lockUploaded.isHigh());
4735
4777
  }
4736
4778
  }
4779
+ if (part & EShapeLockPart.TRANSFORM_PARENT) {
4780
+ if (this._lockTransformParent.unlock() && invoke) {
4781
+ this.onParentTransformChange();
4782
+ }
4783
+ }
4784
+ if (part & EShapeLockPart.TRANSFORM) {
4785
+ if (this._lockTransform.unlock() && invoke) {
4786
+ this.onTransformChange();
4787
+ }
4788
+ }
4789
+ return this;
4737
4790
  };
4738
4791
  EShapeBase.prototype.onChildTransformChange = function () {
4739
4792
  //
4740
4793
  };
4741
- EShapeBase.prototype.disallowUploadedUpdate = function () {
4742
- this._uploadedUpdateLock += 1;
4743
- if (this._uploadedUpdateLock === 1) {
4744
- this._isUploadedUpdated = false;
4745
- this._isUploadedUpdatedRecursively = false;
4794
+ EShapeBase.prototype.updateUploaded = function (recursively) {
4795
+ if (this._lockUploaded.isLocked()) {
4796
+ return;
4746
4797
  }
4747
- };
4748
- EShapeBase.prototype.allowUploadedUpdate = function () {
4749
- this._uploadedUpdateLock -= 1;
4750
- if (this._uploadedUpdateLock === 0) {
4751
- if (this._isUploadedUpdatedRecursively) {
4752
- this._isUploadedUpdatedRecursively = false;
4753
- this._isUploadedUpdated = false;
4754
- this.updateUploadedRecursively();
4755
- }
4756
- else if (this._isUploadedUpdated) {
4757
- this._isUploadedUpdated = false;
4758
- this.updateUploaded();
4759
- }
4798
+ var uploaded = this.uploaded;
4799
+ if (uploaded != null) {
4800
+ uploaded.update(this);
4760
4801
  }
4761
- };
4762
- EShapeBase.prototype.updateUploadedRecursively = function () {
4763
- if (this._uploadedUpdateLock === 0) {
4764
- this.updateUploaded();
4802
+ if (recursively === true) {
4765
4803
  var children = this.children;
4766
4804
  for (var i = 0, imax = children.length; i < imax; ++i) {
4767
- children[i].updateUploadedRecursively();
4805
+ children[i].updateUploaded(true);
4768
4806
  }
4769
4807
  }
4770
- else {
4771
- this._isUploadedUpdatedRecursively = true;
4772
- }
4773
- };
4774
- EShapeBase.prototype.updateUploaded = function () {
4775
- if (this._uploadedUpdateLock === 0) {
4776
- var uploaded = this.uploaded;
4777
- if (uploaded != null) {
4778
- uploaded.update(this);
4779
- }
4780
- }
4781
- else {
4782
- this._isUploadedUpdated = true;
4783
- }
4784
4808
  };
4785
4809
  Object.defineProperty(EShapeBase.prototype, "image", {
4786
4810
  get: function () {
@@ -4825,9 +4849,9 @@
4825
4849
  Object.defineProperty(EShapeBase.prototype, "visible", {
4826
4850
  get: function () {
4827
4851
  if (this._visible) {
4828
- var parent_2 = this.parent;
4829
- if (parent_2 instanceof EShapeBase) {
4830
- return parent_2.visible;
4852
+ var parent_1 = this.parent;
4853
+ if (parent_1 instanceof EShapeBase) {
4854
+ return parent_1.visible;
4831
4855
  }
4832
4856
  return true;
4833
4857
  }
@@ -4836,7 +4860,7 @@
4836
4860
  set: function (visible) {
4837
4861
  if (this._visible !== visible) {
4838
4862
  this._visible = visible;
4839
- this.updateUploadedRecursively();
4863
+ this.updateUploaded(true);
4840
4864
  }
4841
4865
  },
4842
4866
  enumerable: false,
@@ -4845,9 +4869,9 @@
4845
4869
  Object.defineProperty(EShapeBase.prototype, "worldVisible", {
4846
4870
  get: function () {
4847
4871
  if (this._visible) {
4848
- var parent_3 = this.parent;
4849
- if (parent_3) {
4850
- return parent_3.worldVisible;
4872
+ var parent_2 = this.parent;
4873
+ if (parent_2) {
4874
+ return parent_2.worldVisible;
4851
4875
  }
4852
4876
  return true;
4853
4877
  }
@@ -4891,7 +4915,7 @@
4891
4915
  children[i].onAttach();
4892
4916
  }
4893
4917
  };
4894
- EShapeBase.prototype.detach = function () {
4918
+ EShapeBase.prototype.detach = function (exceptions) {
4895
4919
  var parent = this.parent;
4896
4920
  if (parent) {
4897
4921
  this.parent = null;
@@ -4901,20 +4925,20 @@
4901
4925
  children.splice(index, 1);
4902
4926
  parent.onChildTransformChange();
4903
4927
  parent.toDirty();
4904
- this.onDetach();
4928
+ this.onDetach(exceptions);
4905
4929
  }
4906
4930
  }
4907
4931
  return this;
4908
4932
  };
4909
- EShapeBase.prototype.onDetach = function () {
4933
+ EShapeBase.prototype.onDetach = function (exceptions) {
4910
4934
  this.uploaded = undefined;
4911
4935
  var connector = this._connector;
4912
4936
  if (connector) {
4913
- connector.detach();
4937
+ connector.detach(exceptions);
4914
4938
  }
4915
4939
  var children = this.children;
4916
4940
  for (var i = 0, imax = children.length; i < imax; ++i) {
4917
- children[i].onDetach();
4941
+ children[i].onDetach(exceptions);
4918
4942
  }
4919
4943
  };
4920
4944
  // Transform
@@ -16929,10 +16953,10 @@
16929
16953
  // Size
16930
16954
  editor.size.copyFrom(shape.size);
16931
16955
  //
16932
- shape.disallowOnTransformChange();
16956
+ shape.lock(EShapeLockPart.TRANSFORM);
16933
16957
  };
16934
16958
  EShapeTransforms.finalize = function (shape) {
16935
- shape.allowOnTransformChange(true);
16959
+ shape.unlock(EShapeLockPart.TRANSFORM, true);
16936
16960
  };
16937
16961
  EShapeTransforms.apply = function (shape, transform, capability) {
16938
16962
  var editor = shape.editor;
@@ -16946,7 +16970,7 @@
16946
16970
  }
16947
16971
  };
16948
16972
  EShapeTransforms.applyLocal = function (shape, localTransform, capability, size) {
16949
- shape.disallowUploadedUpdate();
16973
+ shape.lock(EShapeLockPart.UPLOADED);
16950
16974
  // Reconstruct the position, the rotation and the size
16951
16975
  var a = localTransform.a;
16952
16976
  var b = localTransform.b;
@@ -17006,7 +17030,7 @@
17006
17030
  }
17007
17031
  }
17008
17032
  //
17009
- shape.allowUploadedUpdate();
17033
+ shape.unlock(EShapeLockPart.UPLOADED, true);
17010
17034
  };
17011
17035
  return EShapeTransforms;
17012
17036
  }());
@@ -17060,9 +17084,9 @@
17060
17084
  .translate(-pivotX, -pivotY)
17061
17085
  .scale(sx, sy)
17062
17086
  .translate(+pivotX, +pivotY);
17063
- shape.disallowOnTransformChange();
17087
+ shape.lock(EShapeLockPart.TRANSFORM);
17064
17088
  EShapeTransforms.applyLocal(shape, transform, EShapeCapability.ALL, childBase);
17065
- shape.allowOnTransformChange(false);
17089
+ shape.unlock(EShapeLockPart.TRANSFORM, false);
17066
17090
  };
17067
17091
  EShapeGroupSizeLayout.WORK_TRANSFORM = new pixi_js.Matrix();
17068
17092
  return EShapeGroupSizeLayout;
@@ -17166,41 +17190,43 @@
17166
17190
  };
17167
17191
  EShapeGroupSizeEditor.prototype.doFit = function () {
17168
17192
  var parent = this._parent;
17169
- parent.disallowOnTransformChange();
17193
+ parent.lock(EShapeLockPart.TRANSFORM | EShapeLockPart.TRANSFORM_PARENT);
17170
17194
  // Calculate the rect
17171
17195
  var rect = this.calcRect(this._workRectForFit);
17172
17196
  // Set size
17173
17197
  var size = this._size;
17174
17198
  size.set(rect.width, rect.height);
17175
- // Position & Pivot
17176
- // rx := rect.x
17177
- // ry := rect.y
17199
+ // Calculating new position & pivot
17200
+ //
17201
+ // cx := rect.x + rect.width * 0.5
17202
+ // cy := rect.y + rect.height * 0.5
17178
17203
  //
17179
- // | a c tx | | 1 0 +rx | | 1 0 -rx | | a c tx + (a * rx + c * ry) | | 1 0 -rx |
17180
- // | b d ty | | 0 1 +ry | | 0 1 -ry | = | b d ty + (b * rx + d * ry) | | 0 1 -ry |
17181
- // | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 |
17204
+ // Since the local transform need to be unchanged:
17182
17205
  //
17183
- // tx -> tx + (a * rx + c * ry) = poxition.x - (a * pivot.x + c * pivot.y)
17184
- // ty -> ty + (b * rx + d * ry) = poxition.y - (b * pivot.x + d * pivot.y)
17185
- // position.x -> position.x + (a * rx + c * ry) - (a * pivot.x + c * pivot.y)
17186
- // position.y -> position.y + (b * rx + d * ry) - (b * pivot.x + d * pivot.y)
17187
- // pivot.x -> 0
17188
- // pivot.y -> 0
17206
+ // | a c tx | | a c px' - (a * pvx' + c * pvy') |
17207
+ // | b d ty | = | b d py' - (b * pvx' + d * pvy') |
17208
+ // | 0 0 1 | | 0 0 1 |
17189
17209
  //
17190
- // a -> a', b -> b', c -> c', tx -> tx', ty -> ty'
17210
+ // Here, (px', py') and (pvx', pvy') are the new position
17211
+ // and the new pivot, respectively.
17191
17212
  //
17192
- // | a' c' tx' | | 1 0 -rx | | a' c' tx' - (a' * rx + c' * ry) |
17193
- // | b' d' ty' | | 0 1 -ry | = | b' d' ty' - (b' * rx + d' * ry) |
17194
- // | 0 0 1 | | 0 0 1 | | 0 0 1 |
17213
+ // Setting the new pivot (pvx', pvy') to (cx, cy) leads to
17195
17214
  //
17196
- // tx' -> tx' - (a' * rx + c' * ry) = poxition.x - (a' * pivot.x + c' * pivot.y)
17197
- // ty' -> ty' - (b' * rx + d' * ry) = poxition.y - (b' * pivot.x + d' * pivot.y)
17198
- // pivot.x -> pivot.x + rx
17199
- // pivot.y -> pivot.y + ry
17215
+ // | a c tx | | a c px' - (a * cx + c * cy) |
17216
+ // | b d ty | = | b d py' - (b * cx + d * cy) |
17217
+ // | 0 0 1 | | 0 0 1 |
17218
+ //
17219
+ // tx = px - (a * pvx + c * pvy) = px' - (a * cx + c * cy)
17220
+ // ty = py - (b * pvx + d * pvy) = py' - (b * cx + d * cy)
17221
+ //
17222
+ // Thus, the new position (px', py') is
17223
+ //
17224
+ // px' = px + (a * (cx - pvx) + c * (cy - pvy))
17225
+ // py' = py + (b * (cy - pvx) + d * (cy - pvy))
17200
17226
  parent.updateTransform();
17201
17227
  var transform = parent.transform;
17202
- var x = rect.x + rect.width * 0.5;
17203
- var y = rect.y + rect.height * 0.5;
17228
+ var cx = rect.x + rect.width * 0.5;
17229
+ var cy = rect.y + rect.height * 0.5;
17204
17230
  var position = transform.position;
17205
17231
  var localTransform = transform.localTransform;
17206
17232
  var a = localTransform.a;
@@ -17208,12 +17234,16 @@
17208
17234
  var c = localTransform.c;
17209
17235
  var d = localTransform.d;
17210
17236
  var pivot = transform.pivot;
17211
- position.set(position.x + (a * x + c * y) - (a * pivot.x + c * pivot.y), position.y + (b * x + d * y) - (b * pivot.x + d * pivot.y));
17212
- pivot.set(x, y);
17237
+ var pvx = pivot.x;
17238
+ var pvy = pivot.y;
17239
+ var dpvx = cx - pvx;
17240
+ var dpvy = cy - pvy;
17241
+ position.set(position.x + (a * dpvx + c * dpvy), position.y + (b * dpvx + d * dpvy));
17242
+ pivot.set(cx, cy);
17213
17243
  // Reset the data
17214
17244
  this.reset(parent.children, this._layouts, size);
17215
17245
  //
17216
- parent.allowOnTransformChange(true);
17246
+ parent.unlock(EShapeLockPart.TRANSFORM | EShapeLockPart.TRANSFORM_PARENT, true);
17217
17247
  };
17218
17248
  EShapeGroupSizeEditor.prototype.reset = function (children, layouts, size) {
17219
17249
  for (var i = 0, imax = Math.min(layouts.length, children.length); i < imax; ++i) {
@@ -18608,9 +18638,9 @@
18608
18638
  }
18609
18639
  return this;
18610
18640
  };
18611
- EShapeConnectorEdgeImpl.prototype.detach = function () {
18641
+ EShapeConnectorEdgeImpl.prototype.detach = function (exceptions) {
18612
18642
  var shape = this._acceptor.shape;
18613
- if (shape) {
18643
+ if (shape != null && (exceptions == null || !exceptions.has(shape))) {
18614
18644
  if (shape.connector.remove(this)) {
18615
18645
  this.onAcceptorChange();
18616
18646
  }
@@ -18722,10 +18752,10 @@
18722
18752
  this.unlock();
18723
18753
  return this;
18724
18754
  };
18725
- EShapeConnectorEdgeContainerImpl.prototype.detach = function () {
18755
+ EShapeConnectorEdgeContainerImpl.prototype.detach = function (exceptions) {
18726
18756
  this.lock();
18727
- this._tail.detach();
18728
- this._head.detach();
18757
+ this._tail.detach(exceptions);
18758
+ this._head.detach(exceptions);
18729
18759
  this.unlock();
18730
18760
  return this;
18731
18761
  };
@@ -20094,8 +20124,7 @@
20094
20124
  _this._headNormalId = 0;
20095
20125
  _this._headMargin = 0;
20096
20126
  _this._bodyId = 0;
20097
- _this._lockCount = 0;
20098
- _this._isChanged = false;
20127
+ _this._lockChange = new EShapeLock();
20099
20128
  var sx = EShapeDefaults.SIZE_X;
20100
20129
  var sy = EShapeDefaults.SIZE_Y;
20101
20130
  var hx = sx * 0.5;
@@ -20108,20 +20137,20 @@
20108
20137
  _this._body = new EShapeConnectorBodyImpl(_this, onChangeBound);
20109
20138
  return _this;
20110
20139
  }
20111
- EShapeConnectorLine.prototype.lock = function () {
20112
- this._lockCount += 1;
20113
- if (this._lockCount === 1) {
20114
- this._isChanged = false;
20140
+ EShapeConnectorLine.prototype.lock = function (part) {
20141
+ _super.prototype.lock.call(this, part);
20142
+ if (part & EShapeLockPart.CONNECTOR) {
20143
+ this._lockChange.lock();
20115
20144
  }
20145
+ return this;
20116
20146
  };
20117
- EShapeConnectorLine.prototype.unlock = function () {
20118
- this._lockCount -= 1;
20119
- if (this._lockCount === 0) {
20120
- if (this._isChanged) {
20147
+ EShapeConnectorLine.prototype.unlock = function (part, invoke) {
20148
+ if (part & EShapeLockPart.CONNECTOR) {
20149
+ if (this._lockChange.unlock() && invoke) {
20121
20150
  this.onChange();
20122
20151
  }
20123
- this._isChanged = false;
20124
20152
  }
20153
+ return _super.prototype.unlock.call(this, part, invoke);
20125
20154
  };
20126
20155
  Object.defineProperty(EShapeConnectorLine.prototype, "points", {
20127
20156
  get: function () {
@@ -20148,14 +20177,13 @@
20148
20177
  _super.prototype.onAttach.call(this);
20149
20178
  this._edge.attach();
20150
20179
  };
20151
- EShapeConnectorLine.prototype.onDetach = function () {
20152
- this._edge.detach();
20153
- _super.prototype.onDetach.call(this);
20180
+ EShapeConnectorLine.prototype.onDetach = function (exceptions) {
20181
+ this._edge.detach(exceptions);
20182
+ _super.prototype.onDetach.call(this, exceptions);
20154
20183
  };
20155
20184
  EShapeConnectorLine.prototype.onChange = function () {
20156
20185
  var _a;
20157
- if (0 < this._lockCount) {
20158
- this._isChanged = true;
20186
+ if (this._lockChange.isLocked()) {
20159
20187
  return;
20160
20188
  }
20161
20189
  var edge = this._edge;
@@ -20203,7 +20231,7 @@
20203
20231
  values[i + 0] -= cx;
20204
20232
  values[i + 1] -= cy;
20205
20233
  }
20206
- this.disallowUploadedUpdate();
20234
+ this.lock(EShapeLockPart.TRANSFORM_AND_UPLOADED);
20207
20235
  transformPosition.set(px + cx, py + cy);
20208
20236
  transform.scale.set(1, 1);
20209
20237
  transform.rotation = 0;
@@ -20211,7 +20239,7 @@
20211
20239
  points.toFitted(sx, sy);
20212
20240
  this.size.set(sx, sy);
20213
20241
  points.set(values);
20214
- this.allowUploadedUpdate();
20242
+ this.unlock(EShapeLockPart.TRANSFORM_AND_UPLOADED, true);
20215
20243
  }
20216
20244
  };
20217
20245
  EShapeConnectorLine.prototype.fillPoints = function (tail, tailMargin, head, headMargin, body, px, py, values) {
@@ -24260,12 +24288,12 @@
24260
24288
  this.interactive = false;
24261
24289
  }
24262
24290
  EShapeRuntimeImpl.prototype.initialize = function (shape) {
24263
- shape.disallowUploadedUpdate();
24291
+ shape.lock(EShapeLockPart.UPLOADED);
24264
24292
  var actions = this.actions;
24265
24293
  for (var i = 0, imax = actions.length; i < imax; ++i) {
24266
24294
  actions[i].initialize(shape, this);
24267
24295
  }
24268
- shape.allowUploadedUpdate();
24296
+ shape.unlock(EShapeLockPart.UPLOADED, true);
24269
24297
  };
24270
24298
  EShapeRuntimeImpl.prototype.isActionable = function () {
24271
24299
  return 0 < this.actions.length;
@@ -24592,9 +24620,9 @@
24592
24620
  if (isEffectTimeUp) {
24593
24621
  this.effect = NaN;
24594
24622
  }
24595
- shape.disallowUploadedUpdate();
24623
+ shape.lock(EShapeLockPart.UPLOADED);
24596
24624
  this.onUpdate(shape, time);
24597
- shape.allowUploadedUpdate();
24625
+ shape.unlock(EShapeLockPart.UPLOADED, true);
24598
24626
  var wasStateChanged = this.isStateChanged;
24599
24627
  shape.state.removeAll(EShapeRuntimeImpl.TRANSIENT_STATES);
24600
24628
  this.isStateChanged = wasStateChanged;
@@ -38650,7 +38678,7 @@
38650
38678
  manager.setExtension(resourceId, parsed);
38651
38679
  }
38652
38680
  // Lock
38653
- shape.lock();
38681
+ shape.lock(EShapeLockPart.CONNECTOR);
38654
38682
  // Points
38655
38683
  var points = shape.points;
38656
38684
  points.deserialize(parsed[1], manager);
@@ -38668,7 +38696,7 @@
38668
38696
  body.set(EShapeConnectorBodies.from(points.values, edge.tail.margin, edge.head.margin));
38669
38697
  }
38670
38698
  // Unlock
38671
- shape.unlock();
38699
+ shape.unlock(EShapeLockPart.CONNECTOR, true);
38672
38700
  }
38673
38701
  }
38674
38702
  };
@@ -39608,6 +39636,7 @@
39608
39636
  clone.parent = result;
39609
39637
  result.children.push(clone);
39610
39638
  }
39639
+ EShapeConnectors.moveAll(children, result.children, children, result.children);
39611
39640
  result.onChildTransformChange();
39612
39641
  result.toDirty();
39613
39642
  return result;
@@ -45495,7 +45524,7 @@
45495
45524
  var cposition = EShapeCapabilities.contains(shape, EShapeCapability.POSITION);
45496
45525
  var cwidth = EShapeCapabilities.contains(shape, EShapeCapability.WIDTH);
45497
45526
  var cheight = EShapeCapabilities.contains(shape, EShapeCapability.HEIGHT);
45498
- shape.disallowUploadedUpdate();
45527
+ shape.lock(EShapeLockPart.UPLOADED);
45499
45528
  var position = shape.transform.position;
45500
45529
  if (centerMode) {
45501
45530
  var dx = Math.abs(to.x - from.x);
@@ -45592,7 +45621,7 @@
45592
45621
  }
45593
45622
  }
45594
45623
  }
45595
- shape.allowUploadedUpdate();
45624
+ shape.unlock(EShapeLockPart.UPLOADED, true);
45596
45625
  };
45597
45626
 
45598
45627
  /*
@@ -45848,14 +45877,26 @@
45848
45877
  var EShapeDeleter = /** @class */ (function () {
45849
45878
  function EShapeDeleter() {
45850
45879
  }
45880
+ EShapeDeleter.addAll = function (shapes, result) {
45881
+ for (var i = 0, imax = shapes.length; i < imax; ++i) {
45882
+ var shape = shapes[i];
45883
+ result.add(shape);
45884
+ this.addAll(shape.children, result);
45885
+ }
45886
+ return result;
45887
+ };
45851
45888
  EShapeDeleter.delete = function (parent, shapes, generateListOfDetachedShapes) {
45889
+ var _a;
45852
45890
  var children = parent.children;
45853
45891
  var length = children.length;
45854
45892
  // Update indices
45893
+ var exceptions = ((_a = EShapeDeleter.EXCEPTIONS) !== null && _a !== void 0 ? _a : (EShapeDeleter.EXCEPTIONS = new Set()));
45855
45894
  for (var i = 0; i < length; ++i) {
45856
45895
  var child = children[i];
45857
45896
  if (child.selected) {
45858
45897
  child.index = length + i;
45898
+ exceptions.add(child);
45899
+ this.addAll(child.children, exceptions);
45859
45900
  }
45860
45901
  else {
45861
45902
  child.index = i;
@@ -45872,9 +45913,10 @@
45872
45913
  child.parent = null;
45873
45914
  child.selected = false;
45874
45915
  child.uploaded = undefined;
45875
- child.onDetach();
45916
+ child.onDetach(exceptions);
45876
45917
  }
45877
45918
  else {
45919
+ exceptions.clear();
45878
45920
  var size = children.length - (i + 1);
45879
45921
  if (0 < size) {
45880
45922
  var result = children.splice(i + 1, size);
@@ -45893,6 +45935,7 @@
45893
45935
  }
45894
45936
  }
45895
45937
  }
45938
+ exceptions.clear();
45896
45939
  if (0 < children.length) {
45897
45940
  var result = children.splice(0, children.length);
45898
45941
  if (shapes != null) {
@@ -45916,9 +45959,10 @@
45916
45959
  child.parent = null;
45917
45960
  child.selected = false;
45918
45961
  child.uploaded = undefined;
45919
- child.onDetach();
45962
+ child.onDetach(exceptions);
45920
45963
  }
45921
45964
  else {
45965
+ exceptions.clear();
45922
45966
  children.length = i + 1;
45923
45967
  if (shapes != null) {
45924
45968
  shapes.length = 0;
@@ -45928,6 +45972,7 @@
45928
45972
  return null;
45929
45973
  }
45930
45974
  }
45975
+ exceptions.clear();
45931
45976
  if (0 < children.length) {
45932
45977
  children.length = 0;
45933
45978
  if (shapes != null) {
@@ -56306,7 +56351,7 @@
56306
56351
  var plotAreaWidth = plotArea.width;
56307
56352
  var plotAreaHeight = plotArea.height;
56308
56353
  var offset = this._parser.padding * index;
56309
- shape.disallowUploadedUpdate();
56354
+ shape.lock(EShapeLockPart.UPLOADED);
56310
56355
  var position = shape.transform.position;
56311
56356
  var size = shape.size;
56312
56357
  switch (this._parser.position) {
@@ -56327,7 +56372,7 @@
56327
56372
  size.set(0, plotAreaHeight);
56328
56373
  break;
56329
56374
  }
56330
- shape.allowUploadedUpdate();
56375
+ shape.unlock(EShapeLockPart.UPLOADED, true);
56331
56376
  return true;
56332
56377
  }
56333
56378
  return false;
@@ -57384,18 +57429,18 @@
57384
57429
  return true;
57385
57430
  };
57386
57431
  DChartAxisBaseTickContainer.prototype.showMajor = function (shape, x, y, text) {
57387
- shape.disallowUploadedUpdate();
57432
+ shape.lock(EShapeLockPart.UPLOADED);
57388
57433
  shape.visible = true;
57389
57434
  shape.transform.position.set(x, y);
57390
57435
  shape.text.value = text != null ? text : "";
57391
- shape.allowUploadedUpdate();
57436
+ shape.unlock(EShapeLockPart.UPLOADED, true);
57392
57437
  };
57393
57438
  DChartAxisBaseTickContainer.prototype.showMajorGridline = function (shape, value, x, y, sx, sy) {
57394
- shape.disallowUploadedUpdate();
57439
+ shape.lock(EShapeLockPart.UPLOADED);
57395
57440
  shape.visible = true;
57396
57441
  shape.transform.position.set(x, y);
57397
57442
  shape.size.set(sx, sy);
57398
- shape.allowUploadedUpdate();
57443
+ shape.unlock(EShapeLockPart.UPLOADED, true);
57399
57444
  };
57400
57445
  DChartAxisBaseTickContainer.prototype.hideMajor = function (shape) {
57401
57446
  shape.visible = false;
@@ -57404,11 +57449,11 @@
57404
57449
  shape.visible = false;
57405
57450
  };
57406
57451
  DChartAxisBaseTickContainer.prototype.showMinor = function (shape, x, y, text) {
57407
- shape.disallowUploadedUpdate();
57452
+ shape.lock(EShapeLockPart.UPLOADED);
57408
57453
  shape.visible = true;
57409
57454
  shape.transform.position.set(x, y);
57410
57455
  shape.text.value = text != null ? text : "";
57411
- shape.allowUploadedUpdate();
57456
+ shape.unlock(EShapeLockPart.UPLOADED, true);
57412
57457
  };
57413
57458
  DChartAxisBaseTickContainer.prototype.hideMinor = function (shape) {
57414
57459
  shape.visible = false;
@@ -57871,7 +57916,7 @@
57871
57916
  DChartAxisGuideSimpleShapeImpl.prototype.update = function (position, x, y, visible, width, height, offset) {
57872
57917
  var bar = this._bar;
57873
57918
  if (bar != null) {
57874
- bar.disallowUploadedUpdate();
57919
+ bar.lock(EShapeLockPart.UPLOADED);
57875
57920
  switch (position) {
57876
57921
  case DChartAxisPosition.TOP:
57877
57922
  bar.transform.position.set(x, y);
@@ -57894,7 +57939,7 @@
57894
57939
  bar.visible = visible;
57895
57940
  break;
57896
57941
  }
57897
- bar.allowUploadedUpdate();
57942
+ bar.unlock(EShapeLockPart.UPLOADED, true);
57898
57943
  }
57899
57944
  var label = this._label;
57900
57945
  if (label != null) {
@@ -57902,7 +57947,7 @@
57902
57947
  var s = label.size;
57903
57948
  var ox = offset + s.x * 0.5 + m;
57904
57949
  var oy = offset + s.y * 0.5 + m;
57905
- label.disallowUploadedUpdate();
57950
+ label.lock(EShapeLockPart.UPLOADED);
57906
57951
  switch (position) {
57907
57952
  case DChartAxisPosition.TOP:
57908
57953
  label.transform.position.set(x, -oy);
@@ -57921,7 +57966,7 @@
57921
57966
  label.visible = visible;
57922
57967
  break;
57923
57968
  }
57924
- label.allowUploadedUpdate();
57969
+ label.unlock(EShapeLockPart.UPLOADED, true);
57925
57970
  }
57926
57971
  var tick = this._tick;
57927
57972
  if (tick != null) {
@@ -57929,7 +57974,7 @@
57929
57974
  var s = tick.size;
57930
57975
  var ox = offset + s.x * 0.5 + m;
57931
57976
  var oy = offset + s.y * 0.5 + m;
57932
- tick.disallowUploadedUpdate();
57977
+ tick.lock(EShapeLockPart.UPLOADED);
57933
57978
  switch (position) {
57934
57979
  case DChartAxisPosition.TOP:
57935
57980
  tick.transform.position.set(x, -oy);
@@ -57948,7 +57993,7 @@
57948
57993
  tick.visible = visible;
57949
57994
  break;
57950
57995
  }
57951
- tick.allowUploadedUpdate();
57996
+ tick.unlock(EShapeLockPart.UPLOADED, true);
57952
57997
  }
57953
57998
  return true;
57954
57999
  };
@@ -60759,9 +60804,9 @@
60759
60804
  values[i + 0] -= cx;
60760
60805
  values[i + 1] -= cy;
60761
60806
  }
60762
- line.disallowUploadedUpdate();
60807
+ line.lock(EShapeLockPart.UPLOADED);
60763
60808
  this.applyLine(line, xcoordinate, ycoordinate, sx, sy, cx, cy, values);
60764
- line.allowUploadedUpdate();
60809
+ line.unlock(EShapeLockPart.UPLOADED, true);
60765
60810
  };
60766
60811
  DChartSeriesLineOfAny.prototype.adjustLineRegion = function (xmin, xmax, ymin, ymax, result) {
60767
60812
  result.xmin = xmin;
@@ -61251,7 +61296,7 @@
61251
61296
  return false;
61252
61297
  };
61253
61298
  DChartSeriesLine.prototype.doUpdateLine = function (line, xcoordinate, ycoordinate, isPointsDirty) {
61254
- line.disallowUploadedUpdate();
61299
+ line.lock(EShapeLockPart.UPLOADED);
61255
61300
  if (isPointsDirty) {
61256
61301
  var values = line.points.values;
61257
61302
  var segments = line.points.segments;
@@ -61334,7 +61379,7 @@
61334
61379
  }
61335
61380
  line.transform.position.set(xcoordinate.transform.map(this._centerX), ycoordinate.transform.map(this._centerY));
61336
61381
  line.transform.scale.set(xcoordinate.transform.scale, ycoordinate.transform.scale);
61337
- line.allowUploadedUpdate();
61382
+ line.unlock(EShapeLockPart.UPLOADED, true);
61338
61383
  };
61339
61384
  DChartSeriesLine.prototype.updateRegion = function () {
61340
61385
  var pointId = this._pointId;
@@ -61693,12 +61738,12 @@
61693
61738
  if (0 < segments.length) {
61694
61739
  segments.length = 0;
61695
61740
  }
61696
- line.disallowUploadedUpdate();
61741
+ line.lock(EShapeLockPart.UPLOADED);
61697
61742
  line.points.set(values, segments);
61698
61743
  line.points.toFitted(sx, sy);
61699
61744
  line.size.set(sx, sy);
61700
61745
  line.transform.position.set(cx, cy);
61701
- line.allowUploadedUpdate();
61746
+ line.unlock(EShapeLockPart.UPLOADED, true);
61702
61747
  };
61703
61748
  DChartSeriesLinear.prototype.updateRegion = function () {
61704
61749
  // DO NOTHING
@@ -63289,23 +63334,23 @@
63289
63334
  var shape = null;
63290
63335
  if (index < shapes.length) {
63291
63336
  shape = shapes[index];
63292
- shape.disallowUploadedUpdate();
63337
+ shape.lock(EShapeLockPart.UPLOADED);
63293
63338
  shape.points.position = position;
63294
63339
  shape.transform.position.set(x, y);
63295
63340
  shape.stroke.set(true, style.color, style.alpha, style.width, undefined, undefined, style.style);
63296
63341
  shape.size.set(w, h);
63297
63342
  shape.visible = true;
63298
- shape.allowUploadedUpdate();
63343
+ shape.unlock(EShapeLockPart.UPLOADED, true);
63299
63344
  }
63300
63345
  else {
63301
63346
  shape = new EShapeBar();
63302
- shape.disallowUploadedUpdate();
63347
+ shape.lock(EShapeLockPart.UPLOADED);
63303
63348
  shape.points.position = position;
63304
63349
  shape.transform.position.set(x, y);
63305
63350
  shape.stroke.set(true, style.color, style.alpha, style.width, undefined, undefined, style.style);
63306
63351
  shape.size.set(w, h);
63307
63352
  shape.visible = true;
63308
- shape.allowUploadedUpdate();
63353
+ shape.unlock(EShapeLockPart.UPLOADED, true);
63309
63354
  shape.attach(container);
63310
63355
  }
63311
63356
  };
@@ -72151,12 +72196,27 @@
72151
72196
  DApplications.update(this);
72152
72197
  return true;
72153
72198
  };
72154
- DTableBody.prototype.toRowIndexMapped = function (local) {
72155
- if (0 <= this.parent.position.y + local.y) {
72156
- return Math.floor(local.y / this._rowHeight);
72199
+ /**
72200
+ * Returns a mapped row index at the given local Y position or -1.
72201
+ *
72202
+ * @param localY a local Y position
72203
+ * @returns a mapped row index at the given local Y position or -1.
72204
+ */
72205
+ DTableBody.prototype.toRowIndexMapped = function (localY) {
72206
+ if (0 <= this.parent.position.y + localY) {
72207
+ var result = Math.floor(localY / this._rowHeight);
72208
+ if (0 <= result && result < this._data.mapped.size()) {
72209
+ return result;
72210
+ }
72157
72211
  }
72158
72212
  return -1;
72159
72213
  };
72214
+ /**
72215
+ * Returns a row at the given mapped row index or null if not exits.
72216
+ *
72217
+ * @param rowIndexMapped a mapped row index
72218
+ * @returns a row at the given mapped row index or null if not exists.
72219
+ */
72160
72220
  DTableBody.prototype.toRow = function (rowIndexMapped) {
72161
72221
  var index = rowIndexMapped - this._rowIndexMappedStart;
72162
72222
  var rows = this.children;
@@ -72165,14 +72225,22 @@
72165
72225
  }
72166
72226
  return null;
72167
72227
  };
72168
- DTableBody.prototype.toCell = function (row, local) {
72228
+ /**
72229
+ * Returns a cell at the given local X position or null if not exits.
72230
+ * This method assumes the given local X position is on the given row.
72231
+ *
72232
+ * @param row a row
72233
+ * @param localX a local X position
72234
+ * @returns a cell at the given local X position or null if not exits
72235
+ */
72236
+ DTableBody.prototype.toCell = function (row, localX) {
72169
72237
  var cells = row.children;
72170
72238
  var cellsLength = cells.length;
72171
72239
  var columns = this._columns;
72172
72240
  var columnsLength = columns.length;
72173
72241
  for (var i = 0, imax = Math.min(cellsLength, columnsLength); i < imax; ++i) {
72174
72242
  var cell = cells[cellsLength - i - 1];
72175
- var x = local.x - cell.position.x;
72243
+ var x = localX - cell.position.x;
72176
72244
  if (0 <= x && x <= cell.width) {
72177
72245
  return cell;
72178
72246
  }
@@ -72184,12 +72252,12 @@
72184
72252
  var local = DTableBody.WORK_ON_CLICK;
72185
72253
  local.copyFrom(e.data.global);
72186
72254
  this.toLocal(local, undefined, local, false);
72187
- var rowIndexMapped = this.toRowIndexMapped(local);
72188
- if (0 <= rowIndexMapped && rowIndexMapped < this._data.mapped.size()) {
72255
+ var rowIndexMapped = this.toRowIndexMapped(local.y);
72256
+ if (0 <= rowIndexMapped) {
72189
72257
  // Delegate to the cell at first
72190
72258
  var row = this.toRow(rowIndexMapped);
72191
72259
  if (row) {
72192
- var cell = this.toCell(row, local);
72260
+ var cell = this.toCell(row, local.x);
72193
72261
  if (cell && cell.onRowSelect && cell.onRowSelect(e, local)) {
72194
72262
  return;
72195
72263
  }
@@ -76327,6 +76395,8 @@
76327
76395
  EShapeLineOfTriangles: EShapeLineOfTriangles,
76328
76396
  EShapeLinePoints: EShapeLinePoints,
76329
76397
  EShapeLine: EShapeLine,
76398
+ EShapeLockPart: EShapeLockPart,
76399
+ EShapeLock: EShapeLock,
76330
76400
  EShapeNull: EShapeNull,
76331
76401
  EShapePrimitive: EShapePrimitive,
76332
76402
  EShapeRectanglePivoted: EShapeRectanglePivoted,