@esotericsoftware/spine-core 4.2.116 → 4.3.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 (129) hide show
  1. package/dist/Animation.d.ts +426 -274
  2. package/dist/Animation.js +1174 -1210
  3. package/dist/AnimationState.d.ts +246 -201
  4. package/dist/AnimationState.js +508 -471
  5. package/dist/AnimationStateData.d.ts +12 -10
  6. package/dist/AnimationStateData.js +19 -20
  7. package/dist/AssetManagerBase.d.ts +27 -21
  8. package/dist/AssetManagerBase.js +67 -43
  9. package/dist/AtlasAttachmentLoader.d.ts +18 -12
  10. package/dist/AtlasAttachmentLoader.js +28 -39
  11. package/dist/Bone.d.ts +15 -109
  12. package/dist/Bone.js +22 -362
  13. package/dist/BoneData.d.ts +13 -28
  14. package/dist/BoneData.js +20 -29
  15. package/dist/BonePose.d.ts +130 -0
  16. package/dist/BonePose.js +426 -0
  17. package/dist/Constraint.d.ts +41 -0
  18. package/dist/Constraint.js +38 -0
  19. package/dist/ConstraintData.d.ts +7 -5
  20. package/dist/ConstraintData.js +5 -9
  21. package/dist/DrawOrder.d.ts +48 -0
  22. package/dist/DrawOrder.js +64 -0
  23. package/dist/Event.d.ts +11 -6
  24. package/dist/Event.js +10 -5
  25. package/dist/EventData.d.ts +10 -6
  26. package/dist/EventData.js +18 -7
  27. package/dist/IkConstraint.d.ts +22 -28
  28. package/dist/IkConstraint.js +115 -117
  29. package/dist/IkConstraintData.d.ts +23 -18
  30. package/dist/IkConstraintData.js +32 -22
  31. package/dist/IkConstraintPose.d.ts +49 -0
  32. package/dist/IkConstraintPose.js +55 -0
  33. package/dist/PathConstraint.d.ts +18 -22
  34. package/dist/PathConstraint.js +160 -136
  35. package/dist/PathConstraintData.d.ts +11 -14
  36. package/dist/PathConstraintData.js +14 -16
  37. package/dist/PathConstraintPose.d.ts +43 -0
  38. package/dist/PathConstraintPose.js +49 -0
  39. package/dist/Physics.d.ts +39 -0
  40. package/dist/Physics.js +41 -0
  41. package/dist/PhysicsConstraint.d.ts +26 -30
  42. package/dist/PhysicsConstraint.js +102 -94
  43. package/dist/PhysicsConstraintData.d.ts +22 -12
  44. package/dist/PhysicsConstraintData.js +23 -12
  45. package/dist/PhysicsConstraintPose.d.ts +47 -0
  46. package/dist/PhysicsConstraintPose.js +55 -0
  47. package/dist/Pose.d.ts +33 -0
  48. package/dist/Pose.js +30 -0
  49. package/dist/Posed.d.ts +58 -0
  50. package/dist/Posed.js +78 -0
  51. package/dist/PosedActive.d.ts +41 -0
  52. package/dist/{attachments/HasTextureRegion.js → PosedActive.js} +17 -2
  53. package/dist/PosedData.d.ts +40 -0
  54. package/dist/PosedData.js +45 -0
  55. package/dist/Skeleton.d.ts +110 -99
  56. package/dist/Skeleton.js +271 -449
  57. package/dist/SkeletonBinary.d.ts +1 -1
  58. package/dist/SkeletonBinary.js +644 -466
  59. package/dist/SkeletonBounds.d.ts +4 -4
  60. package/dist/SkeletonBounds.js +45 -46
  61. package/dist/SkeletonClipping.d.ts +26 -22
  62. package/dist/SkeletonClipping.js +654 -340
  63. package/dist/SkeletonData.d.ts +18 -35
  64. package/dist/SkeletonData.js +57 -97
  65. package/dist/SkeletonJson.d.ts +8 -6
  66. package/dist/SkeletonJson.js +892 -641
  67. package/dist/SkeletonRendererCore.d.ts +58 -0
  68. package/dist/SkeletonRendererCore.js +310 -0
  69. package/dist/Skin.d.ts +20 -16
  70. package/dist/Skin.js +58 -53
  71. package/dist/Slider.d.ts +46 -0
  72. package/dist/Slider.js +115 -0
  73. package/dist/SliderData.d.ts +58 -0
  74. package/dist/SliderData.js +59 -0
  75. package/dist/SliderPose.d.ts +37 -0
  76. package/dist/SliderPose.js +40 -0
  77. package/dist/Slot.d.ts +16 -38
  78. package/dist/Slot.js +37 -60
  79. package/dist/SlotData.d.ts +5 -12
  80. package/dist/SlotData.js +7 -15
  81. package/dist/SlotPose.d.ts +59 -0
  82. package/dist/SlotPose.js +81 -0
  83. package/dist/Texture.d.ts +1 -0
  84. package/dist/Texture.js +2 -1
  85. package/dist/TextureAtlas.d.ts +3 -3
  86. package/dist/TextureAtlas.js +49 -49
  87. package/dist/TransformConstraint.d.ts +16 -28
  88. package/dist/TransformConstraint.js +72 -209
  89. package/dist/TransformConstraintData.d.ts +108 -20
  90. package/dist/TransformConstraintData.js +274 -24
  91. package/dist/TransformConstraintPose.d.ts +45 -0
  92. package/dist/TransformConstraintPose.js +52 -0
  93. package/dist/Triangulator.d.ts +1 -1
  94. package/dist/Triangulator.js +91 -107
  95. package/dist/{Updatable.d.ts → Update.d.ts} +5 -12
  96. package/dist/Update.js +30 -0
  97. package/dist/Utils.d.ts +12 -3
  98. package/dist/Utils.js +78 -37
  99. package/dist/attachments/Attachment.d.ts +27 -19
  100. package/dist/attachments/Attachment.js +59 -35
  101. package/dist/attachments/AttachmentLoader.d.ts +14 -14
  102. package/dist/attachments/AttachmentLoader.js +1 -1
  103. package/dist/attachments/BoundingBoxAttachment.d.ts +1 -1
  104. package/dist/attachments/BoundingBoxAttachment.js +2 -2
  105. package/dist/attachments/ClippingAttachment.d.ts +10 -3
  106. package/dist/attachments/ClippingAttachment.js +12 -3
  107. package/dist/attachments/{HasTextureRegion.d.ts → HasSequence.d.ts} +11 -14
  108. package/dist/attachments/HasSequence.js +30 -0
  109. package/dist/attachments/MeshAttachment.d.ts +28 -35
  110. package/dist/attachments/MeshAttachment.js +85 -97
  111. package/dist/attachments/PathAttachment.d.ts +3 -3
  112. package/dist/attachments/PathAttachment.js +6 -6
  113. package/dist/attachments/PointAttachment.d.ts +11 -6
  114. package/dist/attachments/PointAttachment.js +8 -3
  115. package/dist/attachments/RegionAttachment.d.ts +25 -27
  116. package/dist/attachments/RegionAttachment.js +101 -113
  117. package/dist/attachments/Sequence.d.ts +31 -6
  118. package/dist/attachments/Sequence.js +79 -13
  119. package/dist/esm/spine-core.min.mjs +2 -2
  120. package/dist/esm/spine-core.mjs +7651 -6090
  121. package/dist/esm/spine-core.mjs.map +4 -4
  122. package/dist/iife/spine-core.js +7651 -6090
  123. package/dist/iife/spine-core.js.map +4 -4
  124. package/dist/iife/spine-core.min.js +2 -2
  125. package/dist/index.d.ts +32 -11
  126. package/dist/index.js +33 -12
  127. package/dist/polyfills.js +4 -5
  128. package/package.json +1 -1
  129. package/dist/Updatable.js +0 -30
@@ -38,56 +38,45 @@ import { RegionAttachment } from "./attachments/RegionAttachment.js";
38
38
  * Spine Runtimes Guide. */
39
39
  export class AtlasAttachmentLoader {
40
40
  atlas;
41
- constructor(atlas) {
41
+ allowMissingRegions;
42
+ constructor(atlas, allowMissingRegions = false) {
42
43
  this.atlas = atlas;
44
+ this.allowMissingRegions = allowMissingRegions;
43
45
  }
44
- loadSequence(name, basePath, sequence) {
45
- let regions = sequence.regions;
46
- for (let i = 0, n = regions.length; i < n; i++) {
47
- let path = sequence.getPath(basePath, i);
48
- let region = this.atlas.findRegion(path);
49
- if (region == null)
50
- throw new Error("Region not found in atlas: " + path + " (sequence: " + name + ")");
51
- regions[i] = region;
52
- }
46
+ /** Sets each {@link Sequence.regions} by calling {@link findRegion} for each texture region using
47
+ * {@link Sequence.getPath}. */
48
+ findRegions(name, basePath, sequence) {
49
+ const regions = sequence.regions;
50
+ for (let i = 0, n = regions.length; i < n; i++)
51
+ regions[i] = this.findRegion(name, sequence.getPath(basePath, i));
53
52
  }
54
- newRegionAttachment(skin, name, path, sequence) {
55
- let attachment = new RegionAttachment(name, path);
56
- if (sequence != null) {
57
- this.loadSequence(name, path, sequence);
58
- }
59
- else {
60
- let region = this.atlas.findRegion(path);
61
- if (!region)
62
- throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")");
63
- attachment.region = region;
64
- }
65
- return attachment;
53
+ /** Looks for the region with the specified path. If not found and {@link allowMissingRegions} is false, an error is
54
+ * raised. */
55
+ findRegion(name, path) {
56
+ const region = this.atlas.findRegion(path);
57
+ if (!region && !this.allowMissingRegions)
58
+ throw new Error(`Region not found in atlas: ${path} (attachment: ${name})`);
59
+ return region;
66
60
  }
67
- newMeshAttachment(skin, name, path, sequence) {
68
- let attachment = new MeshAttachment(name, path);
69
- if (sequence != null) {
70
- this.loadSequence(name, path, sequence);
71
- }
72
- else {
73
- let region = this.atlas.findRegion(path);
74
- if (!region)
75
- throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")");
76
- attachment.region = region;
77
- }
78
- return attachment;
61
+ newRegionAttachment(skin, placeholder, name, path, sequence) {
62
+ this.findRegions(name, path, sequence);
63
+ return new RegionAttachment(name, sequence);
79
64
  }
80
- newBoundingBoxAttachment(skin, name) {
65
+ newMeshAttachment(skin, placeholder, name, path, sequence) {
66
+ this.findRegions(name, path, sequence);
67
+ return new MeshAttachment(name, sequence);
68
+ }
69
+ newBoundingBoxAttachment(skin, placeholder, name) {
81
70
  return new BoundingBoxAttachment(name);
82
71
  }
83
- newPathAttachment(skin, name) {
72
+ newPathAttachment(skin, placeholder, name) {
84
73
  return new PathAttachment(name);
85
74
  }
86
- newPointAttachment(skin, name) {
75
+ newPointAttachment(skin, placeholder, name) {
87
76
  return new PointAttachment(name);
88
77
  }
89
- newClippingAttachment(skin, name) {
78
+ newClippingAttachment(skin, placeholder, name) {
90
79
  return new ClippingAttachment(name);
91
80
  }
92
81
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXRsYXNBdHRhY2htZW50TG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0F0bGFzQXR0YWNobWVudExvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFLckU7OzsyQkFHMkI7QUFDM0IsTUFBTSxPQUFPLHFCQUFxQjtJQUNqQyxLQUFLLENBQWU7SUFFcEIsWUFBYSxLQUFtQjtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFFLElBQVksRUFBRSxRQUFnQixFQUFFLFFBQWtCO1FBQy9ELElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLElBQUksTUFBTSxJQUFJLElBQUk7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLEdBQUcsY0FBYyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN4RyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLENBQUM7SUFDRixDQUFDO0lBRUQsbUJBQW1CLENBQUUsSUFBVSxFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsUUFBa0I7UUFDOUUsSUFBSSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLEdBQUcsdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDO0lBRUQsaUJBQWlCLENBQUUsSUFBVSxFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsUUFBa0I7UUFDNUUsSUFBSSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxHQUFHLHFCQUFxQixHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN4RyxVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQztJQUVELHdCQUF3QixDQUFFLElBQVUsRUFBRSxJQUFZO1FBQ2pELE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUJBQWlCLENBQUUsSUFBVSxFQUFFLElBQVk7UUFDMUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0JBQWtCLENBQUUsSUFBVSxFQUFFLElBQVk7UUFDM0MsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQscUJBQXFCLENBQUUsSUFBVSxFQUFFLElBQVk7UUFDOUMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQXR0YWNobWVudExvYWRlciB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnRMb2FkZXIuanNcIjtcbmltcG9ydCB7IEJvdW5kaW5nQm94QXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0JvdW5kaW5nQm94QXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgQ2xpcHBpbmdBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQ2xpcHBpbmdBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBNZXNoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL01lc2hBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBQYXRoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1BhdGhBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBQb2ludEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9Qb2ludEF0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IFJlZ2lvbkF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9SZWdpb25BdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBTa2luIH0gZnJvbSBcIi4vU2tpbi5qc1wiO1xuaW1wb3J0IHsgVGV4dHVyZUF0bGFzIH0gZnJvbSBcIi4vVGV4dHVyZUF0bGFzLmpzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1NlcXVlbmNlLmpzXCJcblxuLyoqIEFuIHtAbGluayBBdHRhY2htZW50TG9hZGVyfSB0aGF0IGNvbmZpZ3VyZXMgYXR0YWNobWVudHMgdXNpbmcgdGV4dHVyZSByZWdpb25zIGZyb20gYW4ge0BsaW5rIFRleHR1cmVBdGxhc30uXG4gKlxuICogU2VlIFtMb2FkaW5nIHNrZWxldG9uIGRhdGFdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1sb2FkaW5nLXNrZWxldG9uLWRhdGEjSlNPTi1hbmQtYmluYXJ5LWRhdGEpIGluIHRoZVxuICogU3BpbmUgUnVudGltZXMgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgQXRsYXNBdHRhY2htZW50TG9hZGVyIGltcGxlbWVudHMgQXR0YWNobWVudExvYWRlciB7XG5cdGF0bGFzOiBUZXh0dXJlQXRsYXM7XG5cblx0Y29uc3RydWN0b3IgKGF0bGFzOiBUZXh0dXJlQXRsYXMpIHtcblx0XHR0aGlzLmF0bGFzID0gYXRsYXM7XG5cdH1cblxuXHRsb2FkU2VxdWVuY2UgKG5hbWU6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZywgc2VxdWVuY2U6IFNlcXVlbmNlKSB7XG5cdFx0bGV0IHJlZ2lvbnMgPSBzZXF1ZW5jZS5yZWdpb25zO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gcmVnaW9ucy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBwYXRoID0gc2VxdWVuY2UuZ2V0UGF0aChiYXNlUGF0aCwgaSk7XG5cdFx0XHRsZXQgcmVnaW9uID0gdGhpcy5hdGxhcy5maW5kUmVnaW9uKHBhdGgpO1xuXHRcdFx0aWYgKHJlZ2lvbiA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWdpb24gbm90IGZvdW5kIGluIGF0bGFzOiBcIiArIHBhdGggKyBcIiAoc2VxdWVuY2U6IFwiICsgbmFtZSArIFwiKVwiKTtcblx0XHRcdHJlZ2lvbnNbaV0gPSByZWdpb247XG5cdFx0fVxuXHR9XG5cblx0bmV3UmVnaW9uQXR0YWNobWVudCAoc2tpbjogU2tpbiwgbmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIHNlcXVlbmNlOiBTZXF1ZW5jZSk6IFJlZ2lvbkF0dGFjaG1lbnQge1xuXHRcdGxldCBhdHRhY2htZW50ID0gbmV3IFJlZ2lvbkF0dGFjaG1lbnQobmFtZSwgcGF0aCk7XG5cdFx0aWYgKHNlcXVlbmNlICE9IG51bGwpIHtcblx0XHRcdHRoaXMubG9hZFNlcXVlbmNlKG5hbWUsIHBhdGgsIHNlcXVlbmNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGV0IHJlZ2lvbiA9IHRoaXMuYXRsYXMuZmluZFJlZ2lvbihwYXRoKTtcblx0XHRcdGlmICghcmVnaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWdpb24gbm90IGZvdW5kIGluIGF0bGFzOiBcIiArIHBhdGggKyBcIiAocmVnaW9uIGF0dGFjaG1lbnQ6IFwiICsgbmFtZSArIFwiKVwiKTtcblx0XHRcdGF0dGFjaG1lbnQucmVnaW9uID0gcmVnaW9uO1xuXHRcdH1cblx0XHRyZXR1cm4gYXR0YWNobWVudDtcblx0fVxuXG5cdG5ld01lc2hBdHRhY2htZW50IChza2luOiBTa2luLCBuYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgc2VxdWVuY2U6IFNlcXVlbmNlKTogTWVzaEF0dGFjaG1lbnQge1xuXHRcdGxldCBhdHRhY2htZW50ID0gbmV3IE1lc2hBdHRhY2htZW50KG5hbWUsIHBhdGgpO1xuXHRcdGlmIChzZXF1ZW5jZSAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLmxvYWRTZXF1ZW5jZShuYW1lLCBwYXRoLCBzZXF1ZW5jZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCByZWdpb24gPSB0aGlzLmF0bGFzLmZpbmRSZWdpb24ocGF0aCk7XG5cdFx0XHRpZiAoIXJlZ2lvbikgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG5vdCBmb3VuZCBpbiBhdGxhczogXCIgKyBwYXRoICsgXCIgKG1lc2ggYXR0YWNobWVudDogXCIgKyBuYW1lICsgXCIpXCIpO1xuXHRcdFx0YXR0YWNobWVudC5yZWdpb24gPSByZWdpb247XG5cdFx0fVxuXHRcdHJldHVybiBhdHRhY2htZW50O1xuXHR9XG5cblx0bmV3Qm91bmRpbmdCb3hBdHRhY2htZW50IChza2luOiBTa2luLCBuYW1lOiBzdHJpbmcpOiBCb3VuZGluZ0JveEF0dGFjaG1lbnQge1xuXHRcdHJldHVybiBuZXcgQm91bmRpbmdCb3hBdHRhY2htZW50KG5hbWUpO1xuXHR9XG5cblx0bmV3UGF0aEF0dGFjaG1lbnQgKHNraW46IFNraW4sIG5hbWU6IHN0cmluZyk6IFBhdGhBdHRhY2htZW50IHtcblx0XHRyZXR1cm4gbmV3IFBhdGhBdHRhY2htZW50KG5hbWUpO1xuXHR9XG5cblx0bmV3UG9pbnRBdHRhY2htZW50IChza2luOiBTa2luLCBuYW1lOiBzdHJpbmcpOiBQb2ludEF0dGFjaG1lbnQge1xuXHRcdHJldHVybiBuZXcgUG9pbnRBdHRhY2htZW50KG5hbWUpO1xuXHR9XG5cblx0bmV3Q2xpcHBpbmdBdHRhY2htZW50IChza2luOiBTa2luLCBuYW1lOiBzdHJpbmcpOiBDbGlwcGluZ0F0dGFjaG1lbnQge1xuXHRcdHJldHVybiBuZXcgQ2xpcHBpbmdBdHRhY2htZW50KG5hbWUpO1xuXHR9XG59XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXRsYXNBdHRhY2htZW50TG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0F0bGFzQXR0YWNobWVudExvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFLckU7OzsyQkFHMkI7QUFDM0IsTUFBTSxPQUFPLHFCQUFxQjtJQUNqQyxLQUFLLENBQWU7SUFDcEIsbUJBQW1CLENBQVU7SUFFN0IsWUFBYSxLQUFtQixFQUFFLG1CQUFtQixHQUFHLEtBQUs7UUFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0lBQ2hELENBQUM7SUFFRDttQ0FDK0I7SUFDckIsV0FBVyxDQUFFLElBQVksRUFBRSxRQUFnQixFQUFFLFFBQWtCO1FBQ3hFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDN0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEO2lCQUNhO0lBQ0gsVUFBVSxDQUFFLElBQVksRUFBRSxJQUFZO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLElBQUksaUJBQWlCLElBQUksR0FBRyxDQUFDLENBQUM7UUFDN0UsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBRUQsbUJBQW1CLENBQUUsSUFBVSxFQUFFLFdBQW1CLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxRQUFrQjtRQUNuRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsaUJBQWlCLENBQUUsSUFBVSxFQUFFLFdBQW1CLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxRQUFrQjtRQUNqRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELHdCQUF3QixDQUFFLElBQVUsRUFBRSxXQUFtQixFQUFFLElBQVk7UUFDdEUsT0FBTyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxJQUFVLEVBQUUsV0FBbUIsRUFBRSxJQUFZO1FBQy9ELE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGtCQUFrQixDQUFFLElBQVUsRUFBRSxXQUFtQixFQUFFLElBQVk7UUFDaEUsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQscUJBQXFCLENBQUUsSUFBVSxFQUFFLFdBQW1CLEVBQUUsSUFBWTtRQUNuRSxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEF0dGFjaG1lbnRMb2FkZXIgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9BdHRhY2htZW50TG9hZGVyLmpzXCI7XG5pbXBvcnQgeyBCb3VuZGluZ0JveEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9Cb3VuZGluZ0JveEF0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IENsaXBwaW5nQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0NsaXBwaW5nQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgTWVzaEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9NZXNoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUGF0aEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9QYXRoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUG9pbnRBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvUG9pbnRBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBSZWdpb25BdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvUmVnaW9uQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXF1ZW5jZSB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1NlcXVlbmNlLmpzXCJcbmltcG9ydCB0eXBlIHsgU2tpbiB9IGZyb20gXCIuL1NraW4uanNcIjtcbmltcG9ydCB0eXBlIHsgVGV4dHVyZUF0bGFzIH0gZnJvbSBcIi4vVGV4dHVyZUF0bGFzLmpzXCI7XG5cbi8qKiBBbiB7QGxpbmsgQXR0YWNobWVudExvYWRlcn0gdGhhdCBjb25maWd1cmVzIGF0dGFjaG1lbnRzIHVzaW5nIHRleHR1cmUgcmVnaW9ucyBmcm9tIGFuIHtAbGluayBUZXh0dXJlQXRsYXN9LlxuICpcbiAqIFNlZSBbTG9hZGluZyBza2VsZXRvbiBkYXRhXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtbG9hZGluZy1za2VsZXRvbi1kYXRhI0pTT04tYW5kLWJpbmFyeS1kYXRhKSBpbiB0aGVcbiAqIFNwaW5lIFJ1bnRpbWVzIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIEF0bGFzQXR0YWNobWVudExvYWRlciBpbXBsZW1lbnRzIEF0dGFjaG1lbnRMb2FkZXIge1xuXHRhdGxhczogVGV4dHVyZUF0bGFzO1xuXHRhbGxvd01pc3NpbmdSZWdpb25zOiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yIChhdGxhczogVGV4dHVyZUF0bGFzLCBhbGxvd01pc3NpbmdSZWdpb25zID0gZmFsc2UpIHtcblx0XHR0aGlzLmF0bGFzID0gYXRsYXM7XG5cdFx0dGhpcy5hbGxvd01pc3NpbmdSZWdpb25zID0gYWxsb3dNaXNzaW5nUmVnaW9ucztcblx0fVxuXG5cdC8qKiBTZXRzIGVhY2gge0BsaW5rIFNlcXVlbmNlLnJlZ2lvbnN9IGJ5IGNhbGxpbmcge0BsaW5rIGZpbmRSZWdpb259IGZvciBlYWNoIHRleHR1cmUgcmVnaW9uIHVzaW5nXG5cdCAqIHtAbGluayBTZXF1ZW5jZS5nZXRQYXRofS4gKi9cblx0cHJvdGVjdGVkIGZpbmRSZWdpb25zIChuYW1lOiBzdHJpbmcsIGJhc2VQYXRoOiBzdHJpbmcsIHNlcXVlbmNlOiBTZXF1ZW5jZSkge1xuXHRcdGNvbnN0IHJlZ2lvbnMgPSBzZXF1ZW5jZS5yZWdpb25zO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gcmVnaW9ucy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRyZWdpb25zW2ldID0gdGhpcy5maW5kUmVnaW9uKG5hbWUsIHNlcXVlbmNlLmdldFBhdGgoYmFzZVBhdGgsIGkpKTtcblx0fVxuXG5cdC8qKiBMb29rcyBmb3IgdGhlIHJlZ2lvbiB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4gSWYgbm90IGZvdW5kIGFuZCB7QGxpbmsgYWxsb3dNaXNzaW5nUmVnaW9uc30gaXMgZmFsc2UsIGFuIGVycm9yIGlzXG5cdCAqIHJhaXNlZC4gKi9cblx0cHJvdGVjdGVkIGZpbmRSZWdpb24gKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgcmVnaW9uID0gdGhpcy5hdGxhcy5maW5kUmVnaW9uKHBhdGgpO1xuXHRcdGlmICghcmVnaW9uICYmICF0aGlzLmFsbG93TWlzc2luZ1JlZ2lvbnMpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFJlZ2lvbiBub3QgZm91bmQgaW4gYXRsYXM6ICR7cGF0aH0gKGF0dGFjaG1lbnQ6ICR7bmFtZX0pYCk7XG5cdFx0cmV0dXJuIHJlZ2lvbjtcblx0fVxuXG5cdG5ld1JlZ2lvbkF0dGFjaG1lbnQgKHNraW46IFNraW4sIHBsYWNlaG9sZGVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBzZXF1ZW5jZTogU2VxdWVuY2UpOiBSZWdpb25BdHRhY2htZW50IHtcblx0XHR0aGlzLmZpbmRSZWdpb25zKG5hbWUsIHBhdGgsIHNlcXVlbmNlKTtcblx0XHRyZXR1cm4gbmV3IFJlZ2lvbkF0dGFjaG1lbnQobmFtZSwgc2VxdWVuY2UpO1xuXHR9XG5cblx0bmV3TWVzaEF0dGFjaG1lbnQgKHNraW46IFNraW4sIHBsYWNlaG9sZGVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBzZXF1ZW5jZTogU2VxdWVuY2UpOiBNZXNoQXR0YWNobWVudCB7XG5cdFx0dGhpcy5maW5kUmVnaW9ucyhuYW1lLCBwYXRoLCBzZXF1ZW5jZSk7XG5cdFx0cmV0dXJuIG5ldyBNZXNoQXR0YWNobWVudChuYW1lLCBzZXF1ZW5jZSk7XG5cdH1cblxuXHRuZXdCb3VuZGluZ0JveEF0dGFjaG1lbnQgKHNraW46IFNraW4sIHBsYWNlaG9sZGVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IEJvdW5kaW5nQm94QXR0YWNobWVudCB7XG5cdFx0cmV0dXJuIG5ldyBCb3VuZGluZ0JveEF0dGFjaG1lbnQobmFtZSk7XG5cdH1cblxuXHRuZXdQYXRoQXR0YWNobWVudCAoc2tpbjogU2tpbiwgcGxhY2Vob2xkZXI6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUGF0aEF0dGFjaG1lbnQge1xuXHRcdHJldHVybiBuZXcgUGF0aEF0dGFjaG1lbnQobmFtZSk7XG5cdH1cblxuXHRuZXdQb2ludEF0dGFjaG1lbnQgKHNraW46IFNraW4sIHBsYWNlaG9sZGVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFBvaW50QXR0YWNobWVudCB7XG5cdFx0cmV0dXJuIG5ldyBQb2ludEF0dGFjaG1lbnQobmFtZSk7XG5cdH1cblxuXHRuZXdDbGlwcGluZ0F0dGFjaG1lbnQgKHNraW46IFNraW4sIHBsYWNlaG9sZGVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IENsaXBwaW5nQXR0YWNobWVudCB7XG5cdFx0cmV0dXJuIG5ldyBDbGlwcGluZ0F0dGFjaG1lbnQobmFtZSk7XG5cdH1cbn1cbiJdfQ==
package/dist/Bone.d.ts CHANGED
@@ -26,118 +26,24 @@
26
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
- import { BoneData, Inherit } from "./BoneData.js";
30
- import { Physics, Skeleton } from "./Skeleton.js";
31
- import { Updatable } from "./Updatable.js";
32
- import { Vector2 } from "./Utils.js";
33
- /** Stores a bone's current pose.
34
- *
35
- * A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a
36
- * local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a
37
- * constraint or application code modifies the world transform after it was computed from the local transform. */
38
- export declare class Bone implements Updatable {
39
- /** The bone's setup pose data. */
40
- data: BoneData;
41
- /** The skeleton this bone belongs to. */
42
- skeleton: Skeleton;
29
+ import type { BoneData } from "./BoneData.js";
30
+ import { BonePose } from "./BonePose.js";
31
+ import { PosedActive } from "./PosedActive.js";
32
+ /** A node in a skeleton's hierarchy with a transform that affects its children and their attachments. A bone has a number of
33
+ * poses:
34
+ * - {@link data}: The setup pose.
35
+ * - {@link pose}: The unconstrained local pose. Set by animations and application code.
36
+ * - {@link appliedPose}: The local pose to use for rendering. Possibly modified by constraints.
37
+ * - World transform: the local pose combined with the parent world transform. Computed on a pose by
38
+ * {@link BonePose.updateWorldTransform} and {@link Skeleton.updateWorldTransform}.
39
+ */
40
+ export declare class Bone extends PosedActive<BoneData, BonePose> {
43
41
  /** The parent bone, or null if this is the root bone. */
44
42
  parent: Bone | null;
45
43
  /** The immediate children of this bone. */
46
44
  children: Bone[];
47
- /** The local x translation. */
48
- x: number;
49
- /** The local y translation. */
50
- y: number;
51
- /** The local rotation in degrees, counter clockwise. */
52
- rotation: number;
53
- /** The local scaleX. */
54
- scaleX: number;
55
- /** The local scaleY. */
56
- scaleY: number;
57
- /** The local shearX. */
58
- shearX: number;
59
- /** The local shearY. */
60
- shearY: number;
61
- /** The applied local x translation. */
62
- ax: number;
63
- /** The applied local y translation. */
64
- ay: number;
65
- /** The applied local rotation in degrees, counter clockwise. */
66
- arotation: number;
67
- /** The applied local scaleX. */
68
- ascaleX: number;
69
- /** The applied local scaleY. */
70
- ascaleY: number;
71
- /** The applied local shearX. */
72
- ashearX: number;
73
- /** The applied local shearY. */
74
- ashearY: number;
75
- /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */
76
- a: number;
77
- /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */
78
- b: number;
79
- /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */
80
- c: number;
81
- /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */
82
- d: number;
83
- /** The world X position. If changed, {@link #updateAppliedTransform()} should be called. */
84
- worldY: number;
85
- /** The world Y position. If changed, {@link #updateAppliedTransform()} should be called. */
86
- worldX: number;
87
- inherit: Inherit;
88
45
  sorted: boolean;
89
- active: boolean;
90
- /** @param parent May be null. */
91
- constructor(data: BoneData, skeleton: Skeleton, parent: Bone | null);
92
- /** Returns false when the bone has not been computed because {@link BoneData#skinRequired} is true and the
93
- * {@link Skeleton#skin active skin} does not {@link Skin#bones contain} this bone. */
94
- isActive(): boolean;
95
- /** Computes the world transform using the parent bone and this bone's local applied transform. */
96
- update(physics: Physics): void;
97
- /** Computes the world transform using the parent bone and this bone's local transform.
98
- *
99
- * See {@link #updateWorldTransformWith()}. */
100
- updateWorldTransform(): void;
101
- /** Computes the world transform using the parent bone and the specified local transform. The applied transform is set to the
102
- * specified local transform. Child bones are not updated.
103
- *
104
- * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine
105
- * Runtimes Guide. */
106
- updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void;
107
- /** Sets this bone's local transform to the setup pose. */
108
- setToSetupPose(): void;
109
- /** Computes the applied transform values from the world transform.
110
- *
111
- * If the world transform is modified (by a constraint, {@link #rotateWorld(float)}, etc) then this method should be called so
112
- * the applied transform matches the world transform. The applied transform may be needed by other code (eg to apply other
113
- * constraints).
114
- *
115
- * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. The applied transform after
116
- * calling this method is equivalent to the local transform used to compute the world transform, but may not be identical. */
117
- updateAppliedTransform(): void;
118
- /** The world rotation for the X axis, calculated using {@link #a} and {@link #c}. */
119
- getWorldRotationX(): number;
120
- /** The world rotation for the Y axis, calculated using {@link #b} and {@link #d}. */
121
- getWorldRotationY(): number;
122
- /** The magnitude (always positive) of the world scale X, calculated using {@link #a} and {@link #c}. */
123
- getWorldScaleX(): number;
124
- /** The magnitude (always positive) of the world scale Y, calculated using {@link #b} and {@link #d}. */
125
- getWorldScaleY(): number;
126
- /** Transforms a point from world coordinates to the bone's local coordinates. */
127
- worldToLocal(world: Vector2): Vector2;
128
- /** Transforms a point from the bone's local coordinates to world coordinates. */
129
- localToWorld(local: Vector2): Vector2;
130
- /** Transforms a point from world coordinates to the parent bone's local coordinates. */
131
- worldToParent(world: Vector2): Vector2;
132
- /** Transforms a point from the parent bone's coordinates to world coordinates. */
133
- parentToWorld(world: Vector2): Vector2;
134
- /** Transforms a world rotation to a local rotation. */
135
- worldToLocalRotation(worldRotation: number): number;
136
- /** Transforms a local rotation to a world rotation. */
137
- localToWorldRotation(localRotation: number): number;
138
- /** Rotates the world transform the specified amount.
139
- * <p>
140
- * After changes are made to the world transform, {@link #updateAppliedTransform()} should be called and
141
- * {@link #update(Physics)} will need to be called on any child bones, recursively. */
142
- rotateWorld(degrees: number): void;
46
+ constructor(data: BoneData, parent: Bone | null);
47
+ /** Copy constructor. Does not copy the {@link children} bones. */
48
+ copy(parent: Bone | null): Bone;
143
49
  }