[{"data":1,"prerenderedAt":1894},["ShallowReactive",2],{"quirekit-doc:\u002Fen\u002Fclassic\u002Ffiles":3,"quirekit-source:classic\u002Fpersistence\u002Fobserver.ts":643,"quirekit-source:classic\u002Fpersistence\u002Fsave.ts":644,"mdc--z4krew-key":645,"mdc-98idjt-key":1366},{"id":4,"title":5,"body":6,"description":631,"extension":632,"keywords":633,"locale":634,"meta":635,"navigation":636,"order":637,"path":638,"section":639,"seo":640,"stem":641,"__hash__":642},"docs\u002Fclassic\u002Ffiles.en.md","Save, open and convert files",{"type":7,"value":8,"toc":622},"minimark",[9,24,29,48,52,71,75,89,100,103,114,118,129,142,145,188,195,202,206,222,276,290,294,386,410,414,424,573,580,583,587,599,610,618],[10,11,12,13,17,18,23],"p",{},"Classic does not automatically write documents to your database. The application owns storage, document identity and unsaved indicators; the product exposes content and installed format services. Start with a mounted ",[14,15,16],"code",{},"instance"," from the ",[19,20,22],"a",{"href":21},"\u002Fen\u002Fclassic\u002Fquick-start","quick start",".",[25,26,28],"h2",{"id":27},"_1-observe-actual-document-changes","1. Observe actual document changes",[10,30,31,32,35,36,39,40,43,44,47],{},"A product plugin's ",[14,33,34],{},"onUpdate"," also runs for selection and interface refreshes. Subscribe to Core's ",[14,37,38],{},"update"," in ",[14,41,42],{},"onMount",", compare immutable document identities, and unsubscribe in ",[14,45,46],{},"onUnmount",". Structural updates rebind to the new Core; locale, editability and built-in theme updates retain the existing subscription.",[49,50],"docs-recipe",{"name":51},"classic\u002Fpersistence\u002Fobserver",[10,53,54,55,58,59,62,63,66,67,70],{},"Add ",[14,56,57],{},"createClassicDraftObserver(() => { dirty = true })"," to the instance's ",[14,60,61],{},"plugins",". ",[14,64,65],{},"dirty"," is application state; create a separate plugin object for each instance. The recipe avoids serializing the entire document per update and ignores editability-only changes. Restoration using ",[14,68,69],{},"emitUpdate: false"," must explicitly establish the host's saved baseline.",[25,72,74],{"id":73},"_2-save-a-specific-revision","2. Save a specific revision",[10,76,77,80,81,84,85,88],{},[14,78,79],{},"instance.getJSON()"," reads canonical content. Include your model, version and document ID in backups. Set the visible name with ",[14,82,83],{},"instance.setDocumentName(name)"," and persist it separately: ",[14,86,87],{},"getJSON()"," does not contain the product document name.",[10,90,91,92,95,96,99],{},"The Word draft recipe captures content before awaiting storage. A ",[14,93,94],{},"true"," result means the active page still owns that saved revision. ",[14,97,98],{},"false"," means writing succeeded but editing, remounting or exit occurred meanwhile; retain the unsaved indicator.",[49,101],{"name":102},"classic\u002Fpersistence\u002Fsave",[10,104,105,106,109,110,23],{},"Connect ",[14,107,108],{},"repository.write(source)"," to storage and reject on failure. Disable saving while pending, or serialize writes for the same document in the repository. This result protects UI acknowledgement; it cannot prevent out-of-order server writes. Shared editing additionally requires a version-conflict protocol. The recipe persists JSON only; image bytes need ",[19,111,113],{"href":112},"\u002Fen\u002Fbuild\u002Fresources","durable media services",[25,115,117],{"id":116},"_3-open-a-json-backup","3. Open a JSON backup",[10,119,120,121,124,125,128],{},"The built-in ",[14,122,123],{},"json"," service accepts raw canonical document JSON and strictly replaces through the same guarded commit. It does not decode the version\u002Fmodel\u002F",[14,126,127],{},"content"," envelope used by this page's business backup. Validate and unwrap that envelope in the application before following the opening flow below.",[10,130,131,132,136,137,141],{},"Read the original file, validate its model\u002Fversion, nodes, marks, attributes and Schema, then commit. See ",[19,133,135],{"href":134},"\u002Fen\u002Fguide\u002Fcontent","content validation"," and ",[19,138,140],{"href":139},"\u002Fen\u002Fbuild\u002Ffiles","file operations",". Invalid input must leave the current draft intact.",[10,143,144],{},"Before opening another business document, resolve unsaved changes and establish a new session:",[146,147,153],"pre",{"className":148,"code":149,"filename":150,"language":151,"meta":152,"style":152},"language-ts shiki shiki-themes github-light github-light github-dark","instance.update({ document: validatedContent })\ninstance.setDocumentName('Project notes')\n","Commit an already validated backup","ts","",[14,154,155,170],{"__ignoreMap":152},[156,157,160,164,167],"span",{"class":158,"line":159},"line",1,[156,161,163],{"class":162},"sVPnS","instance.",[156,165,38],{"class":166},"sgQzM",[156,168,169],{"class":162},"({ document: validatedContent })\n",[156,171,173,175,178,181,185],{"class":158,"line":172},2,[156,174,163],{"class":162},[156,176,177],{"class":166},"setDocumentName",[156,179,180],{"class":162},"(",[156,182,184],{"class":183},"s-HEn","'Project notes'",[156,186,187],{"class":162},")\n",[10,189,190,191,194],{},"This destroys the old Core and mounts the replacement document without preserving undo history. Plugins rebind through mount hooks. Switch application document ID, storage key and saved baseline together, and cancel old save work. Do not pass ",[14,192,193],{},"document"," repeatedly while typing.",[10,196,197,198,201],{},"To restore content within the existing session, Core's ",[14,199,200],{},"replaceDocument()"," also replaces root attributes and excludes this replacement from history. Its lifecycle differs from a new session.",[25,203,205],{"id":204},"_4-install-docx-dotx-services","4. Install DOCX \u002F DOTX services",[10,207,208,211,212,136,215,218,219,221],{},[14,209,210],{},"createClassicWordDocxPlugin()"," registers ",[14,213,214],{},"docx",[14,216,217],{},"dotx"," by default. Install it once through ",[14,220,61],{}," alongside the Word preset; selecting a preset alone does not register these services.",[146,223,226],{"className":148,"code":224,"filename":225,"language":151,"meta":152,"style":152},"plugins: [createClassicWordDocxPlugin({\n  onReport(report) {\n    showConversionReport(report.warnings, report.diagnostics)\n  },\n})]\n","Install through the quick start's plugins option",[14,227,228,241,255,264,270],{"__ignoreMap":152},[156,229,230,232,235,238],{"class":158,"line":159},[156,231,61],{"class":166},[156,233,234],{"class":162},": [",[156,236,237],{"class":166},"createClassicWordDocxPlugin",[156,239,240],{"class":162},"({\n",[156,242,243,246,248,252],{"class":158,"line":172},[156,244,245],{"class":166},"  onReport",[156,247,180],{"class":162},[156,249,251],{"class":250},"sde8i","report",[156,253,254],{"class":162},") {\n",[156,256,258,261],{"class":158,"line":257},3,[156,259,260],{"class":166},"    showConversionReport",[156,262,263],{"class":162},"(report.warnings, report.diagnostics)\n",[156,265,267],{"class":158,"line":266},4,[156,268,269],{"class":162},"  },\n",[156,271,273],{"class":158,"line":272},5,[156,274,275],{"class":162},"})]\n",[10,277,278,281,282,285,286,23],{},[14,279,280],{},"showConversionReport"," is your interface function. Present parser warnings and diagnostics describing approximation, preservation or loss. Successful import does not prove lossless conversion: invalid blocks can become plain text and report ",[14,283,284],{},"schema-invalid-block",". See ",[19,287,289],{"href":288},"\u002Fen\u002Fplugins\u002Freference\u002Fcreate-classic-word-docx-plugin","DOCX plugin options",[25,291,293],{"id":292},"_5-call-a-file-service","5. Call a file service",[146,295,298],{"className":148,"code":296,"filename":297,"language":151,"meta":152,"style":152},"await instance.importDocument('docx', {\n  data: new Uint8Array(await file.arrayBuffer()),\n  fileName: file.name,\n  mimeType: file.type,\n})\nconst artifact = await instance.exportDocument('docx')\n","Pass file bytes and obtain an export artifact",[14,299,300,320,344,349,354,359],{"__ignoreMap":152},[156,301,302,306,309,312,314,317],{"class":158,"line":159},[156,303,305],{"class":304},"sDD9d","await",[156,307,308],{"class":162}," instance.",[156,310,311],{"class":166},"importDocument",[156,313,180],{"class":162},[156,315,316],{"class":183},"'docx'",[156,318,319],{"class":162},", {\n",[156,321,322,325,328,331,333,335,338,341],{"class":158,"line":172},[156,323,324],{"class":162},"  data: ",[156,326,327],{"class":304},"new",[156,329,330],{"class":166}," Uint8Array",[156,332,180],{"class":162},[156,334,305],{"class":304},[156,336,337],{"class":162}," file.",[156,339,340],{"class":166},"arrayBuffer",[156,342,343],{"class":162},"()),\n",[156,345,346],{"class":158,"line":257},[156,347,348],{"class":162},"  fileName: file.name,\n",[156,350,351],{"class":158,"line":266},[156,352,353],{"class":162},"  mimeType: file.type,\n",[156,355,356],{"class":158,"line":272},[156,357,358],{"class":162},"})\n",[156,360,362,365,369,372,375,377,380,382,384],{"class":158,"line":361},6,[156,363,364],{"class":304},"const",[156,366,368],{"class":367},"sUNQB"," artifact",[156,370,371],{"class":304}," =",[156,373,374],{"class":304}," await",[156,376,308],{"class":162},[156,378,379],{"class":166},"exportDocument",[156,381,180],{"class":162},[156,383,316],{"class":183},[156,385,187],{"class":162},[10,387,388,391,392,395,396,398,399,402,403,136,406,409],{},[14,389,390],{},"file"," is a host-selected ",[14,393,394],{},"File",". DOCX accepts bytes rather than text; use the ",[14,397,217],{}," service ID for templates. Export returns ",[14,400,401],{},"data",", ",[14,404,405],{},"fileName",[14,407,408],{},"mimeType","; the host downloads or uploads the artifact. File generation does not acknowledge database storage. Missing services, unsupported operations and unmounted products reject the Promise; catch conversion errors as well.",[25,411,413],{"id":412},"_6-cancellation-and-stale-results","6. Cancellation and stale results",[10,415,416,419,420,423],{},[14,417,418],{},"importDocument()"," captures the current Core and document revision. A newer import, document edit (including edit then undo), editability update, unmount or destruction invalidates an older uncommitted import. Moving the caret does not invalidate content. Official DOCX import rechecks ownership at its synchronous commit boundary. Stale operations reject with ",[14,421,422],{},"AbortError",", preserving current content and name without a successful conversion report.",[146,425,428],{"className":148,"code":426,"filename":427,"language":151,"meta":152,"style":152},"const opening = new AbortController()\ntry {\n  const data = new Uint8Array(await file.arrayBuffer())\n  await instance.importDocument('docx', {\n    data, fileName: file.name, mimeType: file.type,\n  }, { signal: opening.signal })\n} catch (error) {\n  if (!(error instanceof DOMException && error.name === 'AbortError')) throw error\n}\n\u002F\u002F The host calls opening.abort() on cancellation, replacement or exit.\n","Cancel an open request",[14,429,430,448,456,481,496,501,506,518,560,566],{"__ignoreMap":152},[156,431,432,434,437,439,442,445],{"class":158,"line":159},[156,433,364],{"class":304},[156,435,436],{"class":367}," opening",[156,438,371],{"class":304},[156,440,441],{"class":304}," new",[156,443,444],{"class":166}," AbortController",[156,446,447],{"class":162},"()\n",[156,449,450,453],{"class":158,"line":172},[156,451,452],{"class":304},"try",[156,454,455],{"class":162}," {\n",[156,457,458,461,464,466,468,470,472,474,476,478],{"class":158,"line":257},[156,459,460],{"class":304},"  const",[156,462,463],{"class":367}," data",[156,465,371],{"class":304},[156,467,441],{"class":304},[156,469,330],{"class":166},[156,471,180],{"class":162},[156,473,305],{"class":304},[156,475,337],{"class":162},[156,477,340],{"class":166},[156,479,480],{"class":162},"())\n",[156,482,483,486,488,490,492,494],{"class":158,"line":266},[156,484,485],{"class":304},"  await",[156,487,308],{"class":162},[156,489,311],{"class":166},[156,491,180],{"class":162},[156,493,316],{"class":183},[156,495,319],{"class":162},[156,497,498],{"class":158,"line":272},[156,499,500],{"class":162},"    data, fileName: file.name, mimeType: file.type,\n",[156,502,503],{"class":158,"line":361},[156,504,505],{"class":162},"  }, { signal: opening.signal })\n",[156,507,509,512,515],{"class":158,"line":508},7,[156,510,511],{"class":162},"} ",[156,513,514],{"class":304},"catch",[156,516,517],{"class":162}," (error) {\n",[156,519,521,524,527,530,533,536,539,542,545,548,551,554,557],{"class":158,"line":520},8,[156,522,523],{"class":304},"  if",[156,525,526],{"class":162}," (",[156,528,529],{"class":304},"!",[156,531,532],{"class":162},"(error ",[156,534,535],{"class":304},"instanceof",[156,537,538],{"class":166}," DOMException",[156,540,541],{"class":304}," &&",[156,543,544],{"class":162}," error.name ",[156,546,547],{"class":304},"===",[156,549,550],{"class":183}," 'AbortError'",[156,552,553],{"class":162},")) ",[156,555,556],{"class":304},"throw",[156,558,559],{"class":162}," error\n",[156,561,563],{"class":158,"line":562},9,[156,564,565],{"class":162},"}\n",[156,567,569],{"class":158,"line":568},10,[156,570,572],{"class":571},"sqmzS","\u002F\u002F The host calls opening.abort() on cancellation, replacement or exit.\n",[10,574,575,576,579],{},"Create the controller before reading bytes. Cancel the preceding selection before reading another file, so a late ",[14,577,578],{},"arrayBuffer()"," cannot start an obsolete import. Abort ends the caller's wait promptly; a non-cooperative codec may finish parsing privately, but cannot commit a stale result. Cancellation after an accepted commit does not undo it.",[10,581,582],{},"Read-only state is checked at entry and before commit. The application still checks business authorization. Opening a different business document also requires dirty-state, storage-key and session management.",[25,584,586],{"id":585},"_7-migrate-custom-import-services","7. Migrate custom import services",[10,588,589,590,593,594,598],{},"Parse and validate first, then execute one synchronous command inside ",[14,591,592],{},"context.commit(() => editor.commands.replaceDocument(...))"," and report success afterwards. Do not pass an async callback or write outside commit. Runtime cannot roll back arbitrary side effects from an older plugin that bypasses this contract; upgrade it before depending on stale-result protection. See ",[19,595,597],{"href":596},"\u002Fen\u002Fclassic\u002Fapi","Classic API"," for the complete context.",[10,600,601,602,606,607,23],{},"Export snapshot timing belongs to each service; official DOCX export captures the starting document. See ",[19,603,605],{"href":604},"\u002Fen\u002Fclassic\u002Fmedia","durable media"," for staged images and cleanup. Custom Core products still use the ",[19,608,609],{"href":139},"host parse\u002Fvalidate\u002Fcommit flow",[10,611,612,613,617],{},"See ",[19,614,616],{"href":615},"\u002Fen\u002Fclassic\u002Freference","Classic instance and configuration reference"," for complete public fields.",[619,620,621],"style",{},"html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sde8i, html code.shiki .sde8i{--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sqmzS, html code.shiki .sqmzS{--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D}",{"title":152,"searchDepth":172,"depth":172,"links":623},[624,625,626,627,628,629,630],{"id":27,"depth":172,"text":28},{"id":73,"depth":172,"text":74},{"id":116,"depth":172,"text":117},{"id":204,"depth":172,"text":205},{"id":292,"depth":172,"text":293},{"id":412,"depth":172,"text":413},{"id":585,"depth":172,"text":586},"Connect unsaved state, versioned JSON and DOCX services while handling storage failures and conversion loss.","md",null,"en",{},true,-1,"\u002Fen\u002Fclassic\u002Ffiles","Classic development",{"title":5,"description":631},"classic\u002Ffiles.en","wSUoKVN_IKublZT_jBiCLUuEzXCLADQ9kPZ1xwCJaGc","import type { QuireEditor, QuireEditorUpdateEvent } from \"@quirekit\u002Fcore\";\nimport { defineClassicEditorPlugin } from \"@quirekit\u002Fclassic-editor\";\nimport type { ClassicEditorPlugin } from \"@quirekit\u002Fclassic-editor\";\n\n\u002F**\n * Observes document changes across product remounts without treating UI updates as edits.\n * @param onChange - Host callback that marks the current document as unsaved.\n * @returns Product plugin; create a separate plugin object for each Classic instance.\n *\u002F\nexport function createClassicDraftObserver(onChange: () => void): ClassicEditorPlugin {\n  let owner: QuireEditor | undefined;\n\n  \u002F** @param event - Accepted update, which can also represent an editability change. *\u002F\n  function onUpdate(event: QuireEditorUpdateEvent): void {\n    \u002F\u002F Core already suppresses equal-content updates; an editability notification\n    \u002F\u002F retains the same immutable document. The observer needs only identity.\n    if (event.previousState.doc !== event.editor.state.doc) onChange();\n  }\n\n  \u002F** Releases the subscription belonging to the previous mounted Core. *\u002F\n  function detach(): void {\n    owner?.off(\"update\", onUpdate);\n    owner = undefined;\n  }\n\n  return defineClassicEditorPlugin({\n    id: \"app.draft-observer\",\n    \u002F** @param context - Current mount, whose Core owns this subscription. *\u002F\n    onMount(context) {\n      detach();\n      owner = context.editor;\n      owner?.on(\"update\", onUpdate);\n    },\n    onUnmount: detach,\n    onDestroy: detach,\n  });\n}\n","import type { ClassicDraftOwner, ClassicDraftRepository } from \".\u002Ftypes\";\n\n\u002F**\n * Saves one revision without clearing changes made while storage was pending.\n * @param instance - Mounted product that owns the current document.\n * @param repository - Application storage; it must serialize writes for the same document.\n * @returns Whether the acknowledged revision still belongs to the active Core and document.\n *\u002F\nexport async function saveClassicDraft(\n  instance: ClassicDraftOwner,\n  repository: ClassicDraftRepository\n): Promise\u003Cboolean> {\n  const editor = instance.editor;\n  if (instance.isDestroyed || !editor || editor.isDestroyed) {\n    throw new Error(\"Mount the document before saving\");\n  }\n\n  \u002F\u002F Capture before awaiting: a later edit or product remount owns a different revision.\n  const document = editor.state.doc;\n  const source = JSON.stringify({ version: 1, model: \"word-v1\", content: instance.getJSON() });\n  await repository.write(source);\n\n  return !instance.isDestroyed && !editor.isDestroyed\n    && instance.editor === editor && editor.state.doc === document;\n}\n",{"data":646,"body":647},{},{"type":648,"children":649},"root",[650,1361],{"type":651,"tag":146,"props":652,"children":654},"element",{"className":148,"code":653,"language":151,"meta":152,"style":152},"import type { QuireEditor, QuireEditorUpdateEvent } from \"@quirekit\u002Fcore\";\nimport { defineClassicEditorPlugin } from \"@quirekit\u002Fclassic-editor\";\nimport type { ClassicEditorPlugin } from \"@quirekit\u002Fclassic-editor\";\n\n\u002F**\n * Observes document changes across product remounts without treating UI updates as edits.\n * @param onChange - Host callback that marks the current document as unsaved.\n * @returns Product plugin; create a separate plugin object for each Classic instance.\n *\u002F\nexport function createClassicDraftObserver(onChange: () => void): ClassicEditorPlugin {\n  let owner: QuireEditor | undefined;\n\n  \u002F** @param event - Accepted update, which can also represent an editability change. *\u002F\n  function onUpdate(event: QuireEditorUpdateEvent): void {\n    \u002F\u002F Core already suppresses equal-content updates; an editability notification\n    \u002F\u002F retains the same immutable document. The observer needs only identity.\n    if (event.previousState.doc !== event.editor.state.doc) onChange();\n  }\n\n  \u002F** Releases the subscription belonging to the previous mounted Core. *\u002F\n  function detach(): void {\n    owner?.off(\"update\", onUpdate);\n    owner = undefined;\n  }\n\n  return defineClassicEditorPlugin({\n    id: \"app.draft-observer\",\n    \u002F** @param context - Current mount, whose Core owns this subscription. *\u002F\n    onMount(context) {\n      detach();\n      owner = context.editor;\n      owner?.on(\"update\", onUpdate);\n    },\n    onUnmount: detach,\n    onDestroy: detach,\n  });\n}\n\n",[655],{"type":651,"tag":14,"props":656,"children":657},{"__ignoreMap":152},[658,695,720,748,756,765,773,796,813,821,888,925,933,956,1005,1014,1023,1056,1065,1073,1082,1112,1140,1162,1170,1178,1196,1215,1238,1260,1273,1291,1317,1326,1335,1344,1353],{"type":651,"tag":156,"props":659,"children":660},{"class":158,"line":159},[661,668,673,679,684,690],{"type":651,"tag":156,"props":662,"children":664},{"style":663},"--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583",[665],{"type":666,"value":667},"text","import",{"type":651,"tag":156,"props":669,"children":670},{"style":663},[671],{"type":666,"value":672}," type",{"type":651,"tag":156,"props":674,"children":676},{"style":675},"--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8",[677],{"type":666,"value":678}," { QuireEditor, QuireEditorUpdateEvent } ",{"type":651,"tag":156,"props":680,"children":681},{"style":663},[682],{"type":666,"value":683},"from",{"type":651,"tag":156,"props":685,"children":687},{"style":686},"--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF",[688],{"type":666,"value":689}," \"@quirekit\u002Fcore\"",{"type":651,"tag":156,"props":691,"children":692},{"style":675},[693],{"type":666,"value":694},";\n",{"type":651,"tag":156,"props":696,"children":697},{"class":158,"line":172},[698,702,707,711,716],{"type":651,"tag":156,"props":699,"children":700},{"style":663},[701],{"type":666,"value":667},{"type":651,"tag":156,"props":703,"children":704},{"style":675},[705],{"type":666,"value":706}," { defineClassicEditorPlugin } ",{"type":651,"tag":156,"props":708,"children":709},{"style":663},[710],{"type":666,"value":683},{"type":651,"tag":156,"props":712,"children":713},{"style":686},[714],{"type":666,"value":715}," \"@quirekit\u002Fclassic-editor\"",{"type":651,"tag":156,"props":717,"children":718},{"style":675},[719],{"type":666,"value":694},{"type":651,"tag":156,"props":721,"children":722},{"class":158,"line":257},[723,727,731,736,740,744],{"type":651,"tag":156,"props":724,"children":725},{"style":663},[726],{"type":666,"value":667},{"type":651,"tag":156,"props":728,"children":729},{"style":663},[730],{"type":666,"value":672},{"type":651,"tag":156,"props":732,"children":733},{"style":675},[734],{"type":666,"value":735}," { ClassicEditorPlugin } ",{"type":651,"tag":156,"props":737,"children":738},{"style":663},[739],{"type":666,"value":683},{"type":651,"tag":156,"props":741,"children":742},{"style":686},[743],{"type":666,"value":715},{"type":651,"tag":156,"props":745,"children":746},{"style":675},[747],{"type":666,"value":694},{"type":651,"tag":156,"props":749,"children":750},{"class":158,"line":266},[751],{"type":651,"tag":156,"props":752,"children":753},{"emptyLinePlaceholder":636},[754],{"type":666,"value":755},"\n",{"type":651,"tag":156,"props":757,"children":758},{"class":158,"line":272},[759],{"type":651,"tag":156,"props":760,"children":762},{"style":761},"--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D",[763],{"type":666,"value":764},"\u002F**\n",{"type":651,"tag":156,"props":766,"children":767},{"class":158,"line":361},[768],{"type":651,"tag":156,"props":769,"children":770},{"style":761},[771],{"type":666,"value":772}," * Observes document changes across product remounts without treating UI updates as edits.\n",{"type":651,"tag":156,"props":774,"children":775},{"class":158,"line":508},[776,781,786,791],{"type":651,"tag":156,"props":777,"children":778},{"style":761},[779],{"type":666,"value":780}," * ",{"type":651,"tag":156,"props":782,"children":783},{"style":663},[784],{"type":666,"value":785},"@param",{"type":651,"tag":156,"props":787,"children":788},{"style":675},[789],{"type":666,"value":790}," onChange",{"type":651,"tag":156,"props":792,"children":793},{"style":761},[794],{"type":666,"value":795}," - Host callback that marks the current document as unsaved.\n",{"type":651,"tag":156,"props":797,"children":798},{"class":158,"line":520},[799,803,808],{"type":651,"tag":156,"props":800,"children":801},{"style":761},[802],{"type":666,"value":780},{"type":651,"tag":156,"props":804,"children":805},{"style":663},[806],{"type":666,"value":807},"@returns",{"type":651,"tag":156,"props":809,"children":810},{"style":761},[811],{"type":666,"value":812}," Product plugin; create a separate plugin object for each Classic instance.\n",{"type":651,"tag":156,"props":814,"children":815},{"class":158,"line":562},[816],{"type":651,"tag":156,"props":817,"children":818},{"style":761},[819],{"type":666,"value":820}," *\u002F\n",{"type":651,"tag":156,"props":822,"children":823},{"class":158,"line":568},[824,829,834,840,844,849,854,859,864,870,875,879,884],{"type":651,"tag":156,"props":825,"children":826},{"style":663},[827],{"type":666,"value":828},"export",{"type":651,"tag":156,"props":830,"children":831},{"style":663},[832],{"type":666,"value":833}," function",{"type":651,"tag":156,"props":835,"children":837},{"style":836},"--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0",[838],{"type":666,"value":839}," createClassicDraftObserver",{"type":651,"tag":156,"props":841,"children":842},{"style":675},[843],{"type":666,"value":180},{"type":651,"tag":156,"props":845,"children":846},{"style":836},[847],{"type":666,"value":848},"onChange",{"type":651,"tag":156,"props":850,"children":851},{"style":663},[852],{"type":666,"value":853},":",{"type":651,"tag":156,"props":855,"children":856},{"style":675},[857],{"type":666,"value":858}," () ",{"type":651,"tag":156,"props":860,"children":861},{"style":663},[862],{"type":666,"value":863},"=>",{"type":651,"tag":156,"props":865,"children":867},{"style":866},"--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF",[868],{"type":666,"value":869}," void",{"type":651,"tag":156,"props":871,"children":872},{"style":675},[873],{"type":666,"value":874},")",{"type":651,"tag":156,"props":876,"children":877},{"style":663},[878],{"type":666,"value":853},{"type":651,"tag":156,"props":880,"children":881},{"style":836},[882],{"type":666,"value":883}," ClassicEditorPlugin",{"type":651,"tag":156,"props":885,"children":886},{"style":675},[887],{"type":666,"value":455},{"type":651,"tag":156,"props":889,"children":891},{"class":158,"line":890},11,[892,897,902,906,911,916,921],{"type":651,"tag":156,"props":893,"children":894},{"style":663},[895],{"type":666,"value":896},"  let",{"type":651,"tag":156,"props":898,"children":899},{"style":675},[900],{"type":666,"value":901}," owner",{"type":651,"tag":156,"props":903,"children":904},{"style":663},[905],{"type":666,"value":853},{"type":651,"tag":156,"props":907,"children":908},{"style":836},[909],{"type":666,"value":910}," QuireEditor",{"type":651,"tag":156,"props":912,"children":913},{"style":663},[914],{"type":666,"value":915}," |",{"type":651,"tag":156,"props":917,"children":918},{"style":866},[919],{"type":666,"value":920}," undefined",{"type":651,"tag":156,"props":922,"children":923},{"style":675},[924],{"type":666,"value":694},{"type":651,"tag":156,"props":926,"children":928},{"class":158,"line":927},12,[929],{"type":651,"tag":156,"props":930,"children":931},{"emptyLinePlaceholder":636},[932],{"type":666,"value":755},{"type":651,"tag":156,"props":934,"children":936},{"class":158,"line":935},13,[937,942,946,951],{"type":651,"tag":156,"props":938,"children":939},{"style":761},[940],{"type":666,"value":941},"  \u002F** ",{"type":651,"tag":156,"props":943,"children":944},{"style":663},[945],{"type":666,"value":785},{"type":651,"tag":156,"props":947,"children":948},{"style":675},[949],{"type":666,"value":950}," event",{"type":651,"tag":156,"props":952,"children":953},{"style":761},[954],{"type":666,"value":955}," - Accepted update, which can also represent an editability change. *\u002F\n",{"type":651,"tag":156,"props":957,"children":959},{"class":158,"line":958},14,[960,965,970,974,980,984,989,993,997,1001],{"type":651,"tag":156,"props":961,"children":962},{"style":663},[963],{"type":666,"value":964},"  function",{"type":651,"tag":156,"props":966,"children":967},{"style":836},[968],{"type":666,"value":969}," onUpdate",{"type":651,"tag":156,"props":971,"children":972},{"style":675},[973],{"type":666,"value":180},{"type":651,"tag":156,"props":975,"children":977},{"style":976},"--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70",[978],{"type":666,"value":979},"event",{"type":651,"tag":156,"props":981,"children":982},{"style":663},[983],{"type":666,"value":853},{"type":651,"tag":156,"props":985,"children":986},{"style":836},[987],{"type":666,"value":988}," QuireEditorUpdateEvent",{"type":651,"tag":156,"props":990,"children":991},{"style":675},[992],{"type":666,"value":874},{"type":651,"tag":156,"props":994,"children":995},{"style":663},[996],{"type":666,"value":853},{"type":651,"tag":156,"props":998,"children":999},{"style":866},[1000],{"type":666,"value":869},{"type":651,"tag":156,"props":1002,"children":1003},{"style":675},[1004],{"type":666,"value":455},{"type":651,"tag":156,"props":1006,"children":1008},{"class":158,"line":1007},15,[1009],{"type":651,"tag":156,"props":1010,"children":1011},{"style":761},[1012],{"type":666,"value":1013},"    \u002F\u002F Core already suppresses equal-content updates; an editability notification\n",{"type":651,"tag":156,"props":1015,"children":1017},{"class":158,"line":1016},16,[1018],{"type":651,"tag":156,"props":1019,"children":1020},{"style":761},[1021],{"type":666,"value":1022},"    \u002F\u002F retains the same immutable document. The observer needs only identity.\n",{"type":651,"tag":156,"props":1024,"children":1026},{"class":158,"line":1025},17,[1027,1032,1037,1042,1047,1051],{"type":651,"tag":156,"props":1028,"children":1029},{"style":663},[1030],{"type":666,"value":1031},"    if",{"type":651,"tag":156,"props":1033,"children":1034},{"style":675},[1035],{"type":666,"value":1036}," (event.previousState.doc ",{"type":651,"tag":156,"props":1038,"children":1039},{"style":663},[1040],{"type":666,"value":1041},"!==",{"type":651,"tag":156,"props":1043,"children":1044},{"style":675},[1045],{"type":666,"value":1046}," event.editor.state.doc) ",{"type":651,"tag":156,"props":1048,"children":1049},{"style":836},[1050],{"type":666,"value":848},{"type":651,"tag":156,"props":1052,"children":1053},{"style":675},[1054],{"type":666,"value":1055},"();\n",{"type":651,"tag":156,"props":1057,"children":1059},{"class":158,"line":1058},18,[1060],{"type":651,"tag":156,"props":1061,"children":1062},{"style":675},[1063],{"type":666,"value":1064},"  }\n",{"type":651,"tag":156,"props":1066,"children":1068},{"class":158,"line":1067},19,[1069],{"type":651,"tag":156,"props":1070,"children":1071},{"emptyLinePlaceholder":636},[1072],{"type":666,"value":755},{"type":651,"tag":156,"props":1074,"children":1076},{"class":158,"line":1075},20,[1077],{"type":651,"tag":156,"props":1078,"children":1079},{"style":761},[1080],{"type":666,"value":1081},"  \u002F** Releases the subscription belonging to the previous mounted Core. *\u002F\n",{"type":651,"tag":156,"props":1083,"children":1085},{"class":158,"line":1084},21,[1086,1090,1095,1100,1104,1108],{"type":651,"tag":156,"props":1087,"children":1088},{"style":663},[1089],{"type":666,"value":964},{"type":651,"tag":156,"props":1091,"children":1092},{"style":836},[1093],{"type":666,"value":1094}," detach",{"type":651,"tag":156,"props":1096,"children":1097},{"style":675},[1098],{"type":666,"value":1099},"()",{"type":651,"tag":156,"props":1101,"children":1102},{"style":663},[1103],{"type":666,"value":853},{"type":651,"tag":156,"props":1105,"children":1106},{"style":866},[1107],{"type":666,"value":869},{"type":651,"tag":156,"props":1109,"children":1110},{"style":675},[1111],{"type":666,"value":455},{"type":651,"tag":156,"props":1113,"children":1115},{"class":158,"line":1114},22,[1116,1121,1126,1130,1135],{"type":651,"tag":156,"props":1117,"children":1118},{"style":675},[1119],{"type":666,"value":1120},"    owner?.",{"type":651,"tag":156,"props":1122,"children":1123},{"style":836},[1124],{"type":666,"value":1125},"off",{"type":651,"tag":156,"props":1127,"children":1128},{"style":675},[1129],{"type":666,"value":180},{"type":651,"tag":156,"props":1131,"children":1132},{"style":686},[1133],{"type":666,"value":1134},"\"update\"",{"type":651,"tag":156,"props":1136,"children":1137},{"style":675},[1138],{"type":666,"value":1139},", onUpdate);\n",{"type":651,"tag":156,"props":1141,"children":1143},{"class":158,"line":1142},23,[1144,1149,1154,1158],{"type":651,"tag":156,"props":1145,"children":1146},{"style":675},[1147],{"type":666,"value":1148},"    owner ",{"type":651,"tag":156,"props":1150,"children":1151},{"style":663},[1152],{"type":666,"value":1153},"=",{"type":651,"tag":156,"props":1155,"children":1156},{"style":866},[1157],{"type":666,"value":920},{"type":651,"tag":156,"props":1159,"children":1160},{"style":675},[1161],{"type":666,"value":694},{"type":651,"tag":156,"props":1163,"children":1165},{"class":158,"line":1164},24,[1166],{"type":651,"tag":156,"props":1167,"children":1168},{"style":675},[1169],{"type":666,"value":1064},{"type":651,"tag":156,"props":1171,"children":1173},{"class":158,"line":1172},25,[1174],{"type":651,"tag":156,"props":1175,"children":1176},{"emptyLinePlaceholder":636},[1177],{"type":666,"value":755},{"type":651,"tag":156,"props":1179,"children":1181},{"class":158,"line":1180},26,[1182,1187,1192],{"type":651,"tag":156,"props":1183,"children":1184},{"style":663},[1185],{"type":666,"value":1186},"  return",{"type":651,"tag":156,"props":1188,"children":1189},{"style":836},[1190],{"type":666,"value":1191}," defineClassicEditorPlugin",{"type":651,"tag":156,"props":1193,"children":1194},{"style":675},[1195],{"type":666,"value":240},{"type":651,"tag":156,"props":1197,"children":1199},{"class":158,"line":1198},27,[1200,1205,1210],{"type":651,"tag":156,"props":1201,"children":1202},{"style":675},[1203],{"type":666,"value":1204},"    id: ",{"type":651,"tag":156,"props":1206,"children":1207},{"style":686},[1208],{"type":666,"value":1209},"\"app.draft-observer\"",{"type":651,"tag":156,"props":1211,"children":1212},{"style":675},[1213],{"type":666,"value":1214},",\n",{"type":651,"tag":156,"props":1216,"children":1218},{"class":158,"line":1217},28,[1219,1224,1228,1233],{"type":651,"tag":156,"props":1220,"children":1221},{"style":761},[1222],{"type":666,"value":1223},"    \u002F** ",{"type":651,"tag":156,"props":1225,"children":1226},{"style":663},[1227],{"type":666,"value":785},{"type":651,"tag":156,"props":1229,"children":1230},{"style":675},[1231],{"type":666,"value":1232}," context",{"type":651,"tag":156,"props":1234,"children":1235},{"style":761},[1236],{"type":666,"value":1237}," - Current mount, whose Core owns this subscription. *\u002F\n",{"type":651,"tag":156,"props":1239,"children":1241},{"class":158,"line":1240},29,[1242,1247,1251,1256],{"type":651,"tag":156,"props":1243,"children":1244},{"style":836},[1245],{"type":666,"value":1246},"    onMount",{"type":651,"tag":156,"props":1248,"children":1249},{"style":675},[1250],{"type":666,"value":180},{"type":651,"tag":156,"props":1252,"children":1253},{"style":976},[1254],{"type":666,"value":1255},"context",{"type":651,"tag":156,"props":1257,"children":1258},{"style":675},[1259],{"type":666,"value":254},{"type":651,"tag":156,"props":1261,"children":1263},{"class":158,"line":1262},30,[1264,1269],{"type":651,"tag":156,"props":1265,"children":1266},{"style":836},[1267],{"type":666,"value":1268},"      detach",{"type":651,"tag":156,"props":1270,"children":1271},{"style":675},[1272],{"type":666,"value":1055},{"type":651,"tag":156,"props":1274,"children":1276},{"class":158,"line":1275},31,[1277,1282,1286],{"type":651,"tag":156,"props":1278,"children":1279},{"style":675},[1280],{"type":666,"value":1281},"      owner ",{"type":651,"tag":156,"props":1283,"children":1284},{"style":663},[1285],{"type":666,"value":1153},{"type":651,"tag":156,"props":1287,"children":1288},{"style":675},[1289],{"type":666,"value":1290}," context.editor;\n",{"type":651,"tag":156,"props":1292,"children":1294},{"class":158,"line":1293},32,[1295,1300,1305,1309,1313],{"type":651,"tag":156,"props":1296,"children":1297},{"style":675},[1298],{"type":666,"value":1299},"      owner?.",{"type":651,"tag":156,"props":1301,"children":1302},{"style":836},[1303],{"type":666,"value":1304},"on",{"type":651,"tag":156,"props":1306,"children":1307},{"style":675},[1308],{"type":666,"value":180},{"type":651,"tag":156,"props":1310,"children":1311},{"style":686},[1312],{"type":666,"value":1134},{"type":651,"tag":156,"props":1314,"children":1315},{"style":675},[1316],{"type":666,"value":1139},{"type":651,"tag":156,"props":1318,"children":1320},{"class":158,"line":1319},33,[1321],{"type":651,"tag":156,"props":1322,"children":1323},{"style":675},[1324],{"type":666,"value":1325},"    },\n",{"type":651,"tag":156,"props":1327,"children":1329},{"class":158,"line":1328},34,[1330],{"type":651,"tag":156,"props":1331,"children":1332},{"style":675},[1333],{"type":666,"value":1334},"    onUnmount: detach,\n",{"type":651,"tag":156,"props":1336,"children":1338},{"class":158,"line":1337},35,[1339],{"type":651,"tag":156,"props":1340,"children":1341},{"style":675},[1342],{"type":666,"value":1343},"    onDestroy: detach,\n",{"type":651,"tag":156,"props":1345,"children":1347},{"class":158,"line":1346},36,[1348],{"type":651,"tag":156,"props":1349,"children":1350},{"style":675},[1351],{"type":666,"value":1352},"  });\n",{"type":651,"tag":156,"props":1354,"children":1356},{"class":158,"line":1355},37,[1357],{"type":651,"tag":156,"props":1358,"children":1359},{"style":675},[1360],{"type":666,"value":565},{"type":651,"tag":619,"props":1362,"children":1363},{},[1364],{"type":666,"value":1365},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"data":1367,"body":1368},{},{"type":648,"children":1369},[1370,1890],{"type":651,"tag":146,"props":1371,"children":1373},{"className":148,"code":1372,"language":151,"meta":152,"style":152},"import type { ClassicDraftOwner, ClassicDraftRepository } from \".\u002Ftypes\";\n\n\u002F**\n * Saves one revision without clearing changes made while storage was pending.\n * @param instance - Mounted product that owns the current document.\n * @param repository - Application storage; it must serialize writes for the same document.\n * @returns Whether the acknowledged revision still belongs to the active Core and document.\n *\u002F\nexport async function saveClassicDraft(\n  instance: ClassicDraftOwner,\n  repository: ClassicDraftRepository\n): Promise\u003Cboolean> {\n  const editor = instance.editor;\n  if (instance.isDestroyed || !editor || editor.isDestroyed) {\n    throw new Error(\"Mount the document before saving\");\n  }\n\n  \u002F\u002F Capture before awaiting: a later edit or product remount owns a different revision.\n  const document = editor.state.doc;\n  const source = JSON.stringify({ version: 1, model: \"word-v1\", content: instance.getJSON() });\n  await repository.write(source);\n\n  return !instance.isDestroyed && !editor.isDestroyed\n    && instance.editor === editor && editor.state.doc === document;\n}\n\n",[1374],{"type":651,"tag":14,"props":1375,"children":1376},{"__ignoreMap":152},[1377,1406,1413,1420,1428,1449,1470,1486,1493,1519,1540,1557,1588,1609,1645,1676,1683,1690,1698,1719,1784,1806,1813,1843,1883],{"type":651,"tag":156,"props":1378,"children":1379},{"class":158,"line":159},[1380,1384,1388,1393,1397,1402],{"type":651,"tag":156,"props":1381,"children":1382},{"style":663},[1383],{"type":666,"value":667},{"type":651,"tag":156,"props":1385,"children":1386},{"style":663},[1387],{"type":666,"value":672},{"type":651,"tag":156,"props":1389,"children":1390},{"style":675},[1391],{"type":666,"value":1392}," { ClassicDraftOwner, ClassicDraftRepository } ",{"type":651,"tag":156,"props":1394,"children":1395},{"style":663},[1396],{"type":666,"value":683},{"type":651,"tag":156,"props":1398,"children":1399},{"style":686},[1400],{"type":666,"value":1401}," \".\u002Ftypes\"",{"type":651,"tag":156,"props":1403,"children":1404},{"style":675},[1405],{"type":666,"value":694},{"type":651,"tag":156,"props":1407,"children":1408},{"class":158,"line":172},[1409],{"type":651,"tag":156,"props":1410,"children":1411},{"emptyLinePlaceholder":636},[1412],{"type":666,"value":755},{"type":651,"tag":156,"props":1414,"children":1415},{"class":158,"line":257},[1416],{"type":651,"tag":156,"props":1417,"children":1418},{"style":761},[1419],{"type":666,"value":764},{"type":651,"tag":156,"props":1421,"children":1422},{"class":158,"line":266},[1423],{"type":651,"tag":156,"props":1424,"children":1425},{"style":761},[1426],{"type":666,"value":1427}," * Saves one revision without clearing changes made while storage was pending.\n",{"type":651,"tag":156,"props":1429,"children":1430},{"class":158,"line":272},[1431,1435,1439,1444],{"type":651,"tag":156,"props":1432,"children":1433},{"style":761},[1434],{"type":666,"value":780},{"type":651,"tag":156,"props":1436,"children":1437},{"style":663},[1438],{"type":666,"value":785},{"type":651,"tag":156,"props":1440,"children":1441},{"style":675},[1442],{"type":666,"value":1443}," instance",{"type":651,"tag":156,"props":1445,"children":1446},{"style":761},[1447],{"type":666,"value":1448}," - Mounted product that owns the current document.\n",{"type":651,"tag":156,"props":1450,"children":1451},{"class":158,"line":361},[1452,1456,1460,1465],{"type":651,"tag":156,"props":1453,"children":1454},{"style":761},[1455],{"type":666,"value":780},{"type":651,"tag":156,"props":1457,"children":1458},{"style":663},[1459],{"type":666,"value":785},{"type":651,"tag":156,"props":1461,"children":1462},{"style":675},[1463],{"type":666,"value":1464}," repository",{"type":651,"tag":156,"props":1466,"children":1467},{"style":761},[1468],{"type":666,"value":1469}," - Application storage; it must serialize writes for the same document.\n",{"type":651,"tag":156,"props":1471,"children":1472},{"class":158,"line":508},[1473,1477,1481],{"type":651,"tag":156,"props":1474,"children":1475},{"style":761},[1476],{"type":666,"value":780},{"type":651,"tag":156,"props":1478,"children":1479},{"style":663},[1480],{"type":666,"value":807},{"type":651,"tag":156,"props":1482,"children":1483},{"style":761},[1484],{"type":666,"value":1485}," Whether the acknowledged revision still belongs to the active Core and document.\n",{"type":651,"tag":156,"props":1487,"children":1488},{"class":158,"line":520},[1489],{"type":651,"tag":156,"props":1490,"children":1491},{"style":761},[1492],{"type":666,"value":820},{"type":651,"tag":156,"props":1494,"children":1495},{"class":158,"line":562},[1496,1500,1505,1509,1514],{"type":651,"tag":156,"props":1497,"children":1498},{"style":663},[1499],{"type":666,"value":828},{"type":651,"tag":156,"props":1501,"children":1502},{"style":663},[1503],{"type":666,"value":1504}," async",{"type":651,"tag":156,"props":1506,"children":1507},{"style":663},[1508],{"type":666,"value":833},{"type":651,"tag":156,"props":1510,"children":1511},{"style":836},[1512],{"type":666,"value":1513}," saveClassicDraft",{"type":651,"tag":156,"props":1515,"children":1516},{"style":675},[1517],{"type":666,"value":1518},"(\n",{"type":651,"tag":156,"props":1520,"children":1521},{"class":158,"line":568},[1522,1527,1531,1536],{"type":651,"tag":156,"props":1523,"children":1524},{"style":976},[1525],{"type":666,"value":1526},"  instance",{"type":651,"tag":156,"props":1528,"children":1529},{"style":663},[1530],{"type":666,"value":853},{"type":651,"tag":156,"props":1532,"children":1533},{"style":836},[1534],{"type":666,"value":1535}," ClassicDraftOwner",{"type":651,"tag":156,"props":1537,"children":1538},{"style":675},[1539],{"type":666,"value":1214},{"type":651,"tag":156,"props":1541,"children":1542},{"class":158,"line":890},[1543,1548,1552],{"type":651,"tag":156,"props":1544,"children":1545},{"style":976},[1546],{"type":666,"value":1547},"  repository",{"type":651,"tag":156,"props":1549,"children":1550},{"style":663},[1551],{"type":666,"value":853},{"type":651,"tag":156,"props":1553,"children":1554},{"style":836},[1555],{"type":666,"value":1556}," ClassicDraftRepository\n",{"type":651,"tag":156,"props":1558,"children":1559},{"class":158,"line":927},[1560,1564,1568,1573,1578,1583],{"type":651,"tag":156,"props":1561,"children":1562},{"style":675},[1563],{"type":666,"value":874},{"type":651,"tag":156,"props":1565,"children":1566},{"style":663},[1567],{"type":666,"value":853},{"type":651,"tag":156,"props":1569,"children":1570},{"style":836},[1571],{"type":666,"value":1572}," Promise",{"type":651,"tag":156,"props":1574,"children":1575},{"style":675},[1576],{"type":666,"value":1577},"\u003C",{"type":651,"tag":156,"props":1579,"children":1580},{"style":866},[1581],{"type":666,"value":1582},"boolean",{"type":651,"tag":156,"props":1584,"children":1585},{"style":675},[1586],{"type":666,"value":1587},"> {\n",{"type":651,"tag":156,"props":1589,"children":1590},{"class":158,"line":935},[1591,1595,1600,1604],{"type":651,"tag":156,"props":1592,"children":1593},{"style":663},[1594],{"type":666,"value":460},{"type":651,"tag":156,"props":1596,"children":1597},{"style":866},[1598],{"type":666,"value":1599}," editor",{"type":651,"tag":156,"props":1601,"children":1602},{"style":663},[1603],{"type":666,"value":371},{"type":651,"tag":156,"props":1605,"children":1606},{"style":675},[1607],{"type":666,"value":1608}," instance.editor;\n",{"type":651,"tag":156,"props":1610,"children":1611},{"class":158,"line":958},[1612,1616,1621,1626,1631,1636,1640],{"type":651,"tag":156,"props":1613,"children":1614},{"style":663},[1615],{"type":666,"value":523},{"type":651,"tag":156,"props":1617,"children":1618},{"style":675},[1619],{"type":666,"value":1620}," (instance.isDestroyed ",{"type":651,"tag":156,"props":1622,"children":1623},{"style":663},[1624],{"type":666,"value":1625},"||",{"type":651,"tag":156,"props":1627,"children":1628},{"style":663},[1629],{"type":666,"value":1630}," !",{"type":651,"tag":156,"props":1632,"children":1633},{"style":675},[1634],{"type":666,"value":1635},"editor ",{"type":651,"tag":156,"props":1637,"children":1638},{"style":663},[1639],{"type":666,"value":1625},{"type":651,"tag":156,"props":1641,"children":1642},{"style":675},[1643],{"type":666,"value":1644}," editor.isDestroyed) {\n",{"type":651,"tag":156,"props":1646,"children":1647},{"class":158,"line":1007},[1648,1653,1657,1662,1666,1671],{"type":651,"tag":156,"props":1649,"children":1650},{"style":663},[1651],{"type":666,"value":1652},"    throw",{"type":651,"tag":156,"props":1654,"children":1655},{"style":663},[1656],{"type":666,"value":441},{"type":651,"tag":156,"props":1658,"children":1659},{"style":836},[1660],{"type":666,"value":1661}," Error",{"type":651,"tag":156,"props":1663,"children":1664},{"style":675},[1665],{"type":666,"value":180},{"type":651,"tag":156,"props":1667,"children":1668},{"style":686},[1669],{"type":666,"value":1670},"\"Mount the document before saving\"",{"type":651,"tag":156,"props":1672,"children":1673},{"style":675},[1674],{"type":666,"value":1675},");\n",{"type":651,"tag":156,"props":1677,"children":1678},{"class":158,"line":1016},[1679],{"type":651,"tag":156,"props":1680,"children":1681},{"style":675},[1682],{"type":666,"value":1064},{"type":651,"tag":156,"props":1684,"children":1685},{"class":158,"line":1025},[1686],{"type":651,"tag":156,"props":1687,"children":1688},{"emptyLinePlaceholder":636},[1689],{"type":666,"value":755},{"type":651,"tag":156,"props":1691,"children":1692},{"class":158,"line":1058},[1693],{"type":651,"tag":156,"props":1694,"children":1695},{"style":761},[1696],{"type":666,"value":1697},"  \u002F\u002F Capture before awaiting: a later edit or product remount owns a different revision.\n",{"type":651,"tag":156,"props":1699,"children":1700},{"class":158,"line":1067},[1701,1705,1710,1714],{"type":651,"tag":156,"props":1702,"children":1703},{"style":663},[1704],{"type":666,"value":460},{"type":651,"tag":156,"props":1706,"children":1707},{"style":866},[1708],{"type":666,"value":1709}," document",{"type":651,"tag":156,"props":1711,"children":1712},{"style":663},[1713],{"type":666,"value":371},{"type":651,"tag":156,"props":1715,"children":1716},{"style":675},[1717],{"type":666,"value":1718}," editor.state.doc;\n",{"type":651,"tag":156,"props":1720,"children":1721},{"class":158,"line":1075},[1722,1726,1731,1735,1740,1744,1749,1754,1759,1764,1769,1774,1779],{"type":651,"tag":156,"props":1723,"children":1724},{"style":663},[1725],{"type":666,"value":460},{"type":651,"tag":156,"props":1727,"children":1728},{"style":866},[1729],{"type":666,"value":1730}," source",{"type":651,"tag":156,"props":1732,"children":1733},{"style":663},[1734],{"type":666,"value":371},{"type":651,"tag":156,"props":1736,"children":1737},{"style":866},[1738],{"type":666,"value":1739}," JSON",{"type":651,"tag":156,"props":1741,"children":1742},{"style":675},[1743],{"type":666,"value":23},{"type":651,"tag":156,"props":1745,"children":1746},{"style":836},[1747],{"type":666,"value":1748},"stringify",{"type":651,"tag":156,"props":1750,"children":1751},{"style":675},[1752],{"type":666,"value":1753},"({ version: ",{"type":651,"tag":156,"props":1755,"children":1756},{"style":866},[1757],{"type":666,"value":1758},"1",{"type":651,"tag":156,"props":1760,"children":1761},{"style":675},[1762],{"type":666,"value":1763},", model: ",{"type":651,"tag":156,"props":1765,"children":1766},{"style":686},[1767],{"type":666,"value":1768},"\"word-v1\"",{"type":651,"tag":156,"props":1770,"children":1771},{"style":675},[1772],{"type":666,"value":1773},", content: instance.",{"type":651,"tag":156,"props":1775,"children":1776},{"style":836},[1777],{"type":666,"value":1778},"getJSON",{"type":651,"tag":156,"props":1780,"children":1781},{"style":675},[1782],{"type":666,"value":1783},"() });\n",{"type":651,"tag":156,"props":1785,"children":1786},{"class":158,"line":1084},[1787,1791,1796,1801],{"type":651,"tag":156,"props":1788,"children":1789},{"style":663},[1790],{"type":666,"value":485},{"type":651,"tag":156,"props":1792,"children":1793},{"style":675},[1794],{"type":666,"value":1795}," repository.",{"type":651,"tag":156,"props":1797,"children":1798},{"style":836},[1799],{"type":666,"value":1800},"write",{"type":651,"tag":156,"props":1802,"children":1803},{"style":675},[1804],{"type":666,"value":1805},"(source);\n",{"type":651,"tag":156,"props":1807,"children":1808},{"class":158,"line":1114},[1809],{"type":651,"tag":156,"props":1810,"children":1811},{"emptyLinePlaceholder":636},[1812],{"type":666,"value":755},{"type":651,"tag":156,"props":1814,"children":1815},{"class":158,"line":1142},[1816,1820,1824,1829,1834,1838],{"type":651,"tag":156,"props":1817,"children":1818},{"style":663},[1819],{"type":666,"value":1186},{"type":651,"tag":156,"props":1821,"children":1822},{"style":663},[1823],{"type":666,"value":1630},{"type":651,"tag":156,"props":1825,"children":1826},{"style":675},[1827],{"type":666,"value":1828},"instance.isDestroyed ",{"type":651,"tag":156,"props":1830,"children":1831},{"style":663},[1832],{"type":666,"value":1833},"&&",{"type":651,"tag":156,"props":1835,"children":1836},{"style":663},[1837],{"type":666,"value":1630},{"type":651,"tag":156,"props":1839,"children":1840},{"style":675},[1841],{"type":666,"value":1842},"editor.isDestroyed\n",{"type":651,"tag":156,"props":1844,"children":1845},{"class":158,"line":1164},[1846,1851,1856,1860,1865,1869,1874,1878],{"type":651,"tag":156,"props":1847,"children":1848},{"style":663},[1849],{"type":666,"value":1850},"    &&",{"type":651,"tag":156,"props":1852,"children":1853},{"style":675},[1854],{"type":666,"value":1855}," instance.editor ",{"type":651,"tag":156,"props":1857,"children":1858},{"style":663},[1859],{"type":666,"value":547},{"type":651,"tag":156,"props":1861,"children":1862},{"style":675},[1863],{"type":666,"value":1864}," editor ",{"type":651,"tag":156,"props":1866,"children":1867},{"style":663},[1868],{"type":666,"value":1833},{"type":651,"tag":156,"props":1870,"children":1871},{"style":675},[1872],{"type":666,"value":1873}," editor.state.doc ",{"type":651,"tag":156,"props":1875,"children":1876},{"style":663},[1877],{"type":666,"value":547},{"type":651,"tag":156,"props":1879,"children":1880},{"style":675},[1881],{"type":666,"value":1882}," document;\n",{"type":651,"tag":156,"props":1884,"children":1885},{"class":158,"line":1172},[1886],{"type":651,"tag":156,"props":1887,"children":1888},{"style":675},[1889],{"type":666,"value":565},{"type":651,"tag":619,"props":1891,"children":1892},{},[1893],{"type":666,"value":1365},1793045225291]