obsidian-dev-utils 16.3.0 → 16.4.1

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 (96) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +21 -2
  3. package/dist/bin/cli.cjs +1 -1
  4. package/dist/dprint.json +22 -0
  5. package/dist/lib/@types/debug.d.ts +1 -1
  6. package/dist/lib/Async.cjs +10 -5
  7. package/dist/lib/Debug.cjs +4 -2
  8. package/dist/lib/Library.cjs +1 -1
  9. package/dist/lib/Object.cjs +1 -1
  10. package/dist/lib/Object.d.ts +1 -1
  11. package/dist/lib/Path.cjs +1 -1
  12. package/dist/lib/Path.d.ts +5 -5
  13. package/dist/lib/obsidian/@types/Dataview/api/data-array.d.ts +116 -114
  14. package/dist/lib/obsidian/@types/Dataview/api/extensions.d.ts +8 -8
  15. package/dist/lib/obsidian/@types/Dataview/api/inline-api.d.ts +172 -151
  16. package/dist/lib/obsidian/@types/Dataview/api/plugin-api.d.ts +183 -166
  17. package/dist/lib/obsidian/@types/Dataview/api/result.d.ts +28 -28
  18. package/dist/lib/obsidian/@types/Dataview/data-import/csv.d.ts +1 -1
  19. package/dist/lib/obsidian/@types/Dataview/data-import/inline-field.d.ts +15 -15
  20. package/dist/lib/obsidian/@types/Dataview/data-import/markdown-file.d.ts +23 -7
  21. package/dist/lib/obsidian/@types/Dataview/data-import/persister.d.ts +25 -25
  22. package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/import-impl.d.ts +5 -2
  23. package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/import-manager.d.ts +30 -25
  24. package/dist/lib/obsidian/@types/Dataview/data-index/index.d.ts +156 -149
  25. package/dist/lib/obsidian/@types/Dataview/data-index/resolver.d.ts +9 -6
  26. package/dist/lib/obsidian/@types/Dataview/data-index/source.d.ts +43 -43
  27. package/dist/lib/obsidian/@types/Dataview/data-model/markdown.d.ts +105 -99
  28. package/dist/lib/obsidian/@types/Dataview/data-model/serialized/markdown.d.ts +92 -89
  29. package/dist/lib/obsidian/@types/Dataview/data-model/transferable.d.ts +4 -4
  30. package/dist/lib/obsidian/@types/Dataview/data-model/value.d.ts +139 -112
  31. package/dist/lib/obsidian/@types/Dataview/expression/binaryop.d.ts +31 -17
  32. package/dist/lib/obsidian/@types/Dataview/expression/context.d.ts +39 -33
  33. package/dist/lib/obsidian/@types/Dataview/expression/field.d.ts +46 -46
  34. package/dist/lib/obsidian/@types/Dataview/expression/functions.d.ts +120 -108
  35. package/dist/lib/obsidian/@types/Dataview/expression/parse.d.ts +135 -115
  36. package/dist/lib/obsidian/@types/Dataview/index.d.ts +48 -14
  37. package/dist/lib/obsidian/@types/Dataview/main.d.ts +50 -42
  38. package/dist/lib/obsidian/@types/Dataview/query/engine.d.ts +60 -44
  39. package/dist/lib/obsidian/@types/Dataview/query/parse.d.ts +31 -18
  40. package/dist/lib/obsidian/@types/Dataview/query/query.d.ts +45 -45
  41. package/dist/lib/obsidian/@types/Dataview/settings.d.ts +50 -50
  42. package/dist/lib/obsidian/@types/Dataview/typings/obsidian-ex.d.ts +16 -16
  43. package/dist/lib/obsidian/@types/Dataview/typings/workers.d.ts +3 -3
  44. package/dist/lib/obsidian/@types/Dataview/ui/export/markdown.d.ts +9 -3
  45. package/dist/lib/obsidian/@types/Dataview/ui/lp-render.d.ts +34 -21
  46. package/dist/lib/obsidian/@types/Dataview/ui/markdown.d.ts +49 -36
  47. package/dist/lib/obsidian/@types/Dataview/ui/refreshable-view.d.ts +15 -12
  48. package/dist/lib/obsidian/@types/Dataview/ui/render.d.ts +27 -6
  49. package/dist/lib/obsidian/@types/Dataview/ui/views/calendar-view.d.ts +15 -15
  50. package/dist/lib/obsidian/@types/Dataview/ui/views/inline-field-live-preview.d.ts +30 -17
  51. package/dist/lib/obsidian/@types/Dataview/ui/views/inline-view.d.ts +25 -16
  52. package/dist/lib/obsidian/@types/Dataview/ui/views/js-view.d.ts +18 -18
  53. package/dist/lib/obsidian/@types/Dataview/ui/views/list-view.d.ts +14 -14
  54. package/dist/lib/obsidian/@types/Dataview/ui/views/table-view.d.ts +17 -17
  55. package/dist/lib/obsidian/@types/Dataview/ui/views/task-view.d.ts +26 -14
  56. package/dist/lib/obsidian/@types/Dataview/util/media.d.ts +1 -1
  57. package/dist/lib/obsidian/@types/Dataview/util/normalize.d.ts +6 -3
  58. package/dist/lib/obsidian/App.cjs +1 -1
  59. package/dist/lib/obsidian/AttachmentPath.cjs +1 -1
  60. package/dist/lib/obsidian/Dataview.cjs +26 -17
  61. package/dist/lib/obsidian/FileChange.cjs +1 -1
  62. package/dist/lib/obsidian/FileChange.d.ts +4 -4
  63. package/dist/lib/obsidian/FileManager.cjs +2 -2
  64. package/dist/lib/obsidian/Link.cjs +1 -1
  65. package/dist/lib/obsidian/Link.d.ts +4 -4
  66. package/dist/lib/obsidian/Markdown.cjs +17 -1
  67. package/dist/lib/obsidian/Markdown.d.ts +11 -1
  68. package/dist/lib/obsidian/MarkdownCodeBlockProcessor.cjs +1 -1
  69. package/dist/lib/obsidian/MetadataCache.cjs +7 -3
  70. package/dist/lib/obsidian/Plugin/PluginSettingsTabBase.cjs +1 -1
  71. package/dist/lib/obsidian/Reference.cjs +1 -1
  72. package/dist/lib/obsidian/Reference.d.ts +6 -6
  73. package/dist/lib/obsidian/RenameDeleteHandler.cjs +7 -3
  74. package/dist/lib/obsidian/RenameDeleteHandler.d.ts +2 -2
  75. package/dist/lib/obsidian/Vault.cjs +1 -1
  76. package/dist/lib/obsidian/VaultEx.cjs +1 -1
  77. package/dist/lib/scripts/ESLint/ESLint.cjs +4 -2
  78. package/dist/lib/scripts/ESLint/eslint.config.cjs +5 -2
  79. package/dist/lib/scripts/Fs.cjs +1 -1
  80. package/dist/lib/scripts/JSON.cjs +1 -1
  81. package/dist/lib/scripts/Npm.cjs +1 -1
  82. package/dist/lib/scripts/ObsidianDevUtilsRepoPaths.cjs +2 -1
  83. package/dist/lib/scripts/ObsidianDevUtilsRepoPaths.d.ts +2 -0
  84. package/dist/lib/scripts/Root.cjs +3 -3
  85. package/dist/lib/scripts/Root.d.ts +2 -1
  86. package/dist/lib/scripts/cli.cjs +23 -18
  87. package/dist/lib/scripts/esbuild/ObsidianPluginBuilder.cjs +5 -3
  88. package/dist/lib/scripts/esbuild/fixSourceMapsPlugin.cjs +1 -1
  89. package/dist/lib/scripts/esbuild/preprocessPlugin.cjs +1 -1
  90. package/dist/lib/scripts/format.cjs +70 -0
  91. package/dist/lib/scripts/format.d.ts +10 -0
  92. package/dist/lib/scripts/index.cjs +4 -1
  93. package/dist/lib/scripts/index.d.ts +1 -0
  94. package/dist/lib/scripts/version.cjs +18 -6
  95. package/package.json +13 -10
  96. package/dist/obsidian-dev-utils-16.3.0.tgz +0 -0
@@ -1,24 +1,37 @@
1
- import type { Decoration, DecorationSet, EditorView, ViewPlugin, ViewUpdate } from "@codemirror/view";
2
- import type { EditorSelection, Range } from "@codemirror/state";
3
- import type { DataviewSettings } from "../settings.d.ts";
4
- import type { FullIndex } from "../data-index/index.d.ts";
5
- import type { App, Component, TFile } from "obsidian";
6
- import type { DataviewApi } from "../api/plugin-api.d.ts";
7
- import type { SyntaxNode } from "@lezer/common";
1
+ import type {
2
+ EditorSelection,
3
+ Range
4
+ } from '@codemirror/state';
5
+ import type {
6
+ Decoration,
7
+ DecorationSet,
8
+ EditorView,
9
+ ViewPlugin,
10
+ ViewUpdate
11
+ } from '@codemirror/view';
12
+ import type { SyntaxNode } from '@lezer/common';
13
+ import type {
14
+ App,
15
+ Component,
16
+ TFile
17
+ } from 'obsidian';
18
+ import type { DataviewApi } from '../api/plugin-api.d.ts';
19
+ import type { FullIndex } from '../data-index/index.d.ts';
20
+ import type { DataviewSettings } from '../settings.d.ts';
8
21
  export declare function selectionAndRangeOverlap(selection: EditorSelection, rangeFrom: number, rangeTo: number): boolean;
9
22
  export declare function inlinePlugin(app: App, index: FullIndex, settings: DataviewSettings, api: DataviewApi): ViewPlugin<{
10
- decorations: DecorationSet;
11
- component: Component;
12
- update(update: ViewUpdate): void;
13
- updateTree(view: EditorView): void;
14
- removeDeco(node: SyntaxNode): void;
15
- addDeco(node: SyntaxNode, view: EditorView): void;
16
- renderNode(view: EditorView, node: SyntaxNode): {
17
- render: boolean;
18
- isQuery: boolean;
19
- };
20
- isInlineQuery(view: EditorView, start: number, end: number): boolean;
21
- inlineRender(view: EditorView): DecorationSet | undefined;
22
- renderWidget(node: SyntaxNode, view: EditorView, currentFile: TFile): Range<Decoration> | undefined;
23
- destroy(): void;
23
+ decorations: DecorationSet;
24
+ component: Component;
25
+ update(update: ViewUpdate): void;
26
+ updateTree(view: EditorView): void;
27
+ removeDeco(node: SyntaxNode): void;
28
+ addDeco(node: SyntaxNode, view: EditorView): void;
29
+ renderNode(view: EditorView, node: SyntaxNode): {
30
+ render: boolean;
31
+ isQuery: boolean;
32
+ };
33
+ isInlineQuery(view: EditorView, start: number, end: number): boolean;
34
+ inlineRender(view: EditorView): DecorationSet | undefined;
35
+ renderWidget(node: SyntaxNode, view: EditorView, currentFile: TFile): Range<Decoration> | undefined;
36
+ destroy(): void;
24
37
  }>;
@@ -1,73 +1,86 @@
1
1
  /** Provides core preact / rendering utilities for all view types. */
2
- import type { App, MarkdownRenderChild } from "obsidian";
3
- import type { h, ComponentChildren } from "preact";
4
- import type { Component } from "obsidian";
5
- import type { DataviewSettings } from "../settings.d.ts";
6
- import type { FullIndex } from "../data-index/index.d.ts";
7
- import type { Literal } from "../data-model/value.d.ts";
8
- import React from "preact/compat";
2
+ import type {
3
+ App,
4
+ MarkdownRenderChild
5
+ } from 'obsidian';
6
+ import type { Component } from 'obsidian';
7
+ import type {
8
+ ComponentChildren,
9
+ h
10
+ } from 'preact';
11
+ import React from 'preact/compat';
12
+ import type { FullIndex } from '../data-index/index.d.ts';
13
+ import type { Literal } from '../data-model/value.d.ts';
14
+ import type { DataviewSettings } from '../settings.d.ts';
9
15
  export type MarkdownProps = {
10
- contents: string;
11
- sourcePath: string;
16
+ contents: string;
17
+ sourcePath: string;
12
18
  };
13
19
  export type MarkdownContext = {
14
- component: Component;
20
+ component: Component;
15
21
  };
16
22
  /** Context need to create dataviews. */
17
23
  export type DataviewInit = {
18
- app: App;
19
- index: FullIndex;
20
- settings: DataviewSettings;
21
- container: HTMLElement;
24
+ app: App;
25
+ index: FullIndex;
26
+ settings: DataviewSettings;
27
+ container: HTMLElement;
22
28
  };
23
29
  /** Shared context for dataview views and objects. */
24
30
  export type DataviewContexts = DataviewInit & {
25
- component: Component;
31
+ component: Component;
26
32
  };
27
33
  export declare const DataviewContext: React.Context<DataviewContexts>;
28
34
  /** Hacky preact component which wraps Obsidian's markdown renderer into a neat component. */
29
- export declare function RawMarkdown({ content, sourcePath, inline, style, cls, onClick, }: {
30
- content: string;
31
- sourcePath: string;
32
- inline?: boolean;
33
- style?: string;
34
- cls?: string;
35
- onClick?: (e: preact.JSX.TargetedMouseEvent<HTMLElement>) => void;
35
+ export declare function RawMarkdown({ content, sourcePath, inline, style, cls, onClick }: {
36
+ content: string;
37
+ sourcePath: string;
38
+ inline?: boolean;
39
+ style?: string;
40
+ cls?: string;
41
+ onClick?: (e: preact.JSX.TargetedMouseEvent<HTMLElement>) => void;
36
42
  }): h.JSX.Element;
37
43
  /** Hacky preact component which wraps Obsidian's markdown renderer into a neat component. */
38
44
  export declare const Markdown: typeof RawMarkdown;
39
45
  /** Embeds an HTML element in the react DOM. */
40
46
  export declare function RawEmbedHtml({ element }: {
41
- element: HTMLElement;
47
+ element: HTMLElement;
42
48
  }): h.JSX.Element;
43
49
  /** Embeds an HTML element in the react DOM. */
44
50
  export declare const EmbedHtml: typeof RawEmbedHtml;
45
51
  /** Intelligently render an arbitrary literal value. */
46
- export declare function RawLit({ value, sourcePath, inline, depth, }: {
47
- value: Literal | undefined;
48
- sourcePath: string;
49
- inline?: boolean;
50
- depth?: number;
52
+ export declare function RawLit({ value, sourcePath, inline, depth }: {
53
+ value: Literal | undefined;
54
+ sourcePath: string;
55
+ inline?: boolean;
56
+ depth?: number;
51
57
  }): h.JSX.Element;
52
58
  /** Intelligently render an arbitrary literal value. */
53
59
  export declare const Lit: typeof RawLit;
54
60
  /** Render a simple nice looking error box in a code style. */
55
61
  export declare function ErrorPre(props: {
56
- children: ComponentChildren;
62
+ children: ComponentChildren;
57
63
  }, {}: {}): h.JSX.Element;
58
64
  /** Render a pretty centered error message in a box. */
59
65
  export declare function ErrorMessage({ message }: {
60
- message: string;
66
+ message: string;
61
67
  }): h.JSX.Element;
62
68
  /**
63
69
  * Complex convenience hook which calls `compute` every time the index updates, updating the current state.
64
70
  */
65
- export declare function useIndexBackedState<T>(container: HTMLElement, app: App, settings: DataviewSettings, index: FullIndex, initial: T, compute: () => Promise<T>): T;
71
+ export declare function useIndexBackedState<T>(
72
+ container: HTMLElement,
73
+ app: App,
74
+ settings: DataviewSettings,
75
+ index: FullIndex,
76
+ initial: T,
77
+ compute: () => Promise<T>
78
+ ): T;
66
79
  /** A trivial wrapper which allows a react component to live for the duration of a `MarkdownRenderChild`. */
67
80
  export declare class ReactRenderer extends MarkdownRenderChild {
68
- init: DataviewInit;
69
- element: h.JSX.Element;
70
- constructor(init: DataviewInit, element: h.JSX.Element);
71
- onload(): void;
72
- onunload(): void;
81
+ init: DataviewInit;
82
+ element: h.JSX.Element;
83
+ constructor(init: DataviewInit, element: h.JSX.Element);
84
+ onload(): void;
85
+ onunload(): void;
73
86
  }
@@ -1,15 +1,18 @@
1
- import type { FullIndex } from "../data-index/index.d.ts";
2
- import type { App, MarkdownRenderChild } from "obsidian";
3
- import type { DataviewSettings } from "../settings.d.ts";
1
+ import type {
2
+ App,
3
+ MarkdownRenderChild
4
+ } from 'obsidian';
5
+ import type { FullIndex } from '../data-index/index.d.ts';
6
+ import type { DataviewSettings } from '../settings.d.ts';
4
7
  /** Generic code for embedded Dataviews. */
5
8
  export declare abstract class DataviewRefreshableRenderer extends MarkdownRenderChild {
6
- container: HTMLElement;
7
- index: FullIndex;
8
- app: App;
9
- settings: DataviewSettings;
10
- private lastReload;
11
- constructor(container: HTMLElement, index: FullIndex, app: App, settings: DataviewSettings);
12
- abstract render(): Promise<void>;
13
- onload(): void;
14
- maybeRefresh: () => void;
9
+ container: HTMLElement;
10
+ index: FullIndex;
11
+ app: App;
12
+ settings: DataviewSettings;
13
+ private lastReload;
14
+ constructor(container: HTMLElement, index: FullIndex, app: App, settings: DataviewSettings);
15
+ abstract render(): Promise<void>;
16
+ onload(): void;
17
+ maybeRefresh: () => void;
15
18
  }
@@ -1,12 +1,33 @@
1
- import type { App, Component } from "obsidian";
2
- import type { QuerySettings } from "../settings.d.ts";
3
- import type { Literal } from "../data-model/value.d.ts";
1
+ import type {
2
+ App,
3
+ Component
4
+ } from 'obsidian';
5
+ import type { Literal } from '../data-model/value.d.ts';
6
+ import type { QuerySettings } from '../settings.d.ts';
4
7
  /** Render simple fields compactly, removing wrapping content like paragraph and span. */
5
- export declare function renderCompactMarkdown(app: App, markdown: string, container: HTMLElement, sourcePath: string, component: Component, isInlineFieldLivePreview?: boolean): Promise<void>;
8
+ export declare function renderCompactMarkdown(
9
+ app: App,
10
+ markdown: string,
11
+ container: HTMLElement,
12
+ sourcePath: string,
13
+ component: Component,
14
+ isInlineFieldLivePreview?: boolean
15
+ ): Promise<void>;
6
16
  /** Render a pre block with an error in it; returns the element to allow for dynamic updating. */
7
17
  export declare function renderErrorPre(container: HTMLElement, error: string): HTMLElement;
8
18
  /** Render a static codeblock. */
9
19
  export declare function renderCodeBlock(container: HTMLElement, source: string, language?: string): HTMLElement;
10
- export type ValueRenderContext = "root" | "list";
20
+ export type ValueRenderContext = 'root' | 'list';
11
21
  /** Prettily render a value into a container with the given settings. */
12
- export declare function renderValue(app: App, field: Literal, container: HTMLElement, originFile: string, component: Component, settings: QuerySettings, expandList?: boolean, context?: ValueRenderContext, depth?: number, isInlineFieldLivePreview?: boolean): Promise<void>;
22
+ export declare function renderValue(
23
+ app: App,
24
+ field: Literal,
25
+ container: HTMLElement,
26
+ originFile: string,
27
+ component: Component,
28
+ settings: QuerySettings,
29
+ expandList?: boolean,
30
+ context?: ValueRenderContext,
31
+ depth?: number,
32
+ isInlineFieldLivePreview?: boolean
33
+ ): Promise<void>;
@@ -1,17 +1,17 @@
1
- import type { FullIndex } from "../../data-index/index.d.ts";
2
- import type { App } from "obsidian";
3
- import type { Query } from "../../query/query.d.ts";
4
- import type { DataviewSettings } from "../../settings.d.ts";
5
- import type { DataviewRefreshableRenderer } from "../../ui/refreshable-view.d.ts";
1
+ import type { App } from 'obsidian';
2
+ import type { FullIndex } from '../../data-index/index.d.ts';
3
+ import type { Query } from '../../query/query.d.ts';
4
+ import type { DataviewSettings } from '../../settings.d.ts';
5
+ import type { DataviewRefreshableRenderer } from '../../ui/refreshable-view.d.ts';
6
6
  export declare class DataviewCalendarRenderer extends DataviewRefreshableRenderer {
7
- query: Query;
8
- container: HTMLElement;
9
- index: FullIndex;
10
- origin: string;
11
- settings: DataviewSettings;
12
- app: App;
13
- private calendar;
14
- constructor(query: Query, container: HTMLElement, index: FullIndex, origin: string, settings: DataviewSettings, app: App);
15
- render(): Promise<void>;
16
- onClose(): Promise<void>;
7
+ query: Query;
8
+ container: HTMLElement;
9
+ index: FullIndex;
10
+ origin: string;
11
+ settings: DataviewSettings;
12
+ app: App;
13
+ private calendar;
14
+ constructor(query: Query, container: HTMLElement, index: FullIndex, origin: string, settings: DataviewSettings, app: App);
15
+ render(): Promise<void>;
16
+ onClose(): Promise<void>;
17
17
  }
@@ -1,29 +1,42 @@
1
- import type { App, Component, TFile } from "obsidian";
2
- import type { RangeSet, RangeValue, StateField } from "@codemirror/state";
3
- import type { DecorationSet, EditorView, ViewPlugin, ViewUpdate } from "@codemirror/view";
4
- import type { InlineField } from "../../data-import/inline-field.d.ts";
5
- import type { DataviewSettings } from "../../settings.d.ts";
1
+ import type {
2
+ RangeSet,
3
+ RangeValue,
4
+ StateField
5
+ } from '@codemirror/state';
6
+ import type {
7
+ DecorationSet,
8
+ EditorView,
9
+ ViewPlugin,
10
+ ViewUpdate
11
+ } from '@codemirror/view';
12
+ import type {
13
+ App,
14
+ Component,
15
+ TFile
16
+ } from 'obsidian';
17
+ import type { InlineField } from '../../data-import/inline-field.d.ts';
18
+ import type { DataviewSettings } from '../../settings.d.ts';
6
19
  declare class InlineFieldValue extends RangeValue {
7
- field: InlineField;
8
- constructor(field: InlineField);
9
- eq(other: InlineFieldValue): boolean;
20
+ field: InlineField;
21
+ constructor(field: InlineField);
22
+ eq(other: InlineFieldValue): boolean;
10
23
  }
11
24
  /** A state field that stores the inline fields and their positions as a range set. */
12
25
  export declare const inlineFieldsField: StateField<RangeSet<InlineFieldValue>>;
13
26
  /** Create a view plugin that renders inline fields in live preview just as in the reading view. */
14
27
  export declare const replaceInlineFieldsInLivePreview: (app: App, settings: DataviewSettings) => ViewPlugin<{
15
- decorations: DecorationSet;
16
- component: Component;
17
- destroy(): void;
18
- buildDecorations(view: EditorView): DecorationSet;
19
- update(update: ViewUpdate): void;
20
- updateDecorations(view: EditorView): void;
21
- removeDeco(start: number, end: number): void;
22
- addDeco(start: number, end: number, field: InlineField, file: TFile, view: EditorView): void;
28
+ decorations: DecorationSet;
29
+ component: Component;
30
+ destroy(): void;
31
+ buildDecorations(view: EditorView): DecorationSet;
32
+ update(update: ViewUpdate): void;
33
+ updateDecorations(view: EditorView): void;
34
+ removeDeco(start: number, end: number): void;
35
+ addDeco(start: number, end: number, field: InlineField, file: TFile, view: EditorView): void;
23
36
  }>;
24
37
  /**
25
38
  * A state effect that represents the workspace's layout change.
26
39
  * Mainly intended to detect when the user switches between live preview and source mode.
27
40
  */
28
- export declare const workspaceLayoutChangeEffect: import("@codemirror/state").StateEffectType<null>;
41
+ export declare const workspaceLayoutChangeEffect: import('@codemirror/state').StateEffectType<null>;
29
42
  export {};
@@ -1,19 +1,28 @@
1
- import type { FullIndex } from "../../data-index/index.d.ts";
2
- import type { Field } from "../../expression/field.d.ts";
3
- import type { App } from "obsidian";
4
- import type { DataviewSettings } from "../../settings.d.ts";
5
- import type { DataviewRefreshableRenderer } from "../../ui/refreshable-view.d.ts";
1
+ import type { App } from 'obsidian';
2
+ import type { FullIndex } from '../../data-index/index.d.ts';
3
+ import type { Field } from '../../expression/field.d.ts';
4
+ import type { DataviewSettings } from '../../settings.d.ts';
5
+ import type { DataviewRefreshableRenderer } from '../../ui/refreshable-view.d.ts';
6
6
  /** Refreshable renderer which renders inline instead of in a div. */
7
7
  export declare class DataviewInlineRenderer extends DataviewRefreshableRenderer {
8
- field: Field;
9
- fieldText: string;
10
- container: HTMLElement;
11
- target: HTMLElement;
12
- index: FullIndex;
13
- origin: string;
14
- settings: DataviewSettings;
15
- app: App;
16
- errorbox?: HTMLElement;
17
- constructor(field: Field, fieldText: string, container: HTMLElement, target: HTMLElement, index: FullIndex, origin: string, settings: DataviewSettings, app: App);
18
- render(): Promise<void>;
8
+ field: Field;
9
+ fieldText: string;
10
+ container: HTMLElement;
11
+ target: HTMLElement;
12
+ index: FullIndex;
13
+ origin: string;
14
+ settings: DataviewSettings;
15
+ app: App;
16
+ errorbox?: HTMLElement;
17
+ constructor(
18
+ field: Field,
19
+ fieldText: string,
20
+ container: HTMLElement,
21
+ target: HTMLElement,
22
+ index: FullIndex,
23
+ origin: string,
24
+ settings: DataviewSettings,
25
+ app: App
26
+ );
27
+ render(): Promise<void>;
19
28
  }
@@ -1,23 +1,23 @@
1
- import type { DataviewRefreshableRenderer } from "../../ui/refreshable-view.d.ts";
2
- import type { DataviewApi } from "../../api/plugin-api.d.ts";
1
+ import type { DataviewApi } from '../../api/plugin-api.d.ts';
2
+ import type { DataviewRefreshableRenderer } from '../../ui/refreshable-view.d.ts';
3
3
  export declare class DataviewJSRenderer extends DataviewRefreshableRenderer {
4
- api: DataviewApi;
5
- script: string;
6
- container: HTMLElement;
7
- origin: string;
8
- static PREAMBLE: string;
9
- constructor(api: DataviewApi, script: string, container: HTMLElement, origin: string);
10
- render(): Promise<void>;
4
+ api: DataviewApi;
5
+ script: string;
6
+ container: HTMLElement;
7
+ origin: string;
8
+ static PREAMBLE: string;
9
+ constructor(api: DataviewApi, script: string, container: HTMLElement, origin: string);
10
+ render(): Promise<void>;
11
11
  }
12
12
  /** Inline JS renderer accessible using '=$' by default. */
13
13
  export declare class DataviewInlineJSRenderer extends DataviewRefreshableRenderer {
14
- api: DataviewApi;
15
- script: string;
16
- container: HTMLElement;
17
- target: HTMLElement;
18
- origin: string;
19
- static PREAMBLE: string;
20
- errorbox?: HTMLElement;
21
- constructor(api: DataviewApi, script: string, container: HTMLElement, target: HTMLElement, origin: string);
22
- render(): Promise<void>;
14
+ api: DataviewApi;
15
+ script: string;
16
+ container: HTMLElement;
17
+ target: HTMLElement;
18
+ origin: string;
19
+ static PREAMBLE: string;
20
+ errorbox?: HTMLElement;
21
+ constructor(api: DataviewApi, script: string, container: HTMLElement, target: HTMLElement, origin: string);
22
+ render(): Promise<void>;
23
23
  }
@@ -1,25 +1,25 @@
1
- import type { MarkdownRenderChild } from "obsidian";
2
- import type { Query } from "../../query/query.d.ts";
3
- import type { DataviewInit } from "../../ui/markdown.d.ts";
4
- import type { h } from "preact";
5
- import type { Literal } from "../../data-model/value.d.ts";
1
+ import type { MarkdownRenderChild } from 'obsidian';
2
+ import type { h } from 'preact';
3
+ import type { Literal } from '../../data-model/value.d.ts';
4
+ import type { Query } from '../../query/query.d.ts';
5
+ import type { DataviewInit } from '../../ui/markdown.d.ts';
6
6
  export declare function ListGrouping({ items, sourcePath }: {
7
- items: Literal[];
8
- sourcePath: string;
7
+ items: Literal[];
8
+ sourcePath: string;
9
9
  }): h.JSX.Element;
10
10
  export type ListViewState = {
11
- state: "loading";
11
+ state: 'loading';
12
12
  } | {
13
- state: "error";
14
- error: string;
13
+ state: 'error';
14
+ error: string;
15
15
  } | {
16
- state: "ready";
17
- items: Literal[];
16
+ state: 'ready';
17
+ items: Literal[];
18
18
  };
19
19
  /** Pure view over list elements. */
20
20
  export declare function ListView({ query, sourcePath }: {
21
- query: Query;
22
- sourcePath: string;
21
+ query: Query;
22
+ sourcePath: string;
23
23
  }): h.JSX.Element;
24
24
  export declare function createListView(init: DataviewInit, query: Query, sourcePath: string): MarkdownRenderChild;
25
25
  export declare function createFixedListView(init: DataviewInit, elements: Literal[], sourcePath: string): MarkdownRenderChild;
@@ -1,28 +1,28 @@
1
- import type { Literal } from "../../data-model/value.d.ts";
2
- import type { Query } from "../../query/query.d.ts";
3
- import type { DataviewInit } from "../../ui/markdown.d.ts";
4
- import type { h } from "preact";
5
- import type { MarkdownRenderChild } from "obsidian";
1
+ import type { MarkdownRenderChild } from 'obsidian';
2
+ import type { h } from 'preact';
3
+ import type { Literal } from '../../data-model/value.d.ts';
4
+ import type { Query } from '../../query/query.d.ts';
5
+ import type { DataviewInit } from '../../ui/markdown.d.ts';
6
6
  /** Simple table over headings and corresponding values. */
7
- export declare function TableGrouping({ headings, values, sourcePath, }: {
8
- headings: string[];
9
- values: Literal[][];
10
- sourcePath: string;
7
+ export declare function TableGrouping({ headings, values, sourcePath }: {
8
+ headings: string[];
9
+ values: Literal[][];
10
+ sourcePath: string;
11
11
  }): h.JSX.Element;
12
12
  export type TableViewState = {
13
- state: "loading";
13
+ state: 'loading';
14
14
  } | {
15
- state: "error";
16
- error: string;
15
+ state: 'error';
16
+ error: string;
17
17
  } | {
18
- state: "ready";
19
- headings: string[];
20
- values: Literal[][];
18
+ state: 'ready';
19
+ headings: string[];
20
+ values: Literal[][];
21
21
  };
22
22
  /** Pure view over list elements. */
23
23
  export declare function TableView({ query, sourcePath }: {
24
- query: Query;
25
- sourcePath: string;
24
+ query: Query;
25
+ sourcePath: string;
26
26
  }): h.JSX.Element;
27
27
  export declare function createTableView(init: DataviewInit, query: Query, sourcePath: string): MarkdownRenderChild;
28
28
  export declare function createFixedTableView(init: DataviewInit, headings: string[], values: Literal[][], sourcePath: string): MarkdownRenderChild;
@@ -1,25 +1,31 @@
1
- import type { SListItem, STask } from "../../data-model/serialized/markdown.d.ts";
2
- import type { Grouping } from "../../data-model/value.d.ts";
3
- import type { MarkdownRenderChild, Vault } from "obsidian";
4
- import type { h } from "preact";
5
- import type { Query } from "../../query/query.d.ts";
6
- import type { DataviewInit } from "../../ui/markdown.d.ts";
1
+ import type {
2
+ MarkdownRenderChild,
3
+ Vault
4
+ } from 'obsidian';
5
+ import type { h } from 'preact';
6
+ import type {
7
+ SListItem,
8
+ STask
9
+ } from '../../data-model/serialized/markdown.d.ts';
10
+ import type { Grouping } from '../../data-model/value.d.ts';
11
+ import type { Query } from '../../query/query.d.ts';
12
+ import type { DataviewInit } from '../../ui/markdown.d.ts';
7
13
  export type TaskViewState = {
8
- state: "loading";
14
+ state: 'loading';
9
15
  } | {
10
- state: "error";
11
- error: string;
16
+ state: 'error';
17
+ error: string;
12
18
  } | {
13
- state: "ready";
14
- items: Grouping<SListItem>;
19
+ state: 'ready';
20
+ items: Grouping<SListItem>;
15
21
  };
16
22
  /**
17
23
  * Pure view over (potentially grouped) tasks and list items which allows for checking/unchecking tasks and manipulating
18
24
  * the task view.
19
25
  */
20
26
  export declare function TaskView({ query, sourcePath }: {
21
- query: Query;
22
- sourcePath: string;
27
+ query: Query;
28
+ sourcePath: string;
23
29
  }): h.JSX.Element;
24
30
  export declare function createTaskView(init: DataviewInit, query: Query, sourcePath: string): MarkdownRenderChild;
25
31
  export declare function createFixedTaskView(init: DataviewInit, items: Grouping<SListItem>, sourcePath: string): MarkdownRenderChild;
@@ -34,6 +40,12 @@ export declare function nestItems(raw: SListItem[]): [SListItem[], Set<string>];
34
40
  */
35
41
  export declare function nestGroups(raw: Grouping<SListItem>): Grouping<SListItem>;
36
42
  /** Set the task completion key on check. */
37
- export declare function setTaskCompletion(originalText: string, useEmojiShorthand: boolean, completionKey: string, completionDateFormat: string, complete: boolean): string;
43
+ export declare function setTaskCompletion(
44
+ originalText: string,
45
+ useEmojiShorthand: boolean,
46
+ completionKey: string,
47
+ completionDateFormat: string,
48
+ complete: boolean
49
+ ): string;
38
50
  /** Rewrite a task with the given completion status and new text. */
39
51
  export declare function rewriteTask(vault: Vault, task: STask, desiredStatus: string, desiredText?: string): Promise<void>;
@@ -1,4 +1,4 @@
1
- import type { Link } from "../data-model/value.d.ts";
1
+ import type { Link } from '../data-model/value.d.ts';
2
2
  export declare const IMAGE_EXTENSIONS: Readonly<Set<string>>;
3
3
  /** Determines if the given link points to an embedded image. */
4
4
  export declare function isImageEmbed(link: Link): boolean;
@@ -1,6 +1,9 @@
1
- import type { DateTime, Duration } from "luxon";
2
- import type { Result } from "../api/result.d.ts";
3
- import type { QuerySettings } from "../settings.d.ts";
1
+ import type {
2
+ DateTime,
3
+ Duration
4
+ } from 'luxon';
5
+ import type { Result } from '../api/result.d.ts';
6
+ import type { QuerySettings } from '../settings.d.ts';
4
7
  /** Normalize a duration to all of the proper units. */
5
8
  export declare function normalizeDuration(dur: Duration): Duration;
6
9
  /** Strip the time components of a date time object. */
@@ -56,4 +56,4 @@ function getObsidianDevUtilsState(app, key, defaultValue) {
56
56
  getApp,
57
57
  getObsidianDevUtilsState
58
58
  });
59
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gQXBwXG4gKiBQcm92aWRlcyBhIHV0aWxpdHkgdG8gcmV0cmlldmUgdGhlIE9ic2lkaWFuIGBBcHBgIGluc3RhbmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi9FcnJvci50cyc7XG5cbi8qKlxuICogV3JhcHBlciB0eXBlIGZvciBhY2Nlc3NpbmcgdGhlIGBBcHBgIGluc3RhbmNlIGdsb2JhbGx5LlxuICovXG5pbnRlcmZhY2UgQXBwV3JhcHBlciB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCByZWZlcmVuY2UgdG8gdGhlIE9ic2lkaWFuIGBBcHBgIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG59XG5cbmludGVyZmFjZSBPYnNpZGlhbkRldlV0aWxzU3RhdGVXcmFwcGVyIHtcbiAgb2JzaWRpYW5EZXZVdGlsc1N0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIHR5cGUgZm9yIHN0b3Jpbmcgc2hhcmVkIHN0YXRlIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWx1ZVdyYXBwZXI8VD4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBUKSB7IH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIE9ic2lkaWFuIGBBcHBgIGluc3RhbmNlLlxuICpcbiAqIEByZXR1cm5zIFRoZSBgQXBwYCBpbnN0YW5jZS5cbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgYEFwcGAgaW5zdGFuY2UgY2Fubm90IGJlIGZvdW5kLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1jb2Rlc2NyaXB0LXRvb2xraXQ/dGFiPXJlYWRtZS1vdi1maWxlI29ic2lkaWFuYXBwLW1vZHVsZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcCgpOiBBcHAge1xuICB0cnkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnJlcXVpcmUoJ29ic2lkaWFuL2FwcCcpIGFzIEFwcDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIChnbG9iYWxUaGlzIGFzIFBhcnRpYWw8QXBwV3JhcHBlcj4pLmFwcCA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdPYnNpZGlhbiBhcHAgbm90IGZvdW5kJykpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIG9yIGNyZWF0ZXMgYSBzaGFyZWQgc3RhdGUgd3JhcHBlciBvYmplY3QgZm9yIGEgZ2l2ZW4ga2V5IGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBzdG9yZSBvciByZXRyaWV2ZSB0aGUgc2hhcmVkIHN0YXRlLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIFRoZSBkZWZhdWx0IHZhbHVlIHRvIHVzZSBpZiB0aGUgc2hhcmVkIHN0YXRlIGRvZXMgbm90IGV4aXN0LlxuICogQHJldHVybnMgVGhlIFZhbHVlV3JhcHBlciBvYmplY3QgdGhhdCBzdG9yZXMgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxUPihhcHA6IEFwcCwga2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCk6IFZhbHVlV3JhcHBlcjxUPiB7XG4gIGNvbnN0IHNoYXJlZFN0YXRlV3JhcHBlciA9IGFwcCBhcyBQYXJ0aWFsPE9ic2lkaWFuRGV2VXRpbHNTdGF0ZVdyYXBwZXI+O1xuICBjb25zdCBzaGFyZWRTdGF0ZSA9IHNoYXJlZFN0YXRlV3JhcHBlci5vYnNpZGlhbkRldlV0aWxzU3RhdGUgPz89IHt9O1xuICByZXR1cm4gKHNoYXJlZFN0YXRlW2tleV0gPz89IG5ldyBWYWx1ZVdyYXBwZXI8VD4oZGVmYXVsdFZhbHVlKSkgYXMgVmFsdWVXcmFwcGVyPFQ+O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQSxtQkFBZ0M7QUFtQnpCLE1BQU0sYUFBZ0I7QUFBQSxFQUNwQixZQUFtQixPQUFVO0FBQVY7QUFBQSxFQUFZO0FBQ3hDO0FBVU8sU0FBUyxTQUFjO0FBQzVCLE1BQUk7QUFDRixXQUFPLFdBQVcsUUFBUSxjQUFjO0FBQUEsRUFDMUMsUUFBUTtBQUNOLFdBQVEsV0FBbUMsV0FBTyw4QkFBZ0IsSUFBSSxNQUFNLHdCQUF3QixDQUFDO0FBQUEsRUFDdkc7QUFDRjtBQVVPLFNBQVMseUJBQTRCLEtBQVUsS0FBYSxjQUFrQztBQUNuRyxRQUFNLHFCQUFxQjtBQUMzQixRQUFNLGNBQWMsbUJBQW1CLDBCQUEwQixDQUFDO0FBQ2xFLFNBQVEsWUFBWSxHQUFHLE1BQU0sSUFBSSxhQUFnQixZQUFZO0FBQy9EOyIsCiAgIm5hbWVzIjogW10KfQo=
59
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gQXBwXG4gKiBQcm92aWRlcyBhIHV0aWxpdHkgdG8gcmV0cmlldmUgdGhlIE9ic2lkaWFuIGBBcHBgIGluc3RhbmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi9FcnJvci50cyc7XG5cbi8qKlxuICogV3JhcHBlciB0eXBlIGZvciBhY2Nlc3NpbmcgdGhlIGBBcHBgIGluc3RhbmNlIGdsb2JhbGx5LlxuICovXG5pbnRlcmZhY2UgQXBwV3JhcHBlciB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCByZWZlcmVuY2UgdG8gdGhlIE9ic2lkaWFuIGBBcHBgIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG59XG5cbmludGVyZmFjZSBPYnNpZGlhbkRldlV0aWxzU3RhdGVXcmFwcGVyIHtcbiAgb2JzaWRpYW5EZXZVdGlsc1N0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIHR5cGUgZm9yIHN0b3Jpbmcgc2hhcmVkIHN0YXRlIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWx1ZVdyYXBwZXI8VD4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBUKSB7fVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgT2JzaWRpYW4gYEFwcGAgaW5zdGFuY2UuXG4gKlxuICogQHJldHVybnMgVGhlIGBBcHBgIGluc3RhbmNlLlxuICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBgQXBwYCBpbnN0YW5jZSBjYW5ub3QgYmUgZm91bmQuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWNvZGVzY3JpcHQtdG9vbGtpdD90YWI9cmVhZG1lLW92LWZpbGUjb2JzaWRpYW5hcHAtbW9kdWxlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwKCk6IEFwcCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucmVxdWlyZSgnb2JzaWRpYW4vYXBwJykgYXMgQXBwO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gKGdsb2JhbFRoaXMgYXMgUGFydGlhbDxBcHBXcmFwcGVyPikuYXBwID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ09ic2lkaWFuIGFwcCBub3QgZm91bmQnKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyBhIHNoYXJlZCBzdGF0ZSB3cmFwcGVyIG9iamVjdCBmb3IgYSBnaXZlbiBrZXkgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIHN0b3JlIG9yIHJldHJpZXZlIHRoZSBzaGFyZWQgc3RhdGUuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIC0gVGhlIGRlZmF1bHQgdmFsdWUgdG8gdXNlIGlmIHRoZSBzaGFyZWQgc3RhdGUgZG9lcyBub3QgZXhpc3QuXG4gKiBAcmV0dXJucyBUaGUgVmFsdWVXcmFwcGVyIG9iamVjdCB0aGF0IHN0b3JlcyB0aGUgc2hhcmVkIHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlPFQ+KGFwcDogQXBwLCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogVmFsdWVXcmFwcGVyPFQ+IHtcbiAgY29uc3Qgc2hhcmVkU3RhdGVXcmFwcGVyID0gYXBwIGFzIFBhcnRpYWw8T2JzaWRpYW5EZXZVdGlsc1N0YXRlV3JhcHBlcj47XG4gIGNvbnN0IHNoYXJlZFN0YXRlID0gc2hhcmVkU3RhdGVXcmFwcGVyLm9ic2lkaWFuRGV2VXRpbHNTdGF0ZSA/Pz0ge307XG4gIHJldHVybiAoc2hhcmVkU3RhdGVba2V5XSA/Pz0gbmV3IFZhbHVlV3JhcHBlcjxUPihkZWZhdWx0VmFsdWUpKSBhcyBWYWx1ZVdyYXBwZXI8VD47XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BLG1CQUFnQztBQW1CekIsTUFBTSxhQUFnQjtBQUFBLEVBQ3BCLFlBQW1CLE9BQVU7QUFBVjtBQUFBLEVBQVc7QUFDdkM7QUFVTyxTQUFTLFNBQWM7QUFDNUIsTUFBSTtBQUNGLFdBQU8sV0FBVyxRQUFRLGNBQWM7QUFBQSxFQUMxQyxRQUFRO0FBQ04sV0FBUSxXQUFtQyxXQUFPLDhCQUFnQixJQUFJLE1BQU0sd0JBQXdCLENBQUM7QUFBQSxFQUN2RztBQUNGO0FBVU8sU0FBUyx5QkFBNEIsS0FBVSxLQUFhLGNBQWtDO0FBQ25HLFFBQU0scUJBQXFCO0FBQzNCLFFBQU0sY0FBYyxtQkFBbUIsMEJBQTBCLENBQUM7QUFDbEUsU0FBUSxZQUFZLEdBQUcsTUFBTSxJQUFJLGFBQWdCLFlBQVk7QUFDL0Q7IiwKICAibmFtZXMiOiBbXQp9Cg==