@mnaoumov/obsidian-lib 10.5.1 → 10.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/codemirror/inline-token-widgets/package.json +6 -0
  2. package/codemirror/settings-facet/package.json +6 -0
  3. package/command-handlers/open-discussion-command-handler/package.json +6 -0
  4. package/command-handlers/open-feature-request-command-handler/package.json +6 -0
  5. package/command-handlers/open-git-hub-command-handler/package.json +6 -0
  6. package/components/settings-facet-component/package.json +6 -0
  7. package/components/style-sheet-component/package.json +6 -0
  8. package/dist/lib/cjs/__merged.cjs +137 -1
  9. package/dist/lib/cjs/__merged.d.cts +26 -0
  10. package/dist/lib/cjs/anchored-suggest.cjs +232 -0
  11. package/dist/lib/cjs/anchored-suggest.d.cts +116 -0
  12. package/dist/lib/cjs/broken-link-candidates.cjs +366 -0
  13. package/dist/lib/cjs/broken-link-candidates.d.cts +181 -0
  14. package/dist/lib/cjs/bug-report.cjs +4 -2
  15. package/dist/lib/cjs/bug-report.d.cts +1 -1
  16. package/dist/lib/cjs/code-block-render-handoff.cjs +272 -0
  17. package/dist/lib/cjs/code-block-render-handoff.d.cts +131 -0
  18. package/dist/lib/cjs/codemirror/index.cjs +7 -1
  19. package/dist/lib/cjs/codemirror/index.d.cts +2 -0
  20. package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +250 -0
  21. package/dist/lib/cjs/codemirror/inline-token-widgets.d.cts +109 -0
  22. package/dist/lib/cjs/codemirror/settings-facet.cjs +132 -0
  23. package/dist/lib/cjs/codemirror/settings-facet.d.cts +19 -0
  24. package/dist/lib/cjs/command-handlers/index.cjs +10 -1
  25. package/dist/lib/cjs/command-handlers/index.d.cts +3 -0
  26. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +9 -12
  27. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +6 -8
  28. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +127 -0
  29. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.d.cts +45 -0
  30. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +119 -0
  31. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.d.cts +33 -0
  32. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +121 -0
  33. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.d.cts +43 -0
  34. package/dist/lib/cjs/components/index.cjs +7 -1
  35. package/dist/lib/cjs/components/index.d.cts +2 -0
  36. package/dist/lib/cjs/components/settings-facet-component.cjs +136 -0
  37. package/dist/lib/cjs/components/settings-facet-component.d.cts +68 -0
  38. package/dist/lib/cjs/components/style-sheet-component.cjs +198 -0
  39. package/dist/lib/cjs/components/style-sheet-component.d.cts +79 -0
  40. package/dist/lib/cjs/css-class.cjs +8 -1
  41. package/dist/lib/cjs/css-class.d.cts +28 -0
  42. package/dist/lib/cjs/data-stores/data-store-transport.cjs +7 -4
  43. package/dist/lib/cjs/data-stores/data-store-transport.d.cts +1 -1
  44. package/dist/lib/cjs/data-stores/shared-data-store.cjs +1 -1
  45. package/dist/lib/cjs/data-stores/shared-data-store.d.cts +1 -1
  46. package/dist/lib/cjs/desktop-git-runner.cjs +117 -0
  47. package/dist/lib/cjs/desktop-git-runner.d.cts +17 -0
  48. package/dist/lib/cjs/desktop-request-url-stream.cjs +258 -0
  49. package/dist/lib/cjs/desktop-request-url-stream.d.cts +22 -0
  50. package/dist/lib/cjs/editor-suggest-registrar.cjs +8 -2
  51. package/dist/lib/cjs/editor-suggest-registrar.d.cts +14 -2
  52. package/dist/lib/cjs/editor-suggest.cjs +197 -0
  53. package/dist/lib/cjs/editor-suggest.d.cts +103 -0
  54. package/dist/lib/cjs/feature-request.cjs +115 -0
  55. package/dist/lib/cjs/feature-request.d.cts +54 -0
  56. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  57. package/dist/lib/cjs/git-hub-discussion.cjs +101 -0
  58. package/dist/lib/cjs/git-hub-discussion.d.cts +28 -0
  59. package/dist/lib/cjs/git-rename-history.cjs +148 -0
  60. package/dist/lib/cjs/git-rename-history.d.cts +43 -0
  61. package/dist/lib/cjs/hotkey.cjs +185 -0
  62. package/dist/lib/cjs/hotkey.d.cts +59 -0
  63. package/dist/lib/cjs/i18n/locales/en.cjs +13 -1
  64. package/dist/lib/cjs/i18n/locales/en.d.cts +12 -0
  65. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +12 -0
  66. package/dist/lib/cjs/index.cjs +46 -1
  67. package/dist/lib/cjs/index.d.cts +15 -0
  68. package/dist/lib/cjs/inline-token-renderer.cjs +145 -0
  69. package/dist/lib/cjs/inline-token-renderer.d.cts +88 -0
  70. package/dist/lib/cjs/link-and-tag-input-suggest.cjs +325 -0
  71. package/dist/lib/cjs/link-and-tag-input-suggest.d.cts +229 -0
  72. package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -1
  73. package/dist/lib/cjs/markdown-code-block-processor.d.cts +18 -0
  74. package/dist/lib/cjs/markdown.cjs +6 -1
  75. package/dist/lib/cjs/markdown.d.cts +10 -1
  76. package/dist/lib/cjs/rendered-markdown.cjs +306 -0
  77. package/dist/lib/cjs/rendered-markdown.d.cts +77 -0
  78. package/dist/lib/cjs/request-url.cjs +523 -0
  79. package/dist/lib/cjs/request-url.d.cts +233 -0
  80. package/dist/lib/cjs/setting-components/folder-list-component.cjs +216 -0
  81. package/dist/lib/cjs/setting-components/folder-list-component.d.cts +73 -0
  82. package/dist/lib/cjs/setting-components/hotkey-component.cjs +260 -0
  83. package/dist/lib/cjs/setting-components/hotkey-component.d.cts +85 -0
  84. package/dist/lib/cjs/setting-components/index.cjs +13 -1
  85. package/dist/lib/cjs/setting-components/index.d.cts +4 -0
  86. package/dist/lib/cjs/setting-components/list-component.cjs +291 -0
  87. package/dist/lib/cjs/setting-components/list-component.d.cts +106 -0
  88. package/dist/lib/cjs/setting-components/tag-list-component.cjs +220 -0
  89. package/dist/lib/cjs/setting-components/tag-list-component.d.cts +82 -0
  90. package/dist/lib/cjs/setting-ex.cjs +51 -1
  91. package/dist/lib/cjs/setting-ex.d.cts +35 -1
  92. package/dist/lib/cjs/settings-tabs.cjs +258 -0
  93. package/dist/lib/cjs/settings-tabs.d.cts +101 -0
  94. package/dist/lib/cjs/vault.cjs +2 -2
  95. package/dist/lib/cjs/vault.d.cts +3 -1
  96. package/dist/lib/esm/__merged.d.mts +26 -0
  97. package/dist/lib/esm/__merged.mjs +139 -1
  98. package/dist/lib/esm/anchored-suggest.d.mts +116 -0
  99. package/dist/lib/esm/anchored-suggest.mjs +144 -0
  100. package/dist/lib/esm/broken-link-candidates.d.mts +181 -0
  101. package/dist/lib/esm/broken-link-candidates.mjs +275 -0
  102. package/dist/lib/esm/bug-report.d.mts +1 -1
  103. package/dist/lib/esm/bug-report.mjs +4 -2
  104. package/dist/lib/esm/code-block-render-handoff.d.mts +131 -0
  105. package/dist/lib/esm/code-block-render-handoff.mjs +183 -0
  106. package/dist/lib/esm/codemirror/index.d.mts +2 -0
  107. package/dist/lib/esm/codemirror/index.mjs +5 -1
  108. package/dist/lib/esm/codemirror/inline-token-widgets.d.mts +109 -0
  109. package/dist/lib/esm/codemirror/inline-token-widgets.mjs +167 -0
  110. package/dist/lib/esm/codemirror/settings-facet.d.mts +19 -0
  111. package/dist/lib/esm/codemirror/settings-facet.mjs +44 -0
  112. package/dist/lib/esm/command-handlers/index.d.mts +3 -0
  113. package/dist/lib/esm/command-handlers/index.mjs +7 -1
  114. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +6 -8
  115. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +9 -12
  116. package/dist/lib/esm/command-handlers/open-discussion-command-handler.d.mts +45 -0
  117. package/dist/lib/esm/command-handlers/open-discussion-command-handler.mjs +39 -0
  118. package/dist/lib/esm/command-handlers/open-feature-request-command-handler.d.mts +33 -0
  119. package/dist/lib/esm/command-handlers/open-feature-request-command-handler.mjs +31 -0
  120. package/dist/lib/esm/command-handlers/open-git-hub-command-handler.d.mts +43 -0
  121. package/dist/lib/esm/command-handlers/open-git-hub-command-handler.mjs +33 -0
  122. package/dist/lib/esm/components/index.d.mts +2 -0
  123. package/dist/lib/esm/components/index.mjs +5 -1
  124. package/dist/lib/esm/components/settings-facet-component.d.mts +68 -0
  125. package/dist/lib/esm/components/settings-facet-component.mjs +48 -0
  126. package/dist/lib/esm/components/style-sheet-component.d.mts +79 -0
  127. package/dist/lib/esm/components/style-sheet-component.mjs +109 -0
  128. package/dist/lib/esm/css-class.d.mts +28 -0
  129. package/dist/lib/esm/css-class.mjs +8 -1
  130. package/dist/lib/esm/data-stores/data-store-transport.d.mts +1 -1
  131. package/dist/lib/esm/data-stores/data-store-transport.mjs +7 -4
  132. package/dist/lib/esm/data-stores/shared-data-store.d.mts +1 -1
  133. package/dist/lib/esm/data-stores/shared-data-store.mjs +1 -1
  134. package/dist/lib/esm/desktop-git-runner.d.mts +17 -0
  135. package/dist/lib/esm/desktop-git-runner.mjs +19 -0
  136. package/dist/lib/esm/desktop-request-url-stream.d.mts +22 -0
  137. package/dist/lib/esm/desktop-request-url-stream.mjs +170 -0
  138. package/dist/lib/esm/editor-suggest-registrar.d.mts +14 -2
  139. package/dist/lib/esm/editor-suggest-registrar.mjs +8 -2
  140. package/dist/lib/esm/editor-suggest.d.mts +103 -0
  141. package/dist/lib/esm/editor-suggest.mjs +108 -0
  142. package/dist/lib/esm/feature-request.d.mts +54 -0
  143. package/dist/lib/esm/feature-request.mjs +25 -0
  144. package/dist/lib/esm/generated-during-build.mjs +2 -2
  145. package/dist/lib/esm/git-hub-discussion.d.mts +28 -0
  146. package/dist/lib/esm/git-hub-discussion.mjs +13 -0
  147. package/dist/lib/esm/git-rename-history.d.mts +43 -0
  148. package/dist/lib/esm/git-rename-history.mjs +59 -0
  149. package/dist/lib/esm/hotkey.d.mts +59 -0
  150. package/dist/lib/esm/hotkey.mjs +95 -0
  151. package/dist/lib/esm/i18n/locales/en.d.mts +12 -0
  152. package/dist/lib/esm/i18n/locales/en.mjs +13 -1
  153. package/dist/lib/esm/i18n/locales/translations-map.d.mts +12 -0
  154. package/dist/lib/esm/index.d.mts +15 -0
  155. package/dist/lib/esm/index.mjs +31 -1
  156. package/dist/lib/esm/inline-token-renderer.d.mts +88 -0
  157. package/dist/lib/esm/inline-token-renderer.mjs +59 -0
  158. package/dist/lib/esm/link-and-tag-input-suggest.d.mts +229 -0
  159. package/dist/lib/esm/link-and-tag-input-suggest.mjs +239 -0
  160. package/dist/lib/esm/markdown-code-block-processor.d.mts +18 -0
  161. package/dist/lib/esm/markdown-code-block-processor.mjs +16 -1
  162. package/dist/lib/esm/markdown.d.mts +10 -1
  163. package/dist/lib/esm/markdown.mjs +9 -1
  164. package/dist/lib/esm/rendered-markdown.d.mts +77 -0
  165. package/dist/lib/esm/rendered-markdown.mjs +219 -0
  166. package/dist/lib/esm/request-url.d.mts +233 -0
  167. package/dist/lib/esm/request-url.mjs +428 -0
  168. package/dist/lib/esm/setting-components/folder-list-component.d.mts +73 -0
  169. package/dist/lib/esm/setting-components/folder-list-component.mjs +131 -0
  170. package/dist/lib/esm/setting-components/hotkey-component.d.mts +85 -0
  171. package/dist/lib/esm/setting-components/hotkey-component.mjs +178 -0
  172. package/dist/lib/esm/setting-components/index.d.mts +4 -0
  173. package/dist/lib/esm/setting-components/index.mjs +9 -1
  174. package/dist/lib/esm/setting-components/list-component.d.mts +106 -0
  175. package/dist/lib/esm/setting-components/list-component.mjs +206 -0
  176. package/dist/lib/esm/setting-components/tag-list-component.d.mts +82 -0
  177. package/dist/lib/esm/setting-components/tag-list-component.mjs +131 -0
  178. package/dist/lib/esm/setting-ex.d.mts +35 -1
  179. package/dist/lib/esm/setting-ex.mjs +51 -1
  180. package/dist/lib/esm/settings-tabs.d.mts +101 -0
  181. package/dist/lib/esm/settings-tabs.mjs +170 -0
  182. package/dist/lib/esm/vault.d.mts +3 -1
  183. package/dist/lib/esm/vault.mjs +2 -2
  184. package/dist/styles.css +83 -1
  185. package/package.json +2 -2
  186. package/setting-components/folder-list-component/package.json +6 -0
  187. package/setting-components/hotkey-component/package.json +6 -0
  188. package/setting-components/list-component/package.json +6 -0
  189. package/setting-components/tag-list-component/package.json +6 -0
@@ -1,5 +1,6 @@
1
1
  /// <reference path="./library-references.d.cts" />
2
2
  export { AppActiveFileProvider } from './active-file-provider.cjs';
3
+ export { AnchoredSuggest } from './anchored-suggest.cjs';
3
4
  export { getApp } from './app.cjs';
4
5
  export { retryWithTimeoutNotice, runWithTimeoutNotice } from './async-with-notice.cjs';
5
6
  export { AttachmentPathContext, CUSTOM_ATTACHMENT_LOCATION_PLUGIN_ID, DUMMY_PATH, getAttachmentFilePath, getAttachmentFolderPath, getAttachmentFolderPathForAttachment, getAttachmentFolderPathSyncOrNull, getAvailablePathForAttachments, getCheckIsAttachmentUnitFolderFunction, hasOwnAttachmentFolder, isAtProperAttachmentPath } from './attachment-path.cjs';
@@ -7,6 +8,7 @@ export { findAttachmentUnitFolderPath, rebasePathOntoFolder } from './attachment
7
8
  export { getIndexedBacklinksForFile, iterateReferencesAffectedByRename } from './backlink-index.cjs';
8
9
  export { renderBacklinksTable, renderDelayedBacklinks, renderDelayedBacklinksForFolder } from './backlink.cjs';
9
10
  export { PluginBasesViewRegistrar } from './bases-view-registrar.cjs';
11
+ export { BrokenLinkCandidateFinder, BrokenLinkEvidenceKind, getParentPath, getPathMapping } from './broken-link-candidates.cjs';
10
12
  export { BUG_REPORT_ISSUE_FORM_TEMPLATE, BugReportIssueFormFieldId, formatBugReportEnvironment, getBugReportEnvironment, getBugReportIssueFormUrl, getGitHubIssueFormUrl } from './bug-report.cjs';
11
13
  export { BULK_OPERATION_HOLD_INTERVAL_IN_MILLISECONDS, holdBulkOperationWhile, registerBulkOperationProgressListener, reportBulkOperationProgress } from './bulk-operation-progress.cjs';
12
14
  export { buildBeforeOperationCommitSubject, buildOperationCommitMessage, BULK_OPERATION_LOCK_FILE_NAME, BULK_OPERATION_LOCK_STALE_AFTER_IN_MILLISECONDS, formatOperationId, getNextOperationId, isBulkOperationLock, isBulkOperationLockStale, OPERATION_TRAILER_KEY, parseBulkOperationCommit, parseOperationNumber, PLUGIN_TRAILER_KEY } from './bulk-operation.cjs';
@@ -14,9 +16,12 @@ export { CalloutMode, renderCallout, wrapForCallout } from './callout.cjs';
14
16
  export { getCanvasReferences } from './canvas.cjs';
15
17
  export { CaseInsensitiveFileIndex, getCaseInsensitiveFileIndex, setCaseInsensitiveFileIndex, unsetCaseInsensitiveFileIndex } from './case-insensitive-file-index.cjs';
16
18
  export { createCodeBlockRegExp } from './code-block-reg-exp.cjs';
19
+ export { captureCodeBlockFocus, claimCodeBlockRenderHandoff, CODE_BLOCK_RENDER_HANDOFF_LIFETIME_IN_MILLISECONDS, recordCodeBlockRenderHandoff, restoreCodeBlockFocus } from './code-block-render-handoff.cjs';
17
20
  export { createIncrementalParseStateField } from './codemirror/incremental-parse-state-field.cjs';
21
+ export { createInlineTokenWidgetsExtension, execAll, toGlobalRegExp } from './codemirror/inline-token-widgets.cjs';
18
22
  export { dispatchToAllMarkdownEditorViews, getAllMarkdownEditorViews } from './codemirror/markdown-editor-views.cjs';
19
23
  export { rangeSetToArray } from './codemirror/range-set.cjs';
24
+ export { createSettingsFacet } from './codemirror/settings-facet.cjs';
20
25
  export { AbstractFileCommandHandler } from './command-handlers/abstract-file-command-handler.cjs';
21
26
  export { CommandHandlerComponent } from './command-handlers/command-handler-component.cjs';
22
27
  export { CommandHandler } from './command-handlers/command-handler.cjs';
@@ -26,6 +31,9 @@ export { FolderCommandHandler } from './command-handlers/folder-command-handler.
26
31
  export { GlobalCommandHandler } from './command-handlers/global-command-handler.cjs';
27
32
  export { OpenBugReportCommandHandler } from './command-handlers/open-bug-report-command-handler.cjs';
28
33
  export { OpenDemoVaultCommandHandler } from './command-handlers/open-demo-vault-command-handler.cjs';
34
+ export { OpenDiscussionCommandHandler } from './command-handlers/open-discussion-command-handler.cjs';
35
+ export { OpenFeatureRequestCommandHandler } from './command-handlers/open-feature-request-command-handler.cjs';
36
+ export { OpenGitHubCommandHandler } from './command-handlers/open-git-hub-command-handler.cjs';
29
37
  export { OpenSettingsCommandHandler } from './command-handlers/open-settings-command-handler.cjs';
30
38
  export { UndoBulkOperationCommandHandler } from './command-handlers/undo-bulk-operation-command-handler.cjs';
31
39
  export { UnlockActiveNoteCommandHandler } from './command-handlers/unlock-active-note-command-handler.cjs';
@@ -62,7 +70,9 @@ export { RegistryComponent } from './components/registry-component.cjs';
62
70
  export { ReleaseNotesComponent } from './components/release-notes-component.cjs';
63
71
  export { EmptyFolderBehavior, RenameDeleteHandlerComponent } from './components/rename-delete-handler-component.cjs';
64
72
  export { NOT_EMPTY_DIRECTORY_ERROR_CODE, RmdirGuardComponent } from './components/rmdir-guard-component.cjs';
73
+ export { SettingsFacetComponent } from './components/settings-facet-component.cjs';
65
74
  export { SettingsMigrationComponent } from './components/settings-migration-component.cjs';
75
+ export { registerStyle, StyleSheetComponent } from './components/style-sheet-component.cjs';
66
76
  export { SyntaxHighlightingComponent } from './components/syntax-highlighting-component.cjs';
67
77
  export { TemplatesLanguageComponent } from './components/templates-language-component.cjs';
68
78
  export { getDomEventsHandlersConstructor } from './constructors/get-dom-events-handlers-constructor.cjs';
@@ -80,12 +90,16 @@ export { bootstrapDemoVault } from './demo-vault-helper.cjs';
80
90
  export { getDemoVaultArchiveFileName, getDemoVaultFolderName } from './demo-vault-naming.cjs';
81
91
  export { BulkOperationGitRepo, GitCommandError } from './desktop-bulk-operation-git.cjs';
82
92
  export { openDemoVault } from './desktop-demo-vault-opener.cjs';
93
+ export { createDesktopGitRunner } from './desktop-git-runner.cjs';
83
94
  export { getDesktopOperatingSystem } from './desktop-operating-system.cjs';
95
+ export { openDesktopRequestUrlStream } from './desktop-request-url-stream.cjs';
84
96
  export { PluginEditorExtensionRegistrar } from './editor-extension-registrar.cjs';
85
97
  export { PluginEditorSuggestRegistrar } from './editor-suggest-registrar.cjs';
98
+ export { CommandEditorSuggest, prioritizeEditorSuggest } from './editor-suggest.cjs';
86
99
  export { syncOpenEditorBuffersForPath, toggleEditorReadOnly } from './editor.cjs';
87
100
  export { EventRefDisposable, subscribeDisposableEvent, subscribeEvent } from './events.cjs';
88
101
  export { PluginExtensionsRegistrar } from './extensions-registrar.cjs';
102
+ export { FEATURE_REQUEST_ISSUE_FORM_TEMPLATE, FeatureRequestIssueFormFieldId, getFeatureRequestIssueFormUrl } from './feature-request.cjs';
89
103
  export { applyContentChanges, applyFileChanges, isCanvasChange, isCanvasFileNodeChange, isCanvasTextNodeChange, isContentChange, isFrontmatterChange, isFrontmatterChangeWithOffsets, toFrontmatterChangeWithOffsets } from './file-change.cjs';
90
104
  export { revealInFileExplorer } from './file-explorer.cjs';
91
105
  export { addAlias, deleteAlias, processFrontmatter, waitForPendingLinkUpdates } from './file-manager.cjs';
@@ -95,14 +109,19 @@ export { enableFrontmatterFormattingPreservation, preserveFrontmatterFormatting
95
109
  export { isFrontmatterLinkCacheWithOffsets, toFrontmatterLinkCacheWithOffsets } from './frontmatter-link-cache-with-offsets.cjs';
96
110
  export { checkIsPlainObject, parseFrontmatter, registerFrontmatterFormattingPreserver, removeEmptyFrontmatterValues, setFrontmatter } from './frontmatter.cjs';
97
111
  export { LIBRARY_STYLES, LIBRARY_VERSION } from './generated-during-build.cjs';
112
+ export { getGitHubDiscussionUrl } from './git-hub-discussion.cjs';
113
+ export { loadGitRenames, parseGitRenameLog } from './git-rename-history.cjs';
114
+ export { formatHotkey, getHotkeyFromKeyboardEvent, isSameHotkey } from './hotkey.cjs';
98
115
  export { PluginHoverLinkSourceRegistrar } from './hover-link-source-registrar.cjs';
99
116
  export { appendCodeBlock, appendTextOrFragmentClone, applySpellcheckMode, asCodeBlock, createFragmentWithCodeBlocks } from './html-element.cjs';
100
117
  export { DEFAULT_NS, initI18N, t } from './i18n/i18n.cjs';
101
118
  export { en } from './i18n/locales/en.cjs';
102
119
  export { DEFAULT_LANGUAGE, defaultTranslationsMap } from './i18n/locales/translations-map.cjs';
120
+ export { createInlineTokenPostProcessor, DEFAULT_INLINE_TOKEN_SKIP_SELECTOR, registerInlineTokenRenderer } from './inline-token-renderer.cjs';
103
121
  export { isInObsidian } from './is-in-obsidian.cjs';
104
122
  export { injectLibraryStyles, LAST_LIBRARY_VERSION_KEY, LIBRARY_STYLES_ELEMENT_ID } from './library-styles.cjs';
105
123
  export { OBSIDIAN_LIBRARY_NAME, ObsidianLibrary } from './library.cjs';
124
+ export { getLinkAndTagCompletionTrigger, getVaultTagSuggestions, LinkAndTagCompletionKind, LinkAndTagInputSuggest } from './link-and-tag-input-suggest.cjs';
106
125
  export { normalizeLinkName } from './link-name.cjs';
107
126
  export { buildBacklinksSnapshot, convertLink, editBacklinks, editBacklinksSnapshot, editReferences, editReferencesInContent, extractReferenceFile, generateMarkdownLink, generateRawMarkdownLink, getGenerateMarkdownLinkDefaultParamsFns, hasAngleBrackets, hasEmbedSyntax, hasLeadingDot, hasLeadingSlash, hasWikilinkSyntax, LinkPathStyle, LinkStyle, shouldResetAlias, splitSubpath, updateFileUrlLinksInContent, updateFileUrlLinksInFile, updateLink, updateReferencesInContent, updateReferencesInFile } from './link.cjs';
108
127
  export { invokeAsyncAndLog } from './logger.cjs';
@@ -150,6 +169,8 @@ export { checkPropertyEntryMatches, isPropertyEntry, PROPERTY_ENTRY_PREFIX } fro
150
169
  export { addToQueue, addToQueueAndWait, flushQueue } from './queue.cjs';
151
170
  export { AppContext, useApp } from './react/app-context.cjs';
152
171
  export { getReferenceLinkText, isCanvasFileNodeReference, isCanvasReference, isCanvasTextNodeReference, isReferenceInHeading, isReferenceInOffsetRange, referenceToFileChange, sortReferences } from './reference.cjs';
172
+ export { isOwnedByRenderedMarkdown, registerFoldHandlers, registerFootnoteLinkHandler } from './rendered-markdown.cjs';
173
+ export { createRequestUrlFetch, encodeRequestUrlRequest, RequestUrlError, requestUrlEx, requestUrlStream } from './request-url.cjs';
153
174
  export { isResourceLockedForPath, isResourceLockedForPathByAncestor, lockResourceForPath, requestResourceUnlockForPath, ResourceLockComponent, ResourceLockedError, unlockResourceForPath } from './resource-lock.cjs';
154
175
  export { relativePathToResourceUrl } from './resource-url.cjs';
155
176
  export { PluginRibbonIconRegistrar } from './ribbon-icon-registrar.cjs';
@@ -159,6 +180,9 @@ export { DateComponent } from './setting-components/date-component.cjs';
159
180
  export { DateTimeComponent } from './setting-components/date-time-component.cjs';
160
181
  export { EmailComponent } from './setting-components/email-component.cjs';
161
182
  export { FileComponent } from './setting-components/file-component.cjs';
183
+ export { FolderInputSuggest, FolderListComponent } from './setting-components/folder-list-component.cjs';
184
+ export { HotkeyComponent } from './setting-components/hotkey-component.cjs';
185
+ export { ListComponent } from './setting-components/list-component.cjs';
162
186
  export { MonthComponent } from './setting-components/month-component.cjs';
163
187
  export { MultipleDropdownComponent } from './setting-components/multiple-dropdown-component.cjs';
164
188
  export { MultipleEmailComponent } from './setting-components/multiple-email-component.cjs';
@@ -167,6 +191,7 @@ export { MultipleTextComponent } from './setting-components/multiple-text-compon
167
191
  export { NumberComponent } from './setting-components/number-component.cjs';
168
192
  export { PasswordComponent } from './setting-components/password-component.cjs';
169
193
  export { ensureWrapped } from './setting-components/setting-component-wrapper.cjs';
194
+ export { TagInputSuggest, TagListComponent } from './setting-components/tag-list-component.cjs';
170
195
  export { TelephoneComponent } from './setting-components/telephone-component.cjs';
171
196
  export { getTextBasedComponentValue } from './setting-components/text-based-component.cjs';
172
197
  export { TimeComponent } from './setting-components/time-component.cjs';
@@ -181,6 +206,7 @@ export { WeekComponent } from './setting-components/week-component.cjs';
181
206
  export { adoptSettingEx, SettingEx } from './setting-ex.cjs';
182
207
  export { SettingGroupEx } from './setting-group-ex.cjs';
183
208
  export { openSettingTab } from './settings-modal.cjs';
209
+ export { SettingsTabs } from './settings-tabs.cjs';
184
210
  export { PluginStatusBarItemRegistrar } from './status-bar-item-registrar.cjs';
185
211
  export { getTemplaterFunctions, getTemplaterRenderTargetFile, parseTemplate, requireTemplaterApi, resolveTemplaterApi, TEMPLATER_PLUGIN_ID, TemplaterActiveFileProvider, TemplaterRunMode, TemplaterUnavailabilityReason, TemplaterUnavailableError } from './templater.cjs';
186
212
  export { DurationTransformer } from './transformers/duration-transformer.cjs';
@@ -0,0 +1,232 @@
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
+ (function patchObsidianRequire() {
33
+ const originalRequire = require;
34
+ if (!originalRequire || originalRequire.__isPatched) {
35
+ return;
36
+ }
37
+ require = Object.assign(
38
+ (id) => requirePatched(id),
39
+ originalRequire,
40
+ {
41
+ __isPatched: true
42
+ }
43
+ );
44
+ function extractDefault($module) {
45
+ return $module && $module.__esModule && "default" in $module ? $module.default : $module;
46
+ }
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
48
+ "@codemirror/autocomplete",
49
+ "@codemirror/collab",
50
+ "@codemirror/commands",
51
+ "@codemirror/language",
52
+ "@codemirror/lint",
53
+ "@codemirror/search",
54
+ "@codemirror/state",
55
+ "@codemirror/text",
56
+ "@codemirror/view",
57
+ "@lezer/common",
58
+ "@lezer/highlight",
59
+ "@lezer/lr",
60
+ "obsidian"
61
+ ]);
62
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
63
+ "@codemirror/closebrackets",
64
+ "@codemirror/comment",
65
+ "@codemirror/fold",
66
+ "@codemirror/gutter",
67
+ "@codemirror/highlight",
68
+ "@codemirror/history",
69
+ "@codemirror/matchbrackets",
70
+ "@codemirror/panel",
71
+ "@codemirror/rangeset",
72
+ "@codemirror/rectangular-selection",
73
+ "@codemirror/stream-parser",
74
+ "@codemirror/tooltip"
75
+ ]);
76
+ function requirePatched(id) {
77
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
78
+ return originalRequire?.(id);
79
+ }
80
+ const app = globalThis.app;
81
+ if (app?.isMobile) {
82
+ if (id === "process" || id === "node:process") {
83
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
84
+ return process;
85
+ }
86
+ } else {
87
+ const $module = originalRequire?.(id);
88
+ if ($module) {
89
+ return extractDefault($module);
90
+ }
91
+ }
92
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
93
+ return {};
94
+ }
95
+ })();
96
+
97
+ "use strict";
98
+ var __defProp = Object.defineProperty;
99
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
100
+ var __getOwnPropNames = Object.getOwnPropertyNames;
101
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
102
+ var __export = (target, all) => {
103
+ for (var name in all)
104
+ __defProp(target, name, { get: all[name], enumerable: true });
105
+ };
106
+ var __copyProps = (to, from, except, desc) => {
107
+ if (from && typeof from === "object" || typeof from === "function") {
108
+ for (let key of __getOwnPropNames(from))
109
+ if (!__hasOwnProp.call(to, key) && key !== except)
110
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
111
+ }
112
+ return to;
113
+ };
114
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
115
+ var anchored_suggest_exports = {};
116
+ __export(anchored_suggest_exports, {
117
+ AnchoredSuggest: () => AnchoredSuggest
118
+ });
119
+ module.exports = __toCommonJS(anchored_suggest_exports);
120
+ var import_obsidian = require('obsidian');
121
+ const DEFAULT_LIMIT = 100;
122
+ class AnchoredSuggest extends import_obsidian.PopoverSuggest {
123
+ /**
124
+ * The maximum number of suggestions shown. `0` disables the limit. Defaults to `100`.
125
+ */
126
+ limit = DEFAULT_LIMIT;
127
+ anchorEl = null;
128
+ anchorRect = null;
129
+ outsidePointerDownDocument = null;
130
+ outsidePointerDownHandler = this.onOutsidePointerDown.bind(this);
131
+ requestCount = 0;
132
+ /**
133
+ * Creates a new anchored suggest.
134
+ *
135
+ * @param app - The Obsidian app.
136
+ * @param scope - The parent keymap scope.
137
+ */
138
+ constructor(app, scope) {
139
+ super(app, scope);
140
+ }
141
+ /**
142
+ * Closes the popover.
143
+ */
144
+ close() {
145
+ this.requestCount++;
146
+ this.removeOutsidePointerDownHandler();
147
+ super.close();
148
+ }
149
+ /**
150
+ * Opens the popover at an anchor, or moves it there when it is already open.
151
+ *
152
+ * @param params - The parameters.
153
+ * @returns Whether the popover is open: `false` when there is nothing to suggest, or when it was closed or reopened
154
+ * while the suggestions were computed.
155
+ */
156
+ async openAt(params) {
157
+ const { anchor } = params;
158
+ if (isElement(anchor)) {
159
+ this.anchorEl = anchor;
160
+ this.anchorRect = anchor.getBoundingClientRect();
161
+ } else {
162
+ this.anchorEl = null;
163
+ this.anchorRect = anchor;
164
+ }
165
+ return await this.refresh(params.query ?? "", this.anchorRect);
166
+ }
167
+ /**
168
+ * Picks a suggestion: closes the popover, then hands the suggestion to {@link AnchoredSuggest.onChooseSuggestion}.
169
+ *
170
+ * @param value - The suggestion.
171
+ * @param $event - The event that picked it.
172
+ */
173
+ selectSuggestion(value, $event) {
174
+ this.close();
175
+ this.onChooseSuggestion(value, $event);
176
+ }
177
+ /**
178
+ * Recomputes the suggestions for a new query at the current anchor.
179
+ *
180
+ * @param query - The query.
181
+ * @returns Whether the popover is open afterwards.
182
+ */
183
+ async setQuery(query) {
184
+ return this.anchorRect ? await this.refresh(query, this.anchorRect) : false;
185
+ }
186
+ addOutsidePointerDownHandler() {
187
+ this.removeOutsidePointerDownHandler();
188
+ this.outsidePointerDownDocument = this.suggestEl.ownerDocument;
189
+ this.outsidePointerDownDocument.addEventListener("pointerdown", this.outsidePointerDownHandler, { capture: true });
190
+ }
191
+ onOutsidePointerDown(event_) {
192
+ const path = event_.composedPath();
193
+ if (path.includes(this.suggestEl) || this.anchorEl && path.includes(this.anchorEl)) {
194
+ return;
195
+ }
196
+ this.close();
197
+ }
198
+ async refresh(query, anchorRect) {
199
+ const requestId = ++this.requestCount;
200
+ let suggestions = await this.getSuggestions(query);
201
+ if (requestId !== this.requestCount) {
202
+ return false;
203
+ }
204
+ if (suggestions.length === 0) {
205
+ this.close();
206
+ return false;
207
+ }
208
+ if (this.limit > 0) {
209
+ suggestions = suggestions.slice(0, this.limit);
210
+ }
211
+ this.suggestions.setSuggestions(suggestions);
212
+ this.open();
213
+ this.reposition(DOMRect.fromRect(anchorRect));
214
+ if (this.anchorEl) {
215
+ this.setAutoDestroy(this.anchorEl);
216
+ }
217
+ this.addOutsidePointerDownHandler();
218
+ return true;
219
+ }
220
+ removeOutsidePointerDownHandler() {
221
+ this.outsidePointerDownDocument?.removeEventListener("pointerdown", this.outsidePointerDownHandler, { capture: true });
222
+ this.outsidePointerDownDocument = null;
223
+ }
224
+ }
225
+ function isElement(anchor) {
226
+ return "getBoundingClientRect" in anchor;
227
+ }
228
+ // Annotate the CommonJS export names for ESM import in node:
229
+ 0 && (module.exports = {
230
+ AnchoredSuggest
231
+ });
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbmNob3JlZC1zdWdnZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBIHN1Z2dlc3QgcG9wb3ZlciBvcGVuZWQgYXQgYW4gZWxlbWVudCBvciBhIHJlY3RhbmdsZSwgd2l0aCBubyBpbnB1dCBiZWhpbmQgaXQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFNjb3BlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgUG9wb3ZlclN1Z2dlc3QgfSBmcm9tICdvYnNpZGlhbic7XG5cbmNvbnN0IERFRkFVTFRfTElNSVQgPSAxMDA7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFuY2hvcmVkU3VnZ2VzdC5vcGVuQXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuY2hvcmVkU3VnZ2VzdE9wZW5BdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCBvciB0aGUgdmlld3BvcnQgcmVjdGFuZ2xlIHRoZSBwb3BvdmVyIGlzIHBsYWNlZCBhZ2FpbnN0LiBXaGVuIGFuIGVsZW1lbnQgaXMgZ2l2ZW4sIHRoZSBwb3BvdmVyIGNsb3Nlc1xuICAgKiBvbmNlIHRoZSBlbGVtZW50IGxlYXZlcyB0aGUgRE9NLCBhbmQgYSBwb2ludGVyLWRvd24gb24gaXQgZG9lcyBub3QgY291bnQgYXMgYW4gb3V0c2lkZSBjbGljay5cbiAgICovXG4gIHJlYWRvbmx5IGFuY2hvcjogRE9NUmVjdFJlYWRPbmx5IHwgSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBxdWVyeSBoYW5kZWQgdG8ge0BsaW5rIEFuY2hvcmVkU3VnZ2VzdC5nZXRTdWdnZXN0aW9uc30uIERlZmF1bHRzIHRvIGAnJ2AuXG4gICAqL1xuICByZWFkb25seSBxdWVyeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN1Z2dlc3QgcG9wb3ZlciBvcGVuZWQgYXQgYW4gYW5jaG9yLCBmb3IgYSBwaWNrZXIgdGhhdCBoYXMgbm8gdGV4dCBpbnB1dDogYSB0b29sYmFyIGJ1dHRvbiwgYSBjb250ZXh0LW1lbnUgYWN0aW9uLFxuICogYSBkZWNvcmF0aW9uIGluIHRoZSBlZGl0b3IuXG4gKlxuICogT2JzaWRpYW4ncyBgQWJzdHJhY3RJbnB1dFN1Z2dlc3RgIG9wZW5zIG9ubHkgZnJvbSBhbiBpbnB1dCBhbmQgYEVkaXRvclN1Z2dlc3RgIG9ubHkgZnJvbSB0aGUgZWRpdG9yLiBUaGlzIG9uZSBpc1xuICogb3BlbmVkIGJ5IHtAbGluayBBbmNob3JlZFN1Z2dlc3Qub3BlbkF0fSBhbmQgY2xvc2VzIG9uIEVzY2FwZSwgb24gYSBwb2ludGVyLWRvd24gb3V0c2lkZSBpdCwgYW5kIHdoZW4gaXRzIGFuY2hvclxuICogZWxlbWVudCBsZWF2ZXMgdGhlIERPTS4gVGhlIGtleWJvYXJkIHdvcmtzIGFzIGluIE9ic2lkaWFuJ3Mgb3duIHBvcG92ZXJzOiBhcnJvd3MgbW92ZSwgRW50ZXIgcGlja3MuXG4gKlxuICogYGBgdHNcbiAqIGNsYXNzIENvbG9yU3VnZ2VzdCBleHRlbmRzIEFuY2hvcmVkU3VnZ2VzdDxzdHJpbmc+IHtcbiAqICAgcHJvdGVjdGVkIGdldFN1Z2dlc3Rpb25zKCk6IHN0cmluZ1tdIHtcbiAqICAgICByZXR1cm4gWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZSddO1xuICogICB9XG4gKlxuICogICBwdWJsaWMgcmVuZGVyU3VnZ2VzdGlvbihjb2xvcjogc3RyaW5nLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAqICAgICBlbC5zZXRUZXh0KGNvbG9yKTtcbiAqICAgfVxuICpcbiAqICAgcHJvdGVjdGVkIG9uQ2hvb3NlU3VnZ2VzdGlvbihjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gKiAgICAgY29uc29sZS5sb2coY29sb3IpO1xuICogICB9XG4gKiB9XG4gKlxuICogYXdhaXQgbmV3IENvbG9yU3VnZ2VzdCh0aGlzLmFwcCkub3BlbkF0KHsgYW5jaG9yOiBidXR0b25FbCB9KTtcbiAqIGBgYFxuICpcbiAqIEl0IHJlbGllcyBvbiBgUG9wb3ZlclN1Z2dlc3RgIG1lbWJlcnMgdGhhdCBgb2JzaWRpYW4uZC50c2AgZG9lcyBub3QgZGVjbGFyZSAoYHN1Z2dlc3Rpb25zYCwgYHJlcG9zaXRpb25gLFxuICogYHNldEF1dG9EZXN0cm95YCwgYHN1Z2dlc3RFbGApLCByZWFkIGZyb20gT2JzaWRpYW4gYDEuMTUuMGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgYSBzdWdnZXN0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQW5jaG9yZWRTdWdnZXN0PFQ+IGV4dGVuZHMgUG9wb3ZlclN1Z2dlc3Q8VD4ge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Z2dlc3Rpb25zIHNob3duLiBgMGAgZGlzYWJsZXMgdGhlIGxpbWl0LiBEZWZhdWx0cyB0byBgMTAwYC5cbiAgICovXG4gIHB1YmxpYyBsaW1pdCA9IERFRkFVTFRfTElNSVQ7XG5cbiAgcHJpdmF0ZSBhbmNob3JFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhbmNob3JSZWN0OiBET01SZWN0UmVhZE9ubHkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBvdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyID0gdGhpcy5vbk91dHNpZGVQb2ludGVyRG93bi5iaW5kKHRoaXMpO1xuICBwcml2YXRlIHJlcXVlc3RDb3VudCA9IDA7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYW5jaG9yZWQgc3VnZ2VzdC5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAuXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBwYXJlbnQga2V5bWFwIHNjb3BlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBzY29wZT86IFNjb3BlKSB7XG4gICAgc3VwZXIoYXBwLCBzY29wZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucmVxdWVzdENvdW50Kys7XG4gICAgdGhpcy5yZW1vdmVPdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyKCk7XG4gICAgc3VwZXIuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgcG9wb3ZlciBhdCBhbiBhbmNob3IsIG9yIG1vdmVzIGl0IHRoZXJlIHdoZW4gaXQgaXMgYWxyZWFkeSBvcGVuLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3BlbjogYGZhbHNlYCB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gc3VnZ2VzdCwgb3Igd2hlbiBpdCB3YXMgY2xvc2VkIG9yIHJlb3BlbmVkXG4gICAqICAgd2hpbGUgdGhlIHN1Z2dlc3Rpb25zIHdlcmUgY29tcHV0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgb3BlbkF0KHBhcmFtczogQW5jaG9yZWRTdWdnZXN0T3BlbkF0UGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBhbmNob3IgfSA9IHBhcmFtcztcbiAgICBpZiAoaXNFbGVtZW50KGFuY2hvcikpIHtcbiAgICAgIHRoaXMuYW5jaG9yRWwgPSBhbmNob3I7XG4gICAgICB0aGlzLmFuY2hvclJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW5jaG9yRWwgPSBudWxsO1xuICAgICAgdGhpcy5hbmNob3JSZWN0ID0gYW5jaG9yO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWZyZXNoKHBhcmFtcy5xdWVyeSA/PyAnJywgdGhpcy5hbmNob3JSZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaWNrcyBhIHN1Z2dlc3Rpb246IGNsb3NlcyB0aGUgcG9wb3ZlciwgdGhlbiBoYW5kcyB0aGUgc3VnZ2VzdGlvbiB0byB7QGxpbmsgQW5jaG9yZWRTdWdnZXN0Lm9uQ2hvb3NlU3VnZ2VzdGlvbn0uXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzdWdnZXN0aW9uLlxuICAgKiBAcGFyYW0gJGV2ZW50IC0gVGhlIGV2ZW50IHRoYXQgcGlja2VkIGl0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNlbGVjdFN1Z2dlc3Rpb24odmFsdWU6IFQsICRldmVudDogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5vbkNob29zZVN1Z2dlc3Rpb24odmFsdWUsICRldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb21wdXRlcyB0aGUgc3VnZ2VzdGlvbnMgZm9yIGEgbmV3IHF1ZXJ5IGF0IHRoZSBjdXJyZW50IGFuY2hvci5cbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5IC0gVGhlIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwb3BvdmVyIGlzIG9wZW4gYWZ0ZXJ3YXJkcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRRdWVyeShxdWVyeTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYW5jaG9yUmVjdCA/IChhd2FpdCB0aGlzLnJlZnJlc2gocXVlcnksIHRoaXMuYW5jaG9yUmVjdCkpIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3VnZ2VzdGlvbnMgZm9yIGEgcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeSAtIFRoZSBxdWVyeSBwYXNzZWQgdG8ge0BsaW5rIEFuY2hvcmVkU3VnZ2VzdC5vcGVuQXR9IG9yIHtAbGluayBBbmNob3JlZFN1Z2dlc3Quc2V0UXVlcnl9LlxuICAgKiBAcmV0dXJucyBUaGUgc3VnZ2VzdGlvbnMsIGRpcmVjdGx5IG9yIGFzIGEgcHJvbWlzZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTdWdnZXN0aW9ucyhxdWVyeTogc3RyaW5nKTogUHJvbWlzZTxUW10+IHwgVFtdO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCB0aGUgc3VnZ2VzdGlvbiB0aGUgdXNlciBwaWNrZWQsIGFmdGVyIHRoZSBwb3BvdmVyIGNsb3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHN1Z2dlc3Rpb24uXG4gICAqIEBwYXJhbSAkZXZlbnQgLSBUaGUgZXZlbnQgdGhhdCBwaWNrZWQgaXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb25DaG9vc2VTdWdnZXN0aW9uKHZhbHVlOiBULCAkZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50KTogdm9pZDtcblxuICBwcml2YXRlIGFkZE91dHNpZGVQb2ludGVyRG93bkhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVPdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyKCk7XG4gICAgdGhpcy5vdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudCA9IHRoaXMuc3VnZ2VzdEVsLm93bmVyRG9jdW1lbnQ7XG4gICAgdGhpcy5vdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMub3V0c2lkZVBvaW50ZXJEb3duSGFuZGxlciwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk91dHNpZGVQb2ludGVyRG93bihldmVudF86IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSBldmVudF8uY29tcG9zZWRQYXRoKCk7XG4gICAgaWYgKHBhdGguaW5jbHVkZXModGhpcy5zdWdnZXN0RWwpIHx8ICh0aGlzLmFuY2hvckVsICYmIHBhdGguaW5jbHVkZXModGhpcy5hbmNob3JFbCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaChxdWVyeTogc3RyaW5nLCBhbmNob3JSZWN0OiBET01SZWN0UmVhZE9ubHkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK3RoaXMucmVxdWVzdENvdW50O1xuICAgIGxldCBzdWdnZXN0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0U3VnZ2VzdGlvbnMocXVlcnkpO1xuICAgIGlmIChyZXF1ZXN0SWQgIT09IHRoaXMucmVxdWVzdENvdW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChzdWdnZXN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMubGltaXQgPiAwKSB7XG4gICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNsaWNlKDAsIHRoaXMubGltaXQpO1xuICAgIH1cblxuICAgIHRoaXMuc3VnZ2VzdGlvbnMuc2V0U3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIHRoaXMub3BlbigpO1xuICAgIHRoaXMucmVwb3NpdGlvbihET01SZWN0LmZyb21SZWN0KGFuY2hvclJlY3QpKTtcbiAgICBpZiAodGhpcy5hbmNob3JFbCkge1xuICAgICAgdGhpcy5zZXRBdXRvRGVzdHJveSh0aGlzLmFuY2hvckVsKTtcbiAgICB9XG4gICAgdGhpcy5hZGRPdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU91dHNpZGVQb2ludGVyRG93bkhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB0aGlzLm91dHNpZGVQb2ludGVyRG93bkhhbmRsZXIsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB0aGlzLm91dHNpZGVQb2ludGVyRG93bkRvY3VtZW50ID0gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnQoYW5jaG9yOiBET01SZWN0UmVhZE9ubHkgfCBIVE1MRWxlbWVudCk6IGFuY2hvciBpcyBIVE1MRWxlbWVudCB7XG4gIHJldHVybiAnZ2V0Qm91bmRpbmdDbGllbnRSZWN0JyBpbiBhbmNob3I7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxzQkFBK0I7QUFFL0IsTUFBTSxnQkFBZ0I7QUFpRGYsTUFBZSx3QkFBMkIsK0JBQWtCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJMUQsUUFBUTtBQUFBLEVBRVAsV0FBK0I7QUFBQSxFQUMvQixhQUFxQztBQUFBLEVBQ3JDLDZCQUE4QztBQUFBLEVBQ3JDLDRCQUE0QixLQUFLLHFCQUFxQixLQUFLLElBQUk7QUFBQSxFQUN4RSxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRaEIsWUFBWSxLQUFVLE9BQWU7QUFDMUMsVUFBTSxLQUFLLEtBQUs7QUFBQSxFQUNsQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFFBQWM7QUFDNUIsU0FBSztBQUNMLFNBQUssZ0NBQWdDO0FBQ3JDLFVBQU0sTUFBTTtBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsTUFBYSxPQUFPLFFBQXVEO0FBQ3pFLFVBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBSSxVQUFVLE1BQU0sR0FBRztBQUNyQixXQUFLLFdBQVc7QUFDaEIsV0FBSyxhQUFhLE9BQU8sc0JBQXNCO0FBQUEsSUFDakQsT0FBTztBQUNMLFdBQUssV0FBVztBQUNoQixXQUFLLGFBQWE7QUFBQSxJQUNwQjtBQUNBLFdBQU8sTUFBTSxLQUFLLFFBQVEsT0FBTyxTQUFTLElBQUksS0FBSyxVQUFVO0FBQUEsRUFDL0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixpQkFBaUIsT0FBVSxRQUEwQztBQUNuRixTQUFLLE1BQU07QUFDWCxTQUFLLG1CQUFtQixPQUFPLE1BQU07QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsTUFBYSxTQUFTLE9BQWlDO0FBQ3JELFdBQU8sS0FBSyxhQUFjLE1BQU0sS0FBSyxRQUFRLE9BQU8sS0FBSyxVQUFVLElBQUs7QUFBQSxFQUMxRTtBQUFBLEVBa0JRLCtCQUFxQztBQUMzQyxTQUFLLGdDQUFnQztBQUNyQyxTQUFLLDZCQUE2QixLQUFLLFVBQVU7QUFDakQsU0FBSywyQkFBMkIsaUJBQWlCLGVBQWUsS0FBSywyQkFBMkIsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLEVBQ25IO0FBQUEsRUFFUSxxQkFBcUIsUUFBNEI7QUFDdkQsVUFBTSxPQUFPLE9BQU8sYUFBYTtBQUNqQyxRQUFJLEtBQUssU0FBUyxLQUFLLFNBQVMsS0FBTSxLQUFLLFlBQVksS0FBSyxTQUFTLEtBQUssUUFBUSxHQUFJO0FBQ3BGO0FBQUEsSUFDRjtBQUNBLFNBQUssTUFBTTtBQUFBLEVBQ2I7QUFBQSxFQUVBLE1BQWMsUUFBUSxPQUFlLFlBQStDO0FBQ2xGLFVBQU0sWUFBWSxFQUFFLEtBQUs7QUFDekIsUUFBSSxjQUFjLE1BQU0sS0FBSyxlQUFlLEtBQUs7QUFDakQsUUFBSSxjQUFjLEtBQUssY0FBYztBQUNuQyxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksWUFBWSxXQUFXLEdBQUc7QUFDNUIsV0FBSyxNQUFNO0FBQ1gsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLEtBQUssUUFBUSxHQUFHO0FBQ2xCLG9CQUFjLFlBQVksTUFBTSxHQUFHLEtBQUssS0FBSztBQUFBLElBQy9DO0FBRUEsU0FBSyxZQUFZLGVBQWUsV0FBVztBQUMzQyxTQUFLLEtBQUs7QUFDVixTQUFLLFdBQVcsUUFBUSxTQUFTLFVBQVUsQ0FBQztBQUM1QyxRQUFJLEtBQUssVUFBVTtBQUNqQixXQUFLLGVBQWUsS0FBSyxRQUFRO0FBQUEsSUFDbkM7QUFDQSxTQUFLLDZCQUE2QjtBQUNsQyxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRVEsa0NBQXdDO0FBQzlDLFNBQUssNEJBQTRCLG9CQUFvQixlQUFlLEtBQUssMkJBQTJCLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFDckgsU0FBSyw2QkFBNkI7QUFBQSxFQUNwQztBQUNGO0FBRUEsU0FBUyxVQUFVLFFBQThEO0FBQy9FLFNBQU8sMkJBQTJCO0FBQ3BDOyIsIm5hbWVzIjpbXX0=
@@ -0,0 +1,116 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /// <reference lib="dom" />
3
+ /**
4
+ * @file
5
+ *
6
+ * A suggest popover opened at an element or a rectangle, with no input behind it.
7
+ */
8
+ import type { App, Scope } from 'obsidian' with { 'resolution-mode': 'import' };
9
+ import { PopoverSuggest } from 'obsidian';
10
+ /**
11
+ * Parameters for {@link AnchoredSuggest.openAt}.
12
+ */
13
+ export interface AnchoredSuggestOpenAtParams {
14
+ /**
15
+ * The element or the viewport rectangle the popover is placed against. When an element is given, the popover closes
16
+ * once the element leaves the DOM, and a pointer-down on it does not count as an outside click.
17
+ */
18
+ readonly anchor: DOMRectReadOnly | HTMLElement;
19
+ /**
20
+ * The query handed to {@link AnchoredSuggest.getSuggestions}. Defaults to `''`.
21
+ */
22
+ readonly query?: string;
23
+ }
24
+ /**
25
+ * A suggest popover opened at an anchor, for a picker that has no text input: a toolbar button, a context-menu action,
26
+ * a decoration in the editor.
27
+ *
28
+ * Obsidian's `AbstractInputSuggest` opens only from an input and `EditorSuggest` only from the editor. This one is
29
+ * opened by {@link AnchoredSuggest.openAt} and closes on Escape, on a pointer-down outside it, and when its anchor
30
+ * element leaves the DOM. The keyboard works as in Obsidian's own popovers: arrows move, Enter picks.
31
+ *
32
+ * ```ts
33
+ * class ColorSuggest extends AnchoredSuggest<string> {
34
+ * protected getSuggestions(): string[] {
35
+ * return ['red', 'green', 'blue'];
36
+ * }
37
+ *
38
+ * public renderSuggestion(color: string, el: HTMLElement): void {
39
+ * el.setText(color);
40
+ * }
41
+ *
42
+ * protected onChooseSuggestion(color: string): void {
43
+ * console.log(color);
44
+ * }
45
+ * }
46
+ *
47
+ * await new ColorSuggest(this.app).openAt({ anchor: buttonEl });
48
+ * ```
49
+ *
50
+ * It relies on `PopoverSuggest` members that `obsidian.d.ts` does not declare (`suggestions`, `reposition`,
51
+ * `setAutoDestroy`, `suggestEl`), read from Obsidian `1.15.0`.
52
+ *
53
+ * @typeParam T - The type of a suggestion.
54
+ */
55
+ export declare abstract class AnchoredSuggest<T> extends PopoverSuggest<T> {
56
+ /**
57
+ * The maximum number of suggestions shown. `0` disables the limit. Defaults to `100`.
58
+ */
59
+ limit: number;
60
+ private anchorEl;
61
+ private anchorRect;
62
+ private outsidePointerDownDocument;
63
+ private readonly outsidePointerDownHandler;
64
+ private requestCount;
65
+ /**
66
+ * Creates a new anchored suggest.
67
+ *
68
+ * @param app - The Obsidian app.
69
+ * @param scope - The parent keymap scope.
70
+ */
71
+ constructor(app: App, scope?: Scope);
72
+ /**
73
+ * Closes the popover.
74
+ */
75
+ close(): void;
76
+ /**
77
+ * Opens the popover at an anchor, or moves it there when it is already open.
78
+ *
79
+ * @param params - The parameters.
80
+ * @returns Whether the popover is open: `false` when there is nothing to suggest, or when it was closed or reopened
81
+ * while the suggestions were computed.
82
+ */
83
+ openAt(params: AnchoredSuggestOpenAtParams): Promise<boolean>;
84
+ /**
85
+ * Picks a suggestion: closes the popover, then hands the suggestion to {@link AnchoredSuggest.onChooseSuggestion}.
86
+ *
87
+ * @param value - The suggestion.
88
+ * @param $event - The event that picked it.
89
+ */
90
+ selectSuggestion(value: T, $event: KeyboardEvent | MouseEvent): void;
91
+ /**
92
+ * Recomputes the suggestions for a new query at the current anchor.
93
+ *
94
+ * @param query - The query.
95
+ * @returns Whether the popover is open afterwards.
96
+ */
97
+ setQuery(query: string): Promise<boolean>;
98
+ /**
99
+ * Gets the suggestions for a query.
100
+ *
101
+ * @param query - The query passed to {@link AnchoredSuggest.openAt} or {@link AnchoredSuggest.setQuery}.
102
+ * @returns The suggestions, directly or as a promise.
103
+ */
104
+ protected abstract getSuggestions(query: string): Promise<T[]> | T[];
105
+ /**
106
+ * Called with the suggestion the user picked, after the popover closed.
107
+ *
108
+ * @param value - The suggestion.
109
+ * @param $event - The event that picked it.
110
+ */
111
+ protected abstract onChooseSuggestion(value: T, $event: KeyboardEvent | MouseEvent): void;
112
+ private addOutsidePointerDownHandler;
113
+ private onOutsidePointerDown;
114
+ private refresh;
115
+ private removeOutsidePointerDownHandler;
116
+ }