[{"data":1,"prerenderedAt":636},["ShallowReactive",2],{"quirekit-doc:\u002Fen\u002Fguide\u002Ftiptap":3,"quirekit-source:core\u002Fshortcuts.ts":385,"mdc-5ht98-key":386},{"id":4,"title":5,"body":6,"description":374,"extension":375,"keywords":376,"locale":377,"meta":378,"navigation":379,"order":367,"path":380,"section":381,"seo":382,"stem":383,"__hash__":384},"docs\u002Fguide\u002Ftiptap.en.md","The Tiptap relationship",{"type":7,"value":8,"toc":365},"minimark",[9,22,27,58,62,195,210,214,310,313,317,320,324,337,341],[10,11,12,13,17,18,21],"p",{},"QuireKit extends Tiptap Core code and its extension model, retaining the relevant license notices. It is more than a runtime wrapper around an installed ",[14,15,16],"code",{},"@tiptap\u002Fcore",": Core and ProseMirror packages are maintained under ",[14,19,20],{},"@quirekit",", with explicit view integration.",[23,24,26],"h2",{"id":25},"familiar-concepts","Familiar concepts",[10,28,29,32,33,32,36,32,39,32,42,32,45,32,48,32,51,32,54,57],{},[14,30,31],{},"new Editor()",", ",[14,34,35],{},"Extension.create()",[14,37,38],{},"Node.create()",[14,40,41],{},"Mark.create()",[14,43,44],{},".configure()",[14,46,47],{},".extend()",[14,49,50],{},"editor.commands",[14,52,53],{},"editor.chain()",[14,55,56],{},"editor.can()",", input rules, keyboard shortcuts, storage and lifecycle hooks retain familiar authoring patterns.",[23,59,61],{"id":60},"common-matching-commands","Common matching commands",[63,64,65,81],"table",{},[66,67,68],"thead",{},[69,70,71,75,78],"tr",{},[72,73,74],"th",{},"Task",[72,76,77],{},"Entry points",[72,79,80],{},"Requirement",[82,83,84,110,135,157,179],"tbody",{},[69,85,86,90,107],{},[87,88,89],"td",{},"Read and write content",[87,91,92,32,95,32,98,32,101,32,104],{},[14,93,94],{},"getJSON()",[14,96,97],{},"getHTML()",[14,99,100],{},"commands.setContent()",[14,102,103],{},"insertContent()",[14,105,106],{},"clearContent()",[87,108,109],{},"Content matching the active schema",[69,111,112,115,132],{},[87,113,114],{},"Selection and focus",[87,116,117,32,120,32,123,32,126,32,129],{},[14,118,119],{},"focus()",[14,121,122],{},"blur()",[14,124,125],{},"setTextSelection()",[14,127,128],{},"setNodeSelection()",[14,130,131],{},"selectAll()",[87,133,134],{},"Mounted view and valid document positions",[69,136,137,140,154],{},[87,138,139],{},"Marks and attributes",[87,141,142,32,145,32,148,32,151],{},[14,143,144],{},"setMark()",[14,146,147],{},"toggleMark()",[14,149,150],{},"unsetMark()",[14,152,153],{},"updateAttributes()",[87,155,156],{},"Registered target Node \u002F Mark",[69,158,159,162,176],{},[87,160,161],{},"Common formatting",[87,163,164,32,167,32,170,32,173],{},[14,165,166],{},"toggleBold()",[14,168,169],{},"toggleItalic()",[14,171,172],{},"toggleHeading()",[14,174,175],{},"toggleBulletList()",[87,177,178],{},"Matching extensions or StarterKit",[69,180,181,184,192],{},[87,182,183],{},"History",[87,185,186,32,189],{},[14,187,188],{},"undo()",[14,190,191],{},"redo()",[87,193,194],{},"Registered history extension",[10,196,197,198,200,201,203,204,206,207,209],{},"Except for ",[14,199,94],{}," \u002F ",[14,202,97],{},", access these commands through ",[14,205,50],{}," or ",[14,208,53],{},".\nThis is a practical migration list, not a compatibility claim for every ecosystem package. Current public types own the parameters and return values.",[23,211,213],{"id":212},"migration-map","Migration map",[63,215,216,229],{},[66,217,218],{},[69,219,220,223,226],{},[72,221,222],{},"Tiptap project",[72,224,225],{},"QuireKit project",[72,227,228],{},"Check",[82,230,231,245,260,282,299],{},[69,232,233,237,242],{},[87,234,235],{},[14,236,16],{},[87,238,239],{},[14,240,241],{},"@quirekit\u002Fcore",[87,243,244],{},"Type-check against current public exports",[69,246,247,252,257],{},[87,248,249],{},[14,250,251],{},"@tiptap\u002Fstarter-kit",[87,253,254],{},[14,255,256],{},"@quirekit\u002Fstarter-kit",[87,258,259],{},"Review options and installed extensions",[69,261,262,270,279],{},[87,263,264,200,267],{},[14,265,266],{},"@tiptap\u002Fpm\u002F*",[14,268,269],{},"prosemirror-*",[87,271,272,273,206,276],{},"Matching ",[14,274,275],{},"@quirekit\u002Fpm-*",[14,277,278],{},"@quirekit\u002Fpm",[87,280,281],{},"Keep a single PM identity per instance",[69,283,284,287,296],{},[87,285,286],{},"Default DOM mount",[87,288,289,290,32,293],{},"Explicit ",[14,291,292],{},"DomViewExtension",[14,294,295],{},"mode: 'dom'",[87,297,298],{},"Other backends need their own presentation support",[69,300,301,304,307],{},[87,302,303],{},"Tiptap Vue \u002F React wrappers",[87,305,306],{},"Host-owned Core creation and disposal",[87,308,309],{},"Do not assume unchanged wrapper compatibility",[10,311,312],{},"Highly aligned APIs do not guarantee that every ecosystem plugin runs unchanged. Plugins relying on DOM NodeViews, browser geometry, private fields or native DOM selection need corresponding view support for Canvas\u002FSVG. Review third-party licensing and package identity too.",[23,314,316],{"id":315},"a-migrated-extension","A migrated extension",[10,318,319],{},"This site-authored shortcut extension uses the same command registry and history. It is an example, not a built-in plugin.",[321,322],"docs-recipe",{"name":323},"core\u002Fshortcuts",[10,325,326,331,332,336],{},[327,328,330],"a",{"href":329},"\u002Fen\u002Fguide\u002Fquick-start","Quick start"," runs it. Continue with the ",[327,333,335],{"href":334},"\u002Fen\u002Fconcepts\u002Fextensions","extension model",".",[23,338,340],{"id":339},"state-and-replacement-differences-in-products","State and replacement differences in products",[10,342,343,344,347,348,351,352,355,356,359,360,364],{},"Read external native PM state through ",[14,345,346],{},"editor.state.pm","; contextual raw-command ",[14,349,350],{},"state"," remains the PM facade. Use QuireKit ",[14,353,354],{},"replaceDocument()"," for complete file restoration including root attributes; ",[14,357,358],{},"setContent()"," retains ordinary content-replacement semantics. See ",[327,361,363],{"href":362},"\u002Fen\u002Fapi\u002Feditor","Editor API"," for inputs, results and lifetime.",{"title":366,"searchDepth":367,"depth":367,"links":368},"",2,[369,370,371,372,373],{"id":25,"depth":367,"text":26},{"id":60,"depth":367,"text":61},{"id":212,"depth":367,"text":213},{"id":315,"depth":367,"text":316},{"id":339,"depth":367,"text":340},"Familiar Core APIs with explicit package identity and view boundaries.","md",null,"en",{},true,"\u002Fen\u002Fguide\u002Ftiptap","Getting started",{"title":5,"description":374},"guide\u002Ftiptap.en","HlQp77i2la1wRlIUWfqaK8hl8oYPQ89kmmO-PI4qI6Y","import { Extension } from \"@quirekit\u002Fcore\";\n\n\u002F** A host-authored behavior extension using the same typed command registry as the toolbar. *\u002F\nexport const writingShortcuts = Extension.create({\n  name: \"writingShortcuts\",\n  \u002F** @returns A keyboard binding that participates in the editor's existing history. *\u002F\n  addKeyboardShortcuts() {\n    return { \"Mod-Shift-b\": () => this.editor?.commands.toggleBold() ?? false };\n  },\n});\n",{"data":387,"body":388},{},{"type":389,"children":390},"root",[391,630],{"type":392,"tag":393,"props":394,"children":398},"element","pre",{"className":395,"code":396,"language":397,"meta":366,"style":366},"language-ts shiki shiki-themes github-light github-light github-dark","import { Extension } from \"@quirekit\u002Fcore\";\n\n\u002F** A host-authored behavior extension using the same typed command registry as the toolbar. *\u002F\nexport const writingShortcuts = Extension.create({\n  name: \"writingShortcuts\",\n  \u002F** @returns A keyboard binding that participates in the editor's existing history. *\u002F\n  addKeyboardShortcuts() {\n    return { \"Mod-Shift-b\": () => this.editor?.commands.toggleBold() ?? false };\n  },\n});\n\n","ts",[399],{"type":392,"tag":14,"props":400,"children":401},{"__ignoreMap":366},[402,437,445,455,496,515,534,548,612,621],{"type":392,"tag":403,"props":404,"children":407},"span",{"class":405,"line":406},"line",1,[408,415,421,426,432],{"type":392,"tag":403,"props":409,"children":411},{"style":410},"--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583",[412],{"type":413,"value":414},"text","import",{"type":392,"tag":403,"props":416,"children":418},{"style":417},"--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8",[419],{"type":413,"value":420}," { Extension } ",{"type":392,"tag":403,"props":422,"children":423},{"style":410},[424],{"type":413,"value":425},"from",{"type":392,"tag":403,"props":427,"children":429},{"style":428},"--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF",[430],{"type":413,"value":431}," \"@quirekit\u002Fcore\"",{"type":392,"tag":403,"props":433,"children":434},{"style":417},[435],{"type":413,"value":436},";\n",{"type":392,"tag":403,"props":438,"children":439},{"class":405,"line":367},[440],{"type":392,"tag":403,"props":441,"children":442},{"emptyLinePlaceholder":379},[443],{"type":413,"value":444},"\n",{"type":392,"tag":403,"props":446,"children":448},{"class":405,"line":447},3,[449],{"type":392,"tag":403,"props":450,"children":452},{"style":451},"--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D",[453],{"type":413,"value":454},"\u002F** A host-authored behavior extension using the same typed command registry as the toolbar. *\u002F\n",{"type":392,"tag":403,"props":456,"children":458},{"class":405,"line":457},4,[459,464,469,475,480,485,491],{"type":392,"tag":403,"props":460,"children":461},{"style":410},[462],{"type":413,"value":463},"export",{"type":392,"tag":403,"props":465,"children":466},{"style":410},[467],{"type":413,"value":468}," const",{"type":392,"tag":403,"props":470,"children":472},{"style":471},"--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF",[473],{"type":413,"value":474}," writingShortcuts",{"type":392,"tag":403,"props":476,"children":477},{"style":410},[478],{"type":413,"value":479}," =",{"type":392,"tag":403,"props":481,"children":482},{"style":417},[483],{"type":413,"value":484}," Extension.",{"type":392,"tag":403,"props":486,"children":488},{"style":487},"--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0",[489],{"type":413,"value":490},"create",{"type":392,"tag":403,"props":492,"children":493},{"style":417},[494],{"type":413,"value":495},"({\n",{"type":392,"tag":403,"props":497,"children":499},{"class":405,"line":498},5,[500,505,510],{"type":392,"tag":403,"props":501,"children":502},{"style":417},[503],{"type":413,"value":504},"  name: ",{"type":392,"tag":403,"props":506,"children":507},{"style":428},[508],{"type":413,"value":509},"\"writingShortcuts\"",{"type":392,"tag":403,"props":511,"children":512},{"style":417},[513],{"type":413,"value":514},",\n",{"type":392,"tag":403,"props":516,"children":518},{"class":405,"line":517},6,[519,524,529],{"type":392,"tag":403,"props":520,"children":521},{"style":451},[522],{"type":413,"value":523},"  \u002F** ",{"type":392,"tag":403,"props":525,"children":526},{"style":410},[527],{"type":413,"value":528},"@returns",{"type":392,"tag":403,"props":530,"children":531},{"style":451},[532],{"type":413,"value":533}," A keyboard binding that participates in the editor's existing history. *\u002F\n",{"type":392,"tag":403,"props":535,"children":537},{"class":405,"line":536},7,[538,543],{"type":392,"tag":403,"props":539,"children":540},{"style":487},[541],{"type":413,"value":542},"  addKeyboardShortcuts",{"type":392,"tag":403,"props":544,"children":545},{"style":417},[546],{"type":413,"value":547},"() {\n",{"type":392,"tag":403,"props":549,"children":551},{"class":405,"line":550},8,[552,557,562,567,572,577,582,587,592,597,602,607],{"type":392,"tag":403,"props":553,"children":554},{"style":410},[555],{"type":413,"value":556},"    return",{"type":392,"tag":403,"props":558,"children":559},{"style":417},[560],{"type":413,"value":561}," { ",{"type":392,"tag":403,"props":563,"children":564},{"style":428},[565],{"type":413,"value":566},"\"Mod-Shift-b\"",{"type":392,"tag":403,"props":568,"children":569},{"style":417},[570],{"type":413,"value":571},": () ",{"type":392,"tag":403,"props":573,"children":574},{"style":410},[575],{"type":413,"value":576},"=>",{"type":392,"tag":403,"props":578,"children":579},{"style":471},[580],{"type":413,"value":581}," this",{"type":392,"tag":403,"props":583,"children":584},{"style":417},[585],{"type":413,"value":586},".editor?.commands.",{"type":392,"tag":403,"props":588,"children":589},{"style":487},[590],{"type":413,"value":591},"toggleBold",{"type":392,"tag":403,"props":593,"children":594},{"style":417},[595],{"type":413,"value":596},"() ",{"type":392,"tag":403,"props":598,"children":599},{"style":410},[600],{"type":413,"value":601},"??",{"type":392,"tag":403,"props":603,"children":604},{"style":471},[605],{"type":413,"value":606}," false",{"type":392,"tag":403,"props":608,"children":609},{"style":417},[610],{"type":413,"value":611}," };\n",{"type":392,"tag":403,"props":613,"children":615},{"class":405,"line":614},9,[616],{"type":392,"tag":403,"props":617,"children":618},{"style":417},[619],{"type":413,"value":620},"  },\n",{"type":392,"tag":403,"props":622,"children":624},{"class":405,"line":623},10,[625],{"type":392,"tag":403,"props":626,"children":627},{"style":417},[628],{"type":413,"value":629},"});\n",{"type":392,"tag":631,"props":632,"children":633},"style",{},[634],{"type":413,"value":635},"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);}",1793045208528]