obsidian-dev-utils 24.2.1-beta.4 → 24.2.1-beta.6

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 (202) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +3 -3
  3. package/dist/lib/cjs/AsyncEvents.cjs +8 -1
  4. package/dist/lib/cjs/AsyncEvents.d.cts +10 -8
  5. package/dist/lib/cjs/Library.cjs +1 -1
  6. package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.cjs +53 -0
  7. package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.d.cts +25 -0
  8. package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.cjs +109 -0
  9. package/dist/lib/cjs/obsidian/Components/{CheckboxComponent.d.cts → SettingComponents/CheckboxComponent.d.cts} +1 -1
  10. package/dist/lib/cjs/obsidian/Components/{DateComponent.cjs → SettingComponents/DateComponent.cjs} +2 -2
  11. package/dist/lib/cjs/obsidian/Components/{DateTimeComponent.cjs → SettingComponents/DateTimeComponent.cjs} +2 -2
  12. package/dist/lib/cjs/obsidian/Components/{EmailComponent.cjs → SettingComponents/EmailComponent.cjs} +2 -2
  13. package/dist/lib/cjs/obsidian/Components/{FileComponent.cjs → SettingComponents/FileComponent.cjs} +2 -2
  14. package/dist/lib/cjs/obsidian/Components/{MonthComponent.cjs → SettingComponents/MonthComponent.cjs} +2 -2
  15. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +122 -0
  16. package/dist/lib/cjs/obsidian/Components/{MultipleDropdownComponent.d.cts → SettingComponents/MultipleDropdownComponent.d.cts} +5 -5
  17. package/dist/lib/cjs/obsidian/Components/{MultipleEmailComponent.cjs → SettingComponents/MultipleEmailComponent.cjs} +2 -2
  18. package/dist/lib/cjs/obsidian/Components/{MultipleEmailComponent.d.cts → SettingComponents/MultipleEmailComponent.d.cts} +3 -3
  19. package/dist/lib/cjs/obsidian/Components/{MultipleFileComponent.cjs → SettingComponents/MultipleFileComponent.cjs} +2 -2
  20. package/dist/lib/cjs/obsidian/Components/{MultipleFileComponent.d.cts → SettingComponents/MultipleFileComponent.d.cts} +4 -4
  21. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +135 -0
  22. package/dist/lib/cjs/obsidian/Components/{MultipleTextComponent.d.cts → SettingComponents/MultipleTextComponent.d.cts} +6 -6
  23. package/dist/lib/cjs/obsidian/Components/{NumberComponent.cjs → SettingComponents/NumberComponent.cjs} +2 -2
  24. package/dist/lib/cjs/obsidian/Components/SettingComponents/TextBasedComponent.cjs +65 -0
  25. package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.cjs +74 -0
  26. package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.cjs +110 -0
  27. package/dist/lib/cjs/obsidian/Components/{TriStateCheckboxComponent.d.cts → SettingComponents/TriStateCheckboxComponent.d.cts} +1 -1
  28. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +128 -0
  29. package/dist/lib/cjs/obsidian/Components/{TypedDropdownComponent.d.cts → SettingComponents/TypedDropdownComponent.d.cts} +1 -1
  30. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +130 -0
  31. package/dist/lib/cjs/obsidian/Components/{TypedMultipleDropdownComponent.d.cts → SettingComponents/TypedMultipleDropdownComponent.d.cts} +5 -5
  32. package/dist/lib/cjs/obsidian/Components/{TypedRangeTextComponent.cjs → SettingComponents/TypedRangeTextComponent.cjs} +1 -1
  33. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.cjs +155 -0
  34. package/dist/lib/cjs/obsidian/Components/{TypedTextComponent.d.cts → SettingComponents/TypedTextComponent.d.cts} +2 -2
  35. package/dist/lib/cjs/obsidian/Components/{UrlComponent.cjs → SettingComponents/UrlComponent.cjs} +2 -2
  36. package/dist/lib/cjs/obsidian/Components/{ValidatorComponent.cjs → SettingComponents/ValidatorComponent.cjs} +1 -1
  37. package/dist/lib/cjs/obsidian/Components/{ValidatorComponent.d.cts → SettingComponents/ValidatorComponent.d.cts} +1 -1
  38. package/dist/lib/cjs/obsidian/Components/{ValueComponentWithChangeTracking.cjs → SettingComponents/ValueComponentWithChangeTracking.cjs} +1 -1
  39. package/dist/lib/cjs/obsidian/Components/{WeekComponent.cjs → SettingComponents/WeekComponent.cjs} +2 -2
  40. package/dist/lib/cjs/obsidian/Components/SettingComponents/index.cjs +109 -0
  41. package/dist/lib/cjs/obsidian/Components/SettingComponents/index.d.cts +22 -0
  42. package/dist/lib/cjs/obsidian/Components/index.cjs +7 -67
  43. package/dist/lib/cjs/obsidian/Components/index.d.cts +2 -22
  44. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +25 -31
  45. package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +15 -23
  46. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +17 -4
  47. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +21 -1
  48. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +62 -13
  49. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +18 -5
  50. package/dist/lib/cjs/obsidian/SettingEx.cjs +18 -18
  51. package/dist/lib/cjs/obsidian/SettingEx.d.cts +17 -17
  52. package/dist/lib/esm/AsyncEvents.d.mts +10 -8
  53. package/dist/lib/esm/AsyncEvents.mjs +8 -1
  54. package/dist/lib/esm/Library.mjs +1 -1
  55. package/dist/lib/esm/obsidian/Components/AsyncEventsComponent.d.mts +25 -0
  56. package/dist/lib/esm/obsidian/Components/AsyncEventsComponent.mjs +28 -0
  57. package/dist/lib/esm/obsidian/Components/{CheckboxComponent.d.mts → SettingComponents/CheckboxComponent.d.mts} +1 -1
  58. package/dist/lib/esm/obsidian/Components/SettingComponents/CheckboxComponent.mjs +85 -0
  59. package/dist/lib/esm/obsidian/Components/SettingComponents/DateComponent.mjs +43 -0
  60. package/dist/lib/esm/obsidian/Components/SettingComponents/DateTimeComponent.mjs +43 -0
  61. package/dist/lib/esm/obsidian/Components/SettingComponents/EmailComponent.mjs +32 -0
  62. package/dist/lib/esm/obsidian/Components/SettingComponents/FileComponent.mjs +48 -0
  63. package/dist/lib/esm/obsidian/Components/SettingComponents/MonthComponent.mjs +51 -0
  64. package/dist/lib/esm/obsidian/Components/{MultipleDropdownComponent.d.mts → SettingComponents/MultipleDropdownComponent.d.mts} +5 -5
  65. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.mjs +101 -0
  66. package/dist/lib/esm/obsidian/Components/{MultipleEmailComponent.d.mts → SettingComponents/MultipleEmailComponent.d.mts} +3 -3
  67. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleEmailComponent.mjs +42 -0
  68. package/dist/lib/esm/obsidian/Components/{MultipleFileComponent.d.mts → SettingComponents/MultipleFileComponent.d.mts} +4 -4
  69. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleFileComponent.mjs +49 -0
  70. package/dist/lib/esm/obsidian/Components/{MultipleTextComponent.d.mts → SettingComponents/MultipleTextComponent.d.mts} +6 -6
  71. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.mjs +114 -0
  72. package/dist/lib/esm/obsidian/Components/SettingComponents/NumberComponent.mjs +32 -0
  73. package/dist/lib/esm/obsidian/Components/SettingComponents/TextBasedComponent.mjs +41 -0
  74. package/dist/lib/esm/obsidian/Components/SettingComponents/TimeComponent.mjs +53 -0
  75. package/dist/lib/esm/obsidian/Components/{TriStateCheckboxComponent.d.mts → SettingComponents/TriStateCheckboxComponent.d.mts} +1 -1
  76. package/dist/lib/esm/obsidian/Components/SettingComponents/TriStateCheckboxComponent.mjs +86 -0
  77. package/dist/lib/esm/obsidian/Components/{TypedDropdownComponent.d.mts → SettingComponents/TypedDropdownComponent.d.mts} +1 -1
  78. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.mjs +107 -0
  79. package/dist/lib/esm/obsidian/Components/{TypedMultipleDropdownComponent.d.mts → SettingComponents/TypedMultipleDropdownComponent.d.mts} +5 -5
  80. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.mjs +106 -0
  81. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedRangeTextComponent.mjs +44 -0
  82. package/dist/lib/esm/obsidian/Components/{TypedTextComponent.d.mts → SettingComponents/TypedTextComponent.d.mts} +2 -2
  83. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedTextComponent.mjs +134 -0
  84. package/dist/lib/esm/obsidian/Components/SettingComponents/UrlComponent.mjs +32 -0
  85. package/dist/lib/esm/obsidian/Components/{ValidatorComponent.d.mts → SettingComponents/ValidatorComponent.d.mts} +1 -1
  86. package/dist/lib/esm/obsidian/Components/SettingComponents/ValidatorComponent.mjs +47 -0
  87. package/dist/lib/esm/obsidian/Components/SettingComponents/WeekComponent.mjs +51 -0
  88. package/dist/lib/esm/obsidian/Components/SettingComponents/index.d.mts +22 -0
  89. package/dist/lib/esm/obsidian/Components/SettingComponents/index.mjs +54 -0
  90. package/dist/lib/esm/obsidian/Components/index.d.mts +2 -22
  91. package/dist/lib/esm/obsidian/Components/index.mjs +5 -45
  92. package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +15 -23
  93. package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +25 -31
  94. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +21 -1
  95. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +17 -4
  96. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +18 -5
  97. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +66 -14
  98. package/dist/lib/esm/obsidian/SettingEx.d.mts +17 -17
  99. package/dist/lib/esm/obsidian/SettingEx.mjs +18 -18
  100. package/obsidian/Components/AsyncEventsComponent/package.json +6 -0
  101. package/obsidian/Components/SettingComponents/CheckboxComponent/package.json +6 -0
  102. package/obsidian/Components/SettingComponents/DateComponent/package.json +6 -0
  103. package/obsidian/Components/SettingComponents/DateTimeComponent/package.json +6 -0
  104. package/obsidian/Components/SettingComponents/EmailComponent/package.json +6 -0
  105. package/obsidian/Components/SettingComponents/FileComponent/package.json +6 -0
  106. package/obsidian/Components/SettingComponents/MonthComponent/package.json +6 -0
  107. package/obsidian/Components/SettingComponents/MultipleDropdownComponent/package.json +6 -0
  108. package/obsidian/Components/SettingComponents/MultipleEmailComponent/package.json +6 -0
  109. package/obsidian/Components/SettingComponents/MultipleFileComponent/package.json +6 -0
  110. package/obsidian/Components/SettingComponents/MultipleTextComponent/package.json +6 -0
  111. package/obsidian/Components/SettingComponents/NumberComponent/package.json +6 -0
  112. package/obsidian/Components/SettingComponents/TextBasedComponent/package.json +6 -0
  113. package/obsidian/Components/SettingComponents/TimeComponent/package.json +6 -0
  114. package/obsidian/Components/SettingComponents/TriStateCheckboxComponent/package.json +6 -0
  115. package/obsidian/Components/SettingComponents/TypedDropdownComponent/package.json +6 -0
  116. package/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent/package.json +6 -0
  117. package/obsidian/Components/SettingComponents/TypedRangeTextComponent/package.json +6 -0
  118. package/obsidian/Components/SettingComponents/TypedTextComponent/package.json +6 -0
  119. package/obsidian/Components/SettingComponents/UrlComponent/package.json +6 -0
  120. package/obsidian/Components/SettingComponents/ValidatorComponent/package.json +6 -0
  121. package/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking/package.json +6 -0
  122. package/obsidian/Components/SettingComponents/WeekComponent/package.json +6 -0
  123. package/obsidian/Components/SettingComponents/index/package.json +6 -0
  124. package/obsidian/Components/SettingComponents/package.json +6 -0
  125. package/package.json +21 -1
  126. package/dist/lib/cjs/obsidian/Components/CheckboxComponent.cjs +0 -109
  127. package/dist/lib/cjs/obsidian/Components/MultipleDropdownComponent.cjs +0 -122
  128. package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.cjs +0 -135
  129. package/dist/lib/cjs/obsidian/Components/TextBasedComponent.cjs +0 -65
  130. package/dist/lib/cjs/obsidian/Components/TimeComponent.cjs +0 -74
  131. package/dist/lib/cjs/obsidian/Components/TriStateCheckboxComponent.cjs +0 -110
  132. package/dist/lib/cjs/obsidian/Components/TypedDropdownComponent.cjs +0 -128
  133. package/dist/lib/cjs/obsidian/Components/TypedMultipleDropdownComponent.cjs +0 -130
  134. package/dist/lib/cjs/obsidian/Components/TypedTextComponent.cjs +0 -155
  135. package/dist/lib/esm/obsidian/Components/CheckboxComponent.mjs +0 -85
  136. package/dist/lib/esm/obsidian/Components/DateComponent.mjs +0 -43
  137. package/dist/lib/esm/obsidian/Components/DateTimeComponent.mjs +0 -43
  138. package/dist/lib/esm/obsidian/Components/EmailComponent.mjs +0 -32
  139. package/dist/lib/esm/obsidian/Components/FileComponent.mjs +0 -48
  140. package/dist/lib/esm/obsidian/Components/MonthComponent.mjs +0 -51
  141. package/dist/lib/esm/obsidian/Components/MultipleDropdownComponent.mjs +0 -101
  142. package/dist/lib/esm/obsidian/Components/MultipleEmailComponent.mjs +0 -42
  143. package/dist/lib/esm/obsidian/Components/MultipleFileComponent.mjs +0 -49
  144. package/dist/lib/esm/obsidian/Components/MultipleTextComponent.mjs +0 -114
  145. package/dist/lib/esm/obsidian/Components/NumberComponent.mjs +0 -32
  146. package/dist/lib/esm/obsidian/Components/TextBasedComponent.mjs +0 -41
  147. package/dist/lib/esm/obsidian/Components/TimeComponent.mjs +0 -53
  148. package/dist/lib/esm/obsidian/Components/TriStateCheckboxComponent.mjs +0 -86
  149. package/dist/lib/esm/obsidian/Components/TypedDropdownComponent.mjs +0 -107
  150. package/dist/lib/esm/obsidian/Components/TypedMultipleDropdownComponent.mjs +0 -106
  151. package/dist/lib/esm/obsidian/Components/TypedRangeTextComponent.mjs +0 -44
  152. package/dist/lib/esm/obsidian/Components/TypedTextComponent.mjs +0 -134
  153. package/dist/lib/esm/obsidian/Components/UrlComponent.mjs +0 -32
  154. package/dist/lib/esm/obsidian/Components/ValidatorComponent.mjs +0 -47
  155. package/dist/lib/esm/obsidian/Components/WeekComponent.mjs +0 -51
  156. package/obsidian/Components/CheckboxComponent/package.json +0 -6
  157. package/obsidian/Components/DateComponent/package.json +0 -6
  158. package/obsidian/Components/DateTimeComponent/package.json +0 -6
  159. package/obsidian/Components/EmailComponent/package.json +0 -6
  160. package/obsidian/Components/FileComponent/package.json +0 -6
  161. package/obsidian/Components/MonthComponent/package.json +0 -6
  162. package/obsidian/Components/MultipleDropdownComponent/package.json +0 -6
  163. package/obsidian/Components/MultipleEmailComponent/package.json +0 -6
  164. package/obsidian/Components/MultipleFileComponent/package.json +0 -6
  165. package/obsidian/Components/MultipleTextComponent/package.json +0 -6
  166. package/obsidian/Components/NumberComponent/package.json +0 -6
  167. package/obsidian/Components/TextBasedComponent/package.json +0 -6
  168. package/obsidian/Components/TimeComponent/package.json +0 -6
  169. package/obsidian/Components/TriStateCheckboxComponent/package.json +0 -6
  170. package/obsidian/Components/TypedDropdownComponent/package.json +0 -6
  171. package/obsidian/Components/TypedMultipleDropdownComponent/package.json +0 -6
  172. package/obsidian/Components/TypedRangeTextComponent/package.json +0 -6
  173. package/obsidian/Components/TypedTextComponent/package.json +0 -6
  174. package/obsidian/Components/UrlComponent/package.json +0 -6
  175. package/obsidian/Components/ValidatorComponent/package.json +0 -6
  176. package/obsidian/Components/ValueComponentWithChangeTracking/package.json +0 -6
  177. package/obsidian/Components/WeekComponent/package.json +0 -6
  178. /package/dist/lib/cjs/obsidian/Components/{DateComponent.d.cts → SettingComponents/DateComponent.d.cts} +0 -0
  179. /package/dist/lib/cjs/obsidian/Components/{DateTimeComponent.d.cts → SettingComponents/DateTimeComponent.d.cts} +0 -0
  180. /package/dist/lib/cjs/obsidian/Components/{EmailComponent.d.cts → SettingComponents/EmailComponent.d.cts} +0 -0
  181. /package/dist/lib/cjs/obsidian/Components/{FileComponent.d.cts → SettingComponents/FileComponent.d.cts} +0 -0
  182. /package/dist/lib/cjs/obsidian/Components/{MonthComponent.d.cts → SettingComponents/MonthComponent.d.cts} +0 -0
  183. /package/dist/lib/cjs/obsidian/Components/{NumberComponent.d.cts → SettingComponents/NumberComponent.d.cts} +0 -0
  184. /package/dist/lib/cjs/obsidian/Components/{TextBasedComponent.d.cts → SettingComponents/TextBasedComponent.d.cts} +0 -0
  185. /package/dist/lib/cjs/obsidian/Components/{TimeComponent.d.cts → SettingComponents/TimeComponent.d.cts} +0 -0
  186. /package/dist/lib/cjs/obsidian/Components/{TypedRangeTextComponent.d.cts → SettingComponents/TypedRangeTextComponent.d.cts} +0 -0
  187. /package/dist/lib/cjs/obsidian/Components/{UrlComponent.d.cts → SettingComponents/UrlComponent.d.cts} +0 -0
  188. /package/dist/lib/cjs/obsidian/Components/{ValueComponentWithChangeTracking.d.cts → SettingComponents/ValueComponentWithChangeTracking.d.cts} +0 -0
  189. /package/dist/lib/cjs/obsidian/Components/{WeekComponent.d.cts → SettingComponents/WeekComponent.d.cts} +0 -0
  190. /package/dist/lib/esm/obsidian/Components/{DateComponent.d.mts → SettingComponents/DateComponent.d.mts} +0 -0
  191. /package/dist/lib/esm/obsidian/Components/{DateTimeComponent.d.mts → SettingComponents/DateTimeComponent.d.mts} +0 -0
  192. /package/dist/lib/esm/obsidian/Components/{EmailComponent.d.mts → SettingComponents/EmailComponent.d.mts} +0 -0
  193. /package/dist/lib/esm/obsidian/Components/{FileComponent.d.mts → SettingComponents/FileComponent.d.mts} +0 -0
  194. /package/dist/lib/esm/obsidian/Components/{MonthComponent.d.mts → SettingComponents/MonthComponent.d.mts} +0 -0
  195. /package/dist/lib/esm/obsidian/Components/{NumberComponent.d.mts → SettingComponents/NumberComponent.d.mts} +0 -0
  196. /package/dist/lib/esm/obsidian/Components/{TextBasedComponent.d.mts → SettingComponents/TextBasedComponent.d.mts} +0 -0
  197. /package/dist/lib/esm/obsidian/Components/{TimeComponent.d.mts → SettingComponents/TimeComponent.d.mts} +0 -0
  198. /package/dist/lib/esm/obsidian/Components/{TypedRangeTextComponent.d.mts → SettingComponents/TypedRangeTextComponent.d.mts} +0 -0
  199. /package/dist/lib/esm/obsidian/Components/{UrlComponent.d.mts → SettingComponents/UrlComponent.d.mts} +0 -0
  200. /package/dist/lib/esm/obsidian/Components/{ValueComponentWithChangeTracking.d.mts → SettingComponents/ValueComponentWithChangeTracking.d.mts} +0 -0
  201. /package/dist/lib/esm/obsidian/Components/{ValueComponentWithChangeTracking.mjs → SettingComponents/ValueComponentWithChangeTracking.mjs} +0 -0
  202. /package/dist/lib/esm/obsidian/Components/{WeekComponent.d.mts → SettingComponents/WeekComponent.d.mts} +0 -0
@@ -0,0 +1,47 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
+
8
+ import {
9
+ DropdownComponent,
10
+ SliderComponent,
11
+ TextAreaComponent,
12
+ TextComponent,
13
+ ToggleComponent
14
+ } from "obsidian";
15
+ class ValidatorElementWrapper {
16
+ constructor(validatorEl) {
17
+ this.validatorEl = validatorEl;
18
+ }
19
+ }
20
+ function getValidatorComponent(obj) {
21
+ if (isValidatorComponent(obj)) {
22
+ return obj;
23
+ }
24
+ if (obj instanceof DropdownComponent) {
25
+ return new ValidatorElementWrapper(obj.selectEl);
26
+ }
27
+ if (obj instanceof SliderComponent) {
28
+ return new ValidatorElementWrapper(obj.sliderEl);
29
+ }
30
+ if (obj instanceof TextAreaComponent) {
31
+ return new ValidatorElementWrapper(obj.inputEl);
32
+ }
33
+ if (obj instanceof TextComponent) {
34
+ return new ValidatorElementWrapper(obj.inputEl);
35
+ }
36
+ if (obj instanceof ToggleComponent) {
37
+ return new ValidatorElementWrapper(obj.toggleEl.find("input[type=checkbox]"));
38
+ }
39
+ return null;
40
+ }
41
+ function isValidatorComponent(obj) {
42
+ return !!obj.validatorEl;
43
+ }
44
+ export {
45
+ getValidatorComponent
46
+ };
47
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgRHJvcGRvd25Db21wb25lbnQsXG4gIFNsaWRlckNvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRDb21wb25lbnQsXG4gIFRvZ2dsZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdG9yRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL0hUTUxFbGVtZW50LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGhhcyBhIHZhbGlkYXRvciBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdmFsaWRhdG9yIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRvckVsOiBWYWxpZGF0b3JFbGVtZW50O1xufVxuXG5jbGFzcyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlciBpbXBsZW1lbnRzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsaWRhdG9yRWw6IFZhbGlkYXRvckVsZW1lbnQpIHt9XG59XG5cbi8qKlxuICogR2V0cyBhIHZhbGlkYXRvciBjb21wb25lbnQgcmVsYXRlZCB0byB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBBbnkgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHJlbGF0ZWQgdmFsaWRhdG9yIGNvbXBvbmVudCBvciBgbnVsbGAgaWYgbm8gcmVsYXRlZCB2YWxpZGF0b3IgY29tcG9uZW50IGlzIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KG9iajogdW5rbm93bik6IG51bGwgfCBWYWxpZGF0b3JDb21wb25lbnQge1xuICBpZiAoaXNWYWxpZGF0b3JDb21wb25lbnQob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5zZWxlY3RFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgU2xpZGVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouc2xpZGVyRWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRleHRBcmVhQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlcihvYmouaW5wdXRFbCk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmlucHV0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRvZ2dsZUNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLnRvZ2dsZUVsLmZpbmQoJ2lucHV0W3R5cGU9Y2hlY2tib3hdJykgYXMgSFRNTElucHV0RWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZGF0b3JDb21wb25lbnQob2JqOiB1bmtub3duKTogb2JqIGlzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHJldHVybiAhIShvYmogYXMgUGFydGlhbDxWYWxpZGF0b3JDb21wb25lbnQ+KS52YWxpZGF0b3JFbDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFNQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWNQLE1BQU0sd0JBQXNEO0FBQUEsRUFDbkQsWUFBNEIsYUFBK0I7QUFBL0I7QUFBQSxFQUFnQztBQUNyRTtBQVFPLFNBQVMsc0JBQXNCLEtBQXlDO0FBQzdFLE1BQUkscUJBQXFCLEdBQUcsR0FBRztBQUM3QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksZUFBZSxtQkFBbUI7QUFDcEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLFFBQVE7QUFBQSxFQUNqRDtBQUVBLE1BQUksZUFBZSxpQkFBaUI7QUFDbEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLFFBQVE7QUFBQSxFQUNqRDtBQUVBLE1BQUksZUFBZSxtQkFBbUI7QUFDcEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLE9BQU87QUFBQSxFQUNoRDtBQUVBLE1BQUksZUFBZSxlQUFlO0FBQ2hDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxPQUFPO0FBQUEsRUFDaEQ7QUFFQSxNQUFJLGVBQWUsaUJBQWlCO0FBQ2xDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxTQUFTLEtBQUssc0JBQXNCLENBQXFCO0FBQUEsRUFDbEc7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLHFCQUFxQixLQUF5QztBQUNyRSxTQUFPLENBQUMsQ0FBRSxJQUFvQztBQUNoRDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,51 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
+
8
+ import moment from "moment";
9
+ import { CssClass } from "../../../CssClass.mjs";
10
+ import { TypedRangeTextComponent } from "./TypedRangeTextComponent.mjs";
11
+ const DATE_FORMAT = "YYYY-[W]WW";
12
+ class WeekComponent extends TypedRangeTextComponent {
13
+ /**
14
+ * Creates a new Week component.
15
+ *
16
+ * @param containerEl - The container element of the component.
17
+ */
18
+ constructor(containerEl) {
19
+ super(containerEl, "week", CssClass.WeekComponent);
20
+ }
21
+ /**
22
+ * Converts a string to a Week.
23
+ *
24
+ * @param str - The string to convert.
25
+ * @returns The week.
26
+ */
27
+ valueFromString(str) {
28
+ const parsed = moment(str, DATE_FORMAT);
29
+ if (!parsed.isValid()) {
30
+ throw new Error("Invalid week");
31
+ }
32
+ return {
33
+ weekNumber: parsed.isoWeek(),
34
+ year: parsed.year()
35
+ };
36
+ }
37
+ /**
38
+ * Converts a week to a string.
39
+ *
40
+ * @param value - The week to convert.
41
+ * @returns The string.
42
+ */
43
+ valueToString(value) {
44
+ const date = moment().year(value.year).isoWeek(value.weekNumber);
45
+ return date.format(DATE_FORMAT);
46
+ }
47
+ }
48
+ export {
49
+ WeekComponent
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvV2Vla0NvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIHdlZWsuXG4gKi9cblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgdHlwZSB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi4vLi4vUGx1Z2luL1BsdWdpbkNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuaW1wb3J0IHR5cGUgeyBTZXR0aW5nRXggfSBmcm9tICcuLi8uLi9TZXR0aW5nRXgudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IFR5cGVkUmFuZ2VUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVktW1ddV1cnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSVNPIDg2MDEgd2VlayBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzb1dlZWsge1xuICAvKipcbiAgICogVGhlIElTTyA4NjAxIHdlZWsgbnVtYmVyICgxLTUzKS5cbiAgICovXG4gIHdlZWtOdW1iZXI6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB5ZWFyICgxLTk5OTkpLlxuICAgKi9cbiAgeWVhcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgV2Vlay5cbiAqXG4gKiBZb3UgY2FuIGFkZCB0aGlzIGNvbXBvbmVudCB1c2luZyB7QGxpbmsgU2V0dGluZ0V4LmFkZFdlZWt9LlxuICpcbiAqIEluIG9yZGVyIHRvIGFkZCB0aGUgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50LCB1c2Uge0BsaW5rIGluaXRQbHVnaW5Db250ZXh0fSBpbiB5b3VyIHBsdWdpbidzIGBvbmxvYWQoKWAgZnVuY3Rpb24uXG4gKlxuICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb3B5IHN0eWxlcyBmcm9tIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXV0aWxzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9zdHlsZXMuY3NzfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlZWtDb21wb25lbnQgZXh0ZW5kcyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudDxJc29XZWVrPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFdlZWsgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBzdXBlcihjb250YWluZXJFbCwgJ3dlZWsnLCBDc3NDbGFzcy5XZWVrQ29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhIFdlZWsuXG4gICAqXG4gICAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSB3ZWVrLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHZhbHVlRnJvbVN0cmluZyhzdHI6IHN0cmluZyk6IElzb1dlZWsge1xuICAgIGNvbnN0IHBhcnNlZCA9IG1vbWVudChzdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGlmICghcGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHdlZWsnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2Vla051bWJlcjogcGFyc2VkLmlzb1dlZWsoKSxcbiAgICAgIHllYXI6IHBhcnNlZC55ZWFyKClcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgd2VlayB0byBhIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHdlZWsgdG8gY29udmVydC5cbiAgICogQHJldHVybnMgVGhlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB2YWx1ZVRvU3RyaW5nKHZhbHVlOiBJc29XZWVrKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbW9tZW50KCkueWVhcih2YWx1ZS55ZWFyKS5pc29XZWVrKHZhbHVlLndlZWtOdW1iZXIpO1xuICAgIHJldHVybiBkYXRlLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFNQSxPQUFPLFlBQVk7QUFPbkIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUywrQkFBK0I7QUFFeEMsTUFBTSxjQUFjO0FBeUJiLE1BQU0sc0JBQXNCLHdCQUFpQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU0zRCxZQUFZLGFBQTBCO0FBQzNDLFVBQU0sYUFBYSxRQUFRLFNBQVMsYUFBYTtBQUFBLEVBQ25EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZ0JBQWdCLEtBQXNCO0FBQ3BELFVBQU0sU0FBUyxPQUFPLEtBQUssV0FBVztBQUV0QyxRQUFJLENBQUMsT0FBTyxRQUFRLEdBQUc7QUFDckIsWUFBTSxJQUFJLE1BQU0sY0FBYztBQUFBLElBQ2hDO0FBRUEsV0FBTztBQUFBLE1BQ0wsWUFBWSxPQUFPLFFBQVE7QUFBQSxNQUMzQixNQUFNLE9BQU8sS0FBSztBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGNBQWMsT0FBd0I7QUFDcEQsVUFBTSxPQUFPLE9BQU8sRUFBRSxLQUFLLE1BQU0sSUFBSSxFQUFFLFFBQVEsTUFBTSxVQUFVO0FBQy9ELFdBQU8sS0FBSyxPQUFPLFdBQVc7QUFBQSxFQUNoQztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,22 @@
1
+ export * as CheckboxComponent from './CheckboxComponent.mjs';
2
+ export * as DateComponent from './DateComponent.mjs';
3
+ export * as DateTimeComponent from './DateTimeComponent.mjs';
4
+ export * as EmailComponent from './EmailComponent.mjs';
5
+ export * as FileComponent from './FileComponent.mjs';
6
+ export * as MonthComponent from './MonthComponent.mjs';
7
+ export * as MultipleDropdownComponent from './MultipleDropdownComponent.mjs';
8
+ export * as MultipleEmailComponent from './MultipleEmailComponent.mjs';
9
+ export * as MultipleFileComponent from './MultipleFileComponent.mjs';
10
+ export * as MultipleTextComponent from './MultipleTextComponent.mjs';
11
+ export * as NumberComponent from './NumberComponent.mjs';
12
+ export * as TextBasedComponent from './TextBasedComponent.mjs';
13
+ export * as TimeComponent from './TimeComponent.mjs';
14
+ export * as TriStateCheckboxComponent from './TriStateCheckboxComponent.mjs';
15
+ export * as TypedDropdownComponent from './TypedDropdownComponent.mjs';
16
+ export * as TypedMultipleDropdownComponent from './TypedMultipleDropdownComponent.mjs';
17
+ export * as TypedRangeTextComponent from './TypedRangeTextComponent.mjs';
18
+ export * as TypedTextComponent from './TypedTextComponent.mjs';
19
+ export * as UrlComponent from './UrlComponent.mjs';
20
+ export * as ValidatorComponent from './ValidatorComponent.mjs';
21
+ export * as ValueComponentWithChangeTracking from './ValueComponentWithChangeTracking.mjs';
22
+ export * as WeekComponent from './WeekComponent.mjs';
@@ -0,0 +1,54 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
+
8
+ import * as CheckboxComponent from "./CheckboxComponent.mjs";
9
+ import * as DateComponent from "./DateComponent.mjs";
10
+ import * as DateTimeComponent from "./DateTimeComponent.mjs";
11
+ import * as EmailComponent from "./EmailComponent.mjs";
12
+ import * as FileComponent from "./FileComponent.mjs";
13
+ import * as MonthComponent from "./MonthComponent.mjs";
14
+ import * as MultipleDropdownComponent from "./MultipleDropdownComponent.mjs";
15
+ import * as MultipleEmailComponent from "./MultipleEmailComponent.mjs";
16
+ import * as MultipleFileComponent from "./MultipleFileComponent.mjs";
17
+ import * as MultipleTextComponent from "./MultipleTextComponent.mjs";
18
+ import * as NumberComponent from "./NumberComponent.mjs";
19
+ import * as TextBasedComponent from "./TextBasedComponent.mjs";
20
+ import * as TimeComponent from "./TimeComponent.mjs";
21
+ import * as TriStateCheckboxComponent from "./TriStateCheckboxComponent.mjs";
22
+ import * as TypedDropdownComponent from "./TypedDropdownComponent.mjs";
23
+ import * as TypedMultipleDropdownComponent from "./TypedMultipleDropdownComponent.mjs";
24
+ import * as TypedRangeTextComponent from "./TypedRangeTextComponent.mjs";
25
+ import * as TypedTextComponent from "./TypedTextComponent.mjs";
26
+ import * as UrlComponent from "./UrlComponent.mjs";
27
+ import * as ValidatorComponent from "./ValidatorComponent.mjs";
28
+ import * as ValueComponentWithChangeTracking from "./ValueComponentWithChangeTracking.mjs";
29
+ import * as WeekComponent from "./WeekComponent.mjs";
30
+ export {
31
+ CheckboxComponent,
32
+ DateComponent,
33
+ DateTimeComponent,
34
+ EmailComponent,
35
+ FileComponent,
36
+ MonthComponent,
37
+ MultipleDropdownComponent,
38
+ MultipleEmailComponent,
39
+ MultipleFileComponent,
40
+ MultipleTextComponent,
41
+ NumberComponent,
42
+ TextBasedComponent,
43
+ TimeComponent,
44
+ TriStateCheckboxComponent,
45
+ TypedDropdownComponent,
46
+ TypedMultipleDropdownComponent,
47
+ TypedRangeTextComponent,
48
+ TypedTextComponent,
49
+ UrlComponent,
50
+ ValidatorComponent,
51
+ ValueComponentWithChangeTracking,
52
+ WeekComponent
53
+ };
54
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBDaGVja2JveENvbXBvbmVudCBmcm9tICcuL0NoZWNrYm94Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIERhdGVDb21wb25lbnQgZnJvbSAnLi9EYXRlQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIERhdGVUaW1lQ29tcG9uZW50IGZyb20gJy4vRGF0ZVRpbWVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgRW1haWxDb21wb25lbnQgZnJvbSAnLi9FbWFpbENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBGaWxlQ29tcG9uZW50IGZyb20gJy4vRmlsZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNb250aENvbXBvbmVudCBmcm9tICcuL01vbnRoQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRW1haWxDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZUVtYWlsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRmlsZUNvbXBvbmVudCBmcm9tICcuL011bHRpcGxlRmlsZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZVRleHRDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZVRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTnVtYmVyQ29tcG9uZW50IGZyb20gJy4vTnVtYmVyQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFRleHRCYXNlZENvbXBvbmVudCBmcm9tICcuL1RleHRCYXNlZENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUaW1lQ29tcG9uZW50IGZyb20gJy4vVGltZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50IGZyb20gJy4vVHJpU3RhdGVDaGVja2JveENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZERyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vVHlwZWREcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9UeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZFRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVXJsQ29tcG9uZW50IGZyb20gJy4vVXJsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFZhbGlkYXRvckNvbXBvbmVudCBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyBmcm9tICcuL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmV4cG9ydCAqIGFzIFdlZWtDb21wb25lbnQgZnJvbSAnLi9XZWVrQ29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFFQSxZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLCtCQUErQjtBQUMzQyxZQUFZLDRCQUE0QjtBQUN4QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLHFCQUFxQjtBQUNqQyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLCtCQUErQjtBQUMzQyxZQUFZLDRCQUE0QjtBQUN4QyxZQUFZLG9DQUFvQztBQUNoRCxZQUFZLDZCQUE2QjtBQUN6QyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLGtCQUFrQjtBQUM5QixZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLHNDQUFzQztBQUNsRCxZQUFZLG1CQUFtQjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,22 +1,2 @@
1
- export * as CheckboxComponent from './CheckboxComponent.mjs';
2
- export * as DateComponent from './DateComponent.mjs';
3
- export * as DateTimeComponent from './DateTimeComponent.mjs';
4
- export * as EmailComponent from './EmailComponent.mjs';
5
- export * as FileComponent from './FileComponent.mjs';
6
- export * as MonthComponent from './MonthComponent.mjs';
7
- export * as MultipleDropdownComponent from './MultipleDropdownComponent.mjs';
8
- export * as MultipleEmailComponent from './MultipleEmailComponent.mjs';
9
- export * as MultipleFileComponent from './MultipleFileComponent.mjs';
10
- export * as MultipleTextComponent from './MultipleTextComponent.mjs';
11
- export * as NumberComponent from './NumberComponent.mjs';
12
- export * as TextBasedComponent from './TextBasedComponent.mjs';
13
- export * as TimeComponent from './TimeComponent.mjs';
14
- export * as TriStateCheckboxComponent from './TriStateCheckboxComponent.mjs';
15
- export * as TypedDropdownComponent from './TypedDropdownComponent.mjs';
16
- export * as TypedMultipleDropdownComponent from './TypedMultipleDropdownComponent.mjs';
17
- export * as TypedRangeTextComponent from './TypedRangeTextComponent.mjs';
18
- export * as TypedTextComponent from './TypedTextComponent.mjs';
19
- export * as UrlComponent from './UrlComponent.mjs';
20
- export * as ValidatorComponent from './ValidatorComponent.mjs';
21
- export * as ValueComponentWithChangeTracking from './ValueComponentWithChangeTracking.mjs';
22
- export * as WeekComponent from './WeekComponent.mjs';
1
+ export * as AsyncEventsComponent from './AsyncEventsComponent.mjs';
2
+ export * as SettingComponents from './SettingComponents/index.mjs';
@@ -5,50 +5,10 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
- import * as CheckboxComponent from "./CheckboxComponent.mjs";
9
- import * as DateComponent from "./DateComponent.mjs";
10
- import * as DateTimeComponent from "./DateTimeComponent.mjs";
11
- import * as EmailComponent from "./EmailComponent.mjs";
12
- import * as FileComponent from "./FileComponent.mjs";
13
- import * as MonthComponent from "./MonthComponent.mjs";
14
- import * as MultipleDropdownComponent from "./MultipleDropdownComponent.mjs";
15
- import * as MultipleEmailComponent from "./MultipleEmailComponent.mjs";
16
- import * as MultipleFileComponent from "./MultipleFileComponent.mjs";
17
- import * as MultipleTextComponent from "./MultipleTextComponent.mjs";
18
- import * as NumberComponent from "./NumberComponent.mjs";
19
- import * as TextBasedComponent from "./TextBasedComponent.mjs";
20
- import * as TimeComponent from "./TimeComponent.mjs";
21
- import * as TriStateCheckboxComponent from "./TriStateCheckboxComponent.mjs";
22
- import * as TypedDropdownComponent from "./TypedDropdownComponent.mjs";
23
- import * as TypedMultipleDropdownComponent from "./TypedMultipleDropdownComponent.mjs";
24
- import * as TypedRangeTextComponent from "./TypedRangeTextComponent.mjs";
25
- import * as TypedTextComponent from "./TypedTextComponent.mjs";
26
- import * as UrlComponent from "./UrlComponent.mjs";
27
- import * as ValidatorComponent from "./ValidatorComponent.mjs";
28
- import * as ValueComponentWithChangeTracking from "./ValueComponentWithChangeTracking.mjs";
29
- import * as WeekComponent from "./WeekComponent.mjs";
8
+ import * as AsyncEventsComponent from "./AsyncEventsComponent.mjs";
9
+ import * as SettingComponents from "./SettingComponents/index.mjs";
30
10
  export {
31
- CheckboxComponent,
32
- DateComponent,
33
- DateTimeComponent,
34
- EmailComponent,
35
- FileComponent,
36
- MonthComponent,
37
- MultipleDropdownComponent,
38
- MultipleEmailComponent,
39
- MultipleFileComponent,
40
- MultipleTextComponent,
41
- NumberComponent,
42
- TextBasedComponent,
43
- TimeComponent,
44
- TriStateCheckboxComponent,
45
- TypedDropdownComponent,
46
- TypedMultipleDropdownComponent,
47
- TypedRangeTextComponent,
48
- TypedTextComponent,
49
- UrlComponent,
50
- ValidatorComponent,
51
- ValueComponentWithChangeTracking,
52
- WeekComponent
11
+ AsyncEventsComponent,
12
+ SettingComponents
53
13
  };
54
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBDaGVja2JveENvbXBvbmVudCBmcm9tICcuL0NoZWNrYm94Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIERhdGVDb21wb25lbnQgZnJvbSAnLi9EYXRlQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIERhdGVUaW1lQ29tcG9uZW50IGZyb20gJy4vRGF0ZVRpbWVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgRW1haWxDb21wb25lbnQgZnJvbSAnLi9FbWFpbENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBGaWxlQ29tcG9uZW50IGZyb20gJy4vRmlsZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNb250aENvbXBvbmVudCBmcm9tICcuL01vbnRoQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRW1haWxDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZUVtYWlsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRmlsZUNvbXBvbmVudCBmcm9tICcuL011bHRpcGxlRmlsZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZVRleHRDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZVRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTnVtYmVyQ29tcG9uZW50IGZyb20gJy4vTnVtYmVyQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFRleHRCYXNlZENvbXBvbmVudCBmcm9tICcuL1RleHRCYXNlZENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUaW1lQ29tcG9uZW50IGZyb20gJy4vVGltZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50IGZyb20gJy4vVHJpU3RhdGVDaGVja2JveENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZERyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vVHlwZWREcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9UeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZFRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVXJsQ29tcG9uZW50IGZyb20gJy4vVXJsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFZhbGlkYXRvckNvbXBvbmVudCBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyBmcm9tICcuL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmV4cG9ydCAqIGFzIFdlZWtDb21wb25lbnQgZnJvbSAnLi9XZWVrQ29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFFQSxZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLCtCQUErQjtBQUMzQyxZQUFZLDRCQUE0QjtBQUN4QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLHFCQUFxQjtBQUNqQyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLCtCQUErQjtBQUMzQyxZQUFZLDRCQUE0QjtBQUN4QyxZQUFZLG9DQUFvQztBQUNoRCxZQUFZLDZCQUE2QjtBQUN6QyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLGtCQUFrQjtBQUM5QixZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLHNDQUFzQztBQUNsRCxZQUFZLG1CQUFtQjsiLAogICJuYW1lcyI6IFtdCn0K
14
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBBc3luY0V2ZW50c0NvbXBvbmVudCBmcm9tICcuL0FzeW5jRXZlbnRzQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFNldHRpbmdDb21wb25lbnRzIGZyb20gJy4vU2V0dGluZ0NvbXBvbmVudHMvaW5kZXgudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQUVBLFlBQVksMEJBQTBCO0FBQ3RDLFlBQVksdUJBQXVCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -9,7 +9,6 @@
9
9
  */
10
10
  import type { ReadonlyDeep } from 'type-fest';
11
11
  import { Plugin as ObsidianPlugin } from 'obsidian';
12
- import type { AsyncEventRef } from '../../AsyncEvents.mjs';
13
12
  import type { ExtractPluginSettings, ExtractPluginSettingsManager, ExtractPluginSettingsTab, ExtractReadonlyPluginSettingsWrapper, PluginTypesBase } from './PluginTypesBase.mjs';
14
13
  import { AsyncEvents } from '../../AsyncEvents.mjs';
15
14
  type LifecycleEventName = 'layoutReady' | 'load' | 'unload';
@@ -70,30 +69,8 @@ export declare abstract class PluginBase<PluginTypes extends PluginTypesBase> ex
70
69
  * Called when the plugin is loaded
71
70
  */
72
71
  onload(): Promise<void>;
73
- /**
74
- * Called when the plugin settings are loaded or reloaded.
75
- *
76
- * @param _loadedSettings - The loaded settings wrapper.
77
- * @param _isInitialLoad - Whether the settings are being loaded for the first time.
78
- */
79
- onLoadSettings(_loadedSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, _isInitialLoad: boolean): Promise<void>;
80
- /**
81
- * Called when the plugin settings are saved.
82
- *
83
- * @param _newSettings - The new settings.
84
- * @param _oldSettings - The old settings.
85
- * @param _context - The context.
86
- */
87
- onSaveSettings(_newSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, _oldSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, _context: unknown): Promise<void>;
88
72
  /** */
89
73
  onunload(): void;
90
- /**
91
- * Registers an async event.
92
- * Unregisters the event when the plugin is unloaded.
93
- *
94
- * @param eventRef - The event reference.
95
- */
96
- registerAsyncEvent(eventRef: AsyncEventRef): void;
97
74
  /**
98
75
  * Waits for a lifecycle event to be triggered.
99
76
  *
@@ -128,6 +105,21 @@ export declare abstract class PluginBase<PluginTypes extends PluginTypesBase> ex
128
105
  * This method can be overridden by subclasses to perform actions once the plugin is loaded.
129
106
  */
130
107
  protected onloadImpl(): Promise<void>;
108
+ /**
109
+ * Called when the plugin settings are loaded or reloaded.
110
+ *
111
+ * @param _loadedSettings - The loaded settings wrapper.
112
+ * @param _isInitialLoad - Whether the settings are being loaded for the first time.
113
+ */
114
+ protected onLoadSettings(_loadedSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, _isInitialLoad: boolean): Promise<void>;
115
+ /**
116
+ * Called when the plugin settings are saved.
117
+ *
118
+ * @param _newSettings - The new settings.
119
+ * @param _oldSettings - The old settings.
120
+ * @param _context - The context.
121
+ */
122
+ protected onSaveSettings(_newSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, _oldSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, _context: unknown): Promise<void>;
131
123
  /**
132
124
  * Called when the plugin is unloaded.
133
125
  */
@@ -18,6 +18,7 @@ import { AsyncEvents } from "../../AsyncEvents.mjs";
18
18
  import { getDebugger } from "../../Debug.mjs";
19
19
  import { registerAsyncErrorEventHandler } from "../../Error.mjs";
20
20
  import { noopAsync } from "../../Function.mjs";
21
+ import { registerAsyncEvent } from "../Components/AsyncEventsComponent.mjs";
21
22
  import { initPluginContext } from "./PluginContext.mjs";
22
23
  class PluginBase extends ObsidianPlugin {
23
24
  events = new AsyncEvents();
@@ -96,25 +97,6 @@ class PluginBase extends ObsidianPlugin {
96
97
  await this.onloadImpl();
97
98
  invokeAsyncSafelyAfterDelay(this.afterLoad.bind(this));
98
99
  }
99
- /**
100
- * Called when the plugin settings are loaded or reloaded.
101
- *
102
- * @param _loadedSettings - The loaded settings wrapper.
103
- * @param _isInitialLoad - Whether the settings are being loaded for the first time.
104
- */
105
- async onLoadSettings(_loadedSettings, _isInitialLoad) {
106
- await noopAsync();
107
- }
108
- /**
109
- * Called when the plugin settings are saved.
110
- *
111
- * @param _newSettings - The new settings.
112
- * @param _oldSettings - The old settings.
113
- * @param _context - The context.
114
- */
115
- async onSaveSettings(_newSettings, _oldSettings, _context) {
116
- await noopAsync();
117
- }
118
100
  /** */
119
101
  onunload() {
120
102
  super.onunload();
@@ -126,17 +108,6 @@ class PluginBase extends ObsidianPlugin {
126
108
  }
127
109
  });
128
110
  }
129
- /**
130
- * Registers an async event.
131
- * Unregisters the event when the plugin is unloaded.
132
- *
133
- * @param eventRef - The event reference.
134
- */
135
- registerAsyncEvent(eventRef) {
136
- this.register(() => {
137
- eventRef.asyncEvents.offref(eventRef);
138
- });
139
- }
140
111
  /**
141
112
  * Waits for a lifecycle event to be triggered.
142
113
  *
@@ -191,6 +162,10 @@ class PluginBase extends ObsidianPlugin {
191
162
  this.showNotice("An unhandled error occurred. Please check the console for more information.");
192
163
  }));
193
164
  this._settingsManager = this.createSettingsManager();
165
+ if (this._settingsManager) {
166
+ registerAsyncEvent(this, this._settingsManager.on("loadSettings", this.onLoadSettings.bind(this)));
167
+ registerAsyncEvent(this, this._settingsManager.on("saveSettings", this.onSaveSettings.bind(this)));
168
+ }
194
169
  await this._settingsManager?.loadFromFile(true);
195
170
  this._settingsTab = this.createPluginSettingsTab();
196
171
  if (this._settingsTab) {
@@ -202,6 +177,25 @@ class PluginBase extends ObsidianPlugin {
202
177
  abortController.abort();
203
178
  });
204
179
  }
180
+ /**
181
+ * Called when the plugin settings are loaded or reloaded.
182
+ *
183
+ * @param _loadedSettings - The loaded settings wrapper.
184
+ * @param _isInitialLoad - Whether the settings are being loaded for the first time.
185
+ */
186
+ async onLoadSettings(_loadedSettings, _isInitialLoad) {
187
+ await noopAsync();
188
+ }
189
+ /**
190
+ * Called when the plugin settings are saved.
191
+ *
192
+ * @param _newSettings - The new settings.
193
+ * @param _oldSettings - The old settings.
194
+ * @param _context - The context.
195
+ */
196
+ async onSaveSettings(_newSettings, _oldSettings, _context) {
197
+ await noopAsync();
198
+ }
205
199
  /**
206
200
  * Called when the plugin is unloaded.
207
201
  */
@@ -239,4 +233,4 @@ ${message}`);
239
233
  export {
240
234
  PluginBase
241
235
  };
242
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3MgZm9yIE9ic2lkaWFuIHBsdWdpbnMgcHJvdmlkaW5nIHV0aWxpdHkgbWV0aG9kcyBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MsIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucywgYW5kIGhhbmRsaW5nIGVycm9ycy5cbiAqIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBtZXRob2RzIHRvIGNyZWF0ZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBzZXR0aW5ncyB0YWJzLCBhbmQgY29tcGxldGUgcGx1Z2luLXNwZWNpZmljXG4gKiBsb2FkaW5nIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEFzeW5jRXZlbnRSZWYgfSBmcm9tICcuLi8uLi9Bc3luY0V2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzTWFuYWdlcixcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiLFxuICBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXIsXG4gIFBsdWdpblR5cGVzQmFzZVxufSBmcm9tICcuL1BsdWdpblR5cGVzQmFzZS50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIGludm9rZUFzeW5jU2FmZWx5QWZ0ZXJEZWxheVxufSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBBc3luY0V2ZW50cyB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vRXJyb3IudHMnO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuL1BsdWdpbkNvbnRleHQudHMnO1xuXG50eXBlIExpZmVjeWNsZUV2ZW50TmFtZSA9ICdsYXlvdXRSZWFkeScgfCAnbG9hZCcgfCAndW5sb2FkJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBPYnNpZGlhbiBwbHVnaW5zIHdpdGggYnVpbHQtaW4gc3VwcG9ydCBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luVHlwZXMgLSBQbHVnaW4tc3BlY2lmaWMgdHlwZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5CYXNlPFBsdWdpblR5cGVzIGV4dGVuZHMgUGx1Z2luVHlwZXNCYXNlPiBleHRlbmRzIE9ic2lkaWFuUGx1Z2luIHtcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50cyA9IG5ldyBBc3luY0V2ZW50cygpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBYm9ydFNpZ25hbCB1c2VkIGZvciBhYm9ydGluZyBsb25nLXJ1bm5pbmcgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFib3J0IHNpZ25hbC5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWJvcnRTaWduYWwoKTogQWJvcnRTaWduYWwge1xuICAgIHJldHVybiB0aGlzLl9hYm9ydFNpZ25hbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByZWFkb25seSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSByZWFkb25seSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IFJlYWRvbmx5RGVlcDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NNYW5hZ2VyLnNldHRpbmdzV3JhcHBlci5zYWZlU2V0dGluZ3MgYXMgUmVhZG9ubHlEZWVwPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNldHRpbmdzTWFuYWdlcigpOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NNYW5hZ2VyPFBsdWdpblR5cGVzPiB7XG4gICAgaWYgKCF0aGlzLl9zZXR0aW5nc01hbmFnZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2V0dGluZ3MgbWFuYWdlciBub3QgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zZXR0aW5nc01hbmFnZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNldHRpbmdzVGFiKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc1RhYjxQbHVnaW5UeXBlcz4ge1xuICAgIGlmICghdGhpcy5fc2V0dGluZ3NUYWIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2V0dGluZ3MgdGFiIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzVGFiO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRTaWduYWwhOiBBYm9ydFNpZ25hbDtcbiAgcHJpdmF0ZSBfc2V0dGluZ3NNYW5hZ2VyOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NNYW5hZ2VyPFBsdWdpblR5cGVzPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zZXR0aW5nc1RhYjogRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiPFBsdWdpblR5cGVzPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxpZmVjeWNsZUV2ZW50TmFtZXMgPSBuZXcgU2V0PExpZmVjeWNsZUV2ZW50TmFtZT4oKTtcbiAgcHJpdmF0ZSBub3RpY2U/OiBOb3RpY2U7XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBtZXNzYWdlIHRvIHRoZSBjb25zb2xlLlxuICAgKlxuICAgKiBVc2UgaW5zdGVhZCBvZiBgY29uc29sZS5kZWJ1ZygpYC5cbiAgICpcbiAgICogVGhvc2UgbWVzc2FnZXMgYXJlIG5vdCBzaG93biBieSBkZWZhdWx0LCBidXQgdGhleSBjYW4gYmUgc2hvd24gYnkgZW5hYmxpbmcgYHlvdXItcGx1Z2luLWlkYCBkZWJ1Z2dlciBuYW1lc3BhY2UuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvP3RhYj1yZWFkbWUtb3YtZmlsZSNkZWJ1Z2dpbmd9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIGxvZy5cbiAgICovXG4gIHB1YmxpYyBjb25zb2xlRGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAvLyBTa2lwIHRoZSBgY29uc29sZURlYnVnKClgIGNhbGwgaXRzZWxmXG4gICAgY29uc3QgRlJBTUVTX1RPX1NLSVAgPSAxO1xuICAgIGNvbnN0IF9kZWJ1Z2dlciA9IGdldERlYnVnZ2VyKHRoaXMubWFuaWZlc3QuaWQsIEZSQU1FU19UT19TS0lQKTtcbiAgICBfZGVidWdnZXIobWVzc2FnZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGV4dGVybmFsIHNldHRpbmdzIGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlPy4oKTtcbiAgICBhd2FpdCB0aGlzLl9zZXR0aW5nc01hbmFnZXI/LmxvYWRGcm9tRmlsZShmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWRcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIub25sb2FkKCk7XG4gICAgYXdhaXQgdGhpcy5vbmxvYWRJbXBsKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5KHRoaXMuYWZ0ZXJMb2FkLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZCBvciByZWxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIF9sb2FkZWRTZXR0aW5ncyAtIFRoZSBsb2FkZWQgc2V0dGluZ3Mgd3JhcHBlci5cbiAgICogQHBhcmFtIF9pc0luaXRpYWxMb2FkIC0gV2hldGhlciB0aGUgc2V0dGluZ3MgYXJlIGJlaW5nIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgb25Mb2FkU2V0dGluZ3MoX2xvYWRlZFNldHRpbmdzOiBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXI8UGx1Z2luVHlwZXM+LCBfaXNJbml0aWFsTG9hZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKlxuICAgKiBAcGFyYW0gX25ld1NldHRpbmdzIC0gVGhlIG5ldyBzZXR0aW5ncy5cbiAgICogQHBhcmFtIF9vbGRTZXR0aW5ncyAtIFRoZSBvbGQgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBfY29udGV4dCAtIFRoZSBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIG9uU2F2ZVNldHRpbmdzKFxuICAgIF9uZXdTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgX2NvbnRleHQ6IHVua25vd25cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKiogKi9cbiAgcHVibGljIG92ZXJyaWRlIG9udW5sb2FkKCk6IHZvaWQge1xuICAgIHN1cGVyLm9udW5sb2FkKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5vbnVubG9hZEltcGwoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCd1bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gYXN5bmMgZXZlbnQuXG4gICAqIFVucmVnaXN0ZXJzIHRoZSBldmVudCB3aGVuIHRoZSBwbHVnaW4gaXMgdW5sb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFJlZiAtIFRoZSBldmVudCByZWZlcmVuY2UuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJBc3luY0V2ZW50KGV2ZW50UmVmOiBBc3luY0V2ZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICBldmVudFJlZi5hc3luY0V2ZW50cy5vZmZyZWYoZXZlbnRSZWYpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciBhIGxpZmVjeWNsZSBldmVudCB0byBiZSB0cmlnZ2VyZWQuXG4gICAqXG4gICAqIElmIHlvdSBgYXdhaXRgIHRoaXMgbWV0aG9kIGR1cmluZyBsaWZlY3ljbGUgZXZlbnQsIGl0IG1pZ2h0IGNhdXNlIGEgZGVhZGxvY2suXG4gICAqXG4gICAqIENvbnNpZGVyIHdyYXBwaW5nIHRoaXMgY2FsbCB3aXRoIHtAbGluayBpbnZva2VBc3luY1NhZmVseX0uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB3YWl0Rm9yTGlmZWN5Y2xlRXZlbnQobmFtZTogTGlmZWN5Y2xlRXZlbnROYW1lKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubGlmZWN5Y2xlRXZlbnROYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5ldmVudHMub25jZShuYW1lLCAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZ3MgdGFiIG9yIG51bGwgaWYgbm90IGFwcGxpY2FibGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUGx1Z2luU2V0dGluZ3NUYWIoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiPFBsdWdpblR5cGVzPiB8IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyLiBUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTZXR0aW5nc01hbmFnZXIoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzTWFuYWdlcjxQbHVnaW5UeXBlcz4gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gYWN0aW9ucyBvbmNlXG4gICAqIHRoZSBsYXlvdXQgaXMgcmVhZHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25MYXlvdXRSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlZCB3aGVuIHRoZSBwbHVnaW4gaXMgbG9hZGVkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gYWN0aW9ucyBvbmNlIHRoZSBwbHVnaW4gaXMgbG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9ubG9hZEltcGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaW5pdFBsdWdpbkNvbnRleHQodGhpcy5hcHAsIHRoaXMubWFuaWZlc3QuaWQpO1xuXG4gICAgdGhpcy5yZWdpc3RlcihyZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93Tm90aWNlKCdBbiB1bmhhbmRsZWQgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSBjaGVjayB0aGUgY29uc29sZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLl9zZXR0aW5nc01hbmFnZXIgPSB0aGlzLmNyZWF0ZVNldHRpbmdzTWFuYWdlcigpO1xuXG4gICAgYXdhaXQgdGhpcy5fc2V0dGluZ3NNYW5hZ2VyPy5sb2FkRnJvbUZpbGUodHJ1ZSk7XG4gICAgdGhpcy5fc2V0dGluZ3NUYWIgPSB0aGlzLmNyZWF0ZVBsdWdpblNldHRpbmdzVGFiKCk7XG4gICAgaWYgKHRoaXMuX3NldHRpbmdzVGFiKSB7XG4gICAgICB0aGlzLmFkZFNldHRpbmdUYWIodGhpcy5fc2V0dGluZ3NUYWIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9hYm9ydFNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7XG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGlzIHVubG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9udW5sb2FkSW1wbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIG5vdGljZSBtZXNzYWdlIHRvIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvd05vdGljZShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ub3RpY2UpIHtcbiAgICAgIHRoaXMubm90aWNlLmhpZGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLm5vdGljZSA9IG5ldyBOb3RpY2UoYCR7dGhpcy5tYW5pZmVzdC5uYW1lfVxcbiR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWZ0ZXJMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsb2FkJyk7XG4gICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoY29udmVydEFzeW5jVG9TeW5jKHRoaXMub25MYXlvdXRSZWFkeUJhc2UuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkxheW91dFJlYWR5QmFzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbkxheW91dFJlYWR5KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsYXlvdXRSZWFkeScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJpZ2dlckxpZmVjeWNsZUV2ZW50KG5hbWU6IExpZmVjeWNsZUV2ZW50TmFtZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGlmZWN5Y2xlRXZlbnROYW1lcy5hZGQobmFtZSk7XG4gICAgYXdhaXQgdGhpcy5ldmVudHMudHJpZ2dlckFzeW5jKG5hbWUpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBWUE7QUFBQSxFQUNFO0FBQUEsRUFDQSxVQUFVO0FBQUEsT0FDTDtBQVdQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FB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
236
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3MgZm9yIE9ic2lkaWFuIHBsdWdpbnMgcHJvdmlkaW5nIHV0aWxpdHkgbWV0aG9kcyBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MsIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucywgYW5kIGhhbmRsaW5nIGVycm9ycy5cbiAqIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBtZXRob2RzIHRvIGNyZWF0ZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBzZXR0aW5ncyB0YWJzLCBhbmQgY29tcGxldGUgcGx1Z2luLXNwZWNpZmljXG4gKiBsb2FkaW5nIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzTWFuYWdlcixcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiLFxuICBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXIsXG4gIFBsdWdpblR5cGVzQmFzZVxufSBmcm9tICcuL1BsdWdpblR5cGVzQmFzZS50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIGludm9rZUFzeW5jU2FmZWx5QWZ0ZXJEZWxheVxufSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBBc3luY0V2ZW50cyB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vRXJyb3IudHMnO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBc3luY0V2ZW50IH0gZnJvbSAnLi4vQ29tcG9uZW50cy9Bc3luY0V2ZW50c0NvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpbml0UGx1Z2luQ29udGV4dCB9IGZyb20gJy4vUGx1Z2luQ29udGV4dC50cyc7XG5cbnR5cGUgTGlmZWN5Y2xlRXZlbnROYW1lID0gJ2xheW91dFJlYWR5JyB8ICdsb2FkJyB8ICd1bmxvYWQnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBzZXR0aW5ncyBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgYW5kIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5UeXBlcyAtIFBsdWdpbi1zcGVjaWZpYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2U8UGx1Z2luVHlwZXMgZXh0ZW5kcyBQbHVnaW5UeXBlc0Jhc2U+IGV4dGVuZHMgT2JzaWRpYW5QbHVnaW4ge1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRzID0gbmV3IEFzeW5jRXZlbnRzKCk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEFib3J0U2lnbmFsIHVzZWQgZm9yIGFib3J0aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWJvcnQgc2lnbmFsLlxuICAgKi9cbiAgcHVibGljIGdldCBhYm9ydFNpZ25hbCgpOiBBYm9ydFNpZ25hbCB7XG4gICAgcmV0dXJuIHRoaXMuX2Fib3J0U2lnbmFsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogUmVhZG9ubHlEZWVwPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc01hbmFnZXIuc2V0dGluZ3NXcmFwcGVyLnNhZmVTZXR0aW5ncyBhcyBSZWFkb25seURlZXA8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NNYW5hZ2VyKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc01hbmFnZXI8UGx1Z2luVHlwZXM+IHtcbiAgICBpZiAoIXRoaXMuX3NldHRpbmdzTWFuYWdlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5ncyBtYW5hZ2VyIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzTWFuYWdlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NUYWIoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiPFBsdWdpblR5cGVzPiB7XG4gICAgaWYgKCF0aGlzLl9zZXR0aW5nc1RhYikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5ncyB0YWIgbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NUYWI7XG4gIH1cblxuICBwcml2YXRlIF9hYm9ydFNpZ25hbCE6IEFib3J0U2lnbmFsO1xuICBwcml2YXRlIF9zZXR0aW5nc01hbmFnZXI6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc01hbmFnZXI8UGx1Z2luVHlwZXM+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3NldHRpbmdzVGFiOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NUYWI8UGx1Z2luVHlwZXM+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGlmZWN5Y2xlRXZlbnROYW1lcyA9IG5ldyBTZXQ8TGlmZWN5Y2xlRXZlbnROYW1lPigpO1xuICBwcml2YXRlIG5vdGljZT86IE5vdGljZTtcblxuICAvKipcbiAgICogTG9ncyBhIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUuXG4gICAqXG4gICAqIFVzZSBpbnN0ZWFkIG9mIGBjb25zb2xlLmRlYnVnKClgLlxuICAgKlxuICAgKiBUaG9zZSBtZXNzYWdlcyBhcmUgbm90IHNob3duIGJ5IGRlZmF1bHQsIGJ1dCB0aGV5IGNhbiBiZSBzaG93biBieSBlbmFibGluZyBgeW91ci1wbHVnaW4taWRgIGRlYnVnZ2VyIG5hbWVzcGFjZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy8/dGFiPXJlYWRtZS1vdi1maWxlI2RlYnVnZ2luZ30gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICAgKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gbG9nLlxuICAgKi9cbiAgcHVibGljIGNvbnNvbGVEZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIC8vIFNraXAgdGhlIGBjb25zb2xlRGVidWcoKWAgY2FsbCBpdHNlbGZcbiAgICBjb25zdCBGUkFNRVNfVE9fU0tJUCA9IDE7XG4gICAgY29uc3QgX2RlYnVnZ2VyID0gZ2V0RGVidWdnZXIodGhpcy5tYW5pZmVzdC5pZCwgRlJBTUVTX1RPX1NLSVApO1xuICAgIF9kZWJ1Z2dlcihtZXNzYWdlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgZXh0ZXJuYWwgc2V0dGluZ3MgY2hhbmdlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2U/LigpO1xuICAgIGF3YWl0IHRoaXMuX3NldHRpbmdzTWFuYWdlcj8ubG9hZEZyb21GaWxlKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZFxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbmxvYWQoKTtcbiAgICBhd2FpdCB0aGlzLm9ubG9hZEltcGwoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXkodGhpcy5hZnRlckxvYWQuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKiogKi9cbiAgcHVibGljIG92ZXJyaWRlIG9udW5sb2FkKCk6IHZvaWQge1xuICAgIHN1cGVyLm9udW5sb2FkKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5vbnVubG9hZEltcGwoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCd1bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyBmb3IgYSBsaWZlY3ljbGUgZXZlbnQgdG8gYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBJZiB5b3UgYGF3YWl0YCB0aGlzIG1ldGhvZCBkdXJpbmcgbGlmZWN5Y2xlIGV2ZW50LCBpdCBtaWdodCBjYXVzZSBhIGRlYWRsb2NrLlxuICAgKlxuICAgKiBDb25zaWRlciB3cmFwcGluZyB0aGlzIGNhbGwgd2l0aCB7QGxpbmsgaW52b2tlQXN5bmNTYWZlbHl9LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgd2FpdEZvckxpZmVjeWNsZUV2ZW50KG5hbWU6IExpZmVjeWNsZUV2ZW50TmFtZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmxpZmVjeWNsZUV2ZW50TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZXZlbnRzLm9uY2UobmFtZSwgKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNldHRpbmdzIHRhYiBvciBudWxsIGlmIG5vdCBhcHBsaWNhYmxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVBsdWdpblNldHRpbmdzVGFiKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc1RhYjxQbHVnaW5UeXBlcz4gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci4gVGhpcyBtZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc01hbmFnZXI8UGx1Z2luVHlwZXM+IHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGxheW91dCBpcyByZWFkeS4gVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byBwZXJmb3JtIGFjdGlvbnMgb25jZVxuICAgKiB0aGUgbGF5b3V0IGlzIHJlYWR5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTGF5b3V0UmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZWQgd2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byBwZXJmb3JtIGFjdGlvbnMgb25jZSB0aGUgcGx1Z2luIGlzIGxvYWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbmxvYWRJbXBsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGluaXRQbHVnaW5Db250ZXh0KHRoaXMuYXBwLCB0aGlzLm1hbmlmZXN0LmlkKTtcblxuICAgIHRoaXMucmVnaXN0ZXIocmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd05vdGljZSgnQW4gdW5oYW5kbGVkIGVycm9yIG9jY3VycmVkLiBQbGVhc2UgY2hlY2sgdGhlIGNvbnNvbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5fc2V0dGluZ3NNYW5hZ2VyID0gdGhpcy5jcmVhdGVTZXR0aW5nc01hbmFnZXIoKTtcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NNYW5hZ2VyKSB7XG4gICAgICByZWdpc3RlckFzeW5jRXZlbnQodGhpcywgdGhpcy5fc2V0dGluZ3NNYW5hZ2VyLm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICAgIHJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLCB0aGlzLl9zZXR0aW5nc01hbmFnZXIub24oJ3NhdmVTZXR0aW5ncycsIHRoaXMub25TYXZlU2V0dGluZ3MuYmluZCh0aGlzKSkpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuX3NldHRpbmdzTWFuYWdlcj8ubG9hZEZyb21GaWxlKHRydWUpO1xuICAgIHRoaXMuX3NldHRpbmdzVGFiID0gdGhpcy5jcmVhdGVQbHVnaW5TZXR0aW5nc1RhYigpO1xuICAgIGlmICh0aGlzLl9zZXR0aW5nc1RhYikge1xuICAgICAgdGhpcy5hZGRTZXR0aW5nVGFiKHRoaXMuX3NldHRpbmdzVGFiKTtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fYWJvcnRTaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsO1xuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgbG9hZGVkIG9yIHJlbG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gX2xvYWRlZFNldHRpbmdzIC0gVGhlIGxvYWRlZCBzZXR0aW5ncyB3cmFwcGVyLlxuICAgKiBAcGFyYW0gX2lzSW5pdGlhbExvYWQgLSBXaGV0aGVyIHRoZSBzZXR0aW5ncyBhcmUgYmVpbmcgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbkxvYWRTZXR0aW5ncyhfbG9hZGVkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sIF9pc0luaXRpYWxMb2FkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgc2F2ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfbmV3U2V0dGluZ3MgLSBUaGUgbmV3IHNldHRpbmdzLlxuICAgKiBAcGFyYW0gX29sZFNldHRpbmdzIC0gVGhlIG9sZCBzZXR0aW5ncy5cbiAgICogQHBhcmFtIF9jb250ZXh0IC0gVGhlIGNvbnRleHQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25TYXZlU2V0dGluZ3MoXG4gICAgX25ld1NldHRpbmdzOiBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXI8UGx1Z2luVHlwZXM+LFxuICAgIF9vbGRTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGlzIHVubG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9udW5sb2FkSW1wbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIG5vdGljZSBtZXNzYWdlIHRvIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvd05vdGljZShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ub3RpY2UpIHtcbiAgICAgIHRoaXMubm90aWNlLmhpZGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLm5vdGljZSA9IG5ldyBOb3RpY2UoYCR7dGhpcy5tYW5pZmVzdC5uYW1lfVxcbiR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWZ0ZXJMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsb2FkJyk7XG4gICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoY29udmVydEFzeW5jVG9TeW5jKHRoaXMub25MYXlvdXRSZWFkeUJhc2UuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkxheW91dFJlYWR5QmFzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbkxheW91dFJlYWR5KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsYXlvdXRSZWFkeScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJpZ2dlckxpZmVjeWNsZUV2ZW50KG5hbWU6IExpZmVjeWNsZUV2ZW50TmFtZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGlmZWN5Y2xlRXZlbnROYW1lcy5hZGQobmFtZSk7XG4gICAgYXdhaXQgdGhpcy5ldmVudHMudHJpZ2dlckFzeW5jKG5hbWUpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBWUE7QUFBQSxFQUNFO0FBQUEsRUFDQSxVQUFVO0FBQUEsT0FDTDtBQVVQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsbUJBQW1CO0FB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
@@ -5,10 +5,12 @@
5
5
  */
6
6
  import type { App } from 'obsidian';
7
7
  import type { Promisable, ReadonlyDeep } from 'type-fest';
8
+ import type { AsyncEventRef } from '../../AsyncEvents.mjs';
8
9
  import type { GenericObject } from '../../Object.mjs';
9
10
  import type { Transformer } from '../../Transformers/Transformer.mjs';
10
11
  import type { MaybeReturn, StringKeys } from '../../Type.mjs';
11
12
  import type { ExtractPlugin, ExtractPluginSettings, ExtractPluginSettingsPropertyNames, ExtractReadonlyPluginSettingsWrapper, PluginTypesBase } from './PluginTypesBase.mjs';
13
+ import { AsyncEvents } from '../../AsyncEvents.mjs';
12
14
  type ValidationResult<PluginSettings extends object> = Partial<Record<StringKeys<PluginSettings>, string>>;
13
15
  type Validator<PluginSettings extends object, PropertyName extends StringKeys<PluginSettings> = StringKeys<PluginSettings>> = (value: PluginSettings[PropertyName], settings: PluginSettings) => Promisable<MaybeReturn<string>>;
14
16
  /**
@@ -16,7 +18,7 @@ type Validator<PluginSettings extends object, PropertyName extends StringKeys<Pl
16
18
  *
17
19
  * @typeParam PluginTypes - Plugin-specific types.
18
20
  */
19
- export declare abstract class PluginSettingsManagerBase<PluginTypes extends PluginTypesBase> {
21
+ export declare abstract class PluginSettingsManagerBase<PluginTypes extends PluginTypesBase> extends AsyncEvents {
20
22
  readonly plugin: ExtractPlugin<PluginTypes>;
21
23
  readonly app: App;
22
24
  readonly defaultSettings: ReadonlyDeep<ExtractPluginSettings<PluginTypes>>;
@@ -67,6 +69,24 @@ export declare abstract class PluginSettingsManagerBase<PluginTypes extends Plug
67
69
  * @returns A {@link Promise} that resolves when the settings are loaded.
68
70
  */
69
71
  loadFromFile(isInitialLoad: boolean): Promise<void>;
72
+ /**
73
+ * Subscribes to the `loadSettings` event.
74
+ *
75
+ * @param name - Always `loadSettings`.
76
+ * @param callback - The callback to call when the event is triggered.
77
+ * @param thisArg - The context passed as `this` to the `callback`.
78
+ * @returns A reference to the event listener.
79
+ */
80
+ on(name: 'loadSettings', callback: (loadedSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, isInitialLoad: boolean) => Promisable<void>, thisArg?: unknown): AsyncEventRef;
81
+ /**
82
+ * Subscribes to the `saveSettings` event.
83
+ *
84
+ * @param name - Always `saveSettings`.
85
+ * @param callback - The callback to call when the event is triggered.
86
+ * @param thisArg - The context passed as `this` to the `callback`.
87
+ * @returns A reference to the event listener.
88
+ */
89
+ on(name: 'saveSettings', callback: (newSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, oldSettings: ExtractReadonlyPluginSettingsWrapper<PluginTypes>, context: unknown) => Promisable<void>, thisArg?: unknown): AsyncEventRef;
70
90
  /**
71
91
  * Saves the new plugin settings.
72
92
  *