@lapismd/mira 0.1.1 → 0.1.2

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 (25) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/extensions/markdown-editing.d.ts +2 -0
  3. package/dist/extensions/markdown-editing.d.ts.map +1 -1
  4. package/dist/internal/codemirror/base/index.d.ts.map +1 -1
  5. package/dist/internal/codemirror/base/index.js +3 -0
  6. package/dist/preview/components/frontmatter-property-text-input.svelte +13 -7
  7. package/dist/preview/components/frontmatter-property-text-input.svelte.d.ts.map +1 -1
  8. package/dist/preview/components/frontmatter.svelte +38 -3
  9. package/dist/preview/components/frontmatter.svelte.d.ts.map +1 -1
  10. package/dist/preview/editable-markdown-preview/editable-markdown-surface.svelte +15 -11
  11. package/dist/preview/editable-markdown-preview/editable-markdown-surface.svelte.d.ts.map +1 -1
  12. package/dist/preview/editable-markdown-preview/editing-session.d.ts.map +1 -1
  13. package/dist/preview/editable-markdown-preview/editing-session.js +1 -0
  14. package/dist/preview/editable-markdown-preview/serialized-writer.d.ts +1 -0
  15. package/dist/preview/editable-markdown-preview/serialized-writer.d.ts.map +1 -1
  16. package/dist/preview/editable-markdown-preview/serialized-writer.js +5 -2
  17. package/dist/preview/frontmatter/controller.svelte.d.ts +3 -1
  18. package/dist/preview/frontmatter/controller.svelte.d.ts.map +1 -1
  19. package/dist/preview/frontmatter/controller.svelte.js +16 -5
  20. package/dist/preview/frontmatter/record-snapshot.d.ts +3 -0
  21. package/dist/preview/frontmatter/record-snapshot.d.ts.map +1 -0
  22. package/dist/preview/frontmatter/record-snapshot.js +39 -0
  23. package/dist/preview/frontmatter/types.d.ts +1 -1
  24. package/dist/preview/frontmatter/types.d.ts.map +1 -1
  25. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @lapismd/mira
2
2
 
3
+ ## 0.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#21](https://github.com/lapismd/mira-mde/pull/21) [`377bfc8`](https://github.com/lapismd/mira-mde/commit/377bfc805eac2961fd879f03e28e80273cb8702c) Thanks [@stevejuma](https://github.com/stevejuma)! - Expose immutable previous frontmatter records and retain focused text edits through external metadata refresh and deferred commits.
8
+
9
+ - [#21](https://github.com/lapismd/mira-mde/pull/21) [`caa2452`](https://github.com/lapismd/mira-mde/commit/caa24527be436a706ef083c63e76694a180044b7) Thanks [@stevejuma](https://github.com/stevejuma)! - Expose an optional synchronous Markdown input lease that leaves persistence and recovery under the existing save barriers.
10
+
11
+ - [#21](https://github.com/lapismd/mira-mde/pull/21) [`9142fa4`](https://github.com/lapismd/mira-mde/commit/9142fa4ed786d63fc54a04654f3b2c5ef48bfe47) Thanks [@stevejuma](https://github.com/stevejuma)! - Retain preview source sessions when adapter admission or diagnostic callbacks observe reactive state.
12
+
13
+ - [#21](https://github.com/lapismd/mira-mde/pull/21) [`a7ab556`](https://github.com/lapismd/mira-mde/commit/a7ab556fc55e612210097a060d1b96917fbb2ed3) Thanks [@stevejuma](https://github.com/stevejuma)! - Align the portable overlay runtime with released Bits UI 2.20.2 while preserving
14
+ the existing public editor and preview contracts.
15
+
3
16
  ## 0.1.1
4
17
 
5
18
  ### Patch Changes
@@ -20,6 +20,8 @@ export type MiraMarkdownTextSession = {
20
20
  /** A portable persistence barrier owned by one source-bound Markdown writer. */
21
21
  export type MiraMarkdownEditingSession = {
22
22
  readonly dirty: boolean;
23
+ /** Block new input synchronously without flushing or acknowledging text. */
24
+ hold?(): () => void;
23
25
  flush(): Promise<void>;
24
26
  protect(): Promise<() => void>;
25
27
  readonly text?: MiraMarkdownTextSession;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-editing.d.ts","sourceRoot":"","sources":["../../src/extensions/markdown-editing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,sFAAsF;AACtF,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,IAAI,IAAI,CAAC;IACpB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACxE,eAAe,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAC;CACvD,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"markdown-editing.d.ts","sourceRoot":"","sources":["../../src/extensions/markdown-editing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,sFAAsF;AACtF,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,IAAI,IAAI,CAAC;IACpB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACxE,eAAe,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAC;CACvD,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,4EAA4E;IAC5E,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;IACpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/internal/codemirror/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,0BAA0B,CAAC;AAkBlC,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAmBhE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,kCAAkC,EAClC,4BAA4B,EAC5B,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,MAAM,EACN,KAAK,gBAAgB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,6BAA6B,EAC7B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,GACnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EACT,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACxD,KAAK,CAAC;IACV,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,wCAuC/B,CAAC;AAEH,eAAO,MAAM,eAAe,WAoN1B,CAAC;AAgOH,wBAAgB,4BAA4B,IAAI,SAAS,CAExD;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,qBAA0B,GAClC,SAAS,EAAE,CAoEb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/internal/codemirror/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,0BAA0B,CAAC;AAkBlC,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAmBhE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,kCAAkC,EAClC,4BAA4B,EAC5B,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,MAAM,EACN,KAAK,gBAAgB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,6BAA6B,EAC7B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,GACnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EACT,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACxD,KAAK,CAAC;IACV,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,wCAuC/B,CAAC;AAEH,eAAO,MAAM,eAAe,WAuN1B,CAAC;AAgOH,wBAAgB,4BAA4B,IAAI,SAAS,CAExD;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,qBAA0B,GAClC,SAAS,EAAE,CAoEb"}
@@ -52,6 +52,9 @@ export const miraClassHighlighter = tagHighlighter([
52
52
  ]);
53
53
  export const miraEditorTheme = EditorView.theme({
54
54
  "&": {
55
+ // CodeMirror's panel/gutter z-indices are internal to this editor, so they
56
+ // cannot outrank a surrounding host's settings or other modal overlays.
57
+ isolation: "isolate",
55
58
  height: "100%",
56
59
  color: "var(--mira-foreground)",
57
60
  backgroundColor: "var(--mira-editor-background)",
@@ -31,6 +31,7 @@
31
31
  let suggestionVersion = 0;
32
32
  let suggestions = $state<string[]>([]);
33
33
  let committedSuggestion: string | null = null;
34
+ let editCommit: Props["onCommit"] | undefined;
34
35
 
35
36
  const filteredSuggestions = $derived(
36
37
  filterFrontmatterValueSuggestions(suggestions, query),
@@ -88,7 +89,9 @@
88
89
  }
89
90
  committedSuggestion = suggestion;
90
91
  open = false;
91
- onCommit(suggestion);
92
+ const commit = editCommit ?? onCommit;
93
+ editCommit = undefined;
94
+ commit(suggestion);
92
95
  }
93
96
 
94
97
  function handleBlur(event: FocusEvent): void {
@@ -96,16 +99,19 @@
96
99
  if (nextFocus?.dataset.propertyValueSuggestion === "true") {
97
100
  return;
98
101
  }
102
+ const nextValue = currentValue();
103
+ const commit = editCommit ?? onCommit;
104
+ const alreadyCommitted = nextValue === committedSuggestion;
99
105
  queueMicrotask(() => {
100
106
  if (editorEl?.ownerDocument.activeElement !== editorEl) {
101
107
  open = false;
102
- const nextValue = currentValue();
103
- if (nextValue === committedSuggestion) {
108
+ editCommit = undefined;
109
+ if (alreadyCommitted) {
104
110
  committedSuggestion = null;
105
111
  return;
106
112
  }
107
113
  committedSuggestion = null;
108
- onCommit(nextValue);
114
+ commit(nextValue);
109
115
  }
110
116
  });
111
117
  }
@@ -179,12 +185,14 @@
179
185
  void loadSuggestions(query);
180
186
  }}
181
187
  onfocus={() => {
188
+ editCommit = onCommit;
182
189
  query = currentValue();
183
190
  open = true;
184
191
  activeIndex = -1;
185
192
  void loadSuggestions(query);
186
193
  }}
187
194
  oninput={() => {
195
+ editCommit ??= onCommit;
188
196
  committedSuggestion = null;
189
197
  query = currentValue();
190
198
  open = true;
@@ -193,9 +201,7 @@
193
201
  }}
194
202
  onblur={handleBlur}
195
203
  onkeydown={handleKeydown}
196
- >
197
- {value}
198
- </div>
204
+ ></div>
199
205
  {/snippet}
200
206
  </Popover.Trigger>
201
207
 
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter-property-text-input.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/components/frontmatter-property-text-input.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAI7B,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAwLJ,QAAA,MAAM,4BAA4B,2CAAwC,CAAC;AAC3E,KAAK,4BAA4B,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;AACpF,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"frontmatter-property-text-input.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/components/frontmatter-property-text-input.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAI7B,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AA8LJ,QAAA,MAAM,4BAA4B,2CAAwC,CAAC;AAC3E,KAAK,4BAA4B,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;AACpF,eAAe,4BAA4B,CAAC"}
@@ -19,6 +19,7 @@
19
19
  import Link from "./link.svelte";
20
20
  import FrontmatterPropertyNameInput from "./frontmatter-property-name-input.svelte";
21
21
  import FrontmatterPropertyTextInput from "./frontmatter-property-text-input.svelte";
22
+ import { snapshotFrontmatterRecord } from "../frontmatter/record-snapshot";
22
23
  import FrontmatterPropertyValueInput from "./frontmatter-property-value-input.svelte";
23
24
  import * as DropdownMenu from "../../ui/dropdown-menu/index.js";
24
25
  import type { MiraFileAdapter } from "@lapismd/mira/extensions";
@@ -122,12 +123,20 @@
122
123
  });
123
124
 
124
125
  const parseError = $derived(controller.parseError);
126
+ const renderedTextCommits = new WeakMap<
127
+ FrontmatterProperty,
128
+ (value: string) => void
129
+ >();
125
130
  const rows = $derived.by(() => {
126
131
  controller.revision;
127
132
  if (controller.parseError) {
128
133
  return [] as FrontmatterProperty[];
129
134
  }
130
- return manager.properties(controller.getRecord());
135
+ const owner = controller;
136
+ const previousRecord = snapshotFrontmatterRecord(owner.getRecord());
137
+ const properties = manager.properties(previousRecord);
138
+ bindRenderedTextCommits(properties, owner, previousRecord);
139
+ return properties;
131
140
  });
132
141
  const typeOptions = $derived.by(() => {
133
142
  controller.revision;
@@ -154,6 +163,32 @@
154
163
  controller.updateProperty(property.path, nextValue);
155
164
  }
156
165
 
166
+ function bindRenderedTextCommits(
167
+ properties: FrontmatterProperty[],
168
+ owner: FrontmatterController,
169
+ previousRecord: Readonly<Record<string, unknown>>,
170
+ ): void {
171
+ const sourcePath = owner.sourcePath;
172
+ const onActionError = manager.config.onActionError;
173
+ for (const property of properties) {
174
+ const path = [...property.path];
175
+ renderedTextCommits.set(property, (value) => {
176
+ if (owner.sourcePath !== sourcePath) {
177
+ onActionError?.(new Error("Frontmatter edit target changed"), "edit");
178
+ return;
179
+ }
180
+ owner.updateProperty(path, value, previousRecord);
181
+ });
182
+ bindRenderedTextCommits(property.children, owner, previousRecord);
183
+ }
184
+ }
185
+
186
+ function renderedTextCommit(property: FrontmatterProperty) {
187
+ const commit = renderedTextCommits.get(property);
188
+ if (!commit) throw new Error("Rendered frontmatter edit is unavailable");
189
+ return commit;
190
+ }
191
+
157
192
  function addProperty(): void {
158
193
  const nextName = controller.addProperty("text");
159
194
  if (nextName) {
@@ -319,7 +354,7 @@
319
354
 
320
355
  function handleActionError(
321
356
  error: unknown,
322
- action: "copy" | "cut" | "paste" | "remove",
357
+ action: "copy" | "cut" | "paste" | "remove" | "edit",
323
358
  ): void {
324
359
  config.onActionError?.(error, action);
325
360
  }
@@ -646,7 +681,7 @@
646
681
  {config}
647
682
  ariaLabel={`${property.pathString} value`}
648
683
  class={`metadata-input metadata-input-longtext metadata-property-value-item min-w-0 grow bg-transparent px-2 py-1 outline-none ${valueClass(property.kind)}`}
649
- onCommit={(next) => updateProperty(property, next)}
684
+ onCommit={renderedTextCommit(property)}
650
685
  />
651
686
  {:else if toBuiltinFrontmatterKind(property.kind) === "number"}
652
687
  <input
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/components/frontmatter.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EASH,qBAAqB,EAIrB,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAQ/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAO9D,KAAK,KAAK,GAAG;IACX,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC,CAAC;AAgpBJ,QAAA,MAAM,WAAW,8CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"frontmatter.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/components/frontmatter.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EASH,qBAAqB,EAIrB,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAS/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAO9D,KAAK,KAAK,GAAG;IACX,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC,CAAC;AAmrBJ,QAAA,MAAM,WAAW,8CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -146,17 +146,21 @@
146
146
  },
147
147
  });
148
148
  writer = activeWriter;
149
- const attached = attachMarkdownEditingSession({
150
- writer: activeWriter,
151
- sourcePath: key,
152
- register: adapter?.registerEditingSession
153
- ? (path, session) => adapter.registerEditingSession?.(path, session)
154
- : undefined,
155
- bind: adapter?.bindMarkdownEditingSession
156
- ? (path, session) => adapter.bindMarkdownEditingSession!(path, session)
157
- : undefined,
158
- synchronizeProtection: tick,
159
- });
149
+ // Adapter observations must not become dependencies of this source lifetime.
150
+ const attached = untrack(() =>
151
+ attachMarkdownEditingSession({
152
+ writer: activeWriter,
153
+ sourcePath: key,
154
+ register: adapter?.registerEditingSession
155
+ ? (path, session) => adapter.registerEditingSession?.(path, session)
156
+ : undefined,
157
+ bind: adapter?.bindMarkdownEditingSession
158
+ ? (path, session) =>
159
+ adapter.bindMarkdownEditingSession!(path, session)
160
+ : undefined,
161
+ synchronizeProtection: tick,
162
+ }),
163
+ );
160
164
  persist = attached.write ?? write;
161
165
 
162
166
  return () => {
@@ -1 +1 @@
1
- {"version":3,"file":"editable-markdown-surface.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/editable-markdown-preview/editable-markdown-surface.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,KAAK,EACR,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAclC,KAAK,mBAAmB,GAAG,CACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,KACP,IAAI,CAAC;AAEV,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE,CAAC;AAqUJ,QAAA,MAAM,uBAAuB;iBA1CF,OAAO,CAAC,OAAO,CAAC;gBAIjB,OAAO,CAAC,OAAO,CAAC;iCAsC2B,CAAC;AACtE,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC1E,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"editable-markdown-surface.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/editable-markdown-preview/editable-markdown-surface.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,KAAK,EACR,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAclC,KAAK,mBAAmB,GAAG,CACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,KACP,IAAI,CAAC;AAEV,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE,CAAC;AAyUJ,QAAA,MAAM,uBAAuB;iBA1CF,OAAO,CAAC,OAAO,CAAC;gBAIjB,OAAO,CAAC,OAAO,CAAC;iCAsC2B,CAAC;AACtE,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC1E,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"editing-session.d.ts","sourceRoot":"","sources":["../../../src/preview/editable-markdown-preview/editing-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,+FAA+F;AAC/F,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,MAAM,EAAE,wBAAwB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,eAAe,CAAC,4BAA4B,CAAC,CAAC;IACrD,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,GAAG;IACF,OAAO,EAAE,0BAA0B,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,IAAI,CAAC;CAChB,CAiGA"}
1
+ {"version":3,"file":"editing-session.d.ts","sourceRoot":"","sources":["../../../src/preview/editable-markdown-preview/editing-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,+FAA+F;AAC/F,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,MAAM,EAAE,wBAAwB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,eAAe,CAAC,4BAA4B,CAAC,CAAC;IACrD,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,GAAG;IACF,OAAO,EAAE,0BAA0B,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,IAAI,CAAC;CAChB,CAkGA"}
@@ -22,6 +22,7 @@ export function attachMarkdownEditingSession(options) {
22
22
  }
23
23
  }
24
24
  const session = {
25
+ hold: () => writer.hold(),
25
26
  get dirty() {
26
27
  const state = writer.state;
27
28
  return (state.dirty ||
@@ -25,6 +25,7 @@ export declare class SerializedMarkdownWriter {
25
25
  update(value: string): boolean;
26
26
  subscribe(listener: (state: SerializedMarkdownWriterState) => void): () => void;
27
27
  protectRecovery(): Promise<MiraMarkdownRecoveryLease>;
28
+ hold(): () => void;
28
29
  protect(): Promise<() => void>;
29
30
  replaceExternal(value: string): boolean;
30
31
  flush(): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"serialized-writer.d.ts","sourceRoot":"","sources":["../../../src/preview/editable-markdown-preview/serialized-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAC3C,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAElE,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IAEzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA2B;IAE1D,OAAO,CAAC,KAAK,CAA8C;IAE3D,OAAO,CAAC,YAAY,CAAiC;IAErD,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEtB;IAEJ,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,KAAK,CAAsB;gBAEvB,OAAO,EAAE,OAAO;IAS5B,IAAI,KAAK,IAAI,6BAA6B,CASzC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ9B,SAAS,CACP,QAAQ,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,GACvD,MAAM,IAAI;IAQP,eAAe,IAAI,OAAO,CAAC,yBAAyB,CAAC;IA2CrD,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IAoBpC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAiBjC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IA0B/B,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,QAAQ;YAYF,WAAW;IA2BzB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,IAAI;CAIb"}
1
+ {"version":3,"file":"serialized-writer.d.ts","sourceRoot":"","sources":["../../../src/preview/editable-markdown-preview/serialized-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAC3C,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAElE,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IAEzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA2B;IAE1D,OAAO,CAAC,KAAK,CAA8C;IAE3D,OAAO,CAAC,YAAY,CAAiC;IAErD,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEtB;IAEJ,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,KAAK,CAAsB;gBAEvB,OAAO,EAAE,OAAO;IAS5B,IAAI,KAAK,IAAI,6BAA6B,CASzC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ9B,SAAS,CACP,QAAQ,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,GACvD,MAAM,IAAI;IAQP,eAAe,IAAI,OAAO,CAAC,yBAAyB,CAAC;IA2C3D,IAAI,IAAI,MAAM,IAAI;IAYZ,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IAYpC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAiBjC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IA0B/B,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,QAAQ;YAYF,WAAW;IA2BzB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,IAAI;CAIb"}
@@ -91,17 +91,20 @@ export class SerializedMarkdownWriter {
91
91
  throw error;
92
92
  }
93
93
  }
94
- async protect() {
94
+ hold() {
95
95
  this.protections++;
96
96
  this.emit();
97
97
  let released = false;
98
- const release = () => {
98
+ return () => {
99
99
  if (released)
100
100
  return;
101
101
  released = true;
102
102
  this.protections--;
103
103
  this.emit();
104
104
  };
105
+ }
106
+ async protect() {
107
+ const release = this.hold();
105
108
  try {
106
109
  if (!(await this.flush()))
107
110
  throw this.error ?? new Error("Unable to protect unsaved Markdown");
@@ -1,6 +1,7 @@
1
1
  import type { FrontmatterPathSegment, FrontmatterProperty, FrontmatterPropertyKind } from "./types";
2
2
  import { type FrontmatterPropertyManager } from "./manager";
3
3
  export type FrontmatterControllerCommit = {
4
+ readonly previousRecord: Readonly<Record<string, unknown>>;
4
5
  record: Record<string, unknown>;
5
6
  yaml: string;
6
7
  replacement: string;
@@ -45,9 +46,10 @@ export declare class FrontmatterController {
45
46
  syncRecord(nextRecord: Record<string, unknown>, options?: {
46
47
  commit?: boolean;
47
48
  }): void;
49
+ private replaceRecord;
48
50
  commitYaml(nextYaml: string): void;
49
51
  commitRecord(nextRecord: Record<string, unknown>): void;
50
- updateProperty(path: FrontmatterPathSegment[], nextValue: unknown): void;
52
+ updateProperty(path: FrontmatterPathSegment[], nextValue: unknown, previousRecord?: Readonly<Record<string, unknown>>): void;
51
53
  addProperty(kind?: FrontmatterPropertyKind): string | null;
52
54
  renameProperty(path: FrontmatterPathSegment[], nextKey: string): void;
53
55
  removeProperty(path: FrontmatterPathSegment[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/frontmatter/controller.svelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.svelte.d.ts","sourceRoot":"","sources":["../../../src/preview/frontmatter/controller.svelte.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { parseFrontmatterYaml } from "./parse";
2
+ import { snapshotFrontmatterRecord } from "./record-snapshot";
2
3
  import { addFrontmatterRecordProperty, mergeFrontmatterRecordProperties, removeFrontmatterRecordProperty, renameFrontmatterRecordProperty, updateFrontmatterRecord, } from "./properties";
3
4
  import { createFrontmatterReplacement, serializeFrontmatterRecord, } from "./serialize";
4
5
  import { createFrontmatterPropertyManager, } from "./manager";
@@ -72,6 +73,9 @@ export class FrontmatterController {
72
73
  if (!options.commit && nextYaml === this.yaml && this.revision > 0) {
73
74
  return;
74
75
  }
76
+ const previousRecord = options.commit
77
+ ? snapshotFrontmatterRecord(this.record)
78
+ : undefined;
75
79
  const parsed = parseFrontmatterYaml(nextYaml);
76
80
  this.yaml = nextYaml;
77
81
  if (parsed.ok) {
@@ -84,20 +88,26 @@ export class FrontmatterController {
84
88
  }
85
89
  this.revision += 1;
86
90
  if (options.commit) {
87
- void this.commitCurrent();
91
+ void this.commitCurrent(previousRecord);
88
92
  }
89
93
  }
90
94
  syncRecord(nextRecord, options = {}) {
95
+ this.replaceRecord(nextRecord, options);
96
+ }
97
+ replaceRecord(nextRecord, options, priorRecord = this.record) {
91
98
  const nextYaml = serializeFrontmatterRecord(nextRecord);
92
99
  if (!options.commit && nextYaml === this.yaml && this.revision > 0) {
93
100
  return;
94
101
  }
102
+ const previousRecord = options.commit
103
+ ? snapshotFrontmatterRecord(priorRecord)
104
+ : undefined;
95
105
  this.record = cloneRecord(nextRecord);
96
106
  this.yaml = nextYaml;
97
107
  this.parseError = null;
98
108
  this.revision += 1;
99
109
  if (options.commit) {
100
- void this.commitCurrent();
110
+ void this.commitCurrent(previousRecord);
101
111
  }
102
112
  }
103
113
  commitYaml(nextYaml) {
@@ -106,11 +116,11 @@ export class FrontmatterController {
106
116
  commitRecord(nextRecord) {
107
117
  this.syncRecord(nextRecord, { commit: true });
108
118
  }
109
- updateProperty(path, nextValue) {
119
+ updateProperty(path, nextValue, previousRecord = this.record) {
110
120
  if (this.parseError) {
111
121
  return;
112
122
  }
113
- this.commitRecord(updateFrontmatterRecord(this.record, path, nextValue));
123
+ this.replaceRecord(updateFrontmatterRecord(previousRecord, path, nextValue), { commit: true }, previousRecord);
114
124
  }
115
125
  addProperty(kind = "text") {
116
126
  if (this.parseError) {
@@ -149,7 +159,7 @@ export class FrontmatterController {
149
159
  }
150
160
  this.updateProperty(property.path, this.propertyManager.coerceValue(property.value, kind, property));
151
161
  }
152
- async commitCurrent() {
162
+ async commitCurrent(previousRecord) {
153
163
  if (this.suppressCommit) {
154
164
  return;
155
165
  }
@@ -167,6 +177,7 @@ export class FrontmatterController {
167
177
  ? `${markdown.slice(0, from)}${replacement}${markdown.slice(to)}`
168
178
  : undefined;
169
179
  const commit = {
180
+ previousRecord,
170
181
  record: cloneRecord(this.record),
171
182
  yaml,
172
183
  replacement,
@@ -0,0 +1,3 @@
1
+ /** Independent portable record authority for one rendered edit or commit. */
2
+ export declare function snapshotFrontmatterRecord(record: Readonly<Record<string, unknown>>): Readonly<Record<string, unknown>>;
3
+ //# sourceMappingURL=record-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-snapshot.d.ts","sourceRoot":"","sources":["../../../src/preview/frontmatter/record-snapshot.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASnC"}
@@ -0,0 +1,39 @@
1
+ /** Independent portable record authority for one rendered edit or commit. */
2
+ export function snapshotFrontmatterRecord(record) {
3
+ let snapshot;
4
+ try {
5
+ snapshot = JSON.parse(JSON.stringify(record));
6
+ }
7
+ catch {
8
+ snapshot = copyValue(record, new WeakMap());
9
+ }
10
+ freezeValue(snapshot, new WeakSet());
11
+ return snapshot;
12
+ }
13
+ function copyValue(value, seen) {
14
+ if (!value || typeof value !== "object")
15
+ return value;
16
+ if (value instanceof Date)
17
+ return value.toISOString();
18
+ const existing = seen.get(value);
19
+ if (existing)
20
+ return existing;
21
+ const copy = Array.isArray(value) ? [] : {};
22
+ seen.set(value, copy);
23
+ for (const [key, item] of Object.entries(value))
24
+ Object.defineProperty(copy, key, {
25
+ value: copyValue(item, seen),
26
+ enumerable: true,
27
+ writable: true,
28
+ configurable: true,
29
+ });
30
+ return copy;
31
+ }
32
+ function freezeValue(value, seen) {
33
+ if (!value || typeof value !== "object" || seen.has(value))
34
+ return;
35
+ seen.add(value);
36
+ for (const item of Object.values(value))
37
+ freezeValue(item, seen);
38
+ Object.freeze(value);
39
+ }
@@ -36,7 +36,7 @@ export type FrontmatterConfig = {
36
36
  propertySuggestions?: FrontmatterPropertySuggestionSource;
37
37
  valueSuggestions?: FrontmatterValueSuggestionSource;
38
38
  clipboard?: FrontmatterClipboard;
39
- onActionError?: (error: unknown, action: "copy" | "cut" | "paste" | "remove") => void;
39
+ onActionError?: (error: unknown, action: "copy" | "cut" | "paste" | "remove" | "edit") => void;
40
40
  };
41
41
  export type FrontmatterParseResult = {
42
42
  ok: true;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/preview/frontmatter/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/preview/frontmatter/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lapismd/mira",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Composable Markdown editor, extension SDK, preview renderer, and UI for Mira.",
5
5
  "author": "Steve Juma <help@lapis.md>",
6
6
  "license": "Apache-2.0",
@@ -87,7 +87,7 @@
87
87
  "@dnd-kit/svelte": "^0.4.0",
88
88
  "@fontsource/source-code-pro": "^5.2.7",
89
89
  "@lucide/svelte": "^0.525.0",
90
- "bits-ui": "2.19.5",
90
+ "bits-ui": "2.20.2",
91
91
  "clsx": "^2.1.1",
92
92
  "hast-util-to-text": "^4.0.2",
93
93
  "katex": "0.18.10",