@mnaoumov/obsidian-lib 10.5.0 → 10.6.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.
- package/README.md +6 -0
- package/codemirror/inline-token-widgets/package.json +6 -0
- package/codemirror/settings-facet/package.json +6 -0
- package/components/settings-facet-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +104 -1
- package/dist/lib/cjs/__merged.d.cts +20 -3
- package/dist/lib/cjs/anchored-suggest.cjs +232 -0
- package/dist/lib/cjs/anchored-suggest.d.cts +116 -0
- package/dist/lib/cjs/backlink-index.cjs +44 -8
- package/dist/lib/cjs/backlink-index.d.cts +23 -0
- package/dist/lib/cjs/bug-report.cjs +4 -2
- package/dist/lib/cjs/bug-report.d.cts +1 -1
- package/dist/lib/cjs/bulk-operation-progress.cjs +16 -1
- package/dist/lib/cjs/bulk-operation-progress.d.cts +22 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +9 -1
- package/dist/lib/cjs/code-block-render-handoff.cjs +272 -0
- package/dist/lib/cjs/code-block-render-handoff.d.cts +131 -0
- package/dist/lib/cjs/codemirror/index.cjs +7 -1
- package/dist/lib/cjs/codemirror/index.d.cts +2 -0
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +250 -0
- package/dist/lib/cjs/codemirror/inline-token-widgets.d.cts +109 -0
- package/dist/lib/cjs/codemirror/settings-facet.cjs +132 -0
- package/dist/lib/cjs/codemirror/settings-facet.d.cts +19 -0
- package/dist/lib/cjs/community-plugins.cjs +19 -2
- package/dist/lib/cjs/community-plugins.d.cts +14 -0
- package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +5 -2
- package/dist/lib/cjs/components/index.cjs +4 -1
- package/dist/lib/cjs/components/index.d.cts +1 -0
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +105 -2
- package/dist/lib/cjs/components/settings-facet-component.cjs +136 -0
- package/dist/lib/cjs/components/settings-facet-component.d.cts +68 -0
- package/dist/lib/cjs/css-class.cjs +8 -1
- package/dist/lib/cjs/css-class.d.cts +28 -0
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +38 -13
- package/dist/lib/cjs/desktop-bulk-operation-git.d.cts +21 -1
- package/dist/lib/cjs/desktop-request-url-stream.cjs +258 -0
- package/dist/lib/cjs/desktop-request-url-stream.d.cts +22 -0
- package/dist/lib/cjs/editor-suggest-registrar.cjs +8 -2
- package/dist/lib/cjs/editor-suggest-registrar.d.cts +14 -2
- package/dist/lib/cjs/editor-suggest.cjs +198 -0
- package/dist/lib/cjs/editor-suggest.d.cts +103 -0
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/hotkey.cjs +185 -0
- package/dist/lib/cjs/hotkey.d.cts +59 -0
- package/dist/lib/cjs/i18n/locales/en.cjs +14 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +13 -0
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +13 -0
- package/dist/lib/cjs/index.cjs +31 -1
- package/dist/lib/cjs/index.d.cts +10 -0
- package/dist/lib/cjs/inline-token-renderer.cjs +145 -0
- package/dist/lib/cjs/inline-token-renderer.d.cts +88 -0
- package/dist/lib/cjs/link-and-tag-input-suggest.cjs +325 -0
- package/dist/lib/cjs/link-and-tag-input-suggest.d.cts +229 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -1
- package/dist/lib/cjs/markdown-code-block-processor.d.cts +18 -0
- package/dist/lib/cjs/markdown.cjs +6 -1
- package/dist/lib/cjs/markdown.d.cts +10 -1
- package/dist/lib/cjs/modals/modal.cjs +8 -5
- package/dist/lib/cjs/modals/modal.d.cts +4 -0
- package/dist/lib/cjs/plugin/plugin.cjs +5 -2
- package/dist/lib/cjs/plugin/plugin.d.cts +2 -0
- package/dist/lib/cjs/rendered-markdown.cjs +306 -0
- package/dist/lib/cjs/rendered-markdown.d.cts +77 -0
- package/dist/lib/cjs/request-url.cjs +523 -0
- package/dist/lib/cjs/request-url.d.cts +233 -0
- package/dist/lib/cjs/setting-components/folder-list-component.cjs +216 -0
- package/dist/lib/cjs/setting-components/folder-list-component.d.cts +73 -0
- package/dist/lib/cjs/setting-components/hotkey-component.cjs +260 -0
- package/dist/lib/cjs/setting-components/hotkey-component.d.cts +85 -0
- package/dist/lib/cjs/setting-components/index.cjs +13 -1
- package/dist/lib/cjs/setting-components/index.d.cts +4 -0
- package/dist/lib/cjs/setting-components/list-component.cjs +291 -0
- package/dist/lib/cjs/setting-components/list-component.d.cts +106 -0
- package/dist/lib/cjs/setting-components/tag-list-component.cjs +220 -0
- package/dist/lib/cjs/setting-components/tag-list-component.d.cts +82 -0
- package/dist/lib/cjs/setting-ex.cjs +51 -1
- package/dist/lib/cjs/setting-ex.d.cts +35 -1
- package/dist/lib/cjs/settings-tabs.cjs +258 -0
- package/dist/lib/cjs/settings-tabs.d.cts +101 -0
- package/dist/lib/esm/__merged.d.mts +20 -3
- package/dist/lib/esm/__merged.mjs +110 -2
- package/dist/lib/esm/anchored-suggest.d.mts +116 -0
- package/dist/lib/esm/anchored-suggest.mjs +144 -0
- package/dist/lib/esm/backlink-index.d.mts +23 -0
- package/dist/lib/esm/backlink-index.mjs +42 -7
- package/dist/lib/esm/bug-report.d.mts +1 -1
- package/dist/lib/esm/bug-report.mjs +4 -2
- package/dist/lib/esm/bulk-operation-progress.d.mts +22 -0
- package/dist/lib/esm/bulk-operation-progress.mjs +14 -1
- package/dist/lib/esm/case-insensitive-file-index.mjs +9 -1
- package/dist/lib/esm/code-block-render-handoff.d.mts +131 -0
- package/dist/lib/esm/code-block-render-handoff.mjs +183 -0
- package/dist/lib/esm/codemirror/index.d.mts +2 -0
- package/dist/lib/esm/codemirror/index.mjs +5 -1
- package/dist/lib/esm/codemirror/inline-token-widgets.d.mts +109 -0
- package/dist/lib/esm/codemirror/inline-token-widgets.mjs +167 -0
- package/dist/lib/esm/codemirror/settings-facet.d.mts +19 -0
- package/dist/lib/esm/codemirror/settings-facet.mjs +44 -0
- package/dist/lib/esm/community-plugins.d.mts +14 -0
- package/dist/lib/esm/community-plugins.mjs +18 -2
- package/dist/lib/esm/components/bulk-operation-commit-component.mjs +5 -2
- package/dist/lib/esm/components/index.d.mts +1 -0
- package/dist/lib/esm/components/index.mjs +3 -1
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +105 -2
- package/dist/lib/esm/components/settings-facet-component.d.mts +68 -0
- package/dist/lib/esm/components/settings-facet-component.mjs +48 -0
- package/dist/lib/esm/css-class.d.mts +28 -0
- package/dist/lib/esm/css-class.mjs +8 -1
- package/dist/lib/esm/desktop-bulk-operation-git.d.mts +21 -1
- package/dist/lib/esm/desktop-bulk-operation-git.mjs +38 -13
- package/dist/lib/esm/desktop-request-url-stream.d.mts +22 -0
- package/dist/lib/esm/desktop-request-url-stream.mjs +170 -0
- package/dist/lib/esm/editor-suggest-registrar.d.mts +14 -2
- package/dist/lib/esm/editor-suggest-registrar.mjs +8 -2
- package/dist/lib/esm/editor-suggest.d.mts +103 -0
- package/dist/lib/esm/editor-suggest.mjs +109 -0
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/hotkey.d.mts +59 -0
- package/dist/lib/esm/hotkey.mjs +95 -0
- package/dist/lib/esm/i18n/locales/en.d.mts +13 -0
- package/dist/lib/esm/i18n/locales/en.mjs +14 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +13 -0
- package/dist/lib/esm/index.d.mts +10 -0
- package/dist/lib/esm/index.mjs +21 -1
- package/dist/lib/esm/inline-token-renderer.d.mts +88 -0
- package/dist/lib/esm/inline-token-renderer.mjs +59 -0
- package/dist/lib/esm/link-and-tag-input-suggest.d.mts +229 -0
- package/dist/lib/esm/link-and-tag-input-suggest.mjs +239 -0
- package/dist/lib/esm/markdown-code-block-processor.d.mts +18 -0
- package/dist/lib/esm/markdown-code-block-processor.mjs +16 -1
- package/dist/lib/esm/markdown.d.mts +10 -1
- package/dist/lib/esm/markdown.mjs +9 -1
- package/dist/lib/esm/modals/modal.d.mts +4 -0
- package/dist/lib/esm/modals/modal.mjs +8 -5
- package/dist/lib/esm/plugin/plugin.d.mts +2 -0
- package/dist/lib/esm/plugin/plugin.mjs +5 -2
- package/dist/lib/esm/rendered-markdown.d.mts +77 -0
- package/dist/lib/esm/rendered-markdown.mjs +219 -0
- package/dist/lib/esm/request-url.d.mts +233 -0
- package/dist/lib/esm/request-url.mjs +428 -0
- package/dist/lib/esm/setting-components/folder-list-component.d.mts +73 -0
- package/dist/lib/esm/setting-components/folder-list-component.mjs +131 -0
- package/dist/lib/esm/setting-components/hotkey-component.d.mts +85 -0
- package/dist/lib/esm/setting-components/hotkey-component.mjs +178 -0
- package/dist/lib/esm/setting-components/index.d.mts +4 -0
- package/dist/lib/esm/setting-components/index.mjs +9 -1
- package/dist/lib/esm/setting-components/list-component.d.mts +106 -0
- package/dist/lib/esm/setting-components/list-component.mjs +206 -0
- package/dist/lib/esm/setting-components/tag-list-component.d.mts +82 -0
- package/dist/lib/esm/setting-components/tag-list-component.mjs +131 -0
- package/dist/lib/esm/setting-ex.d.mts +35 -1
- package/dist/lib/esm/setting-ex.mjs +51 -1
- package/dist/lib/esm/settings-tabs.d.mts +101 -0
- package/dist/lib/esm/settings-tabs.mjs +170 -0
- package/dist/styles.css +83 -1
- package/package.json +3 -3
- package/setting-components/folder-list-component/package.json +6 -0
- package/setting-components/hotkey-component/package.json +6 -0
- package/setting-components/list-component/package.json +6 -0
- package/setting-components/tag-list-component/package.json +6 -0
|
@@ -38,6 +38,9 @@ import { DateComponent } from "./setting-components/date-component.mjs";
|
|
|
38
38
|
import { DateTimeComponent } from "./setting-components/date-time-component.mjs";
|
|
39
39
|
import { EmailComponent } from "./setting-components/email-component.mjs";
|
|
40
40
|
import { FileComponent } from "./setting-components/file-component.mjs";
|
|
41
|
+
import { FolderListComponent } from "./setting-components/folder-list-component.mjs";
|
|
42
|
+
import { HotkeyComponent } from "./setting-components/hotkey-component.mjs";
|
|
43
|
+
import { ListComponent } from "./setting-components/list-component.mjs";
|
|
41
44
|
import { MonthComponent } from "./setting-components/month-component.mjs";
|
|
42
45
|
import { MultipleDropdownComponent } from "./setting-components/multiple-dropdown-component.mjs";
|
|
43
46
|
import { MultipleEmailComponent } from "./setting-components/multiple-email-component.mjs";
|
|
@@ -45,6 +48,7 @@ import { MultipleFileComponent } from "./setting-components/multiple-file-compon
|
|
|
45
48
|
import { MultipleTextComponent } from "./setting-components/multiple-text-component.mjs";
|
|
46
49
|
import { NumberComponent } from "./setting-components/number-component.mjs";
|
|
47
50
|
import { PasswordComponent } from "./setting-components/password-component.mjs";
|
|
51
|
+
import { TagListComponent } from "./setting-components/tag-list-component.mjs";
|
|
48
52
|
import { TelephoneComponent } from "./setting-components/telephone-component.mjs";
|
|
49
53
|
import { TimeComponent } from "./setting-components/time-component.mjs";
|
|
50
54
|
import { TriStateCheckboxComponent } from "./setting-components/tri-state-checkbox-component.mjs";
|
|
@@ -122,6 +126,38 @@ class SettingEx extends Setting {
|
|
|
122
126
|
addFile(callback) {
|
|
123
127
|
return this.addComponentClass(FileComponent, callback);
|
|
124
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Adds a {@link FolderListComponent} to the setting.
|
|
131
|
+
*
|
|
132
|
+
* @param app - The Obsidian app, for the folder suggest.
|
|
133
|
+
* @param callback - The callback to call with the component.
|
|
134
|
+
* @returns The setting instance.
|
|
135
|
+
*/
|
|
136
|
+
addFolderList(app, callback) {
|
|
137
|
+
return this.addComponent((element) => {
|
|
138
|
+
const component = new FolderListComponent(element, app);
|
|
139
|
+
callback(component);
|
|
140
|
+
return component;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Adds a {@link HotkeyComponent} to the setting.
|
|
145
|
+
*
|
|
146
|
+
* @param callback - The callback to call with the component.
|
|
147
|
+
* @returns The setting instance.
|
|
148
|
+
*/
|
|
149
|
+
addHotkey(callback) {
|
|
150
|
+
return this.addComponentClass(HotkeyComponent, callback);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Adds a {@link ListComponent} to the setting.
|
|
154
|
+
*
|
|
155
|
+
* @param callback - The callback to call with the component.
|
|
156
|
+
* @returns The setting instance.
|
|
157
|
+
*/
|
|
158
|
+
addList(callback) {
|
|
159
|
+
return this.addComponentClass(ListComponent, callback);
|
|
160
|
+
}
|
|
125
161
|
/**
|
|
126
162
|
* Adds a {@link MonthComponent} to the setting.
|
|
127
163
|
*
|
|
@@ -185,6 +221,20 @@ class SettingEx extends Setting {
|
|
|
185
221
|
addPassword(callback) {
|
|
186
222
|
return this.addComponentClass(PasswordComponent, callback);
|
|
187
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Adds a {@link TagListComponent} to the setting.
|
|
226
|
+
*
|
|
227
|
+
* @param app - The Obsidian app, for the tag suggest.
|
|
228
|
+
* @param callback - The callback to call with the component.
|
|
229
|
+
* @returns The setting instance.
|
|
230
|
+
*/
|
|
231
|
+
addTagList(app, callback) {
|
|
232
|
+
return this.addComponent((element) => {
|
|
233
|
+
const component = new TagListComponent(element, app);
|
|
234
|
+
callback(component);
|
|
235
|
+
return component;
|
|
236
|
+
});
|
|
237
|
+
}
|
|
188
238
|
/**
|
|
189
239
|
* Adds a {@link TelephoneComponent} to the setting.
|
|
190
240
|
*
|
|
@@ -262,4 +312,4 @@ export {
|
|
|
262
312
|
SettingEx,
|
|
263
313
|
adoptSettingEx
|
|
264
314
|
};
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXR0aW5nLWV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFeHRlbmRzIHRoZSBTZXR0aW5nIGNsYXNzIHdpdGggYWRkaXRpb25hbCBtZXRob2RzIGZvciBhZGRpbmcgY29tcG9uZW50cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGNhc3RUbyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHsgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9jaGVja2JveC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgQ29kZUhpZ2hsaWdodGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvY29kZS1oaWdobGlnaHRlci1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2RhdGUtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IERhdGVUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvZGF0ZS10aW1lLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2VtYWlsLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBGaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvZmlsZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTW9udGhDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tb250aC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBNdWx0aXBsZUVtYWlsQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvbXVsdGlwbGUtZW1haWwtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IE11bHRpcGxlRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLWZpbGUtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IE11bHRpcGxlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLXRleHQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IE51bWJlckNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL251bWJlci1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgUGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9wYXNzd29yZC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgVGVsZXBob25lQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvdGVsZXBob25lLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvdGltZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3RyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgVHlwZWREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgVXJsQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvdXJsLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBXZWVrQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvd2Vlay1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIEV4dGVuZHMgdGhlIFNldHRpbmcgY2xhc3Mgd2l0aCBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGFkZGluZyBjb21wb25lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2V0dGluZ0V4IGV4dGVuZHMgU2V0dGluZyB7XG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIENoZWNrYm94Q29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRDaGVja2JveChjYWxsYmFjazogKGNoZWNrYm94OiBDaGVja2JveENvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKENoZWNrYm94Q29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBDb2RlSGlnaGxpZ2h0ZXJDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZENvZGVIaWdobGlnaHRlcihjYWxsYmFjazogKGNvZGVIaWdobGlnaHRlcjogQ29kZUhpZ2hsaWdodGVyQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoQ29kZUhpZ2hsaWdodGVyQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNvbXBvbmVudCB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGNvbXBvbmVudCB0byBhZGQuXG4gICAqIEBwYXJhbSBjb21wb25lbnRDbGFzcyAtIFRoZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50IHRvIGFkZC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRDb21wb25lbnRDbGFzczxUIGV4dGVuZHMgQmFzZUNvbXBvbmVudD4oY29tcG9uZW50Q2xhc3M6IG5ldyAoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSA9PiBULCBjYWxsYmFjazogKGNvbXBvbmVudDogVCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudCgoZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gbmV3IGNvbXBvbmVudENsYXNzKGVsZW1lbnQpO1xuICAgICAgY2FsbGJhY2soY29tcG9uZW50KTtcbiAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBEYXRlQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGREYXRlKGNhbGxiYWNrOiAoZGF0ZTogRGF0ZUNvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKERhdGVDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIERhdGVUaW1lQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGREYXRlVGltZShjYWxsYmFjazogKGRhdGVUaW1lOiBEYXRlVGltZUNvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKERhdGVUaW1lQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiB7QGxpbmsgRW1haWxDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZEVtYWlsKGNhbGxiYWNrOiAoZW1haWw6IEVtYWlsQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoRW1haWxDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIEZpbGVDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZEZpbGUoY2FsbGJhY2s6IChmaWxlOiBGaWxlQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoRmlsZUNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgTW9udGhDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE1vbnRoKGNhbGxiYWNrOiAobW9udGg6IE1vbnRoQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTW9udGhDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIE11bHRpcGxlRHJvcGRvd25Db21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE11bHRpcGxlRHJvcGRvd24oY2FsbGJhY2s6IChtdWx0aXBsZURyb3Bkb3duOiBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgTXVsdGlwbGVFbWFpbENvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkTXVsdGlwbGVFbWFpbChjYWxsYmFjazogKG11bHRpcGxlRW1haWw6IE11bHRpcGxlRW1haWxDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhNdWx0aXBsZUVtYWlsQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBNdWx0aXBsZUZpbGVDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE11bHRpcGxlRmlsZShjYWxsYmFjazogKG11bHRpcGxlRmlsZTogTXVsdGlwbGVGaWxlQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTXVsdGlwbGVGaWxlQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBNdWx0aXBsZVRleHRDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE11bHRpcGxlVGV4dChjYWxsYmFjazogKG11bHRpcGxlVGV4dDogTXVsdGlwbGVUZXh0Q29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTXVsdGlwbGVUZXh0Q29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBOdW1iZXJDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE51bWJlcihjYWxsYmFjazogKCRudW1iZXI6IE51bWJlckNvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKE51bWJlckNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgUGFzc3dvcmRDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFBhc3N3b3JkKGNhbGxiYWNrOiAocGFzc3dvcmQ6IFBhc3N3b3JkQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoUGFzc3dvcmRDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIFRlbGVwaG9uZUNvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkVGVsZXBob25lKGNhbGxiYWNrOiAodGVsZXBob25lOiBUZWxlcGhvbmVDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhUZWxlcGhvbmVDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIFRpbWVDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFRpbWUoY2FsbGJhY2s6ICh0aW1lOiBUaW1lQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoVGltZUNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkVHJpU3RhdGVDaGVja2JveChjYWxsYmFjazogKHRyaVN0YXRlQ2hlY2tib3g6IFRyaVN0YXRlQ2hlY2tib3hDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhUcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBUeXBlZERyb3Bkb3duQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGRyb3Bkb3duIGl0ZW1zLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFR5cGVkRHJvcGRvd248VD4oY2FsbGJhY2s6ICh0eXBlZERyb3Bkb3duOiBUeXBlZERyb3Bkb3duQ29tcG9uZW50PFQ+KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoVHlwZWREcm9wZG93bkNvbXBvbmVudDxUPiwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgVHlwZWRNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBkcm9wZG93bi5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRUeXBlZE11bHRpcGxlRHJvcGRvd248VD4oY2FsbGJhY2s6ICh0eXBlZE11bHRpcGxlRHJvcGRvd246IFR5cGVkTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudDxUPikgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKFR5cGVkTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudDxUPiwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4ge0BsaW5rIFVybENvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkVXJsKGNhbGxiYWNrOiAodXJsOiBVcmxDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhVcmxDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIFdlZWtDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFdlZWsoY2FsbGJhY2s6ICh3ZWVrOiBXZWVrQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoV2Vla0NvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG59XG5cbi8qKlxuICogQWRvcHRzIGEgcGxhaW4ge0BsaW5rIFNldHRpbmd9IGludG8gYSB7QGxpbmsgU2V0dGluZ0V4fSwgcmV0dXJuaW5nIHRoZSB2ZXJ5IHNhbWUgaW5zdGFuY2UuXG4gKlxuICogT2JzaWRpYW4ncyBkZWNsYXJhdGl2ZSBzZXR0aW5ncyBBUEkgY3JlYXRlcyB0aGUgcm93IGl0c2VsZiBhbmQgaGFuZHMgYSBwbGFpbiB7QGxpbmsgU2V0dGluZ30gdG8gYVxuICogYFNldHRpbmdEZWZpbml0aW9uUmVuZGVyLnJlbmRlcmAgY2FsbGJhY2ssIHNvIHRoZSBleHRlbmRlZCBhZGRlcnMgYXJlIG91dCBvZiByZWFjaCB0aGVyZS4gUmUtcG9pbnRpbmcgdGhlXG4gKiBpbnN0YW5jZSdzIHByb3RvdHlwZSBhdCB7QGxpbmsgU2V0dGluZ0V4LnByb3RvdHlwZX0gbWFrZXMgdGhlbSBhdmFpbGFibGUgb24gdGhlIG9iamVjdCBPYnNpZGlhbiBhbHJlYWR5XG4gKiBvd25zIGFuZCBrZWVwcyByZW5kZXJpbmc6IHtAbGluayBTZXR0aW5nRXh9IGRlY2xhcmVzIG5vIGluc3RhbmNlIHN0YXRlIGFuZCBpdHMgY29uc3RydWN0b3Igb25seSBkZWxlZ2F0ZXNcbiAqIHRvIGBzdXBlcmAsIGFuZCBgU2V0dGluZ0V4LnByb3RvdHlwZWAgaW5oZXJpdHMgZnJvbSB0aGUgdmVyeSBgU2V0dGluZy5wcm90b3R5cGVgIHRoZSBpbnN0YW5jZSBjYW1lIGZyb20sXG4gKiBzbyBldmVyeSBtZXRob2QgT2JzaWRpYW4gcmVsaWVzIG9uIOKAlCBpbmNsdWRpbmcgdGhlIG9uZXMgYWJzZW50IGZyb20gdGhlIHB1YmxpYyB0eXBpbmdzIOKAlCBzdGF5cyByZWFjaGFibGUuXG4gKlxuICogQHBhcmFtIHNldHRpbmcgLSBUaGUgc2V0dGluZyB0byBhZG9wdC5cbiAqIEByZXR1cm5zIFRoZSBzYW1lIGluc3RhbmNlLCB0eXBlZCBhcyBhIHtAbGluayBTZXR0aW5nRXh9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRvcHRTZXR0aW5nRXgoc2V0dGluZzogU2V0dGluZyk6IFNldHRpbmdFeCB7XG4gIGlmIChzZXR0aW5nIGluc3RhbmNlb2YgU2V0dGluZ0V4KSB7XG4gICAgcmV0dXJuIHNldHRpbmc7XG4gIH1cblxuICBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc2V0dGluZywgU2V0dGluZ0V4LnByb3RvdHlwZSk7XG4gIHJldHVybiBjYXN0VG88U2V0dGluZ0V4PihzZXR0aW5nKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLGNBQWM7QUFDdkIsU0FBUyxlQUFlO0FBRXhCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsZ0NBQWdDO0FBQ3pDLFNBQVMscUJBQXFCO0FB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
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXR0aW5nLWV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFeHRlbmRzIHRoZSBTZXR0aW5nIGNsYXNzIHdpdGggYWRkaXRpb25hbCBtZXRob2RzIGZvciBhZGRpbmcgY29tcG9uZW50cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgQmFzZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGNhc3RUbyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHsgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9jaGVja2JveC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgQ29kZUhpZ2hsaWdodGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvY29kZS1oaWdobGlnaHRlci1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2RhdGUtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IERhdGVUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvZGF0ZS10aW1lLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2VtYWlsLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBGaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvZmlsZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgRm9sZGVyTGlzdENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2ZvbGRlci1saXN0LWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBIb3RrZXlDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9ob3RrZXktY29tcG9uZW50LnRzJztcbmltcG9ydCB7IExpc3RDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9saXN0LWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBNb250aENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL21vbnRoLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50LnRzJztcbmltcG9ydCB7IE11bHRpcGxlRW1haWxDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1lbWFpbC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTXVsdGlwbGVGaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvbXVsdGlwbGUtZmlsZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTXVsdGlwbGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvbXVsdGlwbGUtdGV4dC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvbnVtYmVyLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3Bhc3N3b3JkLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBUYWdMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvdGFnLWxpc3QtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFRlbGVwaG9uZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3RlbGVwaG9uZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgVGltZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3RpbWUtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFRyaVN0YXRlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90cmktc3RhdGUtY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFR5cGVkRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgVHlwZWRNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFVybENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3VybC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3dlZWstY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBFeHRlbmRzIHRoZSBTZXR0aW5nIGNsYXNzIHdpdGggYWRkaXRpb25hbCBtZXRob2RzIGZvciBhZGRpbmcgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNldHRpbmdFeCBleHRlbmRzIFNldHRpbmcge1xuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBDaGVja2JveENvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2hlY2tib3goY2FsbGJhY2s6IChjaGVja2JveDogQ2hlY2tib3hDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhDaGVja2JveENvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgQ29kZUhpZ2hsaWdodGVyQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRDb2RlSGlnaGxpZ2h0ZXIoY2FsbGJhY2s6IChjb2RlSGlnaGxpZ2h0ZXI6IENvZGVIaWdobGlnaHRlckNvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKENvZGVIaWdobGlnaHRlckNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb21wb25lbnQgdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBjb21wb25lbnQgdG8gYWRkLlxuICAgKiBAcGFyYW0gY29tcG9uZW50Q2xhc3MgLSBUaGUgY2xhc3Mgb2YgdGhlIGNvbXBvbmVudCB0byBhZGQuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcG9uZW50Q2xhc3M8VCBleHRlbmRzIEJhc2VDb21wb25lbnQ+KGNvbXBvbmVudENsYXNzOiBuZXcgKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkgPT4gVCwgY2FsbGJhY2s6IChjb21wb25lbnQ6IFQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnQoKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG5ldyBjb21wb25lbnRDbGFzcyhlbGVtZW50KTtcbiAgICAgIGNhbGxiYWNrKGNvbXBvbmVudCk7XG4gICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgRGF0ZUNvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0ZShjYWxsYmFjazogKGRhdGU6IERhdGVDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhEYXRlQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBEYXRlVGltZUNvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0ZVRpbWUoY2FsbGJhY2s6IChkYXRlVGltZTogRGF0ZVRpbWVDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhEYXRlVGltZUNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4ge0BsaW5rIEVtYWlsQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFbWFpbChjYWxsYmFjazogKGVtYWlsOiBFbWFpbENvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKEVtYWlsQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBGaWxlQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRGaWxlKGNhbGxiYWNrOiAoZmlsZTogRmlsZUNvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKEZpbGVDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIEZvbGRlckxpc3RDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCwgZm9yIHRoZSBmb2xkZXIgc3VnZ2VzdC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRGb2xkZXJMaXN0KGFwcDogQXBwLCBjYWxsYmFjazogKGZvbGRlckxpc3Q6IEZvbGRlckxpc3RDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnQoKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG5ldyBGb2xkZXJMaXN0Q29tcG9uZW50KGVsZW1lbnQsIGFwcCk7XG4gICAgICBjYWxsYmFjayhjb21wb25lbnQpO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIEhvdGtleUNvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkSG90a2V5KGNhbGxiYWNrOiAoaG90a2V5OiBIb3RrZXlDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhIb3RrZXlDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIExpc3RDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZExpc3QoY2FsbGJhY2s6IChsaXN0OiBMaXN0Q29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTGlzdENvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgTW9udGhDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE1vbnRoKGNhbGxiYWNrOiAobW9udGg6IE1vbnRoQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTW9udGhDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIE11bHRpcGxlRHJvcGRvd25Db21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE11bHRpcGxlRHJvcGRvd24oY2FsbGJhY2s6IChtdWx0aXBsZURyb3Bkb3duOiBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgTXVsdGlwbGVFbWFpbENvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkTXVsdGlwbGVFbWFpbChjYWxsYmFjazogKG11bHRpcGxlRW1haWw6IE11bHRpcGxlRW1haWxDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhNdWx0aXBsZUVtYWlsQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBNdWx0aXBsZUZpbGVDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE11bHRpcGxlRmlsZShjYWxsYmFjazogKG11bHRpcGxlRmlsZTogTXVsdGlwbGVGaWxlQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTXVsdGlwbGVGaWxlQ29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBNdWx0aXBsZVRleHRDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE11bHRpcGxlVGV4dChjYWxsYmFjazogKG11bHRpcGxlVGV4dDogTXVsdGlwbGVUZXh0Q29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoTXVsdGlwbGVUZXh0Q29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBOdW1iZXJDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE51bWJlcihjYWxsYmFjazogKCRudW1iZXI6IE51bWJlckNvbXBvbmVudCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKE51bWJlckNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgUGFzc3dvcmRDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFBhc3N3b3JkKGNhbGxiYWNrOiAocGFzc3dvcmQ6IFBhc3N3b3JkQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoUGFzc3dvcmRDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIFRhZ0xpc3RDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCwgZm9yIHRoZSB0YWcgc3VnZ2VzdC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRUYWdMaXN0KGFwcDogQXBwLCBjYWxsYmFjazogKHRhZ0xpc3Q6IFRhZ0xpc3RDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnQoKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG5ldyBUYWdMaXN0Q29tcG9uZW50KGVsZW1lbnQsIGFwcCk7XG4gICAgICBjYWxsYmFjayhjb21wb25lbnQpO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIFRlbGVwaG9uZUNvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkVGVsZXBob25lKGNhbGxiYWNrOiAodGVsZXBob25lOiBUZWxlcGhvbmVDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhUZWxlcGhvbmVDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIFRpbWVDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFRpbWUoY2FsbGJhY2s6ICh0aW1lOiBUaW1lQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoVGltZUNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkVHJpU3RhdGVDaGVja2JveChjYWxsYmFjazogKHRyaVN0YXRlQ2hlY2tib3g6IFRyaVN0YXRlQ2hlY2tib3hDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhUcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHtAbGluayBUeXBlZERyb3Bkb3duQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGRyb3Bkb3duIGl0ZW1zLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFR5cGVkRHJvcGRvd248VD4oY2FsbGJhY2s6ICh0eXBlZERyb3Bkb3duOiBUeXBlZERyb3Bkb3duQ29tcG9uZW50PFQ+KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoVHlwZWREcm9wZG93bkNvbXBvbmVudDxUPiwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB7QGxpbmsgVHlwZWRNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50fSB0byB0aGUgc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBkcm9wZG93bi5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRUeXBlZE11bHRpcGxlRHJvcGRvd248VD4oY2FsbGJhY2s6ICh0eXBlZE11bHRpcGxlRHJvcGRvd246IFR5cGVkTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudDxUPikgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENsYXNzKFR5cGVkTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudDxUPiwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4ge0BsaW5rIFVybENvbXBvbmVudH0gdG8gdGhlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHNldHRpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkVXJsKGNhbGxiYWNrOiAodXJsOiBVcmxDb21wb25lbnQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb21wb25lbnRDbGFzcyhVcmxDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEge0BsaW5rIFdlZWtDb21wb25lbnR9IHRvIHRoZSBzZXR0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFdlZWsoY2FsbGJhY2s6ICh3ZWVrOiBXZWVrQ29tcG9uZW50KSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q2xhc3MoV2Vla0NvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG59XG5cbi8qKlxuICogQWRvcHRzIGEgcGxhaW4ge0BsaW5rIFNldHRpbmd9IGludG8gYSB7QGxpbmsgU2V0dGluZ0V4fSwgcmV0dXJuaW5nIHRoZSB2ZXJ5IHNhbWUgaW5zdGFuY2UuXG4gKlxuICogT2JzaWRpYW4ncyBkZWNsYXJhdGl2ZSBzZXR0aW5ncyBBUEkgY3JlYXRlcyB0aGUgcm93IGl0c2VsZiBhbmQgaGFuZHMgYSBwbGFpbiB7QGxpbmsgU2V0dGluZ30gdG8gYVxuICogYFNldHRpbmdEZWZpbml0aW9uUmVuZGVyLnJlbmRlcmAgY2FsbGJhY2ssIHNvIHRoZSBleHRlbmRlZCBhZGRlcnMgYXJlIG91dCBvZiByZWFjaCB0aGVyZS4gUmUtcG9pbnRpbmcgdGhlXG4gKiBpbnN0YW5jZSdzIHByb3RvdHlwZSBhdCB7QGxpbmsgU2V0dGluZ0V4LnByb3RvdHlwZX0gbWFrZXMgdGhlbSBhdmFpbGFibGUgb24gdGhlIG9iamVjdCBPYnNpZGlhbiBhbHJlYWR5XG4gKiBvd25zIGFuZCBrZWVwcyByZW5kZXJpbmc6IHtAbGluayBTZXR0aW5nRXh9IGRlY2xhcmVzIG5vIGluc3RhbmNlIHN0YXRlIGFuZCBpdHMgY29uc3RydWN0b3Igb25seSBkZWxlZ2F0ZXNcbiAqIHRvIGBzdXBlcmAsIGFuZCBgU2V0dGluZ0V4LnByb3RvdHlwZWAgaW5oZXJpdHMgZnJvbSB0aGUgdmVyeSBgU2V0dGluZy5wcm90b3R5cGVgIHRoZSBpbnN0YW5jZSBjYW1lIGZyb20sXG4gKiBzbyBldmVyeSBtZXRob2QgT2JzaWRpYW4gcmVsaWVzIG9uIOKAlCBpbmNsdWRpbmcgdGhlIG9uZXMgYWJzZW50IGZyb20gdGhlIHB1YmxpYyB0eXBpbmdzIOKAlCBzdGF5cyByZWFjaGFibGUuXG4gKlxuICogQHBhcmFtIHNldHRpbmcgLSBUaGUgc2V0dGluZyB0byBhZG9wdC5cbiAqIEByZXR1cm5zIFRoZSBzYW1lIGluc3RhbmNlLCB0eXBlZCBhcyBhIHtAbGluayBTZXR0aW5nRXh9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRvcHRTZXR0aW5nRXgoc2V0dGluZzogU2V0dGluZyk6IFNldHRpbmdFeCB7XG4gIGlmIChzZXR0aW5nIGluc3RhbmNlb2YgU2V0dGluZ0V4KSB7XG4gICAgcmV0dXJuIHNldHRpbmc7XG4gIH1cblxuICBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc2V0dGluZywgU2V0dGluZ0V4LnByb3RvdHlwZSk7XG4gIHJldHVybiBjYXN0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
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/// <reference path="./library-references.d.mts" />
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
*
|
|
6
|
+
* Tabbed sections inside a plugin's settings.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* A tab of {@link SettingsTabs}.
|
|
10
|
+
*/
|
|
11
|
+
export interface SettingsTab {
|
|
12
|
+
/**
|
|
13
|
+
* The name of an Obsidian icon shown before the name.
|
|
14
|
+
*/
|
|
15
|
+
readonly icon?: string;
|
|
16
|
+
/**
|
|
17
|
+
* The id of the tab, unique among the tabs.
|
|
18
|
+
*/
|
|
19
|
+
readonly id: string;
|
|
20
|
+
/**
|
|
21
|
+
* The name shown on the tab button.
|
|
22
|
+
*/
|
|
23
|
+
readonly name: string;
|
|
24
|
+
/**
|
|
25
|
+
* Renders the tab's settings into the panel, which is empty each time the tab is selected.
|
|
26
|
+
*
|
|
27
|
+
* @param containerEl - The panel.
|
|
28
|
+
*/
|
|
29
|
+
readonly render: (containerEl: HTMLElement) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Tabbed sections inside a plugin's settings: a row of tab buttons and one panel, which renders only the selected tab.
|
|
33
|
+
* The arrow keys, Home and End move between tabs, as in the WAI-ARIA tabs pattern.
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* public override display(): void {
|
|
37
|
+
* this.containerEl.empty();
|
|
38
|
+
* new SettingsTabs(this.containerEl)
|
|
39
|
+
* .addTab({ id: 'general', name: 'General', render: (el) => this.renderGeneral(el) })
|
|
40
|
+
* .addTab({ id: 'advanced', name: 'Advanced', render: (el) => this.renderAdvanced(el) })
|
|
41
|
+
* .selectTab(this.lastTabId)
|
|
42
|
+
* .onTabChange((tabId) => {
|
|
43
|
+
* this.lastTabId = tabId;
|
|
44
|
+
* });
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
|
|
49
|
+
*
|
|
50
|
+
* Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
|
|
51
|
+
*/
|
|
52
|
+
export declare class SettingsTabs {
|
|
53
|
+
/**
|
|
54
|
+
* The panel the selected tab renders into.
|
|
55
|
+
*/
|
|
56
|
+
readonly panelEl: HTMLElement;
|
|
57
|
+
/**
|
|
58
|
+
* The row of tab buttons.
|
|
59
|
+
*/
|
|
60
|
+
readonly tabBarEl: HTMLElement;
|
|
61
|
+
private changeCallback?;
|
|
62
|
+
private readonly entries;
|
|
63
|
+
private selectedTabId;
|
|
64
|
+
/**
|
|
65
|
+
* Creates new settings tabs.
|
|
66
|
+
*
|
|
67
|
+
* @param containerEl - The container element.
|
|
68
|
+
*/
|
|
69
|
+
constructor(containerEl: HTMLElement);
|
|
70
|
+
/**
|
|
71
|
+
* Adds a tab. The first tab added is selected.
|
|
72
|
+
*
|
|
73
|
+
* @param tab - The tab.
|
|
74
|
+
* @returns The tabs.
|
|
75
|
+
* @throws If a tab with the same id was already added.
|
|
76
|
+
*/
|
|
77
|
+
addTab(tab: SettingsTab): this;
|
|
78
|
+
/**
|
|
79
|
+
* Gets the id of the selected tab.
|
|
80
|
+
*
|
|
81
|
+
* @returns The id, or `null` before any tab is added.
|
|
82
|
+
*/
|
|
83
|
+
getSelectedTabId(): null | string;
|
|
84
|
+
/**
|
|
85
|
+
* Sets the callback to be called when the user selects another tab.
|
|
86
|
+
*
|
|
87
|
+
* @param callback - The callback, given the id of the selected tab.
|
|
88
|
+
* @returns The tabs.
|
|
89
|
+
*/
|
|
90
|
+
onTabChange(callback: (tabId: string) => void): this;
|
|
91
|
+
/**
|
|
92
|
+
* Selects a tab and renders it into the panel. An unknown id, such as a stored id whose tab was since removed, leaves
|
|
93
|
+
* the selection as it is.
|
|
94
|
+
*
|
|
95
|
+
* @param tabId - The id of the tab.
|
|
96
|
+
* @returns The tabs.
|
|
97
|
+
*/
|
|
98
|
+
selectTab(tabId: null | string | undefined): this;
|
|
99
|
+
private findEntry;
|
|
100
|
+
private onKeyDown;
|
|
101
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
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
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import { setIcon } from "obsidian";
|
|
34
|
+
import { CssClass } from "./css-class.mjs";
|
|
35
|
+
import { addPluginCssClasses } from "./plugin/plugin-context.mjs";
|
|
36
|
+
class SettingsTabs {
|
|
37
|
+
/**
|
|
38
|
+
* The panel the selected tab renders into.
|
|
39
|
+
*/
|
|
40
|
+
panelEl;
|
|
41
|
+
/**
|
|
42
|
+
* The row of tab buttons.
|
|
43
|
+
*/
|
|
44
|
+
tabBarEl;
|
|
45
|
+
changeCallback;
|
|
46
|
+
entries = [];
|
|
47
|
+
selectedTabId = null;
|
|
48
|
+
/**
|
|
49
|
+
* Creates new settings tabs.
|
|
50
|
+
*
|
|
51
|
+
* @param containerEl - The container element.
|
|
52
|
+
*/
|
|
53
|
+
constructor(containerEl) {
|
|
54
|
+
addPluginCssClasses(containerEl, CssClass.SettingsTabs);
|
|
55
|
+
this.tabBarEl = containerEl.createDiv({ attr: { role: "tablist" }, cls: "settings-tabs-bar" });
|
|
56
|
+
this.tabBarEl.addEventListener("keydown", this.onKeyDown.bind(this));
|
|
57
|
+
this.panelEl = containerEl.createDiv({ attr: { role: "tabpanel" }, cls: "settings-tabs-panel" });
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Adds a tab. The first tab added is selected.
|
|
61
|
+
*
|
|
62
|
+
* @param tab - The tab.
|
|
63
|
+
* @returns The tabs.
|
|
64
|
+
* @throws If a tab with the same id was already added.
|
|
65
|
+
*/
|
|
66
|
+
addTab(tab) {
|
|
67
|
+
if (this.findEntry(tab.id)) {
|
|
68
|
+
throw new Error(`A settings tab with the id ${tab.id} was already added.`);
|
|
69
|
+
}
|
|
70
|
+
const buttonEl = this.tabBarEl.createEl("button", { attr: { "aria-selected": "false", "role": "tab", "tabindex": "-1" }, cls: "settings-tabs-button" });
|
|
71
|
+
if (tab.icon) {
|
|
72
|
+
setIcon(buttonEl.createSpan({ cls: "settings-tabs-icon" }), tab.icon);
|
|
73
|
+
}
|
|
74
|
+
buttonEl.createSpan({ text: tab.name });
|
|
75
|
+
buttonEl.addEventListener("click", () => {
|
|
76
|
+
this.selectTab(tab.id);
|
|
77
|
+
});
|
|
78
|
+
this.entries.push({ buttonEl, tab });
|
|
79
|
+
if (this.selectedTabId === null) {
|
|
80
|
+
this.selectTab(tab.id);
|
|
81
|
+
}
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Gets the id of the selected tab.
|
|
86
|
+
*
|
|
87
|
+
* @returns The id, or `null` before any tab is added.
|
|
88
|
+
*/
|
|
89
|
+
getSelectedTabId() {
|
|
90
|
+
return this.selectedTabId;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Sets the callback to be called when the user selects another tab.
|
|
94
|
+
*
|
|
95
|
+
* @param callback - The callback, given the id of the selected tab.
|
|
96
|
+
* @returns The tabs.
|
|
97
|
+
*/
|
|
98
|
+
onTabChange(callback) {
|
|
99
|
+
this.changeCallback = callback;
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Selects a tab and renders it into the panel. An unknown id, such as a stored id whose tab was since removed, leaves
|
|
104
|
+
* the selection as it is.
|
|
105
|
+
*
|
|
106
|
+
* @param tabId - The id of the tab.
|
|
107
|
+
* @returns The tabs.
|
|
108
|
+
*/
|
|
109
|
+
selectTab(tabId) {
|
|
110
|
+
const entry = this.findEntry(tabId);
|
|
111
|
+
if (!entry) {
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
const { tab } = entry;
|
|
115
|
+
const isChange = this.selectedTabId !== null && this.selectedTabId !== tab.id;
|
|
116
|
+
this.selectedTabId = tab.id;
|
|
117
|
+
for (const { buttonEl, tab: candidate } of this.entries) {
|
|
118
|
+
const isSelected = candidate === tab;
|
|
119
|
+
buttonEl.toggleClass(CssClass.IsActive, isSelected);
|
|
120
|
+
buttonEl.setAttribute("aria-selected", String(isSelected));
|
|
121
|
+
buttonEl.setAttribute("tabindex", isSelected ? "0" : "-1");
|
|
122
|
+
}
|
|
123
|
+
this.panelEl.empty();
|
|
124
|
+
tab.render(this.panelEl);
|
|
125
|
+
if (isChange) {
|
|
126
|
+
this.changeCallback?.(tab.id);
|
|
127
|
+
}
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
findEntry(tabId) {
|
|
131
|
+
return this.entries.find((entry) => entry.tab.id === tabId);
|
|
132
|
+
}
|
|
133
|
+
onKeyDown(event_) {
|
|
134
|
+
const count = this.entries.length;
|
|
135
|
+
const index = this.entries.findIndex((entry) => entry.tab.id === this.selectedTabId);
|
|
136
|
+
let nextIndex;
|
|
137
|
+
switch (event_.key) {
|
|
138
|
+
case "ArrowLeft": {
|
|
139
|
+
nextIndex = (index - 1 + count) % count;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
case "ArrowRight": {
|
|
143
|
+
nextIndex = (index + 1) % count;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
case "End": {
|
|
147
|
+
nextIndex = count - 1;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
case "Home": {
|
|
151
|
+
nextIndex = 0;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
default: {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const nextEntry = this.entries[nextIndex];
|
|
159
|
+
if (!nextEntry) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
event_.preventDefault();
|
|
163
|
+
this.selectTab(nextEntry.tab.id);
|
|
164
|
+
nextEntry.buttonEl.focus();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export {
|
|
168
|
+
SettingsTabs
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXR0aW5ncy10YWJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUYWJiZWQgc2VjdGlvbnMgaW5zaWRlIGEgcGx1Z2luJ3Mgc2V0dGluZ3MuXG4gKi9cblxuaW1wb3J0IHsgc2V0SWNvbiB9IGZyb20gJ29ic2lkaWFuJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgaW5pdFBsdWdpbkNvbnRleHRgIHRvIHVzZSBpdCBpbiB0aGUgdHNkb2NzLlxuaW1wb3J0IHR5cGUgeyBpbml0UGx1Z2luQ29udGV4dCB9IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuXG4vKipcbiAqIEEgdGFiIG9mIHtAbGluayBTZXR0aW5nc1RhYnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzVGFiIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGFuIE9ic2lkaWFuIGljb24gc2hvd24gYmVmb3JlIHRoZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSB0YWIsIHVuaXF1ZSBhbW9uZyB0aGUgdGFicy5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIHNob3duIG9uIHRoZSB0YWIgYnV0dG9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSB0YWIncyBzZXR0aW5ncyBpbnRvIHRoZSBwYW5lbCwgd2hpY2ggaXMgZW1wdHkgZWFjaCB0aW1lIHRoZSB0YWIgaXMgc2VsZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSBwYW5lbC5cbiAgICovXG4gIHJlYWRvbmx5IHJlbmRlcjogKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIFNldHRpbmdzVGFiRW50cnkge1xuICByZWFkb25seSBidXR0b25FbDogSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gIHJlYWRvbmx5IHRhYjogU2V0dGluZ3NUYWI7XG59XG5cbi8qKlxuICogVGFiYmVkIHNlY3Rpb25zIGluc2lkZSBhIHBsdWdpbidzIHNldHRpbmdzOiBhIHJvdyBvZiB0YWIgYnV0dG9ucyBhbmQgb25lIHBhbmVsLCB3aGljaCByZW5kZXJzIG9ubHkgdGhlIHNlbGVjdGVkIHRhYi5cbiAqIFRoZSBhcnJvdyBrZXlzLCBIb21lIGFuZCBFbmQgbW92ZSBiZXR3ZWVuIHRhYnMsIGFzIGluIHRoZSBXQUktQVJJQSB0YWJzIHBhdHRlcm4uXG4gKlxuICogYGBgdHNcbiAqIHB1YmxpYyBvdmVycmlkZSBkaXNwbGF5KCk6IHZvaWQge1xuICogICB0aGlzLmNvbnRhaW5lckVsLmVtcHR5KCk7XG4gKiAgIG5ldyBTZXR0aW5nc1RhYnModGhpcy5jb250YWluZXJFbClcbiAqICAgICAuYWRkVGFiKHsgaWQ6ICdnZW5lcmFsJywgbmFtZTogJ0dlbmVyYWwnLCByZW5kZXI6IChlbCkgPT4gdGhpcy5yZW5kZXJHZW5lcmFsKGVsKSB9KVxuICogICAgIC5hZGRUYWIoeyBpZDogJ2FkdmFuY2VkJywgbmFtZTogJ0FkdmFuY2VkJywgcmVuZGVyOiAoZWwpID0+IHRoaXMucmVuZGVyQWR2YW5jZWQoZWwpIH0pXG4gKiAgICAgLnNlbGVjdFRhYih0aGlzLmxhc3RUYWJJZClcbiAqICAgICAub25UYWJDaGFuZ2UoKHRhYklkKSA9PiB7XG4gKiAgICAgICB0aGlzLmxhc3RUYWJJZCA9IHRhYklkO1xuICogICAgIH0pO1xuICogfVxuICogYGBgXG4gKlxuICogSW4gb3JkZXIgdG8gYWRkIHRoZSBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnQsIHVzZSB7QGxpbmsgaW5pdFBsdWdpbkNvbnRleHR9IGluIHlvdXIgcGx1Z2luJ3MgYG9ubG9hZCgpYCBmdW5jdGlvbi5cbiAqXG4gKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNvcHkgc3R5bGVzIGZyb20ge0BsaW5rIGh0dHBzOi8vdW5wa2cuY29tL0BtbmFvdW1vdi9vYnNpZGlhbi1saWIvZGlzdC9zdHlsZXMuY3NzfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNldHRpbmdzVGFicyB7XG4gIC8qKlxuICAgKiBUaGUgcGFuZWwgdGhlIHNlbGVjdGVkIHRhYiByZW5kZXJzIGludG8uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFuZWxFbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSByb3cgb2YgdGFiIGJ1dHRvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFiQmFyRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgY2hhbmdlQ2FsbGJhY2s/OiAodGFiSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRyaWVzOiBTZXR0aW5nc1RhYkVudHJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBzZWxlY3RlZFRhYklkOiBudWxsIHwgc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBuZXcgc2V0dGluZ3MgdGFicy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXMoY29udGFpbmVyRWwsIENzc0NsYXNzLlNldHRpbmdzVGFicyk7XG4gICAgdGhpcy50YWJCYXJFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdih7IGF0dHI6IHsgcm9sZTogJ3RhYmxpc3QnIH0sIGNsczogJ3NldHRpbmdzLXRhYnMtYmFyJyB9KTtcbiAgICB0aGlzLnRhYkJhckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLm9uS2V5RG93bi5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnBhbmVsRWwgPSBjb250YWluZXJFbC5jcmVhdGVEaXYoeyBhdHRyOiB7IHJvbGU6ICd0YWJwYW5lbCcgfSwgY2xzOiAnc2V0dGluZ3MtdGFicy1wYW5lbCcgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHRhYi4gVGhlIGZpcnN0IHRhYiBhZGRlZCBpcyBzZWxlY3RlZC5cbiAgICpcbiAgICogQHBhcmFtIHRhYiAtIFRoZSB0YWIuXG4gICAqIEByZXR1cm5zIFRoZSB0YWJzLlxuICAgKiBAdGhyb3dzIElmIGEgdGFiIHdpdGggdGhlIHNhbWUgaWQgd2FzIGFscmVhZHkgYWRkZWQuXG4gICAqL1xuICBwdWJsaWMgYWRkVGFiKHRhYjogU2V0dGluZ3NUYWIpOiB0aGlzIHtcbiAgICBpZiAodGhpcy5maW5kRW50cnkodGFiLmlkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBIHNldHRpbmdzIHRhYiB3aXRoIHRoZSBpZCAke3RhYi5pZH0gd2FzIGFscmVhZHkgYWRkZWQuYCk7XG4gICAgfVxuICAgIGNvbnN0IGJ1dHRvbkVsID0gdGhpcy50YWJCYXJFbC5jcmVhdGVFbCgnYnV0dG9uJywgeyBhdHRyOiB7ICdhcmlhLXNlbGVjdGVkJzogJ2ZhbHNlJywgJ3JvbGUnOiAndGFiJywgJ3RhYmluZGV4JzogJy0xJyB9LCBjbHM6ICdzZXR0aW5ncy10YWJzLWJ1dHRvbicgfSk7XG4gICAgaWYgKHRhYi5pY29uKSB7XG4gICAgICBzZXRJY29uKGJ1dHRvbkVsLmNyZWF0ZVNwYW4oeyBjbHM6ICdzZXR0aW5ncy10YWJzLWljb24nIH0pLCB0YWIuaWNvbik7XG4gICAgfVxuICAgIGJ1dHRvbkVsLmNyZWF0ZVNwYW4oeyB0ZXh0OiB0YWIubmFtZSB9KTtcbiAgICBidXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0VGFiKHRhYi5pZCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goeyBidXR0b25FbCwgdGFiIH0pO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVGFiSWQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0VGFiKHRhYi5pZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGlkIG9mIHRoZSBzZWxlY3RlZCB0YWIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpZCwgb3IgYG51bGxgIGJlZm9yZSBhbnkgdGFiIGlzIGFkZGVkLlxuICAgKi9cbiAgcHVibGljIGdldFNlbGVjdGVkVGFiSWQoKTogbnVsbCB8IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYWJJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGFub3RoZXIgdGFiLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2ssIGdpdmVuIHRoZSBpZCBvZiB0aGUgc2VsZWN0ZWQgdGFiLlxuICAgKiBAcmV0dXJucyBUaGUgdGFicy5cbiAgICovXG4gIHB1YmxpYyBvblRhYkNoYW5nZShjYWxsYmFjazogKHRhYklkOiBzdHJpbmcpID0+IHZvaWQpOiB0aGlzIHtcbiAgICB0aGlzLmNoYW5nZUNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhIHRhYiBhbmQgcmVuZGVycyBpdCBpbnRvIHRoZSBwYW5lbC4gQW4gdW5rbm93biBpZCwgc3VjaCBhcyBhIHN0b3JlZCBpZCB3aG9zZSB0YWIgd2FzIHNpbmNlIHJlbW92ZWQsIGxlYXZlc1xuICAgKiB0aGUgc2VsZWN0aW9uIGFzIGl0IGlzLlxuICAgKlxuICAgKiBAcGFyYW0gdGFiSWQgLSBUaGUgaWQgb2YgdGhlIHRhYi5cbiAgICogQHJldHVybnMgVGhlIHRhYnMuXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0VGFiKHRhYklkOiBudWxsIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgY29uc3QgZW50cnkgPSB0aGlzLmZpbmRFbnRyeSh0YWJJZCk7XG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGNvbnN0IHsgdGFiIH0gPSBlbnRyeTtcbiAgICBjb25zdCBpc0NoYW5nZSA9IHRoaXMuc2VsZWN0ZWRUYWJJZCAhPT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVGFiSWQgIT09IHRhYi5pZDtcbiAgICB0aGlzLnNlbGVjdGVkVGFiSWQgPSB0YWIuaWQ7XG4gICAgZm9yIChjb25zdCB7IGJ1dHRvbkVsLCB0YWI6IGNhbmRpZGF0ZSB9IG9mIHRoaXMuZW50cmllcykge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGNhbmRpZGF0ZSA9PT0gdGFiO1xuICAgICAgYnV0dG9uRWwudG9nZ2xlQ2xhc3MoQ3NzQ2xhc3MuSXNBY3RpdmUsIGlzU2VsZWN0ZWQpO1xuICAgICAgYnV0dG9uRWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgU3RyaW5nKGlzU2VsZWN0ZWQpKTtcbiAgICAgIGJ1dHRvbkVsLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCBpc1NlbGVjdGVkID8gJzAnIDogJy0xJyk7XG4gICAgfVxuICAgIHRoaXMucGFuZWxFbC5lbXB0eSgpO1xuICAgIHRhYi5yZW5kZXIodGhpcy5wYW5lbEVsKTtcbiAgICBpZiAoaXNDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY2hhbmdlQ2FsbGJhY2s/Lih0YWIuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgZmluZEVudHJ5KHRhYklkOiBudWxsIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogU2V0dGluZ3NUYWJFbnRyeSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gZW50cnkudGFiLmlkID09PSB0YWJJZCk7XG4gIH1cblxuICBwcml2YXRlIG9uS2V5RG93bihldmVudF86IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMuZW50cmllcy5sZW5ndGg7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmVudHJpZXMuZmluZEluZGV4KChlbnRyeSkgPT4gZW50cnkudGFiLmlkID09PSB0aGlzLnNlbGVjdGVkVGFiSWQpO1xuICAgIGxldCBuZXh0SW5kZXg6IG51bWJlcjtcbiAgICBzd2l0Y2ggKGV2ZW50Xy5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6IHtcbiAgICAgICAgbmV4dEluZGV4ID0gKGluZGV4IC0gMSArIGNvdW50KSAlIGNvdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XG4gICAgICAgIG5leHRJbmRleCA9IChpbmRleCArIDEpICUgY291bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRW5kJzoge1xuICAgICAgICBuZXh0SW5kZXggPSBjb3VudCAtIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnSG9tZSc6IHtcbiAgICAgICAgbmV4dEluZGV4ID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmV4dEVudHJ5ID0gdGhpcy5lbnRyaWVzW25leHRJbmRleF07XG4gICAgaWYgKCFuZXh0RW50cnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnRfLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zZWxlY3RUYWIobmV4dEVudHJ5LnRhYi5p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
|