[{"data":1,"prerenderedAt":1247},["ShallowReactive",2],{"navigation":3,"docs-sdk-4.5-interactivity-combined-undo-redo-stacks":498,"nav-sdk45":1080,"support-index":1178},[4],{"title":5,"path":6,"stem":7,"children":8,"page":40},"Docs","\u002Fdocs","docs",[9,242,320],{"title":10,"path":11,"stem":12,"children":13,"page":40},"Cloud","\u002Fdocs\u002Fcloud","docs\u002Fcloud",[14],{"title":15,"path":16,"stem":17,"children":18,"page":40},"4.5","\u002Fdocs\u002Fcloud\u002F4.5","docs\u002Fcloud\u002F4.5",[19,41,54,79,100,147,172,196,209,234],{"title":20,"path":21,"stem":22,"children":23,"page":40},"Overview","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview","docs\u002Fcloud\u002F4.5\u002F01.overview",[24,28,32,36],{"title":25,"path":26,"stem":27},"MyScript iink SDK for web-based platform","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fintroduction","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F01.introduction",{"title":29,"path":30,"stem":31},"Choosing between REST or WebSockets","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fhttp-rest-or-websocket","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F02.http-rest-or-websocket",{"title":33,"path":34,"stem":35},"What's new","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fchangelog","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F03.changelog",{"title":37,"path":38,"stem":39},"Migration guide","\u002Fdocs\u002Fcloud\u002F4.5\u002Foverview\u002Fmigration-guide","docs\u002Fcloud\u002F4.5\u002F01.overview\u002F04.migration-guide",false,{"title":42,"path":43,"stem":44,"children":45,"page":40},"Integration","\u002Fdocs\u002Fcloud\u002F4.5\u002Fintegration","docs\u002Fcloud\u002F4.5\u002F02.integration",[46,50],{"title":47,"path":48,"stem":49},"Supported platforms","\u002Fdocs\u002Fcloud\u002F4.5\u002Fintegration\u002Fplatforms","docs\u002Fcloud\u002F4.5\u002F02.integration\u002F01.platforms",{"title":51,"path":52,"stem":53},"Integration levels","\u002Fdocs\u002Fcloud\u002F4.5\u002Fintegration\u002Fintegration-levels","docs\u002Fcloud\u002F4.5\u002F02.integration\u002F02.integration-levels",{"title":55,"path":56,"stem":57,"children":58,"page":40},"Recognition capabilities","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities",[59,63,67,71,75],{"title":60,"path":61,"stem":62},"Recognizers","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Frecognizers","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F01.recognizers",{"title":64,"path":65,"stem":66},"Text languages and features","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Ftext-languages","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F02.text-languages",{"title":68,"path":69,"stem":70},"Math elements and rules","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Fmath-elements-and-rules","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F03.math-elements-and-rules",{"title":72,"path":73,"stem":74},"Shapes and connectors","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Fdiagram-features","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F04.diagram-features",{"title":76,"path":77,"stem":78},"Gestures","\u002Fdocs\u002Fcloud\u002F4.5\u002Frecognition-capabilities\u002Fgestures","docs\u002Fcloud\u002F4.5\u002F03.recognition-capabilities\u002F05.gestures",{"title":80,"path":81,"stem":82,"children":83,"page":40},"Interactivity integration","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration",[84,88,92,96],{"title":85,"path":86,"stem":87},"Content types","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Fcontent-types","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F01.content-types",{"title":89,"path":90,"stem":91},"Interactive features","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Finteractive-features","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F02.interactive-features",{"title":93,"path":94,"stem":95},"Import and export formats","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Fimport-and-export-formats","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F03.import-and-export-formats",{"title":97,"path":98,"stem":99},"Math interactive features","\u002Fdocs\u002Fcloud\u002F4.5\u002Finteractivity-integration\u002Fmath-features","docs\u002Fcloud\u002F4.5\u002F04.interactivity-integration\u002F04.math-features",{"title":101,"path":102,"stem":103,"children":104,"page":40},"iinkTS","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts","docs\u002Fcloud\u002F4.5\u002F05.iinkts",[105,109,113,121,138],{"title":106,"path":107,"stem":108},"Getting started","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fget-started","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F01.get-started",{"title":110,"path":111,"stem":112},"Canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fcanvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F02.canvas",{"title":114,"path":115,"stem":116,"children":117,"page":40},"Ink Canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F03.ink-canvas",[118],{"title":114,"path":119,"stem":120},"\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fink-canvas\u002Fink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F03.ink-canvas\u002F01.ink-canvas",{"title":122,"path":123,"stem":124,"children":125,"page":40},"Interactive Ink Canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas",[126,130,134],{"title":127,"path":128,"stem":129},"Interactive ink canvas","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas\u002Finteractive-ink-canvas","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas\u002F01.interactive-ink-canvas",{"title":131,"path":132,"stem":133},"Interactive Math","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas\u002Fiicanvas-math","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas\u002F02.iicanvas-math",{"title":135,"path":136,"stem":137},"Using a custom rendering","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Finteractive-ink-canvas\u002Fiicanvas-other-rendering","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F04.interactive-ink-canvas\u002F03.iicanvas-other-rendering",{"title":139,"path":140,"stem":141,"children":142,"page":40},"Reference","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Freference","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F05.reference",[143],{"title":144,"path":145,"stem":146},"Configuration","\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Freference\u002Fconfiguration-iinkts","docs\u002Fcloud\u002F4.5\u002F05.iinkts\u002F05.reference\u002F01.configuration-iinkts",{"title":148,"path":149,"stem":150,"children":151,"page":40},"REST","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest","docs\u002Fcloud\u002F4.5\u002F06.rest",[152,156,160,164,168],{"title":153,"path":154,"stem":155},"MyScript iink SDK Web REST Overview","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Farchitecture","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F01.architecture",{"title":157,"path":158,"stem":159},"MyScript iink SDK Web REST Recognizer API","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Fnew-api","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F02.new-api",{"title":161,"path":162,"stem":163},"Recognizer configuration","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Fconfiguration-recognizer-rest","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F03.configuration-recognizer-rest",{"title":165,"path":166,"stem":167},"MyScript iink SDK Web REST Batch API","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Flegacy-api","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F04.legacy-api",{"title":169,"path":170,"stem":171},"Batch configuration","\u002Fdocs\u002Fcloud\u002F4.5\u002Frest\u002Fconfiguration-rest","docs\u002Fcloud\u002F4.5\u002F06.rest\u002F05.configuration-rest",{"title":173,"path":174,"stem":175,"children":176,"page":40},"WebSockets","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets","docs\u002Fcloud\u002F4.5\u002F07.websockets",[177,181,185,189,193],{"title":178,"path":179,"stem":180},"MyScript iink SDK WebSockets API architecture","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Farchitecture","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F01.architecture",{"title":182,"path":183,"stem":184},"Offscreen interactivity mode messages","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fmessages-offscreen","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F02.messages-offscreen",{"title":186,"path":187,"stem":188},"Offscreen interactivity math messages","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fmath-offscreen","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F03.math-offscreen",{"title":190,"path":191,"stem":192},"Onscreen interactivity mode messages","\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fmessages-onscreen","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F04.messages-onscreen",{"title":144,"path":194,"stem":195},"\u002Fdocs\u002Fcloud\u002F4.5\u002Fwebsockets\u002Fconfiguration-ws","docs\u002Fcloud\u002F4.5\u002F07.websockets\u002F05.configuration-ws",{"title":197,"path":198,"stem":199,"children":200,"page":40},"Specific","\u002Fdocs\u002Fcloud\u002F4.5\u002Fspecific","docs\u002Fcloud\u002F4.5\u002F08.specific",[201,205],{"title":202,"path":203,"stem":204},"Text recognition candidates","\u002Fdocs\u002Fcloud\u002F4.5\u002Fspecific\u002Ftext-recognition-candidates","docs\u002Fcloud\u002F4.5\u002F08.specific\u002F01.text-recognition-candidates",{"title":206,"path":207,"stem":208},"Recognition resources","\u002Fdocs\u002Fcloud\u002F4.5\u002Fspecific\u002Fcustom-recognition","docs\u002Fcloud\u002F4.5\u002F08.specific\u002F02.custom-recognition",{"title":210,"path":211,"stem":212,"children":213,"page":40},"Server","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver","docs\u002Fcloud\u002F4.5\u002F09.server",[214,218,222,226,230],{"title":215,"path":216,"stem":217},"MyScript Server Installation Preamble and Prerequisites","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fpreamble-prerequisites","docs\u002Fcloud\u002F4.5\u002F09.server\u002F01.preamble-prerequisites",{"title":219,"path":220,"stem":221},"MyScript Server Monoserver Installation Documentation","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fmonoserver-installation","docs\u002Fcloud\u002F4.5\u002F09.server\u002F02.monoserver-installation",{"title":223,"path":224,"stem":225},"MyScript Server Production Installation Documentation","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fproduction-installation","docs\u002Fcloud\u002F4.5\u002F09.server\u002F03.production-installation",{"title":227,"path":228,"stem":229},"MyScript Server Migration Guide","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fserver-migration-guide","docs\u002Fcloud\u002F4.5\u002F09.server\u002F04.server-migration-guide",{"title":231,"path":232,"stem":233},"MyScript Server Administration Guide","\u002Fdocs\u002Fcloud\u002F4.5\u002Fserver\u002Fadministration-guide","docs\u002Fcloud\u002F4.5\u002F09.server\u002F05.administration-guide",{"title":139,"path":235,"stem":236,"children":237,"page":40},"\u002Fdocs\u002Fcloud\u002F4.5\u002Freference","docs\u002Fcloud\u002F4.5\u002F10.reference",[238],{"title":239,"path":240,"stem":241},"JIIX format reference","\u002Fdocs\u002Fcloud\u002F4.5\u002Freference\u002Fjiix","docs\u002Fcloud\u002F4.5\u002F10.reference\u002F01.jiix",{"title":243,"path":244,"stem":245,"children":246,"page":40},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002Fconcepts",[247,250,254],{"title":20,"path":248,"stem":249},"\u002Fdocs\u002Fconcepts\u002Foverview","docs\u002Fconcepts\u002F01.overview",{"title":251,"path":252,"stem":253},"Glossary","\u002Fdocs\u002Fconcepts\u002Fglossary","docs\u002Fconcepts\u002F02.glossary",{"title":255,"path":256,"stem":257,"children":258,"page":40},"Fundamentals","\u002Fdocs\u002Fconcepts\u002Ffundamentals","docs\u002Fconcepts\u002F03.fundamentals",[259,263,292,312],{"title":260,"path":261,"stem":262},"OCR vs digital ink recognition","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fdigital-ink-vs-ocr","docs\u002Fconcepts\u002F03.fundamentals\u002F01.digital-ink-vs-ocr",{"title":264,"path":265,"stem":266,"children":267,"page":40},"Ink interpretation","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation",[268,272,276,280,284,288],{"title":269,"path":270,"stem":271},"Ink processing","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fink-interpretation","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F01.ink-interpretation",{"title":273,"path":274,"stem":275},"Recognition features","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fcontent-types","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F02.content-types",{"title":277,"path":278,"stem":279},"Ink classification","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fink-classification","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F03.ink-classification",{"title":281,"path":282,"stem":283},"What are batch mode and incremental mode?","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fbatch-mode","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F04.batch-mode",{"title":285,"path":286,"stem":287},"Gestures and context","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Fcontext-gestures","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F05.context-gestures",{"title":289,"path":290,"stem":291},"What is interactivity","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fink-interpretation\u002Finteractive-ink","docs\u002Fconcepts\u002F03.fundamentals\u002F02.ink-interpretation\u002F06.interactive-ink",{"title":293,"path":294,"stem":295,"children":296,"page":40},"Rendering-driven interactivity","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity",[297,301,304,308],{"title":298,"path":299,"stem":300},"Ink capture","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fink-capture","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F01.ink-capture",{"title":76,"path":302,"stem":303},"\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fediting-gestures","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F02.editing-gestures",{"title":305,"path":306,"stem":307},"Smart tools","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fsmart-tools","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F03.smart-tools",{"title":309,"path":310,"stem":311},"Responsive and productive","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Frendering-driven-interactivity\u002Fresponsive-layout","docs\u002Fconcepts\u002F03.fundamentals\u002F03.rendering-driven-interactivity\u002F04.responsive-layout",{"title":313,"path":314,"stem":315,"children":316,"page":40},"Handwriting generation","\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fhandwriting-generation","docs\u002Fconcepts\u002F03.fundamentals\u002F04.handwriting-generation",[317],{"title":313,"path":318,"stem":319},"\u002Fdocs\u002Fconcepts\u002Ffundamentals\u002Fhandwriting-generation\u002Fhandwriting-generation","docs\u002Fconcepts\u002F03.fundamentals\u002F04.handwriting-generation\u002F01.handwriting-generation",{"title":321,"path":322,"stem":323,"children":324,"page":40},"Sdk","\u002Fdocs\u002Fsdk","docs\u002Fsdk",[325],{"title":15,"path":326,"stem":327,"children":328,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5","docs\u002Fsdk\u002F4.5",[329,333,336,339,349,368,381,393,401,417,426,463,467,470,474,477,484],{"title":330,"path":331,"stem":332},"About MyScript iink SDK","\u002Fdocs\u002Fsdk\u002F4.5\u002Fabout","docs\u002Fsdk\u002F4.5\u002F01.about",{"title":33,"path":334,"stem":335},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fchangelog","docs\u002Fsdk\u002F4.5\u002F02.changelog",{"title":37,"path":337,"stem":338},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fmigration-guide","docs\u002Fsdk\u002F4.5\u002F03.migration-guide",{"title":42,"path":340,"stem":341,"children":342,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fintegration","docs\u002Fsdk\u002F4.5\u002F04.integration",[343,346],{"title":47,"path":344,"stem":345},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fintegration\u002Fplatforms","docs\u002Fsdk\u002F4.5\u002F04.integration\u002F01.platforms",{"title":51,"path":347,"stem":348},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fintegration\u002Fintegration-levels","docs\u002Fsdk\u002F4.5\u002F04.integration\u002F02.integration-levels",{"title":55,"path":350,"stem":351,"children":352,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities",[353,356,359,362,365],{"title":60,"path":354,"stem":355},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Frecognizers","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F01.recognizers",{"title":64,"path":357,"stem":358},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Ftext-languages","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F02.text-languages",{"title":68,"path":360,"stem":361},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Fmath-elements-and-rules","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F03.math-elements-and-rules",{"title":72,"path":363,"stem":364},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Fdiagram-features","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F04.diagram-features",{"title":76,"path":366,"stem":367},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognition-capabilities\u002Fgestures","docs\u002Fsdk\u002F4.5\u002F05.recognition-capabilities\u002F05.gestures",{"title":80,"path":369,"stem":370,"children":371,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration",[372,375,378],{"title":85,"path":373,"stem":374},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration\u002Fcontent-types","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration\u002F01.content-types",{"title":89,"path":376,"stem":377},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration\u002Finteractive-features","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration\u002F02.interactive-features",{"title":93,"path":379,"stem":380},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity-integration\u002Fimport-and-export-formats","docs\u002Fsdk\u002F4.5\u002F06.interactivity-integration\u002F03.import-and-export-formats",{"title":106,"path":382,"stem":383,"children":384,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fgetting-started","docs\u002Fsdk\u002F4.5\u002F07.getting-started",[385,389],{"title":386,"path":387,"stem":388},"Setup","\u002Fdocs\u002Fsdk\u002F4.5\u002Fgetting-started\u002Fsetup","docs\u002Fsdk\u002F4.5\u002F07.getting-started\u002F01.setup",{"title":390,"path":391,"stem":392},"Instantiate Engine","\u002Fdocs\u002Fsdk\u002F4.5\u002Fgetting-started\u002Finteractive-ink-runtime","docs\u002Fsdk\u002F4.5\u002F07.getting-started\u002F02.interactive-ink-runtime",{"title":394,"path":395,"stem":396,"children":397,"page":40},"Recognizer","\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognizer","docs\u002Fsdk\u002F4.5\u002F08.recognizer",[398],{"title":60,"path":399,"stem":400},"\u002Fdocs\u002Fsdk\u002F4.5\u002Frecognizer\u002Frecognizers","docs\u002Fsdk\u002F4.5\u002F08.recognizer\u002F01.recognizers",{"title":402,"path":403,"stem":404,"children":405,"page":40},"Interactivity specific","\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity","docs\u002Fsdk\u002F4.5\u002F09.interactivity",[406,410,413],{"title":407,"path":408,"stem":409},"Storage","\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity\u002Fstorage","docs\u002Fsdk\u002F4.5\u002F09.interactivity\u002F01.storage",{"title":97,"path":411,"stem":412},"\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity\u002Fmath-features","docs\u002Fsdk\u002F4.5\u002F09.interactivity\u002F02.math-features",{"title":414,"path":415,"stem":416},"Integrate with the undo\u002Fredo stack of your application","\u002Fdocs\u002Fsdk\u002F4.5\u002Finteractivity\u002Fcombined-undo-redo-stacks","docs\u002Fsdk\u002F4.5\u002F09.interactivity\u002F03.combined-undo-redo-stacks",{"title":418,"path":419,"stem":420,"children":421,"page":40},"OffScreenEditor specific","\u002Fdocs\u002Fsdk\u002F4.5\u002Foffscreen-editor","docs\u002Fsdk\u002F4.5\u002F10.offscreen-editor",[422],{"title":423,"path":424,"stem":425},"OffscreenEditor","\u002Fdocs\u002Fsdk\u002F4.5\u002Foffscreen-editor\u002Foff-screen-usage","docs\u002Fsdk\u002F4.5\u002F10.offscreen-editor\u002F01.off-screen-usage",{"title":427,"path":428,"stem":429,"children":430,"page":40},"Editor specific","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor","docs\u002Fsdk\u002F4.5\u002F11.editor",[431,435,439,443,447,451,455,459],{"title":432,"path":433,"stem":434},"Rendering","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Frendering","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F01.rendering",{"title":436,"path":437,"stem":438},"Editing","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fediting","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F02.editing",{"title":440,"path":441,"stem":442},"Tool controller","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Ftool-controller","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F03.tool-controller",{"title":444,"path":445,"stem":446},"Selection and block","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fblock-selection-management","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F04.block-selection-management",{"title":448,"path":449,"stem":450},"Conversion","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fconversion","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F05.conversion",{"title":452,"path":453,"stem":454},"Zooming and scrolling","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fzooming-and-scrolling","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F06.zooming-and-scrolling",{"title":456,"path":457,"stem":458},"Styling","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fstyling","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F07.styling",{"title":460,"path":461,"stem":462},"Custom inking","\u002Fdocs\u002Fsdk\u002F4.5\u002Feditor\u002Fcustom-inking","docs\u002Fsdk\u002F4.5\u002F11.editor\u002F08.custom-inking",{"title":464,"path":465,"stem":466},"Result, import and export","\u002Fdocs\u002Fsdk\u002F4.5\u002Fimport-and-export","docs\u002Fsdk\u002F4.5\u002F12.import-and-export",{"title":202,"path":468,"stem":469},"\u002Fdocs\u002Fsdk\u002F4.5\u002Ftext-recognition-candidates","docs\u002Fsdk\u002F4.5\u002F13.text-recognition-candidates",{"title":471,"path":472,"stem":473},"Error management","\u002Fdocs\u002Fsdk\u002F4.5\u002Ferror-management","docs\u002Fsdk\u002F4.5\u002F14.error-management",{"title":206,"path":475,"stem":476},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fcustom-recognition","docs\u002Fsdk\u002F4.5\u002F15.custom-recognition",{"title":313,"path":478,"stem":479,"children":480,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fhandwriting-generation","docs\u002Fsdk\u002F4.5\u002F16.handwriting-generation",[481],{"title":313,"path":482,"stem":483},"\u002Fdocs\u002Fsdk\u002F4.5\u002Fhandwriting-generation\u002Fhandwriting-generation","docs\u002Fsdk\u002F4.5\u002F16.handwriting-generation\u002F01.handwriting-generation",{"title":139,"path":485,"stem":486,"children":487,"page":40},"\u002Fdocs\u002Fsdk\u002F4.5\u002Freference","docs\u002Fsdk\u002F4.5\u002F17.reference",[488,491,494],{"title":144,"path":489,"stem":490},"\u002Fdocs\u002Fsdk\u002F4.5\u002Freference\u002Fconfiguration","docs\u002Fsdk\u002F4.5\u002F17.reference\u002F01.configuration",{"title":239,"path":492,"stem":493},"\u002Fdocs\u002Fsdk\u002F4.5\u002Freference\u002Fjiix","docs\u002Fsdk\u002F4.5\u002F17.reference\u002F02.jiix",{"title":495,"path":496,"stem":497},"Styling reference","\u002Fdocs\u002Fsdk\u002F4.5\u002Freference\u002Fstyling","docs\u002Fsdk\u002F4.5\u002F17.reference\u002F03.styling",{"path":415,"page":499},{"id":500,"title":414,"body":501,"canonicalPath":1070,"description":1071,"extension":1072,"icon":1073,"meta":1074,"navTitle":1075,"navigation":1076,"path":415,"resolveKey":1077,"resolveVersion":1070,"seo":1078,"stem":416,"__hash__":1079},"sdk45\u002Fdocs\u002Fsdk\u002F4.5\u002F09.interactivity\u002F03.combined-undo-redo-stacks.md",{"type":502,"value":503,"toc":1062},"minimark",[504,508,513,522,525,529,532,548,557,560,569,576,585,588,595,601,618,624,628,635,638,641,648,651,658,661,667,670,677,681,684,687,690,694,839,842,849,883,890,897,904,951,958,961,967,998,1004,1040],[505,506,507],"p",{},"This page explains how you can make iink SDK operations part of the undo\u002Fredo stack of your application.",[509,510,512],"h2",{"id":511},"use-case","Use case",[505,514,515,516,521],{},"If your application is based on an iink SDK editor, undo\u002Fredo management is available out of the box, as shown in the ",[517,518,520],"a",{"href":519},"\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fcanvas#other-edit-operations","editing"," part of the guide.",[505,523,524],{},"Chance is, however, that your application is more complex, and that you may need to integrate iink SDK operations into your own undo\u002Fredo stack.",[509,526,528],{"id":527},"conceptual-undoredo-stack","Conceptual undo\u002Fredo stack",[505,530,531],{},"The application undo\u002Fredo stack can be seen as a vector of states, each but the first resulting from a specific operation.",[505,533,534,535,539,540,543,544,547],{},"In the following example, the current state is ",[536,537,538],"code",{},"⑤"," and results from applying operation ",[536,541,542],{},"op5"," to the previous state ",[536,545,546],{},"④",":",[505,549,550],{},[551,552],"img",{"alt":553,"height":554,"src":555,"width":556},"",70.383377,"\u002Fdocs\u002Fimages\u002Fundo-redo-principle-1.svg",443.47754,[505,558,559],{},"Calling undo reverts the effect of the last operation. It is equivalent to moving from the current state in the stack to the state on its left.",[505,561,562,563,565,566,547],{},"In the example, if the current state is ",[536,564,538],{},", two successive undos lead to state ",[536,567,568],{},"③",[505,570,571],{},[551,572],{"alt":553,"height":573,"src":574,"width":575},70.383369,"\u002Fdocs\u002Fimages\u002Fundo-redo-principle-2.svg",420.70724,[505,577,578,579,581,582,584],{},"You can notice that states ",[536,580,546],{}," and ",[536,583,538],{}," are still part of the stack. This is because no new state was created and it shall thus be possible to redo.",[505,586,587],{},"Calling redo applies the next operation on the stack. It is equivalent to moving from the current state in the stack to the state on its right.",[505,589,562,590,592,593,547],{},[536,591,568],{},", a redo will move back to state ",[536,594,546],{},[505,596,597],{},[551,598],{"alt":553,"height":573,"src":599,"width":600},"\u002Fdocs\u002Fimages\u002Fundo-redo-principle-3.svg",420.70728,[505,602,603,604,607,608,610,611,614,615,617],{},"If a new operation ",[536,605,606],{},"op6"," is performed from state ",[536,609,546],{},", the resulting state ",[536,612,613],{},"⑥"," becomes the new current state, and state ",[536,616,538],{}," is gone from the stack:",[505,619,620],{},[551,621],{"alt":553,"height":622,"src":623,"width":556},70.443283,"\u002Fdocs\u002Fimages\u002Fundo-redo-principle-4.svg",[509,625,627],{"id":626},"including-iink-sdk-operations","Including iink SDK operations",[505,629,630,631,634],{},"It may be required for the application integrating iink SDK to mix its own operations with ",[517,632,633],{"href":519},"those managed by iink SDK",".",[505,636,637],{},"For instance, the application may add an image to a layer below an iink SDK text block, add a stroke to the text block, and finally select and delete the image.\nThe expectation at this point is that if the user presses two times the undo button, the first press brings the image back and the second removes the stroke that was sent to iink SDK.",[505,639,640],{},"Situation before the user presses undo:",[505,642,643],{},[551,644],{"alt":553,"height":645,"src":646,"width":647},90.151634,"\u002Fdocs\u002Fimages\u002Fundo-redo-combined-1.svg",513.83179,[505,649,650],{},"Situation after the first undo:",[505,652,653],{},[551,654],{"alt":553,"height":655,"src":656,"width":657},90.151627,"\u002Fdocs\u002Fimages\u002Fundo-redo-combined-2.svg",491.06155,[505,659,660],{},"Situation after the second undo:",[505,662,663],{},[551,664],{"alt":553,"height":645,"src":665,"width":666},"\u002Fdocs\u002Fimages\u002Fundo-redo-combined-3.svg",491.06152,[505,668,669],{},"The application needed to include and manipulate the effects of iink SDK operations.",[671,672,674],"callout",{"color":673},"secondary",[505,675,676],{},"iink-resulting states are shown with a blue background in the different examples.",[509,678,680],{"id":679},"managing-iink-sdk-operations","Managing iink SDK operations",[505,682,683],{},"The challenge is that iink SDK maintains its own internal undo\u002Fredo stack and that the host application does not have access to the operations it contains. It\nis however possible to query iink SDK to get information about the state of its internal stack to implement the desired behavior.",[505,685,686],{},"From now on, you should consider that the application does not know exactly what the iink operations actually do (it actually does not matter). Let's show how\nit can still properly manage its undo\u002Fredo stack.",[505,688,689],{},"Let's go back to the example. How to obtain this stack?",[505,691,692],{},[551,693],{"alt":553,"height":645,"src":665,"width":666},[695,696,697,757,799,802,820,831],"partial",{},[698,699,700,703,729,745],"template",{"v-slot:swift":553},[505,701,702],{},"The iink SDK editor has the following properties:",[704,705,706,717],"ul",{},[707,708,709,712,713,634],"li",{},[536,710,711],{},"undoStackIndex"," - The position of the cursor identifying the current state ",[714,715,716],"strong",{},"in the internal iink undo\u002Fredo stack",[707,718,719,722,723,725,726,728],{},[536,720,721],{},"possibleUndoCount"," - The number of operations that it is currently possible to undo (thus ",[536,724,721],{}," ≤ ",[536,727,711],{},").",[505,730,731,732,734,735,737,738,634],{},"You can know when iink SDK adds new \"undoable\" operations by watching the increments of ",[536,733,711],{},". You can compare a previously stored value with the one returned by calling ",[536,736,711],{}," after a ",[517,739,741,744],{"href":740},"\u002Fdocs\u002Fcloud\u002F4.5\u002Fiinkts\u002Fcanvas#monitoring-changes-in-the-model",[536,742,743],{},"contentChanged"," notification",[505,746,747,748,750,751,753,754,756],{},"Let's see how it applies to the example. Let's consider that you have set up an iink SDK editor and attached a \"Text\" part to it. As nothing was done,\n",[536,749,711],{}," equals to 0. First, you add your image.\nAs it is done outside of iink SDK, ",[536,752,743],{}," is not called and ",[536,755,711],{}," does not increment.",[698,758,759,761,779,791],{"v-slot:csharp":553},[505,760,702],{},[704,762,763,770],{},[707,764,765,712,768,634],{},[536,766,767],{},"UndoStackIndex",[714,769,716],{},[707,771,772,722,775,725,777,728],{},[536,773,774],{},"PossibleUndoCount",[536,776,774],{},[536,778,767],{},[505,780,731,781,783,784,737,786,634],{},[536,782,767],{},". You can compare a previously stored value with the one returned by getting the ",[536,785,767],{},[517,787,788,744],{"href":740},[536,789,790],{},"ContentChanged()",[505,792,747,793,750,795,753,797,756],{},[536,794,767],{},[536,796,790],{},[536,798,767],{},[505,800,801],{},"The iink SDK editor provides the following methods:",[704,803,804,811],{},[707,805,806,712,809,634],{},[536,807,808],{},"getUndoStackIndex()",[714,810,716],{},[707,812,813,722,816,725,818,728],{},[536,814,815],{},"getPossibleUndoCount()",[536,817,815],{},[536,819,808],{},[505,821,731,822,734,824,737,826,634],{},[536,823,808],{},[536,825,808],{},[517,827,828,744],{"href":740},[536,829,830],{},"contentChanged()",[505,832,747,833,750,835,753,837,756],{},[536,834,808],{},[536,836,830],{},[536,838,808],{},[505,840,841],{},"The application and iink SDK editor stacks respectively look as follows:",[505,843,844],{},[551,845],{"alt":553,"height":846,"src":847,"width":848},247.70694,"\u002Fdocs\u002Fimages\u002Fundo-redo-stacks-1.svg",352.85715,[695,850,851,865,875],{},[698,852,853],{"v-slot:swift":553},[505,854,855,856,858,859,861,862,864],{},"You now send a stroke to the iink SDK editor.\nYou may get one or more ",[536,857,743],{}," notifications and test for ",[536,860,711],{}," increments. If the\nstroke is not discarded as a gesture (it shouldn't!),  ",[536,863,711],{}," is incremented:",[698,866,867],{"v-slot:csharp":553},[505,868,855,869,858,871,861,873,864],{},[536,870,790],{},[536,872,767],{},[536,874,767],{},[505,876,855,877,858,879,861,881,864],{},[536,878,830],{},[536,880,808],{},[536,882,808],{},[505,884,885],{},[551,886],{"alt":553,"height":887,"src":888,"width":889},247.70697,"\u002Fdocs\u002Fimages\u002Fundo-redo-stacks-2.svg",352.85712,[505,891,892,893,896],{},"As you know that iink SDK internal stack added a new state. You can add a new state ",[714,894,895],{},"to the application stack"," corresponding to the effect of an opaque iink\noperation:",[505,898,899],{},[551,900],{"alt":553,"height":901,"src":902,"width":903},247.70691,"\u002Fdocs\u002Fimages\u002Fundo-redo-stacks-3.svg",473.74545,[695,905,906,925,939,945],{},[698,907,908,917],{"v-slot:swift":553},[505,909,910,911,913,914,916],{},"The value of ",[536,912,711],{}," obtained after the iink operation is stored into the application stack.\nIt is useful to be able to see whether the value you get from ",[536,915,743],{}," notifications has changed and to react accordingly.",[505,918,919,920,753,922,924],{},"You can now select and delete your image outside of iink SDK.\nLike for the first operation, ",[536,921,743],{},[536,923,711],{}," is not incremented:",[698,926,927,933],{"v-slot:csharp":553},[505,928,910,929,913,931,916],{},[536,930,767],{},[536,932,790],{},[505,934,919,935,753,937,924],{},[536,936,790],{},[536,938,767],{},[505,940,910,941,913,943,916],{},[536,942,808],{},[536,944,830],{},[505,946,919,947,753,949,924],{},[536,948,830],{},[536,950,808],{},[505,952,953],{},[551,954],{"alt":553,"height":955,"src":956,"width":957},266.71719,"\u002Fdocs\u002Fimages\u002Fundo-redo-stacks-4.svg",628.85779,[505,959,960],{},"Now, let's undo. As the current application state results from an application-level operation, it is up to the application to restore the image:",[505,962,963],{},[551,964],{"alt":553,"height":955,"src":965,"width":966},"\u002Fdocs\u002Fimages\u002Fundo-redo-stacks-5.svg",606.08752,[695,968,969,982,991],{},[698,970,971],{"v-slot:swift":553},[505,972,973,974,977,978,981],{},"Let's undo again. The current state results from an internal iink SDK operation.\nOne should thus call ",[536,975,976],{},"undo"," ",[714,979,980],{},"on the iink SDK editor"," when moving the cursor on the application stack:",[698,983,984],{"v-slot:csharp":553},[505,985,973,986,977,989,981],{},[536,987,988],{},"Undo()",[714,990,980],{},[505,992,973,993,977,996,981],{},[536,994,995],{},"undo()",[714,997,980],{},[505,999,1000],{},[551,1001],{"alt":553,"height":1002,"src":1003,"width":966},266.71729,"\u002Fdocs\u002Fimages\u002Fundo-redo-stacks-6.svg",[695,1005,1006,1020,1031],{},[698,1007,1008],{"v-slot:swift":553},[505,1009,1010,1011,977,1014,1016,1017,1019],{},"Now, if you wanted to redo, you would first call ",[536,1012,1013],{},"redo",[714,1015,980],{}," and move the cursor to the right,\nas the operation to redo was an iink operation (",[536,1018,711],{}," is incremented to 1 but as it comes from a redo operation, you should not consider it as a new operation that would prevent a\nnext redo by clearing the stack). Redo again and this time manage the image deletion on the application side.",[698,1021,1022],{"v-slot:csharp":553},[505,1023,1010,1024,977,1027,1016,1029,1019],{},[536,1025,1026],{},"Redo()",[714,1028,980],{},[536,1030,767],{},[505,1032,1010,1033,977,1036,1016,1038,1019],{},[536,1034,1035],{},"redo()",[714,1037,980],{},[536,1039,808],{},[671,1041,1042],{"color":673},[695,1043,1044,1052,1058],{},[698,1045,1046],{"v-slot:swift":553},[505,1047,1048,1049,1051],{},"The iink SDK undo stack is partially purged from time to time to control memory consumption.\nAs a result, it may sometimes not be able to revert all the states that were are known by the application-level stack.\nTo know if an undo is actually possible, you should check the value of ",[536,1050,721],{},", that tells you how many steps can be undone by iink SDK from its current internal state.",[698,1053,1054],{"v-slot:csharp":553},[505,1055,1048,1056,1051],{},[536,1057,774],{},[505,1059,1048,1060,1051],{},[536,1061,815],{},{"title":553,"searchDepth":1063,"depth":1063,"links":1064},3,[1065,1067,1068,1069],{"id":511,"depth":1066,"text":512},2,{"id":527,"depth":1066,"text":528},{"id":626,"depth":1066,"text":627},{"id":679,"depth":1066,"text":680},null,"How to implement an undo\u002Fredo stack at application-level that can handle iink SDK operations","md","i-tabler-arrow-back-up",{},"Combined undo\u002Fredo stacks",true,"tpx44r",{"title":414,"description":1071},"LgsttzQQo3lod8p6fa8t71RcxArNXihvc9Kf1Eyb124",[1081],{"title":5,"path":6,"stem":7,"children":1082,"page":40},[1083],{"title":321,"path":322,"stem":323,"children":1084,"page":40},[1085],{"title":15,"navTitle":1070,"icon":1070,"path":326,"stem":327,"children":1086,"page":40},[1087,1090,1092,1094,1101,1113,1122,1127,1130,1137,1141,1159,1160,1162,1164,1166,1170],{"title":330,"path":331,"stem":332,"navTitle":1088,"icon":1089},"About","i-tabler-info-circle",{"title":33,"path":334,"stem":335,"navTitle":33,"icon":1091},"i-tabler-bell-ringing",{"title":37,"path":337,"stem":338,"navTitle":37,"icon":1093},"i-tabler-gps",{"title":42,"navTitle":1070,"icon":1070,"path":340,"stem":341,"children":1095,"page":40},[1096,1099],{"title":47,"path":344,"stem":345,"navTitle":1097,"icon":1098},"Platforms","i-tabler-device-laptop",{"title":51,"path":347,"stem":348,"navTitle":51,"icon":1100},"i-tabler-stack-2",{"title":55,"navTitle":1070,"icon":1070,"path":350,"stem":351,"children":1102,"page":40},[1103,1105,1107,1109,1111],{"title":60,"path":354,"stem":355,"navTitle":1070,"icon":1104},"i-tabler-text-scan-2",{"title":64,"path":357,"stem":358,"navTitle":64,"icon":1106},"i-tabler-language",{"title":68,"path":360,"stem":361,"navTitle":68,"icon":1108},"i-tabler-math",{"title":72,"path":363,"stem":364,"navTitle":72,"icon":1110},"i-tabler-circle-square",{"title":76,"path":366,"stem":367,"navTitle":1070,"icon":1112},"i-tabler-hand-finger",{"title":80,"navTitle":1070,"icon":1070,"path":369,"stem":370,"children":1114,"page":40},[1115,1117,1119],{"title":85,"path":373,"stem":374,"navTitle":85,"icon":1116},"i-tabler-eye",{"title":89,"path":376,"stem":377,"navTitle":89,"icon":1118},"i-tabler-bolt",{"title":93,"path":379,"stem":380,"navTitle":1120,"icon":1121},"Import and export","i-tabler-arrows-left-right",{"title":106,"navTitle":1070,"icon":1070,"path":382,"stem":383,"children":1123,"page":40},[1124,1126],{"title":386,"path":387,"stem":388,"navTitle":1070,"icon":1125},"i-tabler-direction-sign",{"title":390,"path":391,"stem":392,"navTitle":1070,"icon":1125},{"title":394,"navTitle":1070,"icon":1070,"path":395,"stem":396,"children":1128,"page":40},[1129],{"title":60,"path":399,"stem":400,"navTitle":1070,"icon":1104},{"title":402,"navTitle":1070,"icon":1070,"path":403,"stem":404,"children":1131,"page":40},[1132,1134,1136],{"title":407,"path":408,"stem":409,"navTitle":1070,"icon":1133},"i-tabler-file-database",{"title":97,"path":411,"stem":412,"navTitle":97,"icon":1135},"i-tabler-calculator",{"title":414,"path":415,"stem":416,"navTitle":1075,"icon":1073},{"title":418,"navTitle":1070,"icon":1070,"path":419,"stem":420,"children":1138,"page":40},[1139],{"title":423,"path":424,"stem":425,"navTitle":1070,"icon":1140},"i-tabler-stack-backward",{"title":427,"navTitle":1070,"icon":1070,"path":428,"stem":429,"children":1142,"page":40},[1143,1145,1147,1149,1151,1153,1155,1157],{"title":432,"path":433,"stem":434,"navTitle":1070,"icon":1144},"i-tabler-app-window",{"title":436,"path":437,"stem":438,"navTitle":1070,"icon":1146},"i-tabler-edit",{"title":440,"path":441,"stem":442,"navTitle":1070,"icon":1148},"i-tabler-adjustments",{"title":444,"path":445,"stem":446,"navTitle":1070,"icon":1150},"i-tabler-pointer",{"title":448,"path":449,"stem":450,"navTitle":1070,"icon":1152},"i-tabler-sparkles",{"title":452,"path":453,"stem":454,"navTitle":1070,"icon":1154},"i-tabler-zoom-pan",{"title":456,"path":457,"stem":458,"navTitle":1070,"icon":1156},"i-tabler-palette",{"title":460,"path":461,"stem":462,"navTitle":1070,"icon":1158},"i-tabler-brush",{"title":464,"path":465,"stem":466,"navTitle":1070,"icon":1121},{"title":202,"path":468,"stem":469,"navTitle":1070,"icon":1161},"i-tabler-tags",{"title":471,"path":472,"stem":473,"navTitle":1070,"icon":1163},"i-tabler-bug",{"title":206,"path":475,"stem":476,"navTitle":1070,"icon":1165},"i-tabler-file-code",{"title":313,"navTitle":1070,"icon":1070,"path":478,"stem":479,"children":1167,"page":40},[1168],{"title":313,"path":482,"stem":483,"navTitle":313,"icon":1169},"i-tabler-pencil",{"title":139,"navTitle":1070,"icon":1070,"path":485,"stem":486,"children":1171,"page":40},[1172,1174,1177],{"title":144,"path":489,"stem":490,"navTitle":1070,"icon":1173},"i-tabler-settings",{"title":239,"path":492,"stem":493,"navTitle":1175,"icon":1176},"JIIX","i-tabler-braces",{"title":495,"path":496,"stem":497,"navTitle":456,"icon":1156},{"id":1179,"title":1180,"body":1181,"canonicalPath":1070,"description":1241,"extension":1072,"icon":1093,"meta":1242,"navTitle":20,"navigation":1076,"path":1243,"resolveKey":1070,"resolveVersion":1070,"seo":1244,"stem":1245,"__hash__":1246},"support\u002Fsupport\u002F01.index.md","Support",{"type":502,"value":1182,"toc":1239},[1183,1186],[505,1184,1185],{},"Find answers to common questions about integrating the iink SDK and MyScript Cloud APIs. Browse the topics below or reach out on the community forum.",[1187,1188,1189,1198,1206,1214,1222,1231],"card-group",{},[1190,1191,1195],"card",{"icon":1192,"title":1193,"to":1194},"i-tabler-package","Recognition assets","\u002Fsupport\u002Frecognition-assets\u002F",[505,1196,1197],{},"Download base assets and build custom resources to fine-tune the recognition.",[1190,1199,1203],{"icon":1200,"title":1201,"to":1202},"i-tabler-key","On-device license management","\u002Fsupport\u002Fon-device\u002Fon-device-license-management\u002F",[505,1204,1205],{},"Manage licenses for applications embedding the on-device iink SDK.",[1190,1207,1211],{"icon":1208,"title":1209,"to":1210},"i-tabler-user-circle","Registering with MyScript Cloud","\u002Fsupport\u002Fcloud\u002Fregistering-myscript-cloud\u002F",[505,1212,1213],{},"Create a Cloud account and obtain the keys to call our recognition APIs.",[1190,1215,1219],{"icon":1216,"title":1217,"to":1218},"i-tabler-rocket","Being production ready","\u002Fsupport\u002Fcloud\u002Fbeing-production-ready\u002F",[505,1220,1221],{},"Best practices and quotas to ship your iink Cloud integration to production.",[1190,1223,1228],{"icon":1224,"title":1225,"to":1226,"target":1227},"i-tabler-message-circle","Forums","https:\u002F\u002Fdeveloper-support.myscript.com\u002Fsupport\u002Flogin","_blank",[505,1229,1230],{},"Ask questions and get answers from the MyScript developer community.",[1190,1232,1236],{"icon":1233,"title":1234,"to":1235,"target":1227},"i-tabler-mail","Contact us","https:\u002F\u002Fwww.myscript.com\u002Fcontact\u002F",[505,1237,1238],{},"Can't find what you're looking for? Reach out to our team.",{"title":553,"searchDepth":1063,"depth":1063,"links":1240},[],"MyScript Developer Support hub",{},"\u002Fsupport",{"title":1180,"description":1241},"support\u002F01.index","jENFmcn55y_8r3_6pH5xxlH1dZJBwoAuq9F7gXQtow8",1792566758147]