{
  "results": [
    {
      "title": "documentsManager",
      "slug": "documentsmanager-49068070d10f",
      "url": "https://documentation.fontoxml.com/latest/documentsmanager-49068070d10f",
      "description": "The documents manager manages the set of loaded documents."
    },
    {
      "title": "DocumentsManager",
      "slug": "documentsmanager-f746b3a48442",
      "url": "https://documentation.fontoxml.com/latest/documentsmanager-f746b3a48442",
      "description": "Get the remote document ID associated with the given document, or null if\nthere is no loaded document with the given ID or a remote document ID is\nnot available (only possible if the document was detached from the CMS)."
    },
    {
      "title": "initialDocumentsManager",
      "slug": "initialdocumentsmanager-58f1be56c9c3",
      "url": "https://documentation.fontoxml.com/latest/initialdocumentsmanager-58f1be56c9c3",
      "description": "The InitialDocumentsManager provides a notifier to signal when the initial\ndocuments have loaded."
    },
    {
      "title": "DocumentLoader",
      "slug": "documentloader-448626390717",
      "url": "https://documentation.fontoxml.com/latest/documentloader-448626390717",
      "description": "The DocumentLoader manages and de-duplicates load requests for documents and\nadds corresponding instances to the DocumentsManager."
    },
    {
      "title": "operationsManager",
      "slug": "operationsmanager-d638b23f3776",
      "url": "https://documentation.fontoxml.com/latest/operationsmanager-d638b23f3776",
      "description": "Operations control all interaction with the document and most state of the\napplication. The operationManager manages the operations pipeline. It may\nexecute operations and retrieve the state of an operation."
    },
    {
      "title": "InitialDocumentsManager",
      "slug": "initialdocumentsmanager-e112178333f2",
      "url": "https://documentation.fontoxml.com/latest/initialdocumentsmanager-e112178333f2",
      "description": "In applications that use JIT loading by setting the\nautomatically-load-hierarchy-content configuration value to false,\nthis notifier fires right after all documents that contribute to the\nhierarchy shape have finished loading. This consists of those referenced\nfrom the current top-level documentIds and from any\nhierarchyChildNodesQuery. In applications that set the configuration\nvalue to true or omit it, this notifier fires after all documents\nreferenced from the hierarchy have been loaded. This consists of those\nmentioned earlier plus any documents referenced from any\nhierarchyContentQuery."
    },
    {
      "title": "DocumentHistoryManager",
      "slug": "documenthistorymanager-6f598812c495",
      "url": "https://documentation.fontoxml.com/latest/documenthistorymanager-6f598812c495",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the documentHistoryManager instance\ndirectly."
    },
    {
      "title": "DocumentCapabilitiesManager",
      "slug": "documentcapabilitiesmanager-25894e8b7c80",
      "url": "https://documentation.fontoxml.com/latest/documentcapabilitiesmanager-25894e8b7c80",
      "description": "Changes in capability level are managed automatically. Any document\nreferenced by the (global) documentsHierarchy will have its level\nautomatically upgraded to operable, and, depending on its lock state, to\neditable or saveable. This manager may be used to be notified when a\ndocument gains or loses a capability level."
    },
    {
      "title": "connectorsManager",
      "slug": "connectorsmanager-f2fc6987ada1",
      "url": "https://documentation.fontoxml.com/latest/connectorsmanager-f2fc6987ada1",
      "description": "Manages the connectors and cmsClients configured for the application."
    },
    {
      "title": "selectionManager",
      "slug": "selectionmanager-c21dc280f7f6",
      "url": "https://documentation.fontoxml.com/latest/selectionmanager-c21dc280f7f6",
      "description": "Manages the selection by exposing the selected range in various ways. The\nselection manager also tracks the ID of the document containing the selection\n(the \"focused document\"), as well as the hierarchy node ID corresponding to the\nview containing this selection. This last ID helps to disambiguate cases where\nthe selection could be mapped to multiple views."
    },
    {
      "title": "documentCapabilitiesManager",
      "slug": "documentcapabilitiesmanager-fd5ccdb396e3",
      "url": "https://documentation.fontoxml.com/latest/documentcapabilitiesmanager-fd5ccdb396e3",
      "description": "Changes in capability level are managed automatically. Any document\nreferenced by the (global) documentsHierarchy will have its level\nautomatically upgraded to operable, and, depending on its lock state and if\nbatch saving is enabled, to editable or saveable. This manager may be\nused to be notified when a document gains or loses a capability level."
    },
    {
      "title": "SelectionManager",
      "slug": "selectionmanager-8ed7ca848598",
      "url": "https://documentation.fontoxml.com/latest/selectionmanager-8ed7ca848598",
      "description": "Manages the selection by exposing the selected range in various ways. The\nselection manager also tracks the ID of the document containing the selection\n(the \"focused document\"), as well as the hierarchy node ID corresponding to the\nview containing this selection. This last ID helps to disambiguate cases where\nthe selection could be mapped to multiple views."
    },
    {
      "title": "namespaceManager",
      "slug": "namespacemanager-09740b7648dc",
      "url": "https://documentation.fontoxml.com/latest/namespacemanager-09740b7648dc",
      "description": "The namespace manager controls which namespace uri should be used for which\nprefix. The mapping is used by various components to create elements and\nattributes or to read from the DOM"
    },
    {
      "title": "ConnectorsManager",
      "slug": "connectorsmanager-e5dfcfd7d399",
      "url": "https://documentation.fontoxml.com/latest/connectorsmanager-e5dfcfd7d399",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the connectorsManager instance\ndirectly."
    },
    {
      "title": "SxManager",
      "slug": "sxmanager-5600d67cb175",
      "url": "https://documentation.fontoxml.com/latest/sxmanager-5600d67cb175",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the sxManager instance\ndirectly."
    },
    {
      "title": "OperationsManager",
      "slug": "operationsmanager-f0f488a51a38",
      "url": "https://documentation.fontoxml.com/latest/operationsmanager-f0f488a51a38",
      "description": "Operations control all interaction with the document and most state of the\napplication. The operationManager manages the operations pipeline. It may\nexecute operations and retrieve the state of an operation."
    },
    {
      "title": "ErrorManager",
      "slug": "errormanager-1c3cdc9396a2",
      "url": "https://documentation.fontoxml.com/latest/errormanager-1c3cdc9396a2",
      "description": "Fonto failed to load all of its initial documents (i.e., those passed in the\nscope parameter)."
    },
    {
      "title": "NamespaceManager",
      "slug": "namespacemanager-c80956c5d6d7",
      "url": "https://documentation.fontoxml.com/latest/namespacemanager-c80956c5d6d7",
      "description": "Get the registered namespace associated with the given prefix, given the\ncontextNode for extra information on namespaces used elsewhere in the document"
    },
    {
      "title": "UiManager",
      "slug": "uimanager-d01b1d92d618",
      "url": "https://documentation.fontoxml.com/latest/uimanager-d01b1d92d618",
      "description": "import uiManager from 'fontoxml-modular-ui/src/uiManager';\nimport myCustomIconSVG from './my-custom-icon.svg';\n\nexport default function install () {\n  uiManager.registerCustomIcon('myCustomIcon', myCustomIconSVG);\n};"
    },
    {
      "title": "documentHistoryManager",
      "slug": "documenthistorymanager-c2322b216d83",
      "url": "https://documentation.fontoxml.com/latest/documenthistorymanager-c2322b216d83",
      "description": "documentHistoryManager"
    },
    {
      "title": "IndexManager",
      "slug": "indexmanager-fafb997c83d1",
      "url": "https://documentation.fontoxml.com/latest/indexmanager-fafb997c83d1",
      "description": "import indexManager from 'fontoxml-indices/src/indexManager';\n\nconst observer = indexManager.observeQueryResults('descendant::fn =&gt; count()', documentNode, {\n    expectedResultType: ReturnTypes.NUMBER\n});\nconst removeCallback = observer.resultsChangedNotifier.addCallback(function() {\n    console.log('Currently #' + observer.getResults() + ' footnotes present in this document');\n});\n\nfunction destroy() {\n    observer.stopObservingQueryResults();\n    removeCallback();\n}\n"
    },
    {
      "title": "nodeHighlightManager",
      "slug": "nodehighlightmanager-c3166c891f4a",
      "url": "https://documentation.fontoxml.com/latest/nodehighlightmanager-c3166c891f4a",
      "description": "The nodeHighlightManager can be used to highlight nodes on the canvas."
    },
    {
      "title": "ConfigurationManager",
      "slug": "configurationmanager-3e0d8dbacb90",
      "url": "https://documentation.fontoxml.com/latest/configurationmanager-3e0d8dbacb90",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the configurationManager instance\ndirectly."
    },
    {
      "title": "pivotModelTransformerManager",
      "slug": "pivotmodeltransformermanager-00c9c3dfb12e",
      "url": "https://documentation.fontoxml.com/latest/pivotmodeltransformermanager-00c9c3dfb12e",
      "description": "The pivot model manager manages transformers which translates between DOM\nstructures and pivot models."
    },
    {
      "title": "useManagerState",
      "slug": "usemanagerstate-0353cc4d81b7",
      "url": "https://documentation.fontoxml.com/latest/usemanagerstate-0353cc4d81b7",
      "description": "A React hook that allows your components to use and respond to changes in\nstate that is maintained in a manager."
    },
    {
      "title": "indexManager",
      "slug": "indexmanager-474a0c8948f9",
      "url": "https://documentation.fontoxml.com/latest/indexmanager-474a0c8948f9",
      "description": "Provides a way to continuously run XPath queries on the loaded documents in an\nefficient way."
    },
    {
      "title": "ScrollIntoViewManager",
      "slug": "scrollintoviewmanager-0d3dc000b1bc",
      "url": "https://documentation.fontoxml.com/latest/scrollintoviewmanager-0d3dc000b1bc",
      "description": "Scroll the given range (in a loaded document) into view."
    },
    {
      "title": "NodeHighlightManager",
      "slug": "nodehighlightmanager-df90aea11028",
      "url": "https://documentation.fontoxml.com/latest/nodehighlightmanager-df90aea11028",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the nodeHighlightManager instance\ndirectly."
    },
    {
      "title": "IframeCommunicationManager",
      "slug": "iframecommunicationmanager-c5ea604ffc69",
      "url": "https://documentation.fontoxml.com/latest/iframecommunicationmanager-c5ea604ffc69",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the iframeCommunicationManager instance\ndirectly."
    },
    {
      "title": "sxManager",
      "slug": "sxmanager-80ac64831b09",
      "url": "https://documentation.fontoxml.com/latest/sxmanager-80ac64831b09",
      "description": "sxManager"
    },
    {
      "title": "errorManager",
      "slug": "errormanager-5dba826ddc9c",
      "url": "https://documentation.fontoxml.com/latest/errormanager-5dba826ddc9c",
      "description": "errorManager"
    },
    {
      "title": "uiManager",
      "slug": "uimanager-a1b562c93e18",
      "url": "https://documentation.fontoxml.com/latest/uimanager-a1b562c93e18",
      "description": "uiManager"
    },
    {
      "title": "SpecialCharactersManager",
      "slug": "specialcharactersmanager-cfa2ac8a1685",
      "url": "https://documentation.fontoxml.com/latest/specialcharactersmanager-cfa2ac8a1685",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the specialCharactersManager instance\ndirectly."
    },
    {
      "title": "configurationManager",
      "slug": "configurationmanager-5032c84e5203",
      "url": "https://documentation.fontoxml.com/latest/configurationmanager-5032c84e5203",
      "description": "configurationManager"
    },
    {
      "title": "AuthorMetadataManager",
      "slug": "authormetadatamanager-14738abb0c03",
      "url": "https://documentation.fontoxml.com/latest/authormetadatamanager-14738abb0c03",
      "description": "This is the class definition of a singleton. Please do not import or\ninstantiate this class directly, instead use the\nauthorMetadataManager instance directly. Provides access to the\ninformation about the current author, as provided by the CMS."
    },
    {
      "title": "DescendantIndexManager",
      "slug": "descendantindexmanager-c93bcbffc9ae",
      "url": "https://documentation.fontoxml.com/latest/descendantindexmanager-c93bcbffc9ae",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the descendantIndexManager instance\ndirectly."
    },
    {
      "title": "PivotModelTransformerManager",
      "slug": "pivotmodeltransformermanager-cc5c46bd05c3",
      "url": "https://documentation.fontoxml.com/latest/pivotmodeltransformermanager-cc5c46bd05c3",
      "description": "The pivot model manager manages transformers which translates between DOM\nstructures and pivot models."
    },
    {
      "title": "Document saving, loading, locking, and state management",
      "slug": "document-saving-loading-locking-and-state-management-2f5963250df3",
      "url": "https://documentation.fontoxml.com/latest/document-saving-loading-locking-and-state-management-2f5963250df3",
      "description": "Indicates whether additional documents may be included in the response. Its main purpose is to load a multi-document structure with a single request, which would otherwise require several subsequent document load requests. Additional documents typically only include documents from the document structure whose main purpose is to group and reference other documents e.g. DITA maps. Whether additional documents are actually included in the response is left to the discretion of the CMS. This property is automatically set to true for initial document load requests. This feature can be combined with just-in-time loading to minimize the number of document load requests."
    },
    {
      "title": "PasteImportStreamManager",
      "slug": "pasteimportstreammanager-df258b8995cd",
      "url": "https://documentation.fontoxml.com/latest/pasteimportstreammanager-df258b8995cd",
      "description": "This is the class definition of a singleton. Please do not import or instantiate\nthis class directly, instead use the pasteImportStreamManager instance\ndirectly."
    },
    {
      "title": "authorMetadataManager",
      "slug": "authormetadatamanager-e68361c32b87",
      "url": "https://documentation.fontoxml.com/latest/authormetadatamanager-e68361c32b87",
      "description": "authorMetadataManager"
    },
    {
      "title": "specialCharactersManager",
      "slug": "specialcharactersmanager-23ecbe66f111",
      "url": "https://documentation.fontoxml.com/latest/specialcharactersmanager-23ecbe66f111",
      "description": "specialCharactersManager"
    },
    {
      "title": "scrollIntoViewManager",
      "slug": "scrollintoviewmanager-f9e80c6cb0bc",
      "url": "https://documentation.fontoxml.com/latest/scrollintoviewmanager-f9e80c6cb0bc",
      "description": "scrollIntoViewManager"
    },
    {
      "title": "descendantIndexManager",
      "slug": "descendantindexmanager-e27c1a0cb983",
      "url": "https://documentation.fontoxml.com/latest/descendantindexmanager-e27c1a0cb983",
      "description": "descendantIndexManager"
    },
    {
      "title": "iframeCommunicationManager",
      "slug": "iframecommunicationmanager-3fdbda6f1ab6",
      "url": "https://documentation.fontoxml.com/latest/iframecommunicationmanager-3fdbda6f1ab6",
      "description": "Import fontoxml-iframe-communication/iframeCommunicationManager from the Fonto\napplication to communicate with the hosting application. Use the browser's\nnative postMessage API to control the Fonto instance from the hosting application."
    },
    {
      "title": "DocumentsHierarchy",
      "slug": "documentshierarchy-72622505d970",
      "url": "https://documentation.fontoxml.com/latest/documentshierarchy-72622505d970",
      "description": "The DocumentsHierarchy represents the relationships between the documents\nloaded in the DocumentsManager. It is a tree of DocumentsHierarchyNodes, each\nof which optionally references a document which can be loaded. The\nDocumentsHierarchy itself is the root of the tree and can not reference a\ndocument."
    },
    {
      "title": "pasteImportStreamManager",
      "slug": "pasteimportstreammanager-c318dd80bef1",
      "url": "https://documentation.fontoxml.com/latest/pasteimportstreammanager-c318dd80bef1",
      "description": "pasteImportStreamManager"
    },
    {
      "title": "Uncaught (in Promise) undefined from executeOperation in operationsManager",
      "slug": "uncaught-in-promise-undefined-from-executeoperation-in-operationsmanager-92c9ed903444",
      "url": "https://documentation.fontoxml.com/latest/uncaught-in-promise-undefined-from-executeoperation-in-operationsmanager-92c9ed903444",
      "description": "A promise that rejects from the OperationsManager usually indicate a disabled operation to be executed directly, without getting the state first. This error might cause a redirect to the error route."
    },
    {
      "title": "How do I use document metadata?!",
      "slug": "how-to-use-document-metadata-8b5f74dabd42",
      "url": "https://documentation.fontoxml.com/latest/how-to-use-document-metadata-8b5f74dabd42",
      "description": "import documentsManager from 'fontoxml-documents/src/documentsManager';\nimport useManagerState from 'fontoxml-fx/src/useManagerState';\nimport Notifier from 'fontoxml-utils/src/Notifier';\n\n\nexport default useWorkflowState (mapDocumentId: DocumentId) {\n\treturn useManagerState(\n\t\t// This argument should have been a notifier, but the document metadata API does not accept one.\n\t\t{\n\t\t\taddCallback: (callback) =&gt; {\n\t\t\t\tdocumentsManager.addDocumentMetadataChangeCallback(mapDocumentId, callback);\n\t\t\t}\n\t\t},\n\t\t() =&gt; documentsManager.getDocumentMetadata(mapDocumentId)?.workflowStep\n\t);\n};"
    },
    {
      "title": "createDocumentFromXml",
      "slug": "createdocumentfromxml-fbbbcea13b0f",
      "url": "https://documentation.fontoxml.com/latest/createdocumentfromxml-fbbbcea13b0f",
      "description": "import readOnlyBlueprint from 'fontoxml-blueprints/src/readOnlyBlueprint';\nimport createDocumentFromXml from 'fontoxml-document-from-template/src/createDocumentFromXml';\nimport replaceAllIdentifiersInDocument from 'fontoxml-document-from-template/src/replaceAllIdentifiersInDocument';\nimport documentsManager from 'fontoxml-documents/src/documentsManager';\nimport type { DocumentId } from 'fontoxml-documents/src/types';\nimport serializeNodeToXml from 'fontoxml-dom-utils/src/serializeNodeToXml';\nimport type { FontoElementNode } from 'fontoxml-dom-utils/src/types';\nimport evaluateXPathToFirstNode from 'fontoxml-selectors/src/evaluateXPathToFirstNode';\n\nasync function cloneDocument(\n    documentId: DocumentId\n): Promise&lt;DocumentId&gt; {\n    const documentNode = documentsManager.getDocumentNode(documentId);\n    const originDocumentElement = evaluateXPathToFirstNode(\n        'child::element()',\n        documentNode,\n        readOnlyBlueprint\n    );\n\n    const documentId = await createDocumentFromXml(\n        serializeNodeToXml(\n            originDocumentElement as FontoElementNode&lt;'readable'&gt;\n        ),\n        {\n            modifyTemplateCallback: (documentNode, blueprint) =&gt; {\n                replaceAllIdentifiersInDocument(documentNode, blueprint);\n            },\n        }\n    );\n\n// The new document is now loaded in the documentsManager, identified by the\n// returned `documentId`. However, it will not be visible in the editor. To\n// start editing it, either add a reference to it from the documents defining\n// the hierarchy, or use the `update-initial-documents-list` operation to\n// open it directly.\n    return documentId;\n}\n"
    },
    {
      "title": "Fonto Documentation",
      "slug": "fonto-documentation-9ebd76426ee0",
      "url": "https://documentation.fontoxml.com/latest/fonto-documentation-9ebd76426ee0",
      "description": "documentsManager"
    },
    {
      "title": "createDocumentFromRemoteTemplate",
      "slug": "createdocumentfromremotetemplate-4aeade2f9ed9",
      "url": "https://documentation.fontoxml.com/latest/createdocumentfromremotetemplate-4aeade2f9ed9",
      "description": "const documentId = await createDocumentFromRemoteTemplate('template-remote-id', {\n    modifyTemplateCallback: function modifyTemplate (documentNode, blueprint, format) {\n         // Modify the document before it is sent to the CMS\n         // The blueprint will be validated for you\n    }\n});\n\n// The new document is now loaded in the documentsManager, identified by the\n// returned `documentId`. However, it will not be visible in the editor. To\n// start editing it, either add a reference to it from the documents defining\n// the hierarchy, or use the `update-initial-documents-list` operation to\n// open it directly."
    },
    {
      "title": "createDocumentFromLocalTemplate",
      "slug": "createdocumentfromlocaltemplate-46553d7ebb2a",
      "url": "https://documentation.fontoxml.com/latest/createdocumentfromlocaltemplate-46553d7ebb2a",
      "description": "const documentId = await createDocumentFromLocalTemplate('my-template.xml', {\n    modifyTemplateCallback: function modifyTemplate (documentNode, blueprint, format) {\n         // Modify the document before it is sent to the CMS\n         // The blueprint will be validated for you\n    }\n});\n\n// The new document is now loaded in the documentsManager, identified by the\n// returned `documentId`. However, it will not be visible in the editor. To\n// start editing it, either add a reference to it from the documents defining\n// the hierarchy, or use the `update-initial-documents-list` operation to\n// open it directly."
    },
    {
      "title": "update-document-metadata-and-save-all-documents",
      "slug": "update-document-metadata-and-save-all-documents-26b0b8b8f82a",
      "url": "https://documentation.fontoxml.com/latest/update-document-metadata-and-save-all-documents-26b0b8b8f82a",
      "description": "This operation will cause the metadata property of a document to be changed to the new value. If the document will need to be locked to do this, it will be locked. All documents with changes will be saved."
    },
    {
      "title": "Versioning of documents",
      "slug": "versioning-of-documents-42b946c78881",
      "url": "https://documentation.fontoxml.com/latest/versioning-of-documents-42b946c78881",
      "description": "Fonto Document History and Fonto Review need to know which branches belong to which document. An identifier, the invariantDocumentId, is used to do this. In the example above, the invariantDocumentId is 'document-1.xml'. The CMS must create a mapping from branch to invariantDocumentId. This information is exposed to Fonto Editor by adding the invariantDocumentId in the response of the GET /document endpoint, and to Fonto Document History by adding the invariantDocumentId in the response of the history endpoints."
    },
    {
      "title": "Documents hierarchy",
      "slug": "documents-hierarchy-6136e9229045",
      "url": "https://documentation.fontoxml.com/latest/documents-hierarchy-6136e9229045",
      "description": "In the public API, the documentsHierarchy singleton represents the documents hierarchy for the current Fonto Editor session. It is a forest (list of trees) of DocumentsHierarchyNode instances, each of which has a DocumentReference pointing to some (part of a) document."
    },
    {
      "title": "isInDocument",
      "slug": "isindocument-d58e2ab6a20f",
      "url": "https://documentation.fontoxml.com/latest/isindocument-d58e2ab6a20f",
      "description": "Get whether a node is contained in a document."
    },
    {
      "title": "setDocumentMetadataToMetadataOfDocument",
      "slug": "setdocumentmetadatatometadataofdocument-eb1f3e8534c3",
      "url": "https://documentation.fontoxml.com/latest/setdocumentmetadatatometadataofdocument-eb1f3e8534c3",
      "description": "Set the documentMetadata step data to the metadata of the referenced document."
    },
    {
      "title": "Document History",
      "slug": "document-history-39fc9921d524",
      "url": "https://documentation.fontoxml.com/latest/document-history-39fc9921d524",
      "description": "The invariantDocumentIdentifier of the document. This identifier should be included if it is possible to reference multiple versions of the same document. In this case, all versions of the same document must set this to the same value."
    },
    {
      "title": "Document locking",
      "slug": "document-locking-fa9a399ec2bb",
      "url": "https://documentation.fontoxml.com/latest/document-locking-fa9a399ec2bb",
      "description": "A document is editable until the author is told otherwise. This causes the locking process to be hidden from the author. Not having to manually request a lock on a document minimizes the amount of actions required from a author to start editing documents, and avoids the author having to take this aspect of document management into account. If a lock can't be requested at all this is conveyed to the author by having the document loaded and visualized as a document that cannot be edited. This is a clear visual difference compared to the starting state of editable documents."
    },
    {
      "title": "isDocument",
      "slug": "isdocument-03bbafa8f141",
      "url": "https://documentation.fontoxml.com/latest/isdocument-03bbafa8f141",
      "description": "Checks whether the given node is a document node"
    },
    {
      "title": "release-document-locks",
      "slug": "release-document-locks-4710b0cc3c59",
      "url": "https://documentation.fontoxml.com/latest/release-document-locks-4710b0cc3c59",
      "description": "This operation will ignore document IDs of documents for which the lock is not acquired"
    },
    {
      "title": "fonto:document",
      "slug": "fonto-document-fb5c19e1ad6d",
      "url": "https://documentation.fontoxml.com/latest/fonto-document-fb5c19e1ad6d",
      "description": "Get the document node with the given remote document id if it is loaded. If\nthis document is not loaded, this will return the empty sequence."
    },
    {
      "title": "setRemoteDocumentIdFromDocumentId",
      "slug": "setremotedocumentidfromdocumentid-bb56762d44e0",
      "url": "https://documentation.fontoxml.com/latest/setremotedocumentidfromdocumentid-bb56762d44e0",
      "description": "Set the remoteDocumentId step data to the RemoteDocumentId for a given\nDocumentId."
    },
    {
      "title": "DocumentId",
      "slug": "documentid-9bdfc85ab71e",
      "url": "https://documentation.fontoxml.com/latest/documentid-9bdfc85ab71e",
      "description": "The per-instance generated identifier for a document. This can be used to point\nto a loaded document. The DocumentId related to a document may change after a\nrefresh of the editor."
    },
    {
      "title": "DocumentsSaver",
      "slug": "documentssaver-99efb0d3aff8",
      "url": "https://documentation.fontoxml.com/latest/documentssaver-99efb0d3aff8",
      "description": "The DocumentsSaver saves all currently opened / loaded documents upon request\nand auto saves any document after it has been changed."
    },
    {
      "title": "reload-document",
      "slug": "reload-document-668705c991a8",
      "url": "https://documentation.fontoxml.com/latest/reload-document-668705c991a8",
      "description": "The document ID of the document to reload"
    },
    {
      "title": "getDocumentNode",
      "slug": "getdocumentnode-8b5996f6b82e",
      "url": "https://documentation.fontoxml.com/latest/getdocumentnode-8b5996f6b82e",
      "description": "Contrary to Node's ownerDocument property, this will return the document itself\nif a document is passed."
    },
    {
      "title": "Document templates",
      "slug": "document-templates-da597f00dda1",
      "url": "https://documentation.fontoxml.com/latest/document-templates-da597f00dda1",
      "description": "First and foremost, document templates are regular XML documents that therefore should be valid according to their schema. A document template is recognized as such by the CMS because it's been placed in a different folder or has special attributes (this is not part of the XML and may differ per CMS). A document template typically contains editorial instructions."
    },
    {
      "title": "unload-document",
      "slug": "unload-document-334f1f695104",
      "url": "https://documentation.fontoxml.com/latest/unload-document-334f1f695104",
      "description": "This operation will not affect documents that are loaded only for preview (e.g., in browse modals). If the loading strategy is configured such that this document would be loaded automatically, it will be reloaded immediately afterwards."
    },
    {
      "title": "DocumentReference",
      "slug": "documentreference-e9112e9ae6c9",
      "url": "https://documentation.fontoxml.com/latest/documentreference-e9112e9ae6c9",
      "description": "An error may have been encountered after the document was loaded, in\nwhich case the documentId property is set but the document is no longer\navailable."
    },
    {
      "title": "Document History milestones",
      "slug": "document-history-milestones-2c0c78fb95e2",
      "url": "https://documentation.fontoxml.com/latest/document-history-milestones-2c0c78fb95e2",
      "description": "import connectorsManager from 'fontoxml-configuration/src/connectorsManager';\nimport RequestData from 'fontoxml-connector/src/RequestData';\nimport documentHistoryManager from 'fontoxml-document-history/src/documentHistoryManager';\nimport type { RemoteDocumentId } from 'fontoxml-remote-documents/src/types';\n\nimport DocumentHistoryMilestoneContent from './DocumentHistoryMilestoneContent';\nimport type { MilestoneData, MilestoneDataFromCms } from './types';\n\nexport default function install(): void {\n\tdocumentHistoryManager.configureMilestones&lt;MilestoneData&gt;({\n\t\tloadMilestones: async (remoteDocumentIds: RemoteDocumentId[]) =&gt; {\n\t\t\t// There's always only one document loaded in this Fonto configuration.\n\t\t\tif (remoteDocumentIds.length &gt; 1) {\n\t\t\t\tthrow new Error('Multiple root documents detected.');\n\t\t\t}\n\n\t\t\tconst requestData = new RequestData();\n\t\t\tconst cmsClient = connectorsManager.getCmsClient();\n\n\t\t\trequestData.addQueryParameters({\n\t\t\t\tcontext: JSON.stringify(\n\t\t\t\t\tcmsClient.createContext(remoteDocumentIds[0])\n\t\t\t\t),\n\t\t\t});\n\n\t\t\trequestData.addHeaders({\n\t\t\t\t'Cache-Control': 'no-cache',\n\t\t\t\tPragma: 'no-cache',\n\t\t\t});\n\n\t\t\tconst response = await cmsClient.sendRequest(\n\t\t\t\t'GET',\n\t\t\t\t'/history/milestones',\n\t\t\t\trequestData\n\t\t\t);\n\n\t\t\tconst milestones = response.body\n\t\t\t\t.milestones as MilestoneDataFromCms[];\n\n\t\t\treturn milestones.map((milestone) =&gt; {\n\t\t\t\treturn {\n\t\t\t\t\tdate: new Date(milestone.date),\n\t\t\t\t\tlabel: milestone.label,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tauthor: milestone.author,\n\t\t\t\t\t\tdescription: milestone.description,\n\t\t\t\t\t\tisMajorVersion: milestone.isMajorVersion,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tComponent: DocumentHistoryMilestoneContent,\n\t});\n}"
    },
    {
      "title": "Fonto Document History",
      "slug": "fonto-document-history-4462404bb30e",
      "url": "https://documentation.fontoxml.com/latest/fonto-document-history-4462404bb30e",
      "description": "The package name of this add-on is fontoxml-document-history. Read more about add-ons."
    },
    {
      "title": "Browse for documents and assets",
      "slug": "browse-for-documents-and-assets-476bd4db7caa",
      "url": "https://documentation.fontoxml.com/latest/browse-for-documents-and-assets-476bd4db7caa",
      "description": "This describes the endpoint for browsing for items in the CMS. This is used for browsing documents, for example for cross-references, for document templates for new documents, and for browsing assets like images."
    },
    {
      "title": "How to add automatic numbering to documents",
      "slug": "documents-9139173a6964",
      "url": "https://documentation.fontoxml.com/latest/documents-9139173a6964",
      "description": "This guide will help you set up automatic numbering for documents. This numbering can be shown in places like widgets and places where the element's titleQuery is used. This way of numbering will not change the content of the document. This guide uses the DITA topic reference (&lt;topicref&gt;) element throughout its examples."
    },
    {
      "title": "Remote document states",
      "slug": "remote-document-states-c79fb4e0b0d8",
      "url": "https://documentation.fontoxml.com/latest/remote-document-states-c79fb4e0b0d8",
      "description": "Fonto Editor edits documents that are loaded from the CMS. The state of a document in the CMS can change while it is being edited in the editor. A document may get locked, it may get removed, and many more things can happen. Also, the connection with the CMS itself may temporarily drop out. This concept page describes how the editor reacts to changes of the remote document state and how you can add new UI to reflect the remote document state."
    },
    {
      "title": "setDocumentIdToDocumentContainingContextNodeId",
      "slug": "setdocumentidtodocumentcontainingcontextnodeid-cf7cebfc6490",
      "url": "https://documentation.fontoxml.com/latest/setdocumentidtodocumentcontainingcontextnodeid-cf7cebfc6490",
      "description": "Set the documentId step data to the DocumentId of the document\ncontaining the context node."
    },
    {
      "title": "fonto:is-document-loaded",
      "slug": "fonto-is-document-loaded-b22eba5424ed",
      "url": "https://documentation.fontoxml.com/latest/fonto-is-document-loaded-b22eba5424ed",
      "description": "Get whether the document with a given remote document id is loaded."
    },
    {
      "title": "parseXmlDocument",
      "slug": "parsexmldocument-6fb807416bdf",
      "url": "https://documentation.fontoxml.com/latest/parsexmldocument-6fb807416bdf",
      "description": "Parse a document serialized as XML to an instantiated XML document."
    },
    {
      "title": "RemoteDocumentState",
      "slug": "remotedocumentstate-b9c106f925ea",
      "url": "https://documentation.fontoxml.com/latest/remotedocumentstate-b9c106f925ea",
      "description": "The remote document state for a document. Remote document state gives you\ninformation on whether the document is dirty, saved or locked correctly or has\nsave or lock errors."
    },
    {
      "title": "setContextNodeIdToDocumentElementOfDocument",
      "slug": "setcontextnodeidtodocumentelementofdocument-34dcdf746af7",
      "url": "https://documentation.fontoxml.com/latest/setcontextnodeidtodocumentelementofdocument-34dcdf746af7",
      "description": "\"set-cursor-in-document\": {\n  \"label\": \"Set cursor in document\",\n  \"steps\": [\n    {\n      \"type\": \"transform/setContextNodeIdToDocumentElementOfDocument\",\n      \"data\": {\n        \"documentId\": \"{{documentId}}\"\n      }\n    },\n    {\n      \"type\": \"operation/set-cursor-to-first-text-position\"\n    }\n  ]\n}"
    },
    {
      "title": "go-to-history-for-document",
      "slug": "go-to-history-for-document-10aba5158421",
      "url": "https://documentation.fontoxml.com/latest/go-to-history-for-document-10aba5158421",
      "description": "Open Fonto Document History for the specified document to show its changes."
    },
    {
      "title": "fonto:is-document-errored",
      "slug": "fonto-is-document-errored-2b43985649f9",
      "url": "https://documentation.fontoxml.com/latest/fonto-is-document-errored-2b43985649f9",
      "description": "Get whether the document with a given remote document id is in error state."
    },
    {
      "title": "isDocumentFragment",
      "slug": "isdocumentfragment-c63e937f372c",
      "url": "https://documentation.fontoxml.com/latest/isdocumentfragment-c63e937f372c",
      "description": "Checks whether the given node is a document fragment node"
    },
    {
      "title": "isDocumentType",
      "slug": "isdocumenttype-283921bc89b4",
      "url": "https://documentation.fontoxml.com/latest/isdocumenttype-283921bc89b4",
      "description": "Checks whether the given node is a document type node"
    },
    {
      "title": "fonto:remote-document-state",
      "slug": "fonto-remote-document-state-03df124b223a",
      "url": "https://documentation.fontoxml.com/latest/fonto-remote-document-state-03df124b223a",
      "description": "A map with the same shape as RemoteDocumentStateProperties. Or an empty sequence if the document with the given remote document ID is not loaded."
    },
    {
      "title": "DocumentCapabilityLevel",
      "slug": "documentcapabilitylevel-d6124f447f00",
      "url": "https://documentation.fontoxml.com/latest/documentcapabilitylevel-d6124f447f00",
      "description": "previewable - the document has been loaded; documents loaded for previews\n(such as in the CMS browser) remain at this level."
    },
    {
      "title": "start-saving-all-documents",
      "slug": "start-saving-all-documents-05f23be87a24",
      "url": "https://documentation.fontoxml.com/latest/start-saving-all-documents-05f23be87a24",
      "description": "Starts saving all documents"
    },
    {
      "title": "DocumentMetadata",
      "slug": "documentmetadata-d35a805a40a1",
      "url": "https://documentation.fontoxml.com/latest/documentmetadata-d35a805a40a1",
      "description": "Additional metadata about the document. This object can be used to store\napplication specific metadata."
    },
    {
      "title": "DocumentsHierarchyNode",
      "slug": "documentshierarchynode-1ac9e11c9b6d",
      "url": "https://documentation.fontoxml.com/latest/documentshierarchynode-1ac9e11c9b6d",
      "description": "The DocumentsHierarchyNode represents a subtree of the primary hierarchical\nrelationship between documents."
    },
    {
      "title": "release-all-document-locks",
      "slug": "release-all-document-locks-f759dc762545",
      "url": "https://documentation.fontoxml.com/latest/release-all-document-locks-f759dc762545",
      "description": "Release the locks for all documents"
    },
    {
      "title": "useDocumentLoader",
      "slug": "usedocumentloader-c42700245556",
      "url": "https://documentation.fontoxml.com/latest/usedocumentloader-c42700245556",
      "description": "// An example on how the `useDocumentLoader` hook can be used.\n\nfunction DocumentPreview() {\n        const { isErrored, error, isLoading, documentId } = useDocumentLoader(\n            selectedItem.id\n        );\n\n        if (isErrored) {\n            return (\n                &lt;Flex flex=\"1\" paddingSize=\"l\" isScrollContainer&gt;\n                    &lt;FxNodePreviewErrorPlaceholder error={error} remoteDocumentId={selectedItem.id}/&gt;\n                &lt;/Flex&gt;\n            );\n        }\n\n        if (isLoading) {\n            return (&lt;StateMessage title=\"Loading...\" visual={&lt;SpinnerIcon /&gt;} /&gt;);\n        }\n\n        return (&lt;FxNodePreview documentId={documentId} /&gt;);\n    }\n}\n"
    },
    {
      "title": "open-document-browser-modal",
      "slug": "open-document-browser-modal-742375974094",
      "url": "https://documentation.fontoxml.com/latest/open-document-browser-modal-742375974094",
      "description": "By default the browseContextDocument is set to the focusedDocument or,\nwhen the focusedDocument is not available, to the first document in the hierarchy."
    },
    {
      "title": "RemoteDocumentStateProperties",
      "slug": "remotedocumentstateproperties-3663b13383f9",
      "url": "https://documentation.fontoxml.com/latest/remotedocumentstateproperties-3663b13383f9",
      "description": "The remote document state properties for a document. Part of RemoteDocumentState."
    },
    {
      "title": "save-all-documents-and-wait",
      "slug": "save-all-documents-and-wait-9bca8105e970",
      "url": "https://documentation.fontoxml.com/latest/save-all-documents-and-wait-9bca8105e970",
      "description": "Use save-documents-and-wait to save a specific set of documents."
    },
    {
      "title": "DocumentHistoryConfiguration",
      "slug": "documenthistoryconfiguration-047fd8f83ed5",
      "url": "https://documentation.fontoxml.com/latest/documenthistoryconfiguration-047fd8f83ed5",
      "description": "Configuration for Fonto Document History."
    },
    {
      "title": "FxDocumentLoader",
      "slug": "fxdocumentloader-6c7de1fd2430",
      "url": "https://documentation.fontoxml.com/latest/fxdocumentloader-6c7de1fd2430",
      "description": "// An example on how the `FxDocumentLoader` can be used.\n\nclass DocumentPreview extends Component {\n⋮\n    render() {\n        return(\n            &lt;FxDocumentLoader remoteId={selectedItem.id}&gt;\n                {({ isErrored, error, isLoading, documentId }) =&gt; {\n                    if (isErrored) {\n                        return (\n                            &lt;Flex flex=\"1\" paddingSize=\"l\" isScrollContainer&gt;\n                                &lt;FxNodePreviewErrorPlaceholder error={error} remoteDocumentId={selectedItem.id}/&gt;\n                            &lt;/Flex&gt;\n                        );\n                    }\n\n                    if (isLoading) {\n                        return (&lt;StateMessage title=\"Loading...\" visual={&lt;SpinnerIcon /&gt;} /&gt;);\n                    }\n\n                    return (&lt;FxNodePreview documentId={documentId} /&gt;);\n                }}\n            &lt;/FxDocumentLoader&gt;\n        )\n    }\n}\n"
    },
    {
      "title": "save-document-and-wait",
      "slug": "save-document-and-wait-12e61d6630c8",
      "url": "https://documentation.fontoxml.com/latest/save-document-and-wait-12e61d6630c8",
      "description": "Use save-all-documents-and-wait to save all saveable documents that have been modified."
    },
    {
      "title": "acquire-document-locks",
      "slug": "acquire-document-locks-98663546fe1a",
      "url": "https://documentation.fontoxml.com/latest/acquire-document-locks-98663546fe1a",
      "description": "The document IDs of the document for which to acquire locks"
    },
    {
      "title": "DocumentContext",
      "slug": "documentcontext-68c8f5c44d43",
      "url": "https://documentation.fontoxml.com/latest/documentcontext-68c8f5c44d43",
      "description": "This documentContext can be used to store some information with a document\nthat is required for future requests. For instance a timestamp that indicates\nwhen the remote document state of the document has been updated most\nrecently."
    },
    {
      "title": "useDocumentAspect",
      "slug": "usedocumentaspect-fb508683e5a0",
      "url": "https://documentation.fontoxml.com/latest/usedocumentaspect-fb508683e5a0",
      "description": "Returns a certain aspect of the document with the given id, as set using\nsetDocumentAspect. Will subscribe to changes to the given aspect on the given\ndocument and return the current value of the given aspect."
    },
    {
      "title": "fonto:remote-document-id",
      "slug": "fonto-remote-document-id-c4f2b7d3ca21",
      "url": "https://documentation.fontoxml.com/latest/fonto-remote-document-id-c4f2b7d3ca21",
      "description": "Returns the remoteDocumentId of the document that contains the given node. This\nfunction will throw an error when the node is not related to a document that has\na remote document id."
    },
    {
      "title": "save-documents-and-wait",
      "slug": "save-documents-and-wait-bced370e5060",
      "url": "https://documentation.fontoxml.com/latest/save-documents-and-wait-bced370e5060",
      "description": "Use save-all-documents-and-wait to save all saveable documents that have been modified."
    },
    {
      "title": "reject-all-changes-in-document",
      "slug": "reject-all-changes-in-document-639571f86ac1",
      "url": "https://documentation.fontoxml.com/latest/reject-all-changes-in-document-639571f86ac1",
      "description": "Undoes all recorded changes in the focused document."
    },
    {
      "title": "disableOperationIfDocumentIsNotEditable",
      "slug": "disableoperationifdocumentisnoteditable-718298f15e19",
      "url": "https://documentation.fontoxml.com/latest/disableoperationifdocumentisnoteditable-718298f15e19",
      "description": "Disables the operation if the document with the given DocumentId is not\neditable."
    },
    {
      "title": "DocumentHistoryScope",
      "slug": "documenthistoryscope-df45deb31ae9",
      "url": "https://documentation.fontoxml.com/latest/documenthistoryscope-df45deb31ae9",
      "description": "Scope configuration for Fonto Document History."
    },
    {
      "title": "RemoteDocumentId",
      "slug": "remotedocumentid-7df056df1abc",
      "url": "https://documentation.fontoxml.com/latest/remotedocumentid-7df056df1abc",
      "description": "A remote document identifier is used for all communications with the CMS\nrelating to that document, for example when saving, loading, or browsing assets."
    },
    {
      "title": "DocumentHistoryMode",
      "slug": "documenthistorymode-4256d65454f1",
      "url": "https://documentation.fontoxml.com/latest/documenthistorymode-4256d65454f1",
      "description": "Modes for Fonto Document History to view changes in."
    },
    {
      "title": "go-to-history-for-focused-document",
      "slug": "go-to-history-for-focused-document-16503a426cd9",
      "url": "https://documentation.fontoxml.com/latest/go-to-history-for-focused-document-16503a426cd9",
      "description": "Open Fonto Document History for the currently focused document to show its changes."
    },
    {
      "title": "accept-all-changes-in-document",
      "slug": "accept-all-changes-in-document-54c214ebe67a",
      "url": "https://documentation.fontoxml.com/latest/accept-all-changes-in-document-54c214ebe67a",
      "description": "Makes all recorded changes permanent in the focused document."
    },
    {
      "title": "How to integrate Fonto Document History with a CMS",
      "slug": "integrate-fonto-document-history-91db6fb20683",
      "url": "https://documentation.fontoxml.com/latest/integrate-fonto-document-history-91db6fb20683",
      "description": "In this task you'll connect your database to Fonto Document History's back-end. Fonto Document History can also be integrated in Fonto Review. Launching Fonto Document History can be done by using the same operations as used in Fonto Editor (e.g. go-to-history-for-document)."
    },
    {
      "title": "setDocumentMetadata",
      "slug": "setdocumentmetadata-657c49bcfb8b",
      "url": "https://documentation.fontoxml.com/latest/setdocumentmetadata-657c49bcfb8b",
      "description": "\"set-document-metadata\": {\n  \"label\": \"Set document metadata\",\n  \"steps\": [\n    {\n      \"type\": \"action/setDocumentMetadata\",\n      \"data\": {\n        \"documentId\": \"{{documentId}}\",\n        \"documentMetadata\": {\n            \"changes\": \"bountiful\"\n        }\n      }\n    }\n  ]\n}"
    },
    {
      "title": "DocumentReferenceLoadingState",
      "slug": "documentreferenceloadingstate-0e1ed0b8ce8f",
      "url": "https://documentation.fontoxml.com/latest/documentreferenceloadingstate-0e1ed0b8ce8f",
      "description": "The document reference loading state returned by getLoadingStateForDocumentReference."
    },
    {
      "title": "Fonto Document History annotations",
      "slug": "fonto-document-history-annotations-56a9afc81f0e",
      "url": "https://documentation.fontoxml.com/latest/fonto-document-history-annotations-56a9afc81f0e",
      "description": "This add-on provides a way of using annotation operations in document history without creating a hard dependency from fontoxml-document-history on fontoxml-annotations."
    },
    {
      "title": "DocumentHistoryMilestone",
      "slug": "documenthistorymilestone-58719fbd6b33",
      "url": "https://documentation.fontoxml.com/latest/documenthistorymilestone-58719fbd6b33",
      "description": "Custom milestone for Fonto Document History's publication mode. Used for\nthings such as selecting date ranges, in which case the milestone is rendered\nby a DocumentHistoryMilestoneContentComponent."
    },
    {
      "title": "open-document-preview-modal",
      "slug": "open-document-preview-modal-773b3df57fec",
      "url": "https://documentation.fontoxml.com/latest/open-document-preview-modal-773b3df57fec",
      "description": "This operation opens a modal showing a preview of the given document. The document should already be loaded. It can optionally highlight a node in the previewed document. This is usually used to indicate the target of a reference."
    },
    {
      "title": "open-document-template-browser-modal",
      "slug": "open-document-template-browser-modal-674354a9e2ca",
      "url": "https://documentation.fontoxml.com/latest/open-document-template-browser-modal-674354a9e2ca",
      "description": "By default the browseContextDocument is set to the focusedDocument or,\nwhen the focusedDocument is not available, to the first document in the hierarchy."
    },
    {
      "title": "cloneUsingDocument",
      "slug": "cloneusingdocument-21177d809e57",
      "url": "https://documentation.fontoxml.com/latest/cloneusingdocument-21177d809e57",
      "description": "If sourceNode is a document and the targetDocument already contains an error is\nraised."
    },
    {
      "title": "FxDocumentStateSyncButton",
      "slug": "fxdocumentstatesyncbutton-598ba2123a44",
      "url": "https://documentation.fontoxml.com/latest/fxdocumentstatesyncbutton-598ba2123a44",
      "description": "The (local) document id of the document of the sheet frame node. Used to\ndetermine contextual information for the document in which the sheet frame node\noccurs."
    },
    {
      "title": "update-initial-documents-list",
      "slug": "update-initial-documents-list-f8fb2faddab8",
      "url": "https://documentation.fontoxml.com/latest/update-initial-documents-list-f8fb2faddab8",
      "description": "Loads the editor with the given remote document ids."
    },
    {
      "title": "getLoadingStateForDocumentReference",
      "slug": "getloadingstatefordocumentreference-9c5b83e10f16",
      "url": "https://documentation.fontoxml.com/latest/getloadingstatefordocumentreference-9c5b83e10f16",
      "description": "Gets the summarized loading state for the given DocumentReference. To be used in\ncases where the corresponding document or a placeholder for loading it is shown\nin the UI."
    },
    {
      "title": "FontoDocumentNode",
      "slug": "fontodocumentnode-1d5232c2d0e1",
      "url": "https://documentation.fontoxml.com/latest/fontodocumentnode-1d5232c2d0e1",
      "description": "A document node in the DOM. This is a node from our internal DOM implementation,\ndo not mix it with nodes from the Browser DOM implementation."
    },
    {
      "title": "fdt document-history runtimes",
      "slug": "fdt-document-history-runtimes-22f1509a83da",
      "url": "https://documentation.fontoxml.com/latest/fdt-document-history-runtimes-22f1509a83da",
      "description": "List the available Fonto Document History runtimes."
    },
    {
      "title": "How to configure Fonto Document History",
      "slug": "fonto-document-history-configuration-c2092b6378a3",
      "url": "https://documentation.fontoxml.com/latest/fonto-document-history-configuration-c2092b6378a3",
      "description": "You have successfully configured the schema experience for Fonto Document History. Your next step probably is either to finish the Get started with Document History or to integrate Document History into your production environment."
    },
    {
      "title": "Fonto Document History modes",
      "slug": "document-history-modes-b883148e1fdb",
      "url": "https://documentation.fontoxml.com/latest/document-history-modes-b883148e1fdb",
      "description": "In single mode, a single document can be opened and the corresponding set of revisions will be shown. If a user is interested in all revisions of a single document, this mode should be used. For example when reviewing documents that are reused throughout multiple publications. Within this mode, users can compare any revision to the latest state of the document. If you do have a use case for comparing two (arbitrary) revisions, please reach out to us. "
    },
    {
      "title": "toggle-display-mode-document",
      "slug": "toggle-display-mode-document-1c922ffb76ca",
      "url": "https://documentation.fontoxml.com/latest/toggle-display-mode-document-1c922ffb76ca",
      "description": "In document mode the margins between documents are removed, resulting in the collection appearing as a single document."
    },
    {
      "title": "load-document-for-hierarchy-node",
      "slug": "load-document-for-hierarchy-node-b7099ac5084f",
      "url": "https://documentation.fontoxml.com/latest/load-document-for-hierarchy-node-b7099ac5084f",
      "description": "Load the document for the given hierarchy node and focus it afterwards"
    },
    {
      "title": "Cannot redefine configuration value \"XXX\"",
      "slug": "cannot-redefine-configuration-value-xxx-918f2e23f4f1",
      "url": "https://documentation.fontoxml.com/latest/cannot-redefine-configuration-value-xxx-918f2e23f4f1",
      "description": "This error occurs when the ConfigurationManager is used to overwrite an existing value."
    },
    {
      "title": "open-open-or-create-document-browser-modal",
      "slug": "open-open-or-create-document-browser-modal-0b311e9d6005",
      "url": "https://documentation.fontoxml.com/latest/open-open-or-create-document-browser-modal-0b311e9d6005",
      "description": "Opens the document browser on open in which the user can select a document. When the modal is open, the user can switch to the create document form, to create a new document by choosing a template."
    },
    {
      "title": "fdt document-history version",
      "slug": "fdt-document-history-version-72c950cecd08",
      "url": "https://documentation.fontoxml.com/latest/fdt-document-history-version-72c950cecd08",
      "description": "Show the version of the current Fonto Document History instance."
    },
    {
      "title": "How to load multiple documents / sheet frames",
      "slug": "loading-multiple-documents-sheet-frames-4a47899ea490",
      "url": "https://documentation.fontoxml.com/latest/loading-multiple-documents-sheet-frames-4a47899ea490",
      "description": "Fonto Editor allows authors to edit multiple documents simultaneously. Some schemas allow documents that refer to other documents in a manner that describes a hierarchy. In other cases, documents may be so large that it's worth splitting them up to improve performance. To support working with such sets of documents, Fonto Editor may be configured to present these documents as a single \"documents hierarchy\", represented by multiple sheet frames."
    },
    {
      "title": "How do I load huge documents?!",
      "slug": "how-do-i-load-huge-documents-a3f5a38bc4be",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-load-huge-documents-a3f5a38bc4be",
      "description": "When Fonto Editor (or Fonto Document History, or Fonto Review) requests a document, the CMS responds with a single catalog-like XML file, akin to a DITA map. This document contains references to the 'divisions' of the main document, like DITA topics. These have references like '&lt;main document id&gt;/&lt;division id&gt;'. When Fonto then requests a division document, the CMS retrieves the main document, finds the corresponding division and responds with that. When Fonto saves a division, the CMS replaces the old division with the new one."
    },
    {
      "title": "fdt document-history init",
      "slug": "fdt-document-history-init-10c08ea8f5b9",
      "url": "https://documentation.fontoxml.com/latest/fdt-document-history-init-10c08ea8f5b9",
      "description": "Initialize a Fonto Document History instance in an empty or nonexistent directory."
    },
    {
      "title": "Get started with Fonto Document History",
      "slug": "fonto-document-history-5a117c375303",
      "url": "https://documentation.fontoxml.com/latest/fonto-document-history-5a117c375303",
      "description": "The revision history of a document is retrieved from the Content or Document Management System (CMS or DMS). This ensures the revision history is reliable allowing it to function as an audit trail of the changes made to your documents."
    },
    {
      "title": "fdt document-history upgrade",
      "slug": "fdt-document-history-upgrade-dd7980919b86",
      "url": "https://documentation.fontoxml.com/latest/fdt-document-history-upgrade-dd7980919b86",
      "description": "Upgrade an existing Fonto Document History instance to the specified version."
    },
    {
      "title": "replaceAllIdentifiersInDocument",
      "slug": "replaceallidentifiersindocument-8284fec0cd7e",
      "url": "https://documentation.fontoxml.com/latest/replaceallidentifiersindocument-8284fec0cd7e",
      "description": "Generates new id attribute values for any nodes within the given documentNode,\naccording to the configuration specified in the ConfigurationValueTypes.unique-id-configurations configuration value."
    },
    {
      "title": "FxDocumentSaveWidget",
      "slug": "fxdocumentsavewidget-c0a5036e025b",
      "url": "https://documentation.fontoxml.com/latest/fxdocumentsavewidget-c0a5036e025b",
      "description": "The (local) document id of the document of the sheet frame node. Used to\ndetermine contextual information for the document in which the sheet frame node\noccurs."
    },
    {
      "title": "DocumentHistoryUIColor",
      "slug": "documenthistoryuicolor-e99ac39b9d4e",
      "url": "https://documentation.fontoxml.com/latest/documenthistoryuicolor-e99ac39b9d4e",
      "description": "Document History UI color names."
    },
    {
      "title": "Why is my operation on a locked document enabled?!",
      "slug": "why-is-my-operation-on-a-locked-document-enabled-e02be2899eda",
      "url": "https://documentation.fontoxml.com/latest/why-is-my-operation-on-a-locked-document-enabled-e02be2899eda",
      "description": "We may not always know an edit is targeted at a document that is locked. Some editors load multiple documents at once. For some operations (like opening a sidebar), we do not care if the document is locked: that's just possible."
    },
    {
      "title": "documentsHierarchy",
      "slug": "documentshierarchy-7d7661ede312",
      "url": "https://documentation.fontoxml.com/latest/documentshierarchy-7d7661ede312",
      "description": "documentsHierarchy"
    },
    {
      "title": "documentLoader",
      "slug": "documentloader-415a3cf017ca",
      "url": "https://documentation.fontoxml.com/latest/documentloader-415a3cf017ca",
      "description": "documentLoader"
    },
    {
      "title": "documentsSaver",
      "slug": "documentssaver-cf16dafdb34b",
      "url": "https://documentation.fontoxml.com/latest/documentssaver-cf16dafdb34b",
      "description": "documentsSaver"
    },
    {
      "title": "fdt document-history run",
      "slug": "fdt-document-history-run-f7f2c60bd88c",
      "url": "https://documentation.fontoxml.com/latest/fdt-document-history-run-f7f2c60bd88c",
      "description": "Run a Fonto Document History instance for development purposes. Requires Docker to be installed."
    },
    {
      "title": "createNewDocumentFromRemoteTemplate",
      "slug": "createnewdocumentfromremotetemplate-c8f3cce8e85e",
      "url": "https://documentation.fontoxml.com/latest/createnewdocumentfromremotetemplate-c8f3cce8e85e",
      "description": "This action directly loads the new document after creating it, and sets both\nthe documentId and remoteDocumentId step data properties to those\ncorresponding to the new document. While this does not make the document\nvisible in the editor, these properties can be used in subsequent steps to\neither add a reference to it from the documents defining the hierarchy or\nto use the update-initial-documents-list operation to open it directly."
    },
    {
      "title": "disableOperationIfFocusedDocumentIsNotEditable",
      "slug": "disableoperationiffocuseddocumentisnoteditable-d783a5fd3dbb",
      "url": "https://documentation.fontoxml.com/latest/disableoperationiffocuseddocumentisnoteditable-d783a5fd3dbb",
      "description": "Disables the operation if the focused document is not editable."
    },
    {
      "title": "fdt document-history build",
      "slug": "fdt-document-history-build-fa6971e56335",
      "url": "https://documentation.fontoxml.com/latest/fdt-document-history-build-fa6971e56335",
      "description": "Build production image \"fonto-document-history:latest\" using the Fonto Document History instance located at the current working directory."
    },
    {
      "title": "Fonto Document History Review Integration",
      "slug": "fonto-document-history-review-integration-1156e8b06f87",
      "url": "https://documentation.fontoxml.com/latest/fonto-document-history-review-integration-1156e8b06f87",
      "description": "ReviewContext values also appear in the productContext prop that is passed to several components configured in your Review configuration. Make sure your configuration is updated to handle these appropriately when Review is enabled for Document History. The FeedbackContextType type that is passed to these components as the context prop has similarly been extended with several values representing the use of Fonto Review features while in Document History."
    },
    {
      "title": "useRemoteDocumentState",
      "slug": "useremotedocumentstate-896570e25da1",
      "url": "https://documentation.fontoxml.com/latest/useremotedocumentstate-896570e25da1",
      "description": "A hook that returns the remote document state (which is a complex object\ncontaining multiple properties described below) for a given documentId. Designed\nto be used in custom sheet frame headers. Read more in the \"Configure a (custom)\nsheet frame header\" how to guide."
    },
    {
      "title": "How to add automatic numbering to elements over unloaded documents",
      "slug": "elements-in-unloaded-documents-d4b4bf709f9b",
      "url": "https://documentation.fontoxml.com/latest/elements-in-unloaded-documents-d4b4bf709f9b",
      "description": "module namespace app = \"http://example.app/ns\";\n\ndeclare %public function app:figureNumberingOverUnloadedDocumentsCallback(\n    $previousAccumulator as item()*,\n    $relType as xs:string,\n    $node as node(),\n    $isUnloaded as xs:boolean\n) as item()* {\n    let $previous := if ($relType eq \"first\") then 0 else $previousAccumulator\n    return\n        (: Check wether the document is loaded :)\n        if ($isUnloaded) then\n            (: The document is not loaded, $node is the topicref for DITA documents :)\n            if ($node[@unloaded-count]) then\n                (: Add the number of figures in the unloaded document to the accumulator :)\n                $previous + number($node/@unloaded-count)\n            else\n                (: No figures in the unloaded document, return the accumulator as-is :)\n                $previous\n        else\n            (: Increment the accumulator :)\n            $previous + 1\n};"
    },
    {
      "title": "DocumentHistoryShowChangesButton",
      "slug": "documenthistoryshowchangesbutton-74110527cb3f",
      "url": "https://documentation.fontoxml.com/latest/documenthistoryshowchangesbutton-74110527cb3f",
      "description": "If the document is saving or the save has errored, the button is rendered in a\ndisabled state. This ensures a document save has happened before the user can\nrequest a changelog on the Document History route. Additionally the saving state\nis further clarified in the representation of the button and the tooltip shown\non hover."
    },
    {
      "title": "Older Fonto Document History release notes",
      "slug": "document-history-748fa4e74b27",
      "url": "https://documentation.fontoxml.com/latest/document-history-748fa4e74b27",
      "description": "Fonto Document History has one important change this release. We now only save the document that is going to be opened in Document History when invoking the operation to open Document History. Previous releases saved all documents. If you want to restore this behavior, please wrap the operation to go to Document History in a custom one and add save-all-documents-and-wait before it."
    },
    {
      "title": "open-create-document-form-modal",
      "slug": "open-create-document-form-modal-eb3f1ccf2426",
      "url": "https://documentation.fontoxml.com/latest/open-create-document-form-modal-eb3f1ccf2426",
      "description": "By default the browseContextDocument is set to the focusedDocument or,\nwhen the focusedDocument is not available, to the first document in the hierarchy."
    },
    {
      "title": "FxSheetFrameHeaderDocumentStateLabel",
      "slug": "fxsheetframeheaderdocumentstatelabel-c986a35c1ca3",
      "url": "https://documentation.fontoxml.com/latest/fxsheetframeheaderdocumentstatelabel-c986a35c1ca3",
      "description": "A label indicating the current state of the document (document saving state,\ndocument out of sync state, further clarification of the lock status)."
    },
    {
      "title": "FontoDocumentFragmentNode",
      "slug": "fontodocumentfragmentnode-c9265e56ebc8",
      "url": "https://documentation.fontoxml.com/latest/fontodocumentfragmentnode-c9265e56ebc8",
      "description": "A document fragment node in the DOM. This is a node from our internal DOM\nimplementation, do not mix it with nodes from the Browser DOM implementation."
    },
    {
      "title": "FontoDocumentTypeNode",
      "slug": "fontodocumenttypenode-10bcf595bc55",
      "url": "https://documentation.fontoxml.com/latest/fontodocumenttypenode-10bcf595bc55",
      "description": "A document type node in the DOM. This is a node from our internal DOM\nimplementation, do not mix it with nodes from the Browser DOM implementation."
    },
    {
      "title": "Error loading document for topicref: ...",
      "slug": "error-loading-document-for-topicref-50d3f44095f6",
      "url": "https://documentation.fontoxml.com/latest/error-loading-document-for-topicref-50d3f44095f6",
      "description": "\"cannot GET http://…/document?… (XXX)\": the CMS returned an error when Fonto Editor attempted to load the document."
    },
    {
      "title": "DocumentFromTemplateOptions",
      "slug": "documentfromtemplateoptions-71c6424bfa1b",
      "url": "https://documentation.fontoxml.com/latest/documentfromtemplateoptions-71c6424bfa1b",
      "description": "The remote ID of the document providing content in which a\nnew document is created, see POST /document"
    },
    {
      "title": "LoadDocumentOptions",
      "slug": "loaddocumentoptions-ad2e381a9755",
      "url": "https://documentation.fontoxml.com/latest/loaddocumentoptions-ad2e381a9755",
      "description": "If set to true, no request will be sent and the\noption forceReloadingErroredDocuments always acts as\nif it is false. The return value will resemble the\nlast actual attempt to load this document, or\nresolve to undefined if the document has never been\nloaded."
    },
    {
      "title": "open-document-with-link-selector-browser-modal",
      "slug": "open-document-with-link-selector-browser-modal-8dcdb7a7106b",
      "url": "https://documentation.fontoxml.com/latest/open-document-with-link-selector-browser-modal-8dcdb7a7106b",
      "description": "By default the browseContextDocument is set to the focusedDocument or,\nwhen the focusedDocument is not available, to the first document in the hierarchy."
    },
    {
      "title": "set-content-view-document-width-to",
      "slug": "set-content-view-document-width-to-691754da68da",
      "url": "https://documentation.fontoxml.com/latest/set-content-view-document-width-to-691754da68da",
      "description": "set-content-view-document-width-to-75%  * set-content-view-document-width-to-100%  * set-content-view-document-width-to-125%  * set-content-view-document-width-to-150%  * set-content-view-document-width-to-200% Note: all of these operations do nothing if use-embedded-mode is true."
    },
    {
      "title": "Endpoints for Fonto Document History",
      "slug": "endpoints-81177763523b",
      "url": "https://documentation.fontoxml.com/latest/endpoints-81177763523b",
      "description": "This API returns an annotated version of document a that translates to document b. This is called the diff result. It contains the XML of the document a together with annotations that explain how the document is transformed to document b. The annotations consist of elements and attributes that are being used to annotate the document. The annotations are contained within a separate namespace, for which the declaration is added to the root element of the diff result:"
    },
    {
      "title": "XPathObserverOptions",
      "slug": "xpathobserveroptions-f2bd44cbdf95",
      "url": "https://documentation.fontoxml.com/latest/xpathobserveroptions-f2bd44cbdf95",
      "description": "The current hierarchy node id of the context node to be used\nby the fonto:current-hierarchy-node-id XPath function. In the\nevent that a document is rendered at multiple places in the documents\nhierarchy, this helps Fonto determine which of the copies is currently\nbeing seen."
    },
    {
      "title": "FxHoverHighlightType",
      "slug": "fxhoverhighlighttype-9fa6a2760582",
      "url": "https://documentation.fontoxml.com/latest/fxhoverhighlighttype-9fa6a2760582",
      "description": "The type of highlighting on the contextNode when the component is hovered. Use\nthe NodeHighlightManager to register a new highlight type."
    },
    {
      "title": "Fonto Design System",
      "slug": "fonto-design-system-ea82ff05749d",
      "url": "https://documentation.fontoxml.com/latest/fonto-design-system-ea82ff05749d",
      "description": "Another layer of available components that you can use are the Fx components, which combine FDS with state managers in Fonto such as the OperationsManager or DocumentsManager. A well-known example is the FxOperationButton, uses an FDS Button and (depending on the outcome of an operation) will enable or disable itself."
    },
    {
      "title": "UseDocumentLoaderResult",
      "slug": "usedocumentloaderresult-b205ae1f9717",
      "url": "https://documentation.fontoxml.com/latest/usedocumentloaderresult-b205ae1f9717",
      "description": "The document ID of the loaded document or null if the document is not\n(yet) loaded."
    },
    {
      "title": "DocumentFromTemplateModifyCallback",
      "slug": "documentfromtemplatemodifycallback-45ad4abe4e1c",
      "url": "https://documentation.fontoxml.com/latest/documentfromtemplatemodifycallback-45ad4abe4e1c",
      "description": "DocumentFromTemplateModifyCallback"
    },
    {
      "title": "DocumentHistoryRevisionId",
      "slug": "documenthistoryrevisionid-cf1dcc35d197",
      "url": "https://documentation.fontoxml.com/latest/documenthistoryrevisionid-cf1dcc35d197",
      "description": "DocumentHistoryRevisionId"
    },
    {
      "title": "FxDocumentMarkupLabel",
      "slug": "fxdocumentmarkuplabel-35b887306a8d",
      "url": "https://documentation.fontoxml.com/latest/fxdocumentmarkuplabel-35b887306a8d",
      "description": "FxDocumentMarkupLabel"
    },
    {
      "title": "Known Fonto Document History issues",
      "slug": "known-fonto-document-history-issues-dab9a8566a19",
      "url": "https://documentation.fontoxml.com/latest/known-fonto-document-history-issues-dab9a8566a19",
      "description": "Only changes in attributes are rolled back when calculating the markup label for an element in Fonto Document History. This can result in incorrect markup labels if they depend on any other part of the document. This can for example happen if the configuration depends on the contents of the node and those contents changed."
    },
    {
      "title": "clearUndoStackForDocument",
      "slug": "clearundostackfordocument-f0187fade723",
      "url": "https://documentation.fontoxml.com/latest/clearundostackfordocument-f0187fade723",
      "description": "Starting with release 7.5, Fonto uses a single undo stack shared between all\ndocuments. This means that the contextNodeId argument used in previous\nversions is now ignored, and all undo stacks are cleared when this action is\nexecuted."
    },
    {
      "title": "FxDocumentLockStateWidget",
      "slug": "fxdocumentlockstatewidget-ec9612dd41cd",
      "url": "https://documentation.fontoxml.com/latest/fxdocumentlockstatewidget-ec9612dd41cd",
      "description": "The (local) document id of the document of the sheet frame node. Used to\ndetermine contextual information for the document in which the sheet frame node\noccurs."
    },
    {
      "title": "DocumentHistoryMilestoneContentComponent",
      "slug": "documenthistorymilestonecontentcomponent-f8f462aaa553",
      "url": "https://documentation.fontoxml.com/latest/documenthistorymilestonecontentcomponent-f8f462aaa553",
      "description": "Set the custom component via documentHistoryManager.configureMilestones."
    },
    {
      "title": "setContextNodeIdToTopicrefReferencingCurrentDocument",
      "slug": "setcontextnodeidtotopicrefreferencingcurrentdocument-8abdda65d1b8",
      "url": "https://documentation.fontoxml.com/latest/setcontextnodeidtotopicrefreferencingcurrentdocument-8abdda65d1b8",
      "description": "Set the contextNodeId step data property to either the NodeId of\nthe topicref referencing the document containing the selection, or to the\ntopicref or map containing the selection if the selection is in a DITA map\ndocument. This can be used to insert new topicref elements based on the\nposition of the cursor."
    },
    {
      "title": "DocumentHistoryMarkAsSeenConfiguration",
      "slug": "documenthistorymarkasseenconfiguration-7a8a890c3b7c",
      "url": "https://documentation.fontoxml.com/latest/documenthistorymarkasseenconfiguration-7a8a890c3b7c",
      "description": "DocumentHistoryMarkAsSeenConfiguration"
    },
    {
      "title": "FxDocumentContextualOperationsWidget",
      "slug": "fxdocumentcontextualoperationswidget-44bdf7532991",
      "url": "https://documentation.fontoxml.com/latest/fxdocumentcontextualoperationswidget-44bdf7532991",
      "description": "FxDocumentContextualOperationsWidget"
    },
    {
      "title": "Integrate Fonto into a CMS",
      "slug": "integrate-0cd4a24d50c0",
      "url": "https://documentation.fontoxml.com/latest/integrate-0cd4a24d50c0",
      "description": "Whether you're integrating your Fonto Editor for the first time or expanding it with additional products like Fonto Content Quality, Fonto Document History, Fonto Output, or Fonto Review, these guides are here to help you achieve that."
    },
    {
      "title": "Exporting document comments",
      "slug": "include-fonto-review-annotations-8431410a09db",
      "url": "https://documentation.fontoxml.com/latest/include-fonto-review-annotations-8431410a09db",
      "description": "To produce a Word document with comments you need to specify it in the options of the POST /output/get endpoint. This parameter allows setting an optional annotations key, whose value is an object. See the endpoint documentation page for more information."
    },
    {
      "title": "Use <pageBreakElements/> for document layout",
      "slug": "use-pagebreakelements-for-document-layout-868a2da89242",
      "url": "https://documentation.fontoxml.com/latest/use-pagebreakelements-for-document-layout-868a2da89242",
      "description": "Your source XML might consist of several nested documents, like a DITA map and its topics. These might, in turn, reference other documents. Before pagination, Fonto Output will compile all these documents into a single document. This compilation step does not necessarily change the structure of your document, but it may change the way you think about writing queries for particular elements."
    },
    {
      "title": "fdt document-history download-self-contained",
      "slug": "fdt-document-history-download-self-contained-4de9309acb2a",
      "url": "https://documentation.fontoxml.com/latest/fdt-document-history-download-self-contained-4de9309acb2a",
      "description": "This command is hidden if you do not have a license for Fonto Document History. Run fdt license validate for an overview of your active licenses."
    },
    {
      "title": "Environment variables for Fonto Document History",
      "slug": "environment-variables-3a5cdcd6530f",
      "url": "https://documentation.fontoxml.com/latest/environment-variables-3a5cdcd6530f",
      "description": "In addition to the generic host configuration options, the Fonto Document History back-end provides the following configuration options:"
    },
    {
      "title": "Caching",
      "slug": "caching-42daf2b19e70",
      "url": "https://documentation.fontoxml.com/latest/caching-42daf2b19e70",
      "description": "Browse and document requests are marked as non-cacheable by sending Cache-Control: no-cache and Pragma: no-cache headers. This makes sure that users always receive the most up-to-date content. However, caching is allowed for the GET /asset/preview endpoint except when an image is forcibly reloaded."
    },
    {
      "title": "FxNodePreview",
      "slug": "fxnodepreview-0a18b63783cd",
      "url": "https://documentation.fontoxml.com/latest/fxnodepreview-0a18b63783cd",
      "description": "Makes a preview of a loaded document in the editor. This can also be a preview\nof a node inside the given document. The preview is more compact styled than the\nnormal document view."
    },
    {
      "title": "setEnableUndo",
      "slug": "setenableundo-2f7c3fe04b7f",
      "url": "https://documentation.fontoxml.com/latest/setenableundo-2f7c3fe04b7f",
      "description": "By default, operations in any document will generate undo steps. In some\ncases, a specific document may require to be managed by a dedicated system\nand operations performed in that document may not always be initiated by the\nuser."
    },
    {
      "title": "Modifying the XML using XQUF",
      "slug": "modifying-the-xml-using-xquf-fb561b4811b1",
      "url": "https://documentation.fontoxml.com/latest/modifying-the-xml-using-xquf-fb561b4811b1",
      "description": "The functions specified in &lt;afterChunkAssembly&gt; are run after any document refrences have been resolved, so the entire XML of a source document is available for modification."
    },
    {
      "title": "Why are my objects not updating?! Templated views and dependency tracking",
      "slug": "why-are-my-objects-not-updating-templated-views-and-dependency-tracking-660e27147701",
      "url": "https://documentation.fontoxml.com/latest/why-are-my-objects-not-updating-templated-views-and-dependency-tracking-660e27147701",
      "description": "The first thing that stands out is the usage of DocumentsManager#getNodeById to look up the actual node from the NodeProxy that is passed in! That causes dependency tracking to be circumvented: the object template won't have a clue it's supposed to rerender because some random XML elements are updated, so it won't. The developer explained they used this function because they saw it being used somewhere else as well, likely to get hold of the 'actual' node to be used in a Map lookup or something comparable."
    },
    {
      "title": "Schema experiences",
      "slug": "schema-experiences-7d818ffb9db5",
      "url": "https://documentation.fontoxml.com/latest/schema-experiences-7d818ffb9db5",
      "description": "import configurationManager from 'fontoxml-configuration/src/configurationManager';\nimport sxManager from 'fontoxml-modular-schema-experience/src/sxManager';\nimport SingleSchemaExperienceResolver from 'fontoxml-schema-experience-resolver/src/SingleSchemaExperienceResolver';\n\nconfigurationManager.set(\n    'schema-experience-resolver',\n    new SingleSchemaExperienceResolver(\n        sxManager.defineSchemaExperience('assets/schemas/schema.json', ['my-schema-experience'])\n    )\n);"
    },
    {
      "title": "How to create a custom sidebar",
      "slug": "create-a-sidebar-f95a8dcab193",
      "url": "https://documentation.fontoxml.com/latest/create-a-sidebar-f95a8dcab193",
      "description": "Sidebars are located in the area to the right of the document view, and can be used alongside the document."
    },
    {
      "title": "How do I make an operation that opens a modal enabled in the correct situation?!",
      "slug": "how-do-i-make-an-operation-that-opens-a-modal-enabled-in-the-correct-situation-fe7e972dd407",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-make-an-operation-that-opens-a-modal-enabled-in-the-correct-situation-fe7e972dd407",
      "description": "The trick to this modal is that it can do multiple things, depending on what the author chooses and how the document looks. This can be done with alternatives and getStateSteps. We already discussed getStateSteps in another why and how post: Why is my operation on a locked document enabled?!"
    },
    {
      "title": "How to create a popover",
      "slug": "create-a-popover-fcd4f52edfbc",
      "url": "https://documentation.fontoxml.com/latest/create-a-popover-fcd4f52edfbc",
      "description": "You can retrieve the XML node that the popover was opened for via the data.contextNodeId prop that Fonto gives your component. It is commonly used with the documentsManager and the useXPath hook."
    },
    {
      "title": "Working with the hierarchy",
      "slug": "working-with-the-hierarchy-6c9b1ef568b0",
      "url": "https://documentation.fontoxml.com/latest/working-with-the-hierarchy-6c9b1ef568b0",
      "description": "You can use the initialDocumentsLoadedNotifier, found on the initialDocumentsManager, to be notified when the initial set of documents has been loaded. This includes all documents referenced from the hierarchyChildNodesQuery, and if the automatically-load-hierarchy-content configuration value is set to true (the default), also all documents referenced from the hierarchyContentQuery. The hierarchyChangedNotifier, found on the documentsHierarchy itself, can be used to be informed of any later changes to the hierarchy. After the initial load, Fonto Editor will automatically set the selection to the first available typing position, in either the first view corresponding to a loaded document that is editable, or (if no documents are editable) the view for the first hierarchy node. It assumes that the traversal root node of this document is configured using configureAsSheetFrame. If this is not the case, or other behavior is desired, the application should set the selection to some place of their own choosing. This can be done by waiting for the initialDocumentsLoadedNotifier to fire and then executing an operation such as set-cursor-to-first-text-position to move the cursor. If any document other than the topmost one is focused, we recommend also adding a step calling the scroll-node-into-view operation to ensure the sheet frame is fully visible after the editor loads."
    },
    {
      "title": "Upgrade from 7.2 to 7.3",
      "slug": "upgrade-from-7-2-to-7-3-fd5d6a16a41e",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-2-to-7-3-fd5d6a16a41e",
      "description": "This release adds the option to retry loading individual documents that failed to load initially, for instance due to temporary connectivity issues. Users can use this option in many cases to avoid having to restart the entire editor session when issues have been resolved. Implementations that use custom hierarchical multi-document management (i.e., using initialDocumentsManager.setLoadingStrategy) are encouraged to implement a new retry callback in order to enable this UI for their users. See the updated Configure hierarchical multi-document management guide for details and example code. See the guide on Configuring hierarchical multi-document management for more information."
    },
    {
      "title": "How to call a custom endpoint and stub it in the development server",
      "slug": "custom-cms-endpoint-e78394bce8b0",
      "url": "https://documentation.fontoxml.com/latest/custom-cms-endpoint-e78394bce8b0",
      "description": "import React, { useState, useEffect } from 'react';\nimport connectorsManager from 'fontoxml-configuration/src/connectorsManager';\nimport RequestData from 'fontoxml-connector/src/RequestData';\n\nimport evaluateXPath from 'fontoxml-selectors/src/evaluateXPath';\nimport documentsManager from 'fontoxml-documents/src/documentsManager';\nimport useXPath from 'fontoxml-fx/src/useXPath';\n\nimport { Button, Flex, Popover, PopoverBody, PopoverFooter, PopoverHeader, Text, SpinnerIcon } from 'fds/components';\n\nconst RecipePopover = ( {togglePopover, data} ) =&gt; {\n\tconst [ingredientInformation, setIngredientInformation] = useState(null);\n\n\tconst contextNode = documentsManager.getNodeById(data.contextNodeId);\n\tconst documentId = documentsManager.getDocumentIdByNodeId(data.contextNodeId);\n\tconst remoteDocumentId = documentsManager.getRemoteDocumentId(documentId);\n\tconst ingredientTitle = useXPath(\n\t\t'concat(upper-case(substring(.,1,1)),substring(., 2))',\n\t\tcontextNode,\n\t\t{ expectedResultType:evaluateXPath.STRING_TYPE }\n\t);\n\n\tuseEffect(() =&gt; {\n\t\tconst requestData = new RequestData();\n\t\trequestData.addQueryParameter('ingredient', ingredientTitle);\n\n\t\t// Pass the context object to associate this request with the current edit session\n\t\trequestData.addQueryParameter(\n\t\t\t'context',\n\t\t\tJSON.stringify(connectorsManager.getCmsClient().createContext())\n\t\t);\n\n\t\tconnectorsManager\n\t\t\t.getCmsClient()\n\t\t\t.sendRequest('GET', '/get-ingredient-information', requestData)\n\t\t\t.then(response =&gt; setIngredientInformation(response.body))\n\t\t\t.catch(error =&gt; setIngredientInformation(error));\n\t}, [ingredientTitle]);\n\n\treturn (\n\t\t&lt;Popover maxWidth=\"300px\" minWidth=\"220px\"&gt;\n\t\t\t&lt;PopoverHeader title={ingredientTitle || \"Ingredient name...\"} /&gt;\n\t\t\t&lt;PopoverBody&gt;\n\t\t\t\t{\n\t\t\t\t\t!!ingredientInformation ?\n\t\t\t\t\t\t&lt;Text&gt;{ingredientInformation}&lt;/Text&gt; :\n\t\t\t\t\t\t&lt;Flex alignItems=\"center\" flexDirection=\"column\" &gt;\n\t\t\t\t\t\t\t&lt;SpinnerIcon size=\"m\"/&gt;\n\t\t\t\t\t\t&lt;/Flex&gt;\n\t\t\t\t}\n\t\t\t&lt;/PopoverBody&gt;\n\n\t\t\t&lt;PopoverFooter&gt;\n\t\t\t\t&lt;Button\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\tlabel=\"Close\"\n\t\t\t\t\tonClick={togglePopover}/&gt;\n\t\t\t&lt;/PopoverFooter&gt;\n\t\t&lt;/Popover&gt;\n\t);\n};\n\nexport default RecipePopover;"
    },
    {
      "title": "Lazy/Just-In-Time loading",
      "slug": "lazy-just-in-time-loading-72684132a639",
      "url": "https://documentation.fontoxml.com/latest/lazy-just-in-time-loading-72684132a639",
      "description": "When dealing with hierarchies consisting of large amounts of documents, loading all documents referenced in the hierarchy may not be feasible. To support such hierarchies, Fonto Editor supports \"lazy\" or Just-In-Time (JIT) loading. In this configuration, the documents hierarchy may reference documents that have not yet been loaded."
    },
    {
      "title": "DefinedSchemaExperience",
      "slug": "definedschemaexperience-1acfcb8ec50e",
      "url": "https://documentation.fontoxml.com/latest/definedschemaexperience-1acfcb8ec50e",
      "description": "A schema experience definition as returned by sxManager's\ndefineSchemaExperience method. The associated schema will be loaded as soon\nas it is required by a loaded document."
    },
    {
      "title": "save-and-release-all-locks",
      "slug": "save-and-release-all-locks-a0b1dcabd9da",
      "url": "https://documentation.fontoxml.com/latest/save-and-release-all-locks-a0b1dcabd9da",
      "description": "Save all documents, then release all locks"
    },
    {
      "title": "FxNodePreviewWithLinkSelector",
      "slug": "fxnodepreviewwithlinkselector-2495af187b8b",
      "url": "https://documentation.fontoxml.com/latest/fxnodepreviewwithlinkselector-2495af187b8b",
      "description": "Makes a preview of a loaded document in the editor in which a node can be\nselected. This can also be a preview of a node inside the given document. The\npreview is less compact styled than the normal document view and will get a\nscrollbar if the preview is too long."
    },
    {
      "title": "start-tracking-changes",
      "slug": "start-tracking-changes-585669d54103",
      "url": "https://documentation.fontoxml.com/latest/start-tracking-changes-585669d54103",
      "description": "Starts tracking changes in all documents."
    },
    {
      "title": "How to configure a sheet frame header",
      "slug": "sheet-frame-headers-084098fbc800",
      "url": "https://documentation.fontoxml.com/latest/sheet-frame-headers-084098fbc800",
      "description": "import type { FC } from 'react';\n\nimport type { DocumentId, HierarchyNodeId } from 'fontoxml-documents/src/types';\nimport type { NodeId } from 'fontoxml-dom-identification/src/types';\nimport FxDocumentContextualOperationsWidget from 'fontoxml-fx/src/FxDocumentContextualOperationsWidget';\nimport FxDocumentLockStateWidget from 'fontoxml-fx/src/FxDocumentLockStateWidget';\nimport FxDocumentMarkupLabel from 'fontoxml-fx/src/FxDocumentMarkupLabel';\nimport FxDocumentSaveWidget from 'fontoxml-fx/src/FxDocumentSaveWidget';\nimport FxDocumentStateSyncButton from 'fontoxml-fx/src/FxDocumentStateSyncButton';\nimport FxSheetFrameHeaderActionArea from 'fontoxml-fx/src/FxSheetFrameHeaderActionArea';\nimport FxSheetFrameHeaderContainer from 'fontoxml-fx/src/FxSheetFrameHeaderContainer';\nimport FxSheetFrameHeaderDocumentStateLabel from 'fontoxml-fx/src/FxSheetFrameHeaderDocumentStateLabel';\nimport FxSheetFrameHeaderInfoArea from 'fontoxml-fx/src/FxSheetFrameHeaderInfoArea';\nimport FxSheetFrameHeaderLockArea from 'fontoxml-fx/src/FxSheetFrameHeaderLockArea';\nimport FxSheetFrameHeaderReuseArea from 'fontoxml-fx/src/FxSheetFrameHeaderReuseArea';\nimport useRemoteDocumentState from 'fontoxml-remote-documents/src/useRemoteDocumentState';\n\n/**\n * Note: all props are set automatically by the SDK, This component is usually not rendered\n * manually.\n */\ntype Props = {\n\t/**\n\t * The node id of the node that is configured as a sheet frame.\n\t * This is used to retrieve the contextual information such as operations for this node.\n\t */\n\tcontextNodeId: NodeId;\n\t/**\n\t * The (local) document id of the document of the sheet frame node.\n\t * Used to determine contextual information for the document in which the sheet frame node occurs.\n\t */\n\tdocumentId: DocumentId;\n\t/**\n\t * The id of the document's hierarchy node for which the sheet frame header is configured.\n\t */\n\thierarchyNodeId: HierarchyNodeId;\n\t/**\n\t * The markup label of the sheet frame node.\n\t */\n\tmarkupLabel: string;\n\t/**\n\t * The system name of the product in which the sheet frame (header) is being rendered.\n\t * Used to alter the look'n'feel of certain parts and/or to disable certain parts in certain\n\t * contexts.\n\t * For example, in context of the review product the content is read-only. So the lock widget,\n\t * save widget and contextual operations are not used there.\n\t *\n\t * Can be one of either:\n\t * - \"editor\"\n\t * - \"review\"\n\t * - \"history\"\n\t */\n\tproductContext: 'editor' | 'history' | 'review';\n};\n\nconst MyAwesomeSheetFrameHeader: FC&lt;Props&gt; = ({\n\tcontextNodeId,\n\tdocumentId,\n\thierarchyNodeId,\n\tmarkupLabel,\n\tproductContext,\n}) =&gt; {\n\tconst remoteDocumentState = useRemoteDocumentState(documentId);\n\n\treturn (\n\t\t&lt;FxSheetFrameHeaderContainer productContext={productContext}&gt;\n\t\t\t&lt;FxSheetFrameHeaderLockArea productContext={productContext}&gt;\n\t\t\t\t{productContext === 'editor' &amp;&amp; (\n\t\t\t\t\t&lt;FxDocumentLockStateWidget\n\t\t\t\t\t\tdocumentId={documentId}\n\t\t\t\t\t\tremoteDocumentState={remoteDocumentState}\n\t\t\t\t\t/&gt;\n\t\t\t\t)}\n\t\t\t&lt;/FxSheetFrameHeaderLockArea&gt;\n\n\t\t\t&lt;FxSheetFrameHeaderInfoArea productContext={productContext}&gt;\n\t\t\t\t&lt;FxDocumentMarkupLabel&gt;{markupLabel}&lt;/FxDocumentMarkupLabel&gt;\n\n\t\t\t\t&lt;FxSheetFrameHeaderDocumentStateLabel\n\t\t\t\t\tdocumentId={documentId}\n\t\t\t\t\thierarchyNodeId={hierarchyNodeId}\n\t\t\t\t\tremoteDocumentState={remoteDocumentState}\n\t\t\t\t/&gt;\n\n\t\t\t\t&lt;FxSheetFrameHeaderReuseArea\n\t\t\t\t\tcontextNodeId={contextNodeId}\n\t\t\t\t\tproductContext={productContext}\n\t\t\t\t\thierarchyNodeId={hierarchyNodeId}\n\t\t\t\t/&gt;\n\t\t\t&lt;/FxSheetFrameHeaderInfoArea&gt;\n\n\t\t\t&lt;FxSheetFrameHeaderActionArea productContext={productContext}&gt;\n\t\t\t\t&lt;FxDocumentStateSyncButton\n\t\t\t\t\tdocumentId={documentId}\n\t\t\t\t\tremoteDocumentState={remoteDocumentState}\n\t\t\t\t/&gt;\n\n\t\t\t\t{productContext === 'editor' &amp;&amp; (\n\t\t\t\t\t&lt;FxDocumentSaveWidget\n\t\t\t\t\t\tdocumentId={documentId}\n\t\t\t\t\t\thierarchyNodeId={hierarchyNodeId}\n\t\t\t\t\t\tremoteDocumentState={remoteDocumentState}\n\t\t\t\t\t/&gt;\n\t\t\t\t)}\n\n\t\t\t\t{productContext === 'editor' &amp;&amp; (\n\t\t\t\t\t&lt;FxDocumentContextualOperationsWidget\n\t\t\t\t\t\tcontextNodeId={contextNodeId}\n\t\t\t\t\t\thierarchyNodeId={hierarchyNodeId}\n\t\t\t\t\t/&gt;\n\t\t\t\t)}\n\t\t\t&lt;/FxSheetFrameHeaderActionArea&gt;\n\t\t&lt;/FxSheetFrameHeaderContainer&gt;\n\t);\n};\n\nexport default MyAwesomeSheetFrameHeader;\n"
    },
    {
      "title": "configureAsReadOnly",
      "slug": "configureasreadonly-02d1533cc74c",
      "url": "https://documentation.fontoxml.com/latest/configureasreadonly-02d1533cc74c",
      "description": "Configures elements or documents matching the selector as read only. Children\nof read only elements or documents may not be altered in any way."
    },
    {
      "title": "resolveDitaUrl",
      "slug": "resolveditaurl-e1edbd09771c",
      "url": "https://documentation.fontoxml.com/latest/resolveditaurl-e1edbd09771c",
      "description": "Resolve a dita url to a document and a node id"
    },
    {
      "title": "SchemaLocationToSchemaExperienceResolver",
      "slug": "schemalocationtoschemaexperienceresolver-531427aaf9f1",
      "url": "https://documentation.fontoxml.com/latest/schemalocationtoschemaexperienceresolver-531427aaf9f1",
      "description": "A schema experience resolver that determines an appropriate schema experience\nfor each document based on the schema location, as specified in the\ndocument's XML."
    },
    {
      "title": "HierarchyNodeId",
      "slug": "hierarchynodeid-975a746b8c8e",
      "url": "https://documentation.fontoxml.com/latest/hierarchynodeid-975a746b8c8e",
      "description": "The documents hierarchy may contain multiple references to the same document,\nand the same document may be spread out over multiple hierarchy nodes. To\ndisambiguate cases, operations may be targeted at a specific hierarchy node to\nensure the cursor is placed in the correct instance of the document. Operations\nthat modify the hierarchy may also use this information to determine the\ninstance corresponding to the current selection."
    },
    {
      "title": "reject-all-changes",
      "slug": "reject-all-changes-86482845c37b",
      "url": "https://documentation.fontoxml.com/latest/reject-all-changes-86482845c37b",
      "description": "Undoes all recorded changes in all loaded documents."
    },
    {
      "title": "triggerNotification",
      "slug": "triggernotification-d16ac7206d44",
      "url": "https://documentation.fontoxml.com/latest/triggernotification-d16ac7206d44",
      "description": "import triggerNotification from 'fontoxml-notifications/src/triggerNotification';\nimport connectorsManager from 'fontoxml-configuration/src/connectorsManager';\nimport operationsManager from 'fontoxml-operations/src/operationsManager';\n\nexport default function install() {\n    const removeCallbacks = new Set();\n    connectorsManager\n        .getCmsClient()\n        .sendRequest('GET', '/notifications')\n        .then(notifications =&gt; {\n            // remove previous notifications\n            removeCallbacks.forEach(remove =&gt; remove());\n            // Clear the callbacks\n            removeCallbacks.clear();\n\n            notifications.forEach(({ notificationTitle, notificationMessage }) =&gt; {\n                const { dismiss, remove } = triggerNotification(notificationTitle, {\n                    message: notificationMessage,\n                    icon: 'far fa-gem',\n                    colorName: 'icon-m-warning-color',\n                    dismissAfterMs: 5000,\n                    onClick: () =&gt; {\n                        // Dismiss notification when a notification card is clicked\n                        dismiss();\n\n                        // Then execute your operation\n                        operationsManager\n                            .executeOperation('open-sidebar-tab', {\n                                tabId: 'your-sidebar-tab-id'\n                            })\n                            .catch(() =&gt; {\n                                // Catch rejection if you want\n                            });\n                    }\n                });\n\n                removeCallbacks.add(remove);\n            });\n        });\n}"
    },
    {
      "title": "Upgrade from 7.10 to 7.11",
      "slug": "upgrade-from-7-10-to-7-11-9920861e4f61",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-10-to-7-11-9920861e4f61",
      "description": "The editors which have custom hierarchies have their own hierarchical multi-document management system. In such a system, an errored document can be intended to be reloaded specifically. For example, the retryLoadingDocumentForHierarchyNode function in Configure hierarchical multi-document management can be used to reload errored documents as well. In this case, the forceReloadingErroredDocuments option should be passed to documentloader.loadDocument and documentLoader.loadRelatedDocument as true."
    },
    {
      "title": "FxSaveButton",
      "slug": "fxsavebutton-171802c8e2ae",
      "url": "https://documentation.fontoxml.com/latest/fxsavebutton-171802c8e2ae",
      "description": "If an error is present in one of the documents, the button triggers a dropdown\nshowing a menu of errored documents. When clicking a document in this menu, it\nscrolls the corresponding document into view."
    },
    {
      "title": "ErrorCategory",
      "slug": "errorcategory-3bd5f7406e52",
      "url": "https://documentation.fontoxml.com/latest/errorcategory-3bd5f7406e52",
      "description": "Current supported values are exposed as instance properties on ErrorManager."
    },
    {
      "title": "FxNodePreviewErrorPlaceholder",
      "slug": "fxnodepreviewerrorplaceholder-6edb1049fd41",
      "url": "https://documentation.fontoxml.com/latest/fxnodepreviewerrorplaceholder-6edb1049fd41",
      "description": "The remote document id of the document that broke. This will be displayed in the error fold-out."
    },
    {
      "title": "Customize the masthead on the Review route",
      "slug": "fonto-review-masthead-60d5d86dafac",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-masthead-60d5d86dafac",
      "description": "import uiManager from 'fontoxml-modular-ui/src/uiManager';\nimport MyMastheadComponent from './MyMastheadComponent';\n\nuiManager.registerReactComponent('MastheadForReview', MyMastheadComponent);\n"
    },
    {
      "title": "How to configure pasting images into Fonto",
      "slug": "pasting-images-f9aa2fd818f2",
      "url": "https://documentation.fontoxml.com/latest/pasting-images-f9aa2fd818f2",
      "description": "import configurationManager from 'fontoxml-configuration/src/configurationManager';\n\nconfigurationManager.set(\n    'paste-image-from-clipboard-operation-name',\n    'dita-example__paste-image-from-clipboard'\n);"
    },
    {
      "title": "accept-all-changes",
      "slug": "accept-all-changes-3ae9d717bc9c",
      "url": "https://documentation.fontoxml.com/latest/accept-all-changes-3ae9d717bc9c",
      "description": "Makes all recorded changes permanent in all loaded documents."
    },
    {
      "title": "cals-table-delete",
      "slug": "cals-table-delete-d92e48058752",
      "url": "https://documentation.fontoxml.com/latest/cals-table-delete-d92e48058752",
      "description": "Remove the CALS table containing the cursor from the document"
    },
    {
      "title": "OutOfSyncReasons",
      "slug": "outofsyncreasons-8813267f66ea",
      "url": "https://documentation.fontoxml.com/latest/outofsyncreasons-8813267f66ea",
      "description": "This indicates the reason why the document is considered to be out of sync."
    },
    {
      "title": "Initialization parameters",
      "slug": "initialization-parameters-ca34a595309b",
      "url": "https://documentation.fontoxml.com/latest/initialization-parameters-ca34a595309b",
      "description": "The document identifiers of the documents to load from the CMS."
    },
    {
      "title": "table-delete",
      "slug": "table-delete-3760ac957651",
      "url": "https://documentation.fontoxml.com/latest/table-delete-3760ac957651",
      "description": "Remove the table containing the cursor from the document"
    },
    {
      "title": "configureAsSheetFrame",
      "slug": "configureassheetframe-9a1b9f373c60",
      "url": "https://documentation.fontoxml.com/latest/configureassheetframe-9a1b9f373c60",
      "description": "They are displayed as a sheet of ‘paper’. The active sheet receives a colored\nborder to indicate the location of the cursor. Sheet frames have a fixed width,\nas repainting the entire document after a resize is unacceptably slow for large\ndocuments. On narrower viewports, the documents may slide behind the open drawer\nand a horizontal scrollbar will appear. The horizontal margins of the page\nbecome wider on viewports of at least 1696 pixels wide."
    },
    {
      "title": "toggle-view-annotations",
      "slug": "toggle-view-annotations-a20a13088206",
      "url": "https://documentation.fontoxml.com/latest/toggle-view-annotations-a20a13088206",
      "description": "Toggle or set the visibility of comments in all documents"
    },
    {
      "title": "Fonto Output and fxd nodes",
      "slug": "fonto-output-and-fxd-nodes-4b20d08ee068",
      "url": "https://documentation.fontoxml.com/latest/fonto-output-and-fxd-nodes-4b20d08ee068",
      "description": "Fonto Document History uses a set of nodes with the fxd namespace to indicate edits made to a document. While configuring Fonto Output for tracked changes documents, it may be useful to understand how these nodes are translated between Fonto's products and the exported .docx file"
    },
    {
      "title": "CvkHierarchyChildNodesQuery",
      "slug": "cvkhierarchychildnodesquery-cb2658aa0f54",
      "url": "https://documentation.fontoxml.com/latest/cvkhierarchychildnodesquery-cb2658aa0f54",
      "description": "The process to build the hierarchy starts by loading the root level\ndocuments (as specified in scope.documentIds), and then checking if a\nhierarchyContentQuery has been defined for their document nodes. If\nthis is the case, those document nodes become the source nodes of\ncorresponding root-level hierarchy nodes. Otherwise, the\nhierarchyChildNodesQuery  executed from these document nodes determines\nthe root-level hierarchy nodes. All hierarchy nodes contributed this way\nby each of the top-level documents are concatenated in the order defined\nby scope.documentIds."
    },
    {
      "title": "Clipboard - Plain text",
      "slug": "clipboard-plain-text-14b99f45e508",
      "url": "https://documentation.fontoxml.com/latest/clipboard-plain-text-14b99f45e508",
      "description": "import configurationManager from 'fontoxml-configuration/src/configurationManager';\n\nconfigurationManager.set('paragraph-node-name-for-pasting', 'p');"
    },
    {
      "title": "Create an output with tracked changes",
      "slug": "configure-tracked-changes-51f864650b35",
      "url": "https://documentation.fontoxml.com/latest/configure-tracked-changes-51f864650b35",
      "description": "Fonto Output uses the edit history of a document from Fonto Document History to generate tracked changes in exported .docx files. This means that you'll need a working instance of Fonto Document History to export a tracked-changes document."
    },
    {
      "title": "The following nodes failed validation",
      "slug": "the-following-nodes-failed-validation-cc0bf689284c",
      "url": "https://documentation.fontoxml.com/latest/the-following-nodes-failed-validation-cc0bf689284c",
      "description": "Sometimes a document becomes invalid according to the schema that Fonto Editor works with. Whenever this happens the document no longer adheres to the same rules as Fonto Editor, and the user will no longer be able to edit it. If the operation which has triggered this error can be rolled back, it will and the user can continue working."
    },
    {
      "title": "Configure formulas in Fonto Output",
      "slug": "configure-formulas-54fbdb80ccbb",
      "url": "https://documentation.fontoxml.com/latest/configure-formulas-54fbdb80ccbb",
      "description": "Fonto Editor allows you to add and edit mathematical formulas to your documents. Fonto Output can render these formulas in your exported document, but including formulas requires configuring them as images."
    },
    {
      "title": "toggle-view-track-changes",
      "slug": "toggle-view-track-changes-310991e02851",
      "url": "https://documentation.fontoxml.com/latest/toggle-view-track-changes-310991e02851",
      "description": "Toggle or set the visibility of textual changes in all documents"
    },
    {
      "title": "Getting started with Fonto Products",
      "slug": "get-started-d09d04cfac27",
      "url": "https://documentation.fontoxml.com/latest/get-started-d09d04cfac27",
      "description": "Identify and manage changes in documents. Not only textual, but also structural and attribute changes."
    },
    {
      "title": "CustomMutation",
      "slug": "custommutation-8cdcd7f6511c",
      "url": "https://documentation.fontoxml.com/latest/custommutation-8cdcd7f6511c",
      "description": "Many standard mutation primitives are accessible from the fontoxml-base-flow\npackage, which is part of the base platform. For creation of new elements and\nother nodes, use the Document node of the targeted document as a factory."
    },
    {
      "title": "Cross references library",
      "slug": "cross-references-library-243ee6955331",
      "url": "https://documentation.fontoxml.com/latest/cross-references-library-243ee6955331",
      "description": "The open-document-preview-modal operation is used to open the document preview modal. This modal shows a document with a selected element. This can be used to show an element being referenced by a cross-link."
    },
    {
      "title": "Indicing",
      "slug": "indicing-ce1cd2863d07",
      "url": "https://documentation.fontoxml.com/latest/indicing-ce1cd2863d07",
      "description": "Indices can be used to look up XML nodes at a low cost, eg. without traversing all documents every time a request is made."
    },
    {
      "title": "Operation",
      "slug": "operation-12c3272a5451",
      "url": "https://documentation.fontoxml.com/latest/operation-12c3272a5451",
      "description": "Allows the keyBinding to work in any part of Fonto, except when focusing\nthe editor is not allowed (eg. when a Modal is opened). Normally a\nkeyBinding for an operation only works when the content view is focused.\nWarning: we only recommend using this for operations that do not modify\nthe document. Changing the document is almost always done contextually to\nyour cursor position or selection. If your operation keyBinding is global,\nyour cursor or selection might not even be visible to the user (because\nthey scrolled their viewport), which might result in a change to the\ndocument that the user is unaware of because they (accidentally)\ntriggered a global keyBinding."
    },
    {
      "title": "accept-all-changes-and-stop-tracking-changes",
      "slug": "accept-all-changes-and-stop-tracking-changes-2122a3cab66c",
      "url": "https://documentation.fontoxml.com/latest/accept-all-changes-and-stop-tracking-changes-2122a3cab66c",
      "description": "Makes all recorded changes permanent in all loaded documents, then switches off change tracking."
    },
    {
      "title": "Field instructions",
      "slug": "field-instructions-cbea9ec4dc63",
      "url": "https://documentation.fontoxml.com/latest/field-instructions-cbea9ec4dc63",
      "description": "Field instructions in Microsoft Word are placeholders that display dynamic content like dates, page numbers, or document properties. Common fields include PAGE or NUMPAGES. Output supports some of these, enabling automatic, updateable content in exported documents."
    },
    {
      "title": "How do I make a dynamic toolbar!?",
      "slug": "how-do-i-make-a-dynamic-toolbar-d641fc1419be",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-make-a-dynamic-toolbar-d641fc1419be",
      "description": "A partner reached out. They have an editor loading two kinds of documents that work similar, but they have some small differences. While one document type has a concept of 'boxed paragraphs', the other does not know of that. This 'boxed paragraph' element should be managed from the toolbar. The different documents can be recognized by having a different type attribute on the root element."
    },
    {
      "title": "toggle-view-feedback",
      "slug": "toggle-view-feedback-4159a3943f07",
      "url": "https://documentation.fontoxml.com/latest/toggle-view-feedback-4159a3943f07",
      "description": "Toggle or set the visibility of a given navigator's annotations in all documents"
    },
    {
      "title": "Namespaces",
      "slug": "namespaces-2b1bbc7b4f79",
      "url": "https://documentation.fontoxml.com/latest/namespaces-2b1bbc7b4f79",
      "description": "Note that it is unnecessary to mention the xmlns:whatever 'attributes'. The namespace manager will be used to resolve these prefixes, and the xmlns attributes will be added as needed when the document is serialized."
    },
    {
      "title": "disableOperationIfNodeIsNotEditable",
      "slug": "disableoperationifnodeisnoteditable-bc0ec3a0d0ea",
      "url": "https://documentation.fontoxml.com/latest/disableoperationifnodeisnoteditable-bc0ec3a0d0ea",
      "description": "Disables the operation if the document with the given contextNodeId is\nread-only by virtue of configureAsReadOnly or the document\ncontaining the node with the given contextNodeId is not editable."
    },
    {
      "title": "Upcoming removals 7.16",
      "slug": "upcoming-removals-7-16-383c5201724e",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-7-16-383c5201724e",
      "description": "// Registering a custom-xpath-function (getter) and saving the setter\nexport const setDocumentsData = addExternalValue(\n\t'http://example.app/ns',\n\t'get-document-data',\n\t'xs:string',\n\t'xs:integer',\n\t0\n);\n\nexport default configureSxModule(sxModule) {\n\tdocumentsHierarchy.hierarchyChangedNotifier.addCallback(() =&gt; {\n\t\t// Find all loaded documents in the hierarchy\n\t\tconst loaded = documentsHierarchy.findAll(hierarchyNode =&gt;\n\t  \t \t hierarchyNode.documentReference ? hierarchyNode.documentReference.isLoaded() : false\n\t\t);\n\n\t\t// Before\n\t\t// externalDataManager.setExternalData('loaded-documents', loaded.length)\n\n\t\t// After\n\t\t// This set returns a promise which resolves when the value has been updated.\n\t\t// After the promise resolves, we can safely get the new value.\n\t\t// In this example we can just fire and forget.\n\t\tsetDocumentsData('loaded-documents', loaded.length);\n\t});\n}"
    },
    {
      "title": "comparePositions",
      "slug": "comparepositions-fca93f28ab82",
      "url": "https://documentation.fontoxml.com/latest/comparepositions-fca93f28ab82",
      "description": "Compares the given positions w.r.t. document order in this state"
    },
    {
      "title": "How to reference other content",
      "slug": "referencing-other-content-ca141f16946a",
      "url": "https://documentation.fontoxml.com/latest/referencing-other-content-ca141f16946a",
      "description": "{\n    \"contextual-topicref-to-existing-document-insert\": {\n        \"label\": \"Insert existing topic\",\n        \"description\": \"Insert an existing topic below the current one.\",\n        \"icon\": \"file-text-o\",\n        \"steps\": [\n            // 1. Open the document browse modal (provided by the fontoxml-cms-browser add-on)\n            {\n                \"type\": \"operation/open-document-browser-modal\"\n            },\n            // 2. This returns the documentId of the document we want the topicref to point to.\n            {\n                \"type\": \"transform/createDitaUrlFromLoadedTarget\",\n                \"data\": {\n                    \"targetDocumentId\": \"{{documentId}}\",\n                    \"targetNodeId\": null\n                }\n            },\n            // 3. Insert the topicref element in the target DITA map\n            {\n                \"type\": \"operation/append-topicref\",\n                \"data\": {\n                    \"contextNodeId\": \"{{contextNodeId}}\",\n                    \"documentId\": \"{{targetDocumentId}}\",\n                    \"targetHref\": \"{{url}}\"\n                }\n            }\n        ]\n    }\n}"
    },
    {
      "title": "addCustomMutation",
      "slug": "addcustommutation-3ecc5fb55797",
      "url": "https://documentation.fontoxml.com/latest/addcustommutation-3ecc5fb55797",
      "description": "Register a custom mutation, a callback to manipulate the XML of a document\ndirectly."
    },
    {
      "title": "Schema location could not be resolved for URI: XXX",
      "slug": "schema-location-could-not-be-resolved-for-uri-xxx-f7c481d89b7f",
      "url": "https://documentation.fontoxml.com/latest/schema-location-could-not-be-resolved-for-uri-xxx-f7c481d89b7f",
      "description": "This error indicates that a document points to a schema or schema version that is unknown to Fonto Editor."
    },
    {
      "title": "Fonto Editor 7.15.4 (November 11, 2021)",
      "slug": "fonto-editor-7-15-4-november-11-2021-b33166238805",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-15-4-november-11-2021-b33166238805",
      "description": "Applications using the fontoxml-dita add-on can now use the new map-manager-topicref-selector configuration value to control which topicref elements contribute to the DocumentsHierarchy."
    },
    {
      "title": "CmsClientRequestContext",
      "slug": "cmsclientrequestcontext-1fb0c0f21caa",
      "url": "https://documentation.fontoxml.com/latest/cmsclientrequestcontext-1fb0c0f21caa",
      "description": "Context for CMS calls, please refer to the documentation for each endpoint\nfor details."
    },
    {
      "title": "replace-node",
      "slug": "replace-node-70ecd1030518",
      "url": "https://documentation.fontoxml.com/latest/replace-node-70ecd1030518",
      "description": "Removes a node and its descendants from the document, inserting a new structure in its place."
    },
    {
      "title": "How to create a mutation hook",
      "slug": "mutation-hooks-8c147ce2b7f1",
      "url": "https://documentation.fontoxml.com/latest/mutation-hooks-8c147ce2b7f1",
      "description": "Sometimes it is necessary to 'react' on changes made to a document. For example, an element needs to be updated with the value of another element, or an attribute needs to be changed whenever an author makes a change to a document. This can be done by using MutationHooks. This guide will provide examples and tips on how to write performant hooks. For more information on Mutation hooks in general and examples, refer to the concept page on mutation hooks."
    },
    {
      "title": "Fonto 7.17.1 (January 24, 2022)",
      "slug": "fonto-7-17-1-january-24-2022-cc87b2e33f44",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-17-1-january-24-2022-cc87b2e33f44",
      "description": "We fixed an issue where annotations disappeared for certain documents when another document was added outside the current session."
    },
    {
      "title": "Comments",
      "slug": "comments-8e0925c960d1",
      "url": "https://documentation.fontoxml.com/latest/comments-8e0925c960d1",
      "description": "This add-on enables users to place annotations in documents. It does not require any configuration."
    },
    {
      "title": "StructureView",
      "slug": "structureview-c423f88a8fc3",
      "url": "https://documentation.fontoxml.com/latest/structureview-c423f88a8fc3",
      "description": "Whether to show checkboxes after each item and which of those should be shown or\nnot. This will be based on both the contextNode and the sourceNode (if there is\none). For at least one of them true needs to be returned else the checkbox\nwill be hidden. In the case of JIT loading a document could not be loaded, which\nmeans only the sourceNode will be available to determine whether the checkbox is\nshown. If you want to show all checkboxes use \"true()\". Example: The following\nselector will give all items that are a document a checkbox, also when they are\nnot loaded because of JIT loading:\nself::topic[not(parent::*)] or self::topicref.\","
    },
    {
      "title": "How can I prevent nodes from being 'cut'?!",
      "slug": "how-can-i-prevent-nodes-from-being-cut-730ca7f48617",
      "url": "https://documentation.fontoxml.com/latest/how-can-i-prevent-nodes-from-being-cut-730ca7f48617",
      "description": "Hi, can we control what nodes may be \"cut\" or \"copied\" from a document in a \"cut/copy/paste\" scenario? We are trying to prevent users from breaking the structure of their manuals by accidentally cutting section references out of the parent document when using \"ctrl+a\" or other means to select the entire document."
    },
    {
      "title": "save-and-release-all-locks-and-send-close-signal-to-iframe",
      "slug": "save-and-release-all-locks-and-send-close-signal-to-iframe-5426ec6616ce",
      "url": "https://documentation.fontoxml.com/latest/save-and-release-all-locks-and-send-close-signal-to-iframe-5426ec6616ce",
      "description": "Save all documents, then release all locks, then send the close signal to the iframe's parent."
    },
    {
      "title": "UiErrorData",
      "slug": "uierrordata-8056ad88fcae",
      "url": "https://documentation.fontoxml.com/latest/uierrordata-8056ad88fcae",
      "description": "ErrorManager"
    },
    {
      "title": "Upgrade from 6.4 to 6.5",
      "slug": "upgrade-from-6-4-to-6-5-e725fd162ed8",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-4-to-6-5-e725fd162ed8",
      "description": "define([\n\t...\n\t'fontoxml-configuration/configurationManager',\n\t'fontoxml-clipboard/createParagraphImportStream',\n...], function (\n\t...\n\tconfigurationManager,\n\tcreateParagraphImportStream,\n\t...\n\t) {\n\t...\n\tconfigurationManager.set('paste-import-stream', createParagraphPasteImportStream('p'));\n\t...\n});"
    },
    {
      "title": "ErrorData",
      "slug": "errordata-a74a8c0f63dd",
      "url": "https://documentation.fontoxml.com/latest/errordata-a74a8c0f63dd",
      "description": "ErrorManager"
    },
    {
      "title": "parseJsonMlNode",
      "slug": "parsejsonmlnode-21ab9559064d",
      "url": "https://documentation.fontoxml.com/latest/parsejsonmlnode-21ab9559064d",
      "description": "Transform the given JsonML fragment into the corresponding DOM structure, using\nthe given document to create nodes."
    },
    {
      "title": "createFrameJsonMl",
      "slug": "createframejsonml-34b1a57fac79",
      "url": "https://documentation.fontoxml.com/latest/createframejsonml-34b1a57fac79",
      "description": "Create a JsonML fragment which appears as a frame in the rendered document."
    },
    {
      "title": "registerPastedNodesFilter",
      "slug": "registerpastednodesfilter-10c9cfd698f6",
      "url": "https://documentation.fontoxml.com/latest/registerpastednodesfilter-10c9cfd698f6",
      "description": "Register a function to modify any XML nodes pasted from Fonto before they are\nincluded in the document."
    },
    {
      "title": "CMS browser library",
      "slug": "cms-browser-library-1c96b22e9a55",
      "url": "https://documentation.fontoxml.com/latest/cms-browser-library-1c96b22e9a55",
      "description": "The open-document-browser-modal operation is used to open the document browser. This browser allows the user to select a document. This, for example, can be used to insert a document in a map."
    },
    {
      "title": "CvkSheetFrameHeaderComponentName",
      "slug": "cvksheetframeheadercomponentname-0318d3451793",
      "url": "https://documentation.fontoxml.com/latest/cvksheetframeheadercomponentname-0318d3451793",
      "description": "Note: this feature is currently only designed for and supported with editors\nthat use multiple document(-file)s. Read more about what sheet frame headers\nare, how they work and how to create a custom one in the guide\nfonto-documentation/docs/configure/sheet-frame-headers.xml."
    },
    {
      "title": "set-content-view-text-size-to",
      "slug": "set-content-view-text-size-to-602bddfa4671",
      "url": "https://documentation.fontoxml.com/latest/set-content-view-text-size-to-602bddfa4671",
      "description": " These operations resize the content view, scaling the text size but not the width of the document."
    },
    {
      "title": "JsonMlRenderer",
      "slug": "jsonmlrenderer-1dfaa01410ad",
      "url": "https://documentation.fontoxml.com/latest/jsonmlrenderer-1dfaa01410ad",
      "description": "The renderer provides ways to render other nodes in your document inside of an\nobject or widget."
    },
    {
      "title": "How to integrate Fonto Editor with a CMS",
      "slug": "integrate-fonto-editor-9be95f628bf1",
      "url": "https://documentation.fontoxml.com/latest/integrate-fonto-editor-9be95f628bf1",
      "description": "Batch document loading reduces the number of HTTP requests the editor will make to the CMS. For example when loading multiple documents in a document list, for example a DITA map, it can combine them in a single request. Or when using the Find &amp; Replace functionality it can request multiple documents at once."
    },
    {
      "title": "Why is my selection not in the text?!",
      "slug": "why-is-my-selection-not-in-the-text-a4e967da1afa",
      "url": "https://documentation.fontoxml.com/latest/why-is-my-selection-not-in-the-text-a4e967da1afa",
      "description": "const startContainer = useManagerState(selectionManager.selectionChangeNotifier, () =&gt; selectionManager.getStartContainer());\nconst startOffset = useManagerState(selectionManager.selectionChangeNotifier, () =&gt; selectionManager.getStartOffset());\nconst endContainer = useManagerState(selectionManager.selectionChangeNotifier, () =&gt; selectionManager.getEndContainer());\nconst endOffset = useManagerState(selectionManager.selectionChangeNotifier, () =&gt; selectionManager.getEndOffset());\nconst summary = `${startContainer?.nodeName};${startOffset} - ${endContainer?.nodeName};${endOffset}`;\nconst log = &lt;pre&gt;{summary}&lt;/pre&gt;"
    },
    {
      "title": "Fonto Output Stylesheets",
      "slug": "fonto-output-stylesheets-72d10d08fee7",
      "url": "https://documentation.fontoxml.com/latest/fonto-output-stylesheets-72d10d08fee7",
      "description": "Fonto Output's &lt;style/&gt; elements are used to specify the visual appearance of content in your rendered document."
    },
    {
      "title": "Routes",
      "slug": "routes-b05f5ffad99c",
      "url": "https://documentation.fontoxml.com/latest/routes-b05f5ffad99c",
      "description": "Fonto Review extends the Fonto Editor. It enables users to collaborate on reviewing document without the need to lock the document. Not having to lock the document for reviewing allows for unlimited concurrent users."
    },
    {
      "title": "AsyncSchemaLocationToSchemaExperienceResolver",
      "slug": "asyncschemalocationtoschemaexperienceresolver-3236f3635c0e",
      "url": "https://documentation.fontoxml.com/latest/asyncschemalocationtoschemaexperienceresolver-3236f3635c0e",
      "description": "import AsyncSchemaLocationToSchemaExperienceResolver from 'fontoxml-schema-experience-resolver/src/AsyncSchemaLocationToSchemaExperienceResolver';\nimport configurationManager from 'fontoxml-configuration/src/configurationManager';\nimport configureAsInlineFormatting from 'fontoxml-families/src/configureAsInlineFormatting';\n\nconfigurationManager.set(\n    'schema-experience-resolver',\n    new AsyncSchemaLocationToSchemaExperienceResolver(async asyncRegistrationApi =&gt; {\n        // Create a module to add the configuration on.\n        const sxModule = asyncRegistrationApi.addSchemaExperienceModule('some-sx-module', []);\n\n        // Configure the element(s).\n        configureAsInlineFormatting(sxModule, 'self::em', 'Emphasis', { slant: 'italic' });\n\n        // Add additional operation(s).\n        asyncRegistrationApi.addOperations({\n            'toggle-em': {\n                label: 'Emphasis',\n                steps: [\n                    {\n                        type: 'operation/toggle-inline-formatting-element',\n                        data: {\n                            nodeName: 'em'\n                        }\n                    }\n                ]\n            }\n        });\n\n        // Define and register the schema experience for a schema and schema locations.\n        asyncRegistrationApi.defineAndRegisterSchemaExperience(\n            'assets/schemas/some-schema.json',\n            'urn:fontoxml:example:some:schema.xsd',\n            ['some-sx-module']\n        );\n    })\n);"
    },
    {
      "title": "createInlineFrameJsonMl",
      "slug": "createinlineframejsonml-e29a670c4935",
      "url": "https://documentation.fontoxml.com/latest/createinlineframejsonml-e29a670c4935",
      "description": "Create a JsonML fragment which appears as an inline frame in the rendered\ndocument."
    },
    {
      "title": "Transform component \"stylesheet-template/content\" not defined for node \"XXX\"",
      "slug": "transform-component-stylesheet-template-content-not-defined-for-node-xxx-d3c54bce25d4",
      "url": "https://documentation.fontoxml.com/latest/transform-component-stylesheet-template-content-not-defined-for-node-xxx-d3c54bce25d4",
      "description": "This error is commonly caused by missing CVK configuration for an XML element in the document being rendered."
    },
    {
      "title": "CmsErrorData",
      "slug": "cmserrordata-603d176fb4ac",
      "url": "https://documentation.fontoxml.com/latest/cmserrordata-603d176fb4ac",
      "description": "ErrorManager"
    },
    {
      "title": "Blueprint",
      "slug": "blueprint-31a709967c69",
      "url": "https://documentation.fontoxml.com/latest/blueprint-31a709967c69",
      "description": "If the node is itself a Document, the owner document is null. Use blueprintQuery.getDocumentNode if you want the node itself in that case."
    },
    {
      "title": "Fonto Review Suggestion Mode",
      "slug": "fonto-review-suggestion-mode-c075b3e1925a",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-suggestion-mode-c075b3e1925a",
      "description": "Only one user can either Edit or Suggest on a document at a time. While this is not enforced, we do not currently provide any way to resolve conflicts between suggestions and/or direct edits made to the document other than discarding the changes. We recommend to prevent users from accessing documents which can currently be opened in suggestion mode by another user."
    },
    {
      "title": "Project browser library",
      "slug": "project-browser-library-950a942143f3",
      "url": "https://documentation.fontoxml.com/latest/project-browser-library-950a942143f3",
      "description": "This add-on exposes the open-project-browser-modal operation for opening a project browser. This browser allows the user to browse the documents currently opened in the editor and select one of the elements present in one of those documents. This, for example, can be used while selecting a target for a link."
    },
    {
      "title": "Fonto 7.11.1 (July 17, 2020)",
      "slug": "fonto-7-11-1-july-17-2020-3fb239455580",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-11-1-july-17-2020-3fb239455580",
      "description": "A bug is fixed where XQuery Update Facility scripts could throw an error mentioning a missing createDocument method."
    },
    {
      "title": "Why is my configuration not applied?!",
      "slug": "why-is-my-configuration-not-applied-d10bae1de599",
      "url": "https://documentation.fontoxml.com/latest/why-is-my-configuration-not-applied-d10bae1de599",
      "description": "Of course that is possible! Fonto Editor can be configured using the configurationManager. This manager has a set method to set final values of configuration, a setDefault method to set the default values that can be overwritten and a get to actually get a value. The configuration value for the outline view is called structure-view-configuration. There is a openStructureViewInitially property that can be set to open it by default."
    },
    {
      "title": "compareOffsetPositions",
      "slug": "compareoffsetpositions-bb9be9dddd20",
      "url": "https://documentation.fontoxml.com/latest/compareoffsetpositions-bb9be9dddd20",
      "description": "Compares the given positions in container + offset notation w.r.t. document\norder in this state."
    },
    {
      "title": "Fonto 8.14.1 (November 14, 2025)",
      "slug": "fonto-8-14-1-november-14-2025-d538a530afee",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-14-1-november-14-2025-d538a530afee",
      "description": "The documents referenced within the input documents are now retrieved from the CMS using the minimum number of requests required."
    },
    {
      "title": "SingleSchemaExperienceResolver",
      "slug": "singleschemaexperienceresolver-e695cd645535",
      "url": "https://documentation.fontoxml.com/latest/singleschemaexperienceresolver-e695cd645535",
      "description": "sxManager"
    },
    {
      "title": "Why is my configuration cyclic!?",
      "slug": "why-is-my-configuration-cyclic-bc64d657a8da",
      "url": "https://documentation.fontoxml.com/latest/why-is-my-configuration-cyclic-bc64d657a8da",
      "description": "import configurationManager from 'fontoxml-configuration/src/configurationManager.js';\nimport MyConfigurableModal from 'configurable-modals/src/MyConfigurableModal';\n\nconfigurationManager.set('my-modal', MyConfigurableModal);\n..."
    },
    {
      "title": "Session tokens",
      "slug": "session-tokens-d08687e64cef",
      "url": "https://documentation.fontoxml.com/latest/session-tokens-d08687e64cef",
      "description": "The context request object may also contain identifiers for the folder (folderId), document (documentId) and/or referrer document (referrerDocumentId) each relating to the context in which a request is made."
    },
    {
      "title": "Autosave",
      "slug": "autosave-1cd186494a6b",
      "url": "https://documentation.fontoxml.com/latest/autosave-1cd186494a6b",
      "description": "My CMS regards every autosave as a revision that is also shown as a revision in Document History. Should I disable autosave to prevent these intermediate revisions from cluttering the document history revision selector?"
    },
    {
      "title": "Creating custom tables of contents",
      "slug": "creating-custom-tables-of-contents-7bf11fb675e3",
      "url": "https://documentation.fontoxml.com/latest/creating-custom-tables-of-contents-7bf11fb675e3",
      "description": "This guide will show you how to design fully customizable tables of contents (ToCs) to enhance your documents. This feature allows you to define custom entries, include page numbers, apply unique styles, and structure the content exactly as needed. Perfect for creating professional, tailored document navigation."
    },
    {
      "title": "Embedded mode",
      "slug": "embedded-mode-c5c250c1cec9",
      "url": "https://documentation.fontoxml.com/latest/embedded-mode-c5c250c1cec9",
      "description": "This also means that using operations that change the document width has no effect when embedded mode is enabled. This affects the set-document-content-width-to set of operations and the wide-canvas-content-view-to operations."
    },
    {
      "title": "Upgrade from 7.7 to 7.8",
      "slug": "upgrade-from-7-7-to-7-8-7a82d73fe417",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-7-to-7-8-7a82d73fe417",
      "description": "It is now possible, and highly recommended, to host your own instance of the backend for the optional spell checker add-on for Fonto Editor. Previously, integrating the add-on automatically meant sending (parts of) documents over the public internet to a Fonto-managed backend. While this is still the default, as of this release, the spell checker backend can be obtained with the latest version of the Fonto Development Tools, using the fdt spell-checker commands. Set the new usePublicSpellChecker property of the SpellCheckerConfiguration object to false to have Fonto Editor send requests relating to the spell checker through the /proxy/spell-checker endpoint. These requests can then be forwarded to a self-hosted spell checker backend instance."
    },
    {
      "title": "Configure exports",
      "slug": "configure-exports-31855963fa90",
      "url": "https://documentation.fontoxml.com/latest/configure-exports-31855963fa90",
      "description": "The Fonto Review backend offers an optional endpoint that can retrieve a CSV export of the annotations in the given documents."
    },
    {
      "title": "configureAsBlock",
      "slug": "configureasblock-7617fca55bc0",
      "url": "https://documentation.fontoxml.com/latest/configureasblock-7617fca55bc0",
      "description": "Blocks are intended to contain inline content and are as such an end point of the\nvertical flow of a document."
    },
    {
      "title": "ErrorCallback",
      "slug": "errorcallback-d81e40e2dd2d",
      "url": "https://documentation.fontoxml.com/latest/errorcallback-d81e40e2dd2d",
      "description": "ErrorManager"
    },
    {
      "title": "Placeholders",
      "slug": "placeholders-0fff5cc251be",
      "url": "https://documentation.fontoxml.com/latest/placeholders-0fff5cc251be",
      "description": "Fonto Editor provides several ways to configure placeholders for content in your documents. This guide describes the different options and when and how to use them."
    },
    {
      "title": "zoom-content-view-to",
      "slug": "zoom-content-view-to-e84e60ee2490",
      "url": "https://documentation.fontoxml.com/latest/zoom-content-view-to-e84e60ee2490",
      "description": "These operations resize the content view, always scaling the text size and changing the width of the document if use-embedded-mode is false."
    },
    {
      "title": "FontoXML 7.3.0 (June 20, 2018)",
      "slug": "fontoxml-7-3-0-june-20-2018-d6e37e232848",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-3-0-june-20-2018-d6e37e232848",
      "description": "FontoXML now allows hierarchies with multiple occurrences of the same document. For example, it is now possible to load DITA maps with multipletopicref elements pointing to the same topic. Each instance of such documents will be editable, with edits automatically visible in all other instances. To reduce the confusion that this situation may cause, FontoXML marks these documents with an explanatory message in both the editor and Outline. Additionally, some operations now accept an optional hierarchyNodeId that allows targeting a specific instance of a reused document. Refer to Configure hierarchical multi-document management for details."
    },
    {
      "title": "Upcoming removals 8.6",
      "slug": "upcoming-removals-8-6-ea48bfbfc233",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-8-6-ea48bfbfc233",
      "description": "The new API does not support setting the referrerId property on DocumentReferences. Similarly, the misleadingly named relativeUrl alias for the remoteDocumentId property will also be removed. It was already not allowed to have this property determine the identity of the corresponding document. We now no longer send a referrerId as part of the /document GET request for documents loaded through the new API. There is no replacement - please get in touch if this causes problems for your application."
    },
    {
      "title": "fonto:is-removed",
      "slug": "fonto-is-removed-a1bfbc4d67e7",
      "url": "https://documentation.fontoxml.com/latest/fonto-is-removed-a1bfbc4d67e7",
      "description": "Determines whether the given node is configured as removed. This functions can\nbe used to prevent matching things in a metadata part of the document, for\ninstance."
    },
    {
      "title": "SidebarTabConfig",
      "slug": "sidebartabconfig-abd53ed37291",
      "url": "https://documentation.fontoxml.com/latest/sidebartabconfig-abd53ed37291",
      "description": "The icon to use on the tab's button. This should be one of the\nFont Awesome\nicons. Do not include the fa- prefix, just use the icon names as-is from the\ndocumentation."
    },
    {
      "title": "How to chunk a single XML file like NISO-STS or JATS!?",
      "slug": "how-to-chunk-a-single-xml-file-like-niso-sts-or-jats-c7dc0f9c2a7e",
      "url": "https://documentation.fontoxml.com/latest/how-to-chunk-a-single-xml-file-like-niso-sts-or-jats-c7dc0f9c2a7e",
      "description": "This blog post explained how we built an architecture that can easily load big documents. We covered how to enable JIT loading by chunking. We touched on how we number documents and tables in unloaded documents. We made cross-references work and we explained how to build an assembly and disassembly phase. This blog post does not yet explain how to configure Fonto Editor to load the hierarchy represented by the various chunk documents. This has a reason! In the 8.4 release, we are introducing a new API to configure these hierarchies in a declarative way, so expect a follow-up to this blog-post that explains how we configure that!"
    },
    {
      "title": "Find and replace",
      "slug": "find-and-replace-3503bed4647f",
      "url": "https://documentation.fontoxml.com/latest/find-and-replace-3503bed4647f",
      "description": "To return accurate results the POST /document/presearch endpoint needs to be aware of which elements are block-level elements, which elements are shown (in Fonto) in a different order than their XML order, and which elements may be ignored altogether. The endpoint may return false positives (documents that are believed to contain the search term) as those documents are filtered out when the Fonto client performs the definitive, client-side search. The endpoint may not return false negatives, as that would disqualify a document from the definitive search -- this would result in search results erroneously being omitted."
    },
    {
      "title": "Fonto 7.6.0 (March 21, 2019)",
      "slug": "fonto-7-6-0-march-21-2019-eefba15e622f",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-6-0-march-21-2019-eefba15e622f",
      "description": "Fonto now allows an editor to load its document just in time (JIT Loading). Please refer to the documentation on how to Configure hierarchical multi-document management to learn how to implement it for your editor. This can be enabled in Dita by setting the map-manager-automatically-load-topicrefs configuration value to false."
    },
    {
      "title": "FxSheetFrameHeaderReuseArea",
      "slug": "fxsheetframeheaderreusearea-fa9d9bc468b0",
      "url": "https://documentation.fontoxml.com/latest/fxsheetframeheaderreusearea-fa9d9bc468b0",
      "description": "An area for use in a sheetframe header. It is empty if the sheetframe this is\nrendered for is unique within the documents hierarchy (ie. is not reused)."
    },
    {
      "title": "LocalizationOptions",
      "slug": "localizationoptions-051704725a25",
      "url": "https://documentation.fontoxml.com/latest/localizationoptions-051704725a25",
      "description": "If set, overrides the preferred-locales configured through the\nconfigurationManager by prepending the given locales."
    },
    {
      "title": "CvkDirection",
      "slug": "cvkdirection-c4e03158ef76",
      "url": "https://documentation.fontoxml.com/latest/cvkdirection-c4e03158ef76",
      "description": "If undefined, direction is inherited from the closest ancestor node (in the\nsource document) that does define one, or otherwise defaults to 'ltr'."
    },
    {
      "title": "React best practices",
      "slug": "react-best-practices-88df80cf304e",
      "url": "https://documentation.fontoxml.com/latest/react-best-practices-88df80cf304e",
      "description": "When we started with FDS, we used a lot of componentWillMount() to initialize timers, add callbacks to a Notifier on a manager, etc. After reading the documentation more carefully, we realized we should've used componentDidMount() for most of those instead."
    },
    {
      "title": "How to configure a custom connector",
      "slug": "custom-connector-2d3619943b24",
      "url": "https://documentation.fontoxml.com/latest/custom-connector-2d3619943b24",
      "description": "import connectorsManager from 'fontoxml-configuration/src/connectorsManager';\nimport RequestData from 'fontoxml-connector/src/RequestData';\n\nimport type { ProductList } from '../types';\n\nclass ProductConnector {\n\tpublic async getProductList(): Promise&lt;ProductList&gt; {\n\t\tconst requestData = new RequestData();\n\n\t\tconst result = await connectorsManager\n\t\t\t.getCmsClient()\n\t\t\t.sendRequest('POST', '/products/list', requestData)\n\t\t\t.then((response) =&gt; {\n\t\t\t\treturn response.body as ProductList;\n\t\t\t});\n\n\t\treturn result;\n\t}\n}\n\nconst productConnector = new ProductConnector();\n\nexport default productConnector;\n"
    },
    {
      "title": "The change proposal annotation type",
      "slug": "the-change-proposal-annotation-type-887a81f87b07",
      "url": "https://documentation.fontoxml.com/latest/the-change-proposal-annotation-type-887a81f87b07",
      "description": "Fonto Review has a special annotation type referred to as \"change proposals\". Change proposals allow users to propose textual changes to a document. It also allows users to automatically merge these proposed changes into the document while resolving the annotation."
    },
    {
      "title": "Environment variables for Fonto Review",
      "slug": "environment-variables-ca1c3ccedc48",
      "url": "https://documentation.fontoxml.com/latest/environment-variables-ca1c3ccedc48",
      "description": "The Fonto Review backend also has required configuration. This configuration is necessary to perform a compare between revisions of documents to map positions (annotations) from one revision to another."
    },
    {
      "title": "CrossReferencePopover",
      "slug": "crossreferencepopover-4a7a6b75f2bb",
      "url": "https://documentation.fontoxml.com/latest/crossreferencepopover-4a7a6b75f2bb",
      "description": "function resolveMyReference(target: string, referenceNodeId: NodeId): Promise&lt;{\n    documentId: DocumentId,\n    nodeId?: NodeId\n}&gt; {\n    // TODO: find/load the target of this reference, e.g. for DITA:\n    const referrerDocumentId = documentsManager.getDocumentIdByNodeId(\n        referenceNodeId\n    );\n    return resolveDitaUrl(target, referrerDocumentId);\n}\n\nconst MyReferencePopover: FC&lt;{data: CrossReferencePopoverData}&gt; ({data}) =&gt; {\n    const resolveReference = useCallback((target: string) =&gt; {\n        return resolveMyReference(target, data.contextNodeId);\n    }, [data.contextNodeId]);\n\n    return &lt;CrossReferencePopover\n        data={data}\n        resolveReference={resolveReference}\n    /&gt;;\n};"
    },
    {
      "title": "Review annotations",
      "slug": "review-annotations-22725660079f",
      "url": "https://documentation.fontoxml.com/latest/review-annotations-22725660079f",
      "description": "Publication targets point to the loaded document in general. They are not attached to any range in the document. Technically they point to the loaded root document. Configuring publication target types is done via the registerPublicationReviewAnnotationType registration API."
    },
    {
      "title": "FxOperation",
      "slug": "fxoperation-ba399191b079",
      "url": "https://documentation.fontoxml.com/latest/fxoperation-ba399191b079",
      "description": "This component has been optimized for performance. This component and its API\nwill probably remain intact for more (major) versions than the\noperationsManager. This component is more flexible, but also more verbose than\nusing an FX component: FX components all use this component internally to couple\noperation state to a specific UI element like a Button."
    },
    {
      "title": "Upgrade from 7.14 to 7.15",
      "slug": "upgrade-from-7-14-to-7-15-3d9158250910",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-14-to-7-15-3d9158250910",
      "description": "/**\n * Case 1: Building context without a remote document ID\n */\n\n// Before\ncmsClient.buildContext();\n\n// After\ncmsClient.createContext();\n\n/**\n * Case 2: Building context with a remote document ID, which sets the documentId context property\n */\n\n// Before\ncmsClient.buildContextWithDocumentId(remoteDocumentId);\n\n// After\ncmsClient.createContext(remoteDocumentId);\n\n/**\n * Case 3: Building context with a remote document ID, which sets the referrerDocumentId context property\n */\n\n// Before\ncmsClient.buildContext(remoteDocumentId);\n\n// After\n{ ...cmsClient.createContext(), referrerDocumentId: remoteDocumentId }"
    },
    {
      "title": "Operations",
      "slug": "operations-5a5f9ba5c6d8",
      "url": "https://documentation.fontoxml.com/latest/operations-5a5f9ba5c6d8",
      "description": "Another way of triggering an operation is by clicking a button in a contextual menu. These menus can be triggered by right-clicking elements which are configured to have a context menu, or by clicking the elementMenuButtonWidget. Operations which are triggered using a contextual menu are executed with a contextNodeId property on the stepData. The contextNodeId property is a NodeId which can be used in inline XPath expressions in an operation and resolved using the getNodeById method on DocumentsManager."
    },
    {
      "title": "Fonto Review 7.8.0",
      "slug": "fonto-review-7-8-0-406edc9ad94e",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-7-8-0-406edc9ad94e",
      "description": "Behold! This is the very first release of Fonto Review, and it's pretty awesome. Read more about it on its official product page and this documentation space. Questions? Contact our support desk!"
    },
    {
      "title": "Outline",
      "slug": "outline-a425bc846251",
      "url": "https://documentation.fontoxml.com/latest/outline-a425bc846251",
      "description": "configureAsStructureViewItem(sxModule, xq`self::* and parent::document-node()`, {\n\t// Let's make the document title static for now. This XPath is a string literal.\n\ttitleQuery: xq`\"The root of the document\"`,\n\ticon: 'folder-o',\n\trecursionQuery: xq`./div | ./section | ./title`,\n});"
    },
    {
      "title": "FontoXML 7.0.0 (December 20, 2017)",
      "slug": "fontoxml-7-0-0-december-20-2017-56b677873837",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-0-0-december-20-2017-56b677873837",
      "description": "By default, FontoXML 7.0 will periodically refresh the state of any locks from the CMS, as well as checking whether the document was updated remotely. This is then visualized using a new icon shown on every sheet frame, as well as by making documents read-only or editable when appropriate. This way, users get near-real-time feedback on the activity of other users working on the same collection of documents. This new UI is clearer and less invasive than previous releases, where the document would spontaneously reload if a conflicting edit was detected."
    },
    {
      "title": "Fonto Spell Checker",
      "slug": "fonto-spell-checker-4428b1080ce1",
      "url": "https://documentation.fontoxml.com/latest/fonto-spell-checker-4428b1080ce1",
      "description": "Information about running Docker images is available in the Docker documentation. Additionally, the ASP.NET Core documentation regarding hosting Docker containers might come in useful."
    },
    {
      "title": "wide-canvas-content-view-to-150%-text-size-not-150%",
      "slug": "wide-canvas-content-view-to-150-text-size-not-150-a9ef077ec7eb",
      "url": "https://documentation.fontoxml.com/latest/wide-canvas-content-view-to-150-text-size-not-150-a9ef077ec7eb",
      "description": "Convenience operation that can be used together with the zoom operations to provide a single “wide canvas” toggle instead of multiple document width options. Does nothing if use-embedded-mode is true."
    },
    {
      "title": "Authentication & security",
      "slug": "authentication-82376fe50248",
      "url": "https://documentation.fontoxml.com/latest/authentication-82376fe50248",
      "description": "import AuthorizationCmsClient from 'my-connectors/src/AuthorizationCmsClient';\n\nimport connectorsManager from 'fontoxml-configuration/src/connectorsManager';\n\nconnectorsManager.setCmsClient(new AuthorizationCmsClient());"
    },
    {
      "title": "How to set up automatic numbering for nodes",
      "slug": "numbering-b5ba3813e4a4",
      "url": "https://documentation.fontoxml.com/latest/numbering-b5ba3813e4a4",
      "description": "Numbering is usually a pretty mechanical task that lets users get a much better picture of the document, but might also cause quite the headache when maintained manually."
    },
    {
      "title": "Footnotes",
      "slug": "footnotes-009cbb1b3e6e",
      "url": "https://documentation.fontoxml.com/latest/footnotes-009cbb1b3e6e",
      "description": "After requesting a document from the Fonto Output service, you should see document footnotes as configured."
    },
    {
      "title": "XML source view",
      "slug": "xml-source-view-16cf0b067e72",
      "url": "https://documentation.fontoxml.com/latest/xml-source-view-16cf0b067e72",
      "description": "This add-on adds a sidebar tab containing the XML representation of the currently focused document. This add-on only needs to mentioned as a dependency of an application to be integrated."
    },
    {
      "title": "How to configure the copy and paste behavior",
      "slug": "clipboard-behavior-bc607964d3f5",
      "url": "https://documentation.fontoxml.com/latest/clipboard-behavior-bc607964d3f5",
      "description": "import namespaceManager from 'fontoxml-dom-namespaces/src/namespaceManager';\nimport createChunkOutputProcessor from 'fontoxml-pipelined-importer/src/createChunkOutputProcessor';\nimport createPlainTextOutputProcessor from 'fontoxml-pipelined-importer/src/createPlainTextOutputProcessor';\nimport createRegexpAnnotateInputProcessor from 'fontoxml-pipelined-importer/src/createRegexpAnnotateInputProcessor';\nimport createRemoveWordWrapInputProcessor from 'fontoxml-pipelined-importer/src/createRemoveWordWrapInputProcessor';\nimport ImportStream from 'fontoxml-pipelined-importer/src/ImportStream';\n\nfunction createParagraph(blueprint, positionInParagraph, document) {\n\tconst paragraphElement = namespaceManager.createElement(\n\t\tdocument,\n\t\t'p' /* Your paragraph counterpart element name here */\n\t);\n\tpositionInParagraph.setAtBegin(paragraphElement);\n\n\treturn paragraphElement;\n}\n\nconst inputProcessors = [\n\t// Everything is a paragraph\n\tcreateRegexpAnnotateInputProcessor(/\\w/, 'Paragraph'),\n\t// Remove line wraps until we see a '.', join using a ' ' character\n\tcreateRemoveWordWrapInputProcessor(null, /\\.$/, ' '),\n];\n\nconst outputProcessors = [\n\t// Prefer to make paragraphs\n\tcreateChunkOutputProcessor('Paragraph', createParagraph),\n\t// If it fails, plain text is better then nothing\n\tcreatePlainTextOutputProcessor(),\n];\n\nexport default new ImportStream(inputProcessors, outputProcessors);\n"
    },
    {
      "title": "My XPath is acting up?!",
      "slug": "my-xpath-is-acting-up-94c5f9e72763",
      "url": "https://documentation.fontoxml.com/latest/my-xpath-is-acting-up-94c5f9e72763",
      "description": "But then, the XPath specification indicates the 'ancestor-or-self' axis returns its nodes in reverse document order. In any case ancestor-or-self::*[1] returns the closest ancestor! We are inputting a text node somewhere deep in the document, how is Fonto getting to the document node?! The XPath specification actually also describes any path expression to be in document order. In the expressionancestor-or-self::*[1], the [1] binds to the axis. But if you rewrite it to (ancestor-or-self::*)[1], the first node in document order is returned. See it for yourself on our XPath playground!"
    },
    {
      "title": "Upgrade from 8.11 to 8.12",
      "slug": "upgrade-from-8-11-to-8-12-d5c0225cf83d",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-11-to-8-12-d5c0225cf83d",
      "description": "// Before\n&lt;FxVirtualForestCollapseButtons\n\tvirtualForestManagerId={INSTANCE_ID}\n/&gt;\n\n// After\n&lt;FxVirtualForestCollapseButtons\n\tinstanceId={INSTANCE_ID}\n/&gt;"
    },
    {
      "title": "Fonto Output configuration",
      "slug": "fonto-output-configuration-153fc75f5371",
      "url": "https://documentation.fontoxml.com/latest/fonto-output-configuration-153fc75f5371",
      "description": "The schema experience file, sx.xml, specifies how Fonto Output should handle particular XML elements from the input document files when generating the output document. The schema experience is also part of Fonto Document History or Fonto Review, so if you have configured other Fonto products, you are able to use those sx.xml files as part of your output configuration."
    },
    {
      "title": "How to customize the version info popover",
      "slug": "custom-version-info-popover-989733d55a59",
      "url": "https://documentation.fontoxml.com/latest/custom-version-info-popover-989733d55a59",
      "description": "import uiManager from 'fontoxml-modular-ui/src/uiManager';\nimport MyVersionInfoPopover from './ui/MyVersionInfoPopover';\n\nexport default function install(): void {\n    uiManager.registerReactComponent('VersionInfoPopover', MyVersionInfoPopover);\n}\n\n"
    },
    {
      "title": "How do I debug validation issues!?",
      "slug": "how-do-i-debug-validation-issues-b4c6772212ac",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-debug-validation-issues-b4c6772212ac",
      "description": "Document ID: clogs/clog.xml\nError: The document clogs/clog.xml failed validation:\nThe children of this node do not match the restrictions set by its content model.\n&lt;topic xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" id=\"topic_21550622-2577-46a8-ca93-ffa2794f9319\" xsi:noNamespaceSchemaLocation=\"urn:fontoxml:sandbox:names:dita:xsd:topics.xsd\"&gt;…&lt;/topic&gt;"
    },
    {
      "title": "How to create custom XPath/XQuery invalidation",
      "slug": "xpath-xquery-invalidation-9b7094ab5fdc",
      "url": "https://documentation.fontoxml.com/latest/xpath-xquery-invalidation-9b7094ab5fdc",
      "description": "import addExternalValue from 'fontoxml-selectors/src/addExternalValue';\nimport configureAsBlock from 'fontoxml-families/src/configureAsBlock';\nimport configureProperties from 'fontoxml-families/src/configureProperties';\nimport createLabelQueryWidget from 'fontoxml-families/src/createLabelQueryWidget';\nimport documentsHierarchy from 'fontoxml-documents/src/documentsHierarchy';\n\nexport default function configureSxModule(sxModule) {\n\tconst setDocumentsData = addExternalValue(\n\t\t'http://example.app/ns',\n\t\t'getDocumentData',\n\t\t'xs:string',\n\t\t'xs:integer',\n\t\t0\n\t);\n\n\tdocumentsHierarchy.hierarchyChangedNotifier.addCallback(() =&gt; {\n\t\t// Find all loaded documents in the hierarchy\n\t\tconst loaded = documentsHierarchy.findAll(hierarchyNode =&gt;\n\t\t\thierarchyNode.documentReference.isLoaded()\n\t\t);\n\n\t\t// Fire and forget, this returns a promise.\n\t\tsetDocumentsData('loaded-documents', loaded.length);\n\t});\n\n\t// p\n\t//     A paragraph element (&lt;p&gt;) is a block of text containing a single main idea. Category: Body elements\n\tconfigureAsBlock(sxModule, xq`self::p`, t('paragraph'));\n\n\tconfigureProperties(sxModule, xq`self::p`, {\n\t\tblockHeaderRight: [\n\t\t\tcreateLabelQueryWidget(xq`\n\t\t\t\t\"Number of loaded documents: \" || Q{http://example.app/ns}getDocumentData(\"loaded-documents\")\n\t\t\t`)\n\t\t]\n\t});\n}"
    },
    {
      "title": "FontoXML 6.7.0 (November 18, 2016)",
      "slug": "fontoxml-6-7-0-november-18-2016-dbf2781e3c40",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-7-0-november-18-2016-dbf2781e3c40",
      "description": "The FontoXML editor route now supports being initialized with an empty array of documentIds, causing no documents to be loaded initially. Note that the default intialization will only show the editor route if documentIds is not empty. To also show the editor when no documents are specified, import fontoxml-routing/routingManager and call routingManager.addRootRoutingRule('editor')from an install.js to add the editor route as fallback route."
    },
    {
      "title": "Fonto 7.7.0 (June 20, 2019)",
      "slug": "fonto-7-7-0-june-20-2019-cca3dbcb433c",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-7-0-june-20-2019-cca3dbcb433c",
      "description": "This release introduces an optional new way to display and modify the state (such as saving or locking) for individual documents in multi-document editors. For visual examples and more information, see our guide Configuring and using a (custom) SheetFrameHeader."
    },
    {
      "title": "Popovers",
      "slug": "popovers-4ff4374411af",
      "url": "https://documentation.fontoxml.com/latest/popovers-4ff4374411af",
      "description": "Element popovers will be rendered everywhere, including read-only contexts such as document previews and past revisions in Document History. If your popover is designed as an interactive form you may want to completely disable it, or render it differently than normal."
    },
    {
      "title": "Bidirectional content",
      "slug": "bidirectional-content-f798b323922f",
      "url": "https://documentation.fontoxml.com/latest/bidirectional-content-f798b323922f",
      "description": "The createNumberingWidget and configureAsListElements widget and configuration function also support these numbering systems. Refer to our guide on automatically numbering elements and documents for more information on how to implement numbering of elements and documents."
    },
    {
      "title": "Custom non web-safe fonts",
      "slug": "custom-non-web-safe-fonts-6377cdd87809",
      "url": "https://documentation.fontoxml.com/latest/custom-non-web-safe-fonts-6377cdd87809",
      "description": "This guide describes the best practice on how to customize the font for a specific element, or the whole document, in the editor with a non web-safe font that is not supported for all operating systems."
    },
    {
      "title": "untoggle-wide-canvas-content-view-to-150%-text-size-not-150%",
      "slug": "untoggle-wide-canvas-content-view-to-150-text-size-not-150-5e31ec68cb70",
      "url": "https://documentation.fontoxml.com/latest/untoggle-wide-canvas-content-view-to-150-text-size-not-150-5e31ec68cb70",
      "description": "Convenience operation that can be used together with the zoom operations to provide a single “wide canvas” toggle instead of multiple document width options. Does nothing if use-embedded-mode is true."
    },
    {
      "title": "Application structure",
      "slug": "application-structure-34b22b57e915",
      "url": "https://documentation.fontoxml.com/latest/application-structure-34b22b57e915",
      "description": "Contains the modules required for the build tool to work. These files are installed and managed by the Node.js package manager."
    },
    {
      "title": "Nodes browser library",
      "slug": "nodes-browser-library-25f35fe19d09",
      "url": "https://documentation.fontoxml.com/latest/nodes-browser-library-25f35fe19d09",
      "description": "This add-on exposes the open-nodes-browser-modal operation for opening a nodes browser. This browser allows the user to choose between specified element nodes from the documents currently opened in the editor. This, for example, can be used while selecting a target for a link."
    },
    {
      "title": "Notifier",
      "slug": "notifier-c862a4a36792",
      "url": "https://documentation.fontoxml.com/latest/notifier-c862a4a36792",
      "description": "Notifiers are usually created by managers, which usually uses a hook to\nintegrate with changes happening inside the core editor and a execute notifier\nto inform interested parties of these changes (usually after having them parsed\n/ processed first)."
    },
    {
      "title": "ConfigurationValueTypes",
      "slug": "configurationvaluetypes-ce1a095fa581",
      "url": "https://documentation.fontoxml.com/latest/configurationvaluetypes-ce1a095fa581",
      "description": "NOTE: If your root-level documents reference other documents to load,\n      instead of changing this configuration you should consider checking\n      for the includeAdditionalDocuments property in your CMS when\n      handling the POST /document/get request for these documents and\n      include the additional documents in the response. This way you’ll\n      have more control over the number of documents you return in the\n      response for the initial document load."
    },
    {
      "title": "PostMessage CMS communication",
      "slug": "postmessage-cms-communication-01960dabb506",
      "url": "https://documentation.fontoxml.com/latest/postmessage-cms-communication-01960dabb506",
      "description": "This add-on enables using postMessage rather than REST calls to implement the CMS contracts. Please refer to the documentation included in the CMS integration guide for more details."
    },
    {
      "title": "How do I set up linting for my editor!?",
      "slug": "how-do-i-set-up-linting-for-my-editor-173cea94b306",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-set-up-linting-for-my-editor-173cea94b306",
      "description": "A package.json file is used in Node.js and npm (Node Package Manager) projects to manage and describe the project's dependencies, scripts, and metadata. In this blog post we'll be using the devDependencies and script properties."
    },
    {
      "title": "How to setup health monitoring for our back-end applications",
      "slug": "health-monitoring-04d031a8dceb",
      "url": "https://documentation.fontoxml.com/latest/health-monitoring-04d031a8dceb",
      "description": "The back-end components of Fonto Review, Fonto Content Quality, Fonto Document History and Fonto Output allow their health to be monitored remotely."
    },
    {
      "title": "How to create a metadata sidebar",
      "slug": "metadata-sidebar-d867fee570de",
      "url": "https://documentation.fontoxml.com/latest/metadata-sidebar-d867fee570de",
      "description": "This guide covers a very basic metadata form for use in a sidebar. It's mostly meant to serve as an example for an editing round-trip between a metadata element in an opened document, and a form within a sidebar."
    },
    {
      "title": "Whitespace visualization",
      "slug": "whitespace-visualization-5b5c6b154c78",
      "url": "https://documentation.fontoxml.com/latest/whitespace-visualization-5b5c6b154c78",
      "description": "This add-on provides a way to visualize certain types of whitespace in the loaded documents. This behavior be controlled using the toggle-show-whitespace operation."
    },
    {
      "title": "FontoXML 6.3.0 (May 13, 2016)",
      "slug": "fontoxml-6-3-0-may-13-2016-f39eef067042",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-3-0-may-13-2016-f39eef067042",
      "description": "If documents fail to load correctly, Fonto now shows a placeholder instead of going to the error page. The error page is only shown if all top-level documents fail to load. Please refer to the browser's developer console for more details on the nature of these errors."
    },
    {
      "title": "Fonto Content Quality 7.14",
      "slug": "fonto-content-quality-7-14-0-41e371975d50",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-7-14-0-41e371975d50",
      "description": "Filtering functionality is added which allows users to toggle the visibility of configured annotation categories and to check specific documents for quality suggestions. See the registerContentQualityAnnotationTypesCategory API documentation for more information."
    },
    {
      "title": "Upgrade from 6.1 to 6.2",
      "slug": "upgrade-from-6-1-to-6-2-b95f70f76a88",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-1-to-6-2-b95f70f76a88",
      "description": "The screenshot below illustrates the new review experience. The workflow review sidebar provides an overview of all comments and changes in the loaded documents. Selecting one of these cards highlights and scrolls to the corresponding marking in the document. Similarly, clicking a marking highlights the corresponding card in the sidebar."
    },
    {
      "title": "addMutationHook",
      "slug": "addmutationhook-b91d12c77a61",
      "url": "https://documentation.fontoxml.com/latest/addmutationhook-b91d12c77a61",
      "description": "Adds a mutation hook, which provides a way to react to changes in loaded\ndocuments independent of the operation making those changes. See the guide\nCreate a mutation\nhook to get started, and check the concept page Mutation Hooks for more information and limitations."
    },
    {
      "title": "Fonto 8.4.0 (March 23, 2023)",
      "slug": "fonto-8-4-0-march-23-2023-9dc960622c03",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-4-0-march-23-2023-9dc960622c03",
      "description": "The detailed error information for errors encountered while loading documents now contains the remote document ID of the document that failed to load."
    },
    {
      "title": "How to integrate Fonto Output with a CMS",
      "slug": "integrate-fonto-output-9cb03c73dd2d",
      "url": "https://documentation.fontoxml.com/latest/integrate-fonto-output-9cb03c73dd2d",
      "description": "When generating a document preview using the documentPreview output format. The preview references assets such as images, fonts, etc. in the (XHTML based) preview. The URL for these references will be based on the Output__ProxyUrl configuration variable."
    },
    {
      "title": "Fonto Review",
      "slug": "fonto-review-163978384af3",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-163978384af3",
      "description": "This add-on contains all code needed to integrate Fonto Review in your Fonto Editor instance. Head over to our documentation for more information. For information on the reference configuration, see https://github.com/FontoXML/fontoxml-review-reference-configuration."
    },
    {
      "title": "Special characters",
      "slug": "special-characters-6d4ff0ebbc55",
      "url": "https://documentation.fontoxml.com/latest/special-characters-6d4ff0ebbc55",
      "description": "import specialCharactersManager from 'fontoxml-special-characters/src/specialCharactersManager';\n\nexport default function install() {\n\tspecialCharactersManager.addCharacterSetPath(\n\t\t'emoji',\n\t\t'assets/character-sets/emoji-character-set.json'\n\t);\n}"
    },
    {
      "title": "How to configure buttons for inserting content direction markers",
      "slug": "configure-buttons-for-inserting-content-direction-markers-25c336ff8bd1",
      "url": "https://documentation.fontoxml.com/latest/configure-buttons-for-inserting-content-direction-markers-25c336ff8bd1",
      "description": "This guide will help you configure buttons which allow users to insert the Left-to-Right Mark and Right-to-Left Mark characters in the text content of a document."
    },
    {
      "title": "PivotModelTransformerConfig",
      "slug": "pivotmodeltransformerconfig-7fdeaa727041",
      "url": "https://documentation.fontoxml.com/latest/pivotmodeltransformerconfig-7fdeaa727041",
      "description": "The name of the element in the DOM. If the qualifiedname and the localname are\nboth omitted, there will be no counterpart of a pivot node in the resulting DOM.\nThis is used to set the localName and namespaceUri using the NamespaceManager."
    },
    {
      "title": "Add-on functionality for Fonto",
      "slug": "add-on-56fcb6851ff4",
      "url": "https://documentation.fontoxml.com/latest/add-on-56fcb6851ff4",
      "description": "A lot of functionality in Fonto Editor comes from add-ons. Even auxiliary products like Fonto Content Quality, Fonto Document History and Fonto Review are add-on functionality that add to or overhaul the Fonto Editor user experience."
    },
    {
      "title": "FontoXML 6.6.0 (October 7, 2016)",
      "slug": "fontoxml-6-6-0-october-7-2016-814afeae87f6",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-6-0-october-7-2016-814afeae87f6",
      "description": "When starting FontoXML with multiple initial documents and not using either DITA map management or the single document hierarchy, failure to load a single document will no longer show the error page, but instead show an error placeholder for the document."
    },
    {
      "title": "Fonto 8.15.0 (December 18, 2025)",
      "slug": "fonto-8-15-0-december-18-2025-e1384921fbde",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-15-0-december-18-2025-e1384921fbde",
      "description": "You read that correctly: this release introduces Fonto Review Suggestion Mode! Where Fonto Review allows commenting on documents even when you can't edit them, suggestion mode allows you to suggest changes as if you're editing the document directly."
    },
    {
      "title": "FontoXML 6.4.0 (June 17, 2016)",
      "slug": "fontoxml-6-4-0-june-17-2016-8ec14c0dd230",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-4-0-june-17-2016-8ec14c0dd230",
      "description": "To improve performance, a hierarchy of nested documents is now rendered as a flat list. The render-documents-hierarchy directive is obsolete; use render-documents-list instead."
    },
    {
      "title": "Upgrade from 6.11 to 7.0",
      "slug": "upgrade-from-6-11-to-7-0-1b13b9aecb7b",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-11-to-7-0-1b13b9aecb7b",
      "description": "New colors \"chip-background:hover\", \"content-background:selected\", \"form-field-border-connotation-muted\", \"form-field-border-connotation-success\", \"form-field-border-connotation-error\", \"form-field-border-connotation-warning\", \" \"form-field-border-connotation-info\", \"form-field-placeholder-color\", \"grid-item-default-background\", \"grid-item-unicode-symbol-background\", \"menu-item-with-submenu-background\", \"menu-item-with-submenu-background:hover\", \"modal-backdrop-background\", \"modal-content-background\", \"modal-content-border\", \"modal-content-toolbar-background\", \"modal-content-toolbar-border\", \"modal-header-warning-background\", \"popover-header-background\", \"popover-header-warning-color\", \"sidebar-background\", \"structure-view-node-children-border\", \"structure-view-node-item-background\", \"structure-view-node-item-background:hover\", \"structure-view-node-item-border\", \"structure-view-node-item-border:hover\", \"structure-view-node-item-active-document-background\", \"structure-view-node-item-active-document-background:hover\", \"structure-view-node-item-active-document-border\", \"structure-view-node-item-active-document-border:hover\", \"structure-view-node-item-parent-of-active-document-background\", \"structure-view-node-item-parent-of-active-document-background:hover\", \"structure-view-node-item-parent-of-active-document-border\", \"structure-view-node-item-parent-of-active-document-border:hover\", \"table-size-grid-item-background\", \"table-size-grid-item-background:hover\", \"table-size-grid-item-border\", \"table-size-grid-item-border:disabled\", \"table-size-grid-item-border:hover\", \"tab-button-border\", \"tab-button-border:active\", \"tab-button-color\", \"tab-button-color:active\""
    },
    {
      "title": "Incorporate custom modules",
      "slug": "custom-xpath-xquery-or-xquf-b9d802792b4f",
      "url": "https://documentation.fontoxml.com/latest/custom-xpath-xquery-or-xquf-b9d802792b4f",
      "description": "XQuery Update Facility, or XQUF, allows you to create expressions and functions that change the structure of an XML document. In Fonto Output, you can use XQUF to format content, add new nodes or delete unnecessary elements from your output."
    },
    {
      "title": "Back-end DITA example configuration",
      "slug": "back-end-dita-example-configuration-5d9416a0f9de",
      "url": "https://documentation.fontoxml.com/latest/back-end-dita-example-configuration-5d9416a0f9de",
      "description": "&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;sx:schemaExperience\n\txmlns:sx=\"http://schemas.fontoxml.com/document-history/2.0/schema-experience.xsd\"\n\tattributesQuery=\"@*[not(\n\tname() = 'id'\n\tor\n\t(\n\t\t(name() = 'colname' or name() = 'colnum' or name() = 'namest' or name() = 'nameend' or name() = 'cols')\n\t\tand\n\t\t(parent::entry or parent::colspec or parent::tgroup)\n\t)\n)]\"&gt;\n\t&lt;!-- The id attribute is hidden for all elements.\n \tThe  colname, colnum, namest, nameend and cols attribute are hidden for entry, colspec and tgroup elements. --&gt;\n\t\n\t&lt;!-- Document loading strategy start--&gt;\n\t&lt;!--Maps and topicrefs have child topicrefs as their children--&gt;\n\t&lt;sx:configureProperties\n\t\tselector=\"self::map or self::topicref[not(@format='ditamap')] or self::topicgroup or self::topichead\"\n\t\thierarchyChildNodesQuery=\"./child::*[self::topicref or self::mapref or self::topicgroup or self::topichead]\" /&gt;\n\n\t&lt;!--Maprefs combine child topicrefs with children of the map they point to--&gt;\n\t&lt;sx:configureProperties\n\t\tselector=\"self::mapref or self::topicref[@format='ditamap']\"\n\t\thierarchyChildNodesQuery=\"fonto:document(./@href)/*/*[self::topicref or self::mapref or self::topicgroup or self::topichead]\"/&gt;\n\n\t&lt;!--Topicrefs and maprefs show the document they point to--&gt;\n\t&lt;sx:configureProperties\n\t\tselector=\"self::mapref or self::topicref\"\n\t\thierarchyContentQuery=\"fonto:document(./@href)/*\"/&gt;\n\t&lt;!-- Document loading strategy end--&gt;\n\t\n\t&lt;!-- Element configuration start--&gt;\n\t&lt;sx:configureAsBlock selector=\"self::alt\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::cmd\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::codeblock\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::consequence\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::ddhd\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::dt\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::dthd\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::equation-block\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::glossAbbreviation\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::glossAcronym\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::glossdef\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::glossShortForm\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::glossSynonym\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::glossterm\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::howtoavoid\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcAge\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcAssessment\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcAttitude\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcBackground\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcDelivery\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcEdLevel\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcGapItemDelta\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcGeneralDescription\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcGoals\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcInteractionLabel2\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcJtaItem\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcKnowledge\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcLearnStrat\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcMotivation\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcNeeds\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcObjective\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcObjectivesStem\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcOrgConstraints\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcPlanObjective\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcPlanResources\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcProcesses\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcSkills\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcSpecChars\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcTaskItem\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcTime\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcValues\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lcWorkEnvDescription\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::lines\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::linktext\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::navtitle\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::p\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::pre\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::proptype\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::propvalue\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::pt\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::screen\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::searchtitle\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::shortdesc\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::title\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::typeofhazard\" /&gt;\n\n\t&lt;sx:configureAsObject selector=\"self::image\" /&gt;\n\t&lt;sx:configureAsObject selector=\"self::hazardsymbol\" /&gt;\n\t&lt;sx:configureAsObject selector=\"self::mathml\" /&gt;\n\t&lt;sx:configureAsObject selector=\"self::fn\" /&gt;\n\n\t&lt;sx:configureAsInlineFrame selector=\"self::alt\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::apiname\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::author\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::b\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::brand\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::category\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-completed\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-organization\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-person\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-request-id\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-request-system\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-revisionid\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-started\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::change-summary\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::cite\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::cmdname\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::codeblock\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::codeph\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::component\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::consequence\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::coords\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::copyrholder\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::data\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::ddhd\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::delim\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::dt\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::dthd\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::equation-block\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::equation-inline\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::equation-number\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::featnum\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::filepath\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::fragref\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::howtoavoid\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::i\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::index-base\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::index-see\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::index-see-also\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::index-sort-as\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::indexterm\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::keyword\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::kwd\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::line-through\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::lines\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::linktext\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::markupname\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::mi\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::mn\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::mo\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::ms\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::msgblock\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::msgnum\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::msgph\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::navtitle\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::numcharref\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::oper\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::option\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::overline\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::p\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::parameterentity\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::parmname\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::ph\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::platform\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::pre\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::prodname\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::prognum\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::pt\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::publisher\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::q\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::repsep\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::screen\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::searchtitle\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::sep\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::series\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::shape\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::shortcut\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::shortdesc\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::sort-as\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::source\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::sub\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::sup\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::synnote\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::synph\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::systemoutput\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::term\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::text\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::textentity\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::title\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::tm\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::tt\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::typeofhazard\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::u\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::uicontrol\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::userinput\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::var\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::varname\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::wintitle\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::xmlatt\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::xmlelement\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::xmlnsname\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::xmlpi\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::xre\" /&gt;\n\n\t&lt;sx:configureAsListElements&gt;\n\t\t&lt;sx:list nodeName=\"sl\" /&gt;\n\t\t&lt;sx:item nodeName=\"sli\" /&gt;\n\t&lt;/sx:configureAsListElements&gt;\n\n\t&lt;sx:configureAsListElements&gt;\n\t\t&lt;sx:list nodeName=\"ol\" /&gt;\n\t\t&lt;sx:item nodeName=\"li\" /&gt;\n\t\t&lt;sx:paragraph nodeName=\"p\" /&gt;\n\t&lt;/sx:configureAsListElements&gt;\n\n\t&lt;sx:configureAsListElements&gt;\n\t\t&lt;sx:list nodeName=\"ul\" /&gt;\n\t\t&lt;sx:item nodeName=\"li\" /&gt;\n\t\t&lt;sx:paragraph nodeName=\"p\" /&gt;\n\t&lt;/sx:configureAsListElements&gt;\n\n\t&lt;sx:configureAsSimpletableTableElements /&gt;\n\n\t&lt;sx:configureAsCalsTableElements&gt;\n\t\t&lt;sx:table localName=\"table\" /&gt;\n\t&lt;/sx:configureAsCalsTableElements&gt;\n\t&lt;!-- Element configuration end--&gt;\n&lt;/sx:schemaExperience&gt;"
    },
    {
      "title": "Get started with Fonto Editor",
      "slug": "fonto-editor-352846dc93f6",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-352846dc93f6",
      "description": "Test documents will help you test your configuration while working on localhost. It is recommended to have a few documents for every different document type in your schema, as well as for any special cases that deserve some extra tests."
    },
    {
      "title": "How do I implement profiles!?",
      "slug": "how-do-i-implement-profiles-bfe21547871e",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-implement-profiles-bfe21547871e",
      "description": "We maintain an internal DITA editor that we use to write our documentation. All our narrative documentation (including these blog posts) are written in Fonto Editor. We peer review any new documentation using this editor, and we leave comments with feedback. We run the editor locally and we get user information from the git configuration. The editor is not backed by FDT but by a very simple CMS written in NodeJS with Express."
    },
    {
      "title": "Configuration file (sx.xml)",
      "slug": "configuration-file-sx-xml-a9a4ee5bd41d",
      "url": "https://documentation.fontoxml.com/latest/configuration-file-sx-xml-a9a4ee5bd41d",
      "description": "The sx.xml contains the configuration for the document loading strategy for the back-end. For Fonto Output or when Fonto Document History is run in Publication mode, this will allow it to load additional documents. It also affect how the changes for elements, that are part of the documents hierarchy, are detected."
    },
    {
      "title": "Upgrade from 8.2 to 8.3",
      "slug": "upgrade-from-8-2-to-8-3-cb8c456869f1",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-2-to-8-3-cb8c456869f1",
      "description": "We've removed a long-deprecated fallback to use the RemoteDocumentId of the focused document as the referrer documentId in requests made by the open-image-browser-modal modal or by any other use of the useImageLoader hook or FxImageLoader component. Make sure you always provide a referrerDocumentId to these. Refer to the upgrade instructions for 7.9.0 for more details on how to update usages of the browse modal."
    },
    {
      "title": "Developing against your own CMS",
      "slug": "developing-against-your-own-cms-1b2694aa72ca",
      "url": "https://documentation.fontoxml.com/latest/developing-against-your-own-cms-1b2694aa72ca",
      "description": "This page lists a number of options to run a development build of Fonto Editor against your own CMS. This setup allows you to benefit from fast rebuilds on changes in your Fonto Editor configuration and easy debugging, while also using your actual CMS as a source for documents."
    },
    {
      "title": "How to add automatic numbering to elements",
      "slug": "elements-ef0a33971075",
      "url": "https://documentation.fontoxml.com/latest/elements-ef0a33971075",
      "description": "This guide will help you set up basic numbering for elements. This numbering can be shown in places like widgets and in places where the element's titleQuery is used. This way of numbering elements will not change the content of the document. This guide uses the DITA figure element (&lt;fig&gt;) throughout its examples."
    },
    {
      "title": "Upgrade from 7.x to 7.14.0",
      "slug": "upgrade-from-7-x-to-7-14-0-e1f5d57ef0dc",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-x-to-7-14-0-e1f5d57ef0dc",
      "description": "Overriding the ContentQualityConnector with the connectorsManager variable content-quality-connector is no longer possible. Use a custom CMS client using connectorsManager#setCmsClient instead."
    },
    {
      "title": "Iframe communication",
      "slug": "iframe-communication-1ec6a3a946f9",
      "url": "https://documentation.fontoxml.com/latest/iframe-communication-1ec6a3a946f9",
      "description": "Fonto Editor can be opened as an iframe. To allow communication between Fonto Editor and the host application. A common use case of this is offering a way to end the editing session from inside Fonto Editor by saving the opened documents and closing the editor or causing Fonto Editor to go full screen."
    },
    {
      "title": "Fonto 8.1.0 (June 23, 2022)",
      "slug": "fonto-8-1-0-june-23-2022-20200b705fea",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-1-0-june-23-2022-20200b705fea",
      "description": "A new XPath function fonto:remote-document-state can be used to retrieve the remote document state for a document anywhere."
    },
    {
      "title": "MenuItemWithDrop",
      "slug": "menuitemwithdrop-6db0f32984bd",
      "url": "https://documentation.fontoxml.com/latest/menuitemwithdrop-6db0f32984bd",
      "description": "When providing an \"onClick\" property, the item will split itself in two parts: a\nclickable part and a part used for opening the drop on hover. Both parts manage\ntheir own hover state."
    },
    {
      "title": "Configure output stylesheets",
      "slug": "configure-output-stylesheets-af93c883f98f",
      "url": "https://documentation.fontoxml.com/latest/configure-output-stylesheets-af93c883f98f",
      "description": "Layouts define the structure of document pages, including properties like margins, page size, and orientation. A document can have multiple layouts, allowing content to be arranged differently across pages. This flexibility enables dynamic presentation and formatting within the same document."
    },
    {
      "title": "CvkOptions",
      "slug": "cvkoptions-b72a683484d4",
      "url": "https://documentation.fontoxml.com/latest/cvkoptions-b72a683484d4",
      "description": "All available visualization and behavioural options of the CVK families. Not\nall options apply to all CVK families. Please refer to the documentation\npages of each CVK family to see which options apply."
    },
    {
      "title": "Back-end JATS example configuration",
      "slug": "back-end-jats-example-configuration-858112e86dac",
      "url": "https://documentation.fontoxml.com/latest/back-end-jats-example-configuration-858112e86dac",
      "description": "&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;sx:schemaExperience\n\txmlns:sx=\"http://schemas.fontoxml.com/document-history/2.0/schema-experience.xsd\"\n\txmlns:mml=\"http://www.w3.org/1998/Math/MathML\"\n\txmlns:jats=\"https://jats.nlm.nih.gov/publishing/0.4/xsd/JATS-journalpublishing0.xsd\" \n\tattributesQuery=\"@*[not(name() = 'id')]\"&gt;\n\t&lt;!-- The id attribute is hidden for all elements. --&gt;\n\t\n\t&lt;!-- Document loading strategy start--&gt;\n\t&lt;sx:configureProperties\n\t\tselector=\"self::*\" \n\t\thierarchyChildNodesQuery=\"./child::*[(self::article and boolean(not(parent::node()/parent::node()))) \nor self::article-meta or self::sec[not(ancestor::abstract or ancestor::boxed-text)] \nor (((self::front or self::body or self::back or self::floats-group or self::response) and parent::article)) \nor (((self::front or self::front-stub or self::body or self::back or self::floats-group) and parent::response)) \nor (((self::ack or self::app-group or self::bio or self::fn-group or self::glossary or self::ref-list or self::notes) and parent::back[parent::article]))\nor (((self::app) and parent::app-group[parent::back[parent::article]]))\nor (((self::sig-block) and parent::body))]\"/&gt;\n\n\t&lt;sx:configureProperties\n\t\tselector=\"boolean(parent::node())\" \n\t    hierarchyContentQuery=\".\"/&gt;\n\t&lt;!-- Document loading strategy end--&gt;\n\n\t&lt;!-- Element configuration start--&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::back[child::processing-instruction('AuthorQuery')]\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::body[child::*[not(self::sec or self::sig-block)]]\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::front-stub\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::article-meta\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::app\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::app-group\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::fn-group[parent::back]\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::glossary[parent::back]\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::ack\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::bio[parent::back]\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::ref-list[parent::back]\" /&gt;\n\t&lt;sx:configureAsSheetFrame selector=\"self::floats-group\" /&gt;\n\n\t&lt;sx:configureAsStructure selector=\"self::article\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::response\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::article-categories\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::author-notes\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::title-group\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::fn-group\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::contrib-group\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::def\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::caption\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::table-wrap-foot\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::table-wrap-group\" /&gt;\n\t&lt;sx:configureAsStructure selector=\"self::std\" /&gt;\n\n\t&lt;sx:configureAsFrame selector=\"self::abstract\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::product[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::address\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::bio\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::contrib\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::object-id\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::array\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::boxed-text\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::fig\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::fig[@position='anchor']\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::table-wrap\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::fn\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::def-list\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::def-list[parent::glossary]\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::disp-quote\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::ref\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::ref-list\" /&gt;\n\t&lt;sx:configureAsFrame selector=\"self::sec\" /&gt;\n\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::corresp\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::aff\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::label\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::long-desc\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::def-head\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::term[count(preceding-sibling::* | following-sibling::*) &gt; 1]\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::term[count(preceding-sibling::* | following-sibling::*) &gt; 1][ancestor::glossary]\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::term-head\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::disp-formula\" /&gt;\n\t&lt;sx:configureAsFrameWithBlock selector=\"self::disp-formula[child::mml:math]\" /&gt;\n\n\t&lt;sx:configureAsFrameWithBreakableBlock selector=\"self::code\" /&gt;\n\n\t&lt;sx:configureAsInlineFrame selector=\"self::conf-acronym\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::addr-line[fonto:in-inline-layout(.)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::article-title\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::city[fonto:in-inline-layout(.)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::collab\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::conf-date\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::conf-loc\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::conf-name\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::conf-sponsor\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::country[fonto:in-inline-layout(.)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::date\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::day\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::elocation-id\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::email[not(parent::address)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::etal\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::fax[fonto:in-inline-layout(.)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::fpage\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::given-names\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::institution\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::institution-wrap\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::isbn\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::issn\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::issue\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::issue-id\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::issue-part\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::issue-title\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::lpage\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::month\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::page-range\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::phone[fonto:in-inline-layout(.)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::prefix\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::price\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::publisher-loc\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::publisher-name\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::season\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::size\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::state[fonto:in-inline-layout(.)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::suffix\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::supplement\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::surname[parent::name[parent::contrib]]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::trans-title\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::uri[not(parent::address)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::volume\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::volume-id\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::volume-series\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::year\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::fixed-case\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::roman\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::sans-serif\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::inline-formula\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::inline-formula[child::mml:math]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::abbrev[ancestor::mixed-citation or ancestor::nlm-citation or ancestor::element-citation]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::named-content[@content-type='cite-group']\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::chapter-title\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::comment\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::data-title\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::date-in-citation\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::edition\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::gov\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::part-title\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::patent\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::person-group\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::pub-id\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::series\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::source\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::std[fonto:in-inline-layout(.)]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::title[parent::std]\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::trans-source\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::version\" /&gt;\n\t&lt;sx:configureAsInlineFrame selector=\"self::string-name[ancestor::mixed-citation or ancestor::nlm-citation or ancestor::element-citation or ancestor::product]\" /&gt;\n\n\t&lt;sx:configureAsInlineImage selector=\"self::graphic[fonto:in-inline-layout(.) and not(parent::disp-formula)]\" /&gt;\n\t&lt;sx:configureAsInlineImage selector=\"self::inline-graphic\" /&gt;\n\n\t&lt;sx:configureAsInlineStructure selector=\"self::xref[parent::named-content[@content-type='cite-group']]\" /&gt;\n\t&lt;sx:configureAsInlineStructure selector=\"self::styled-content\" /&gt;\n\n\t&lt;sx:configureAsBlock selector=\"self::addr-line\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::city\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::collab[parent::contrib]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::copyright-holder\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::copyright-year\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::country\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::p[parent::def]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::email[parent::address]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::fax\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::institution[parent::address or parent::contrib]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::mixed-citation\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::name[parent::contrib]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::phone\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::postal-code\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::state\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::uri[parent::address]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::p[parent::caption]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::term\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::term[ancestor::glossary]\" /&gt;\n\t&lt;sx:configureAsBlock selector=\"self::p\" /&gt;\n\n\t&lt;sx:configureAsListElements&gt;\n\t\t&lt;sx:list nodeName=\"list\" /&gt;\n\t\t&lt;sx:item nodeName=\"list-item\" /&gt;\n\t\t&lt;sx:paragraph nodeName=\"p\" /&gt;\n\t&lt;/sx:configureAsListElements&gt;\n\n\t&lt;sx:configureAsXhtmlTableElements /&gt;\n\n\t&lt;sx:configureAsImage selector=\"self::graphic\" /&gt;\n\n\t&lt;sx:configureAsTitleFrame selector=\"self::alt-title\" /&gt;\n\t&lt;sx:configureAsTitleFrame selector=\"self::series-title\" /&gt;\n\t&lt;sx:configureAsTitleFrame selector=\"self::subtitle\" /&gt;\n\t&lt;sx:configureAsTitleFrame selector=\"self::label[parent::*[self::abstract or self::ack or self::aff or self::app or self::back or self::bio or self::boxed-text or self::def-list or self::disp-formula or self::disp-quote or self::fig or self::fn or self::fn-group or self::sec or self::table-wrap or self::table-wrap-group]]\" /&gt;\n\t&lt;sx:configureAsTitleFrame selector=\"self::title\" /&gt;\n\t&lt;sx:configureAsTitleFrame selector=\"self::title[parent::caption]\" /&gt;\n\n\t&lt;sx:configureAsInlineLink selector=\"self::ext-link\" /&gt;\n\t&lt;sx:configureAsInlineLink selector=\"self::related-article\" /&gt;\n\t&lt;sx:configureAsInlineLink selector=\"self::xref\" /&gt;\n\n\t&lt;sx:configureAsInlineFormatting selector=\"self::bold\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::italic\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::monospace\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::overline\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::sc\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::strike\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::sub\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::sup\" /&gt;\n\t&lt;sx:configureAsInlineFormatting selector=\"self::underline\" /&gt;\n\n\t&lt;sx:configureAsInlineObject selector=\"self::break\" /&gt;\n\n\t&lt;sx:configureAsObject selector=\"self::break\" /&gt;\n\n\t&lt;sx:configureAsMathMlContainer selector=\"self::mml:math\" /&gt;\n\t&lt;sx:configureAsInlineMathMlContainer selector=\"self::mml:math[parent::inline-formula]\" /&gt;\n\n\t&lt;sx:configureAsLine selector=\"self::p[parent::list-item]\" /&gt;\n\n\t&lt;sx:configureAsOutOfOrderStructure selector=\"self::copyright-statement[parent::permissions]\" /&gt;\n\n\t&lt;sx:configureAsRemoved selector=\"self::sub-article\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::article-id\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::article-id[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::article-version\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::article-version[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::article-version-alternatives[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::author-comment\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::compound-kwd\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::compound-kwd-part\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::compound-subject\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::compound-subject-part\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::conf-num\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::conf-theme\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::conference\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::conference[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::label[parent::corresp]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::count\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::counts\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::counts[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::date-not-available\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::equation-count\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::event\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::event-desc\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::fig-count\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::history\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::history[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::kwd\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::kwd-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::kwd-group[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::nested-kwd\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::page-count\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::product\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::pub-date\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::pub-date[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::pub-history\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::pub-history[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::pub-date-not-available[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::ref-count\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::self-uri\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::self-uri[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::series-text\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::string-conf\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::subj-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::subject\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::support-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::table-count\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::trans-abstract\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::trans-abstract[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::unstructured-kwd-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::word-count\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::label[parent::app/title]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::glossary\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::glyph-data\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::glyph-ref\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::private-char\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::aff-alternatives\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::aff-alternatives[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::alt-text\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::alternatives\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::anonymous\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::attrib\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::citation-alternatives\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::collab-alternatives\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::contrib-id\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::custom-meta\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::custom-meta-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::custom-meta-group[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::degrees\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::element-citation\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::elocation-id[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::email[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::era\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::ext-link[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::fpage[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::institution-id\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::isbn[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::issn-l\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::issue[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::issue-id[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::issue-part[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::issue-sponsor\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::issue-sponsor[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::issue-title[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::journal-id\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::license\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::license-p\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::lpage[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::meta-name\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::meta-value\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::name\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::name-alternatives\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::notes\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::on-behalf-of\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::page-range[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::permissions\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::permissions[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::publisher\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::publisher-name\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::related-article[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::role\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::sig\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::sig-block\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::string-date\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::string-name\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::supplement[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::textual-form\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::trans-subtitle\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::trans-title-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::uri[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::volume[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::volume-id[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::volume-issue-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::volume-issue-group[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::volume-series[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::x\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::sec-level\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::chem-struct\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::chem-struct-wrap\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::*[parent::graphic]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::media\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::preformat\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::supplementary-material\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::supplementary-material[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::hr\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::overline-end\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::overline-start\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::rb\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::rp\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::rt\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::ruby\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::underline-end\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::underline-start\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::award-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::award-id\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::funding-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::funding-group[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::funding-source\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::funding-statement\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::open-access\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::principal-award-recipient\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::principal-investigator\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::abbrev-journal-title\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::journal-meta\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::journal-subtitle\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::journal-title\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::journal-title-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::label[parent::fn]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::target\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::label[parent::list-item]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::disp-formula-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::tex-math\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::nlm-citation\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::speaker\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::speech\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::statement\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::verse-group\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::verse-line\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::abbrev\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::milestone-end\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::milestone-start\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::named-content\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::access-date\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::annotation\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::note\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::std-organization\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::time-stamp\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::related-object\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::related-object[parent::article-meta]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::label[parent::sec/title]\" /&gt;\n\t&lt;sx:configureAsRemoved selector=\"self::sec-meta\" /&gt;\n\t&lt;!-- Element configuration end--&gt;\n&lt;/sx:schemaExperience&gt;"
    },
    {
      "title": "Fonto 7.5.0 (December 20, 2018)",
      "slug": "fonto-7-5-0-december-20-2018-a712ef619581",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-5-0-december-20-2018-a712ef619581",
      "description": "For very large DITA maps, the new map-manager-automatically-load-topicrefs configuration value can be set to false to disable automatic loading of documents referenced by the root map. Fonto will now display placeholders in the content and Outlines for any documents referenced in the DocumentsHierarchy that are not loaded. Clicking these placeholders will load the document. Additionally, applications can implement custom logic to automatically load a subset of documents using the new load-document-for-hierarchy-node operation."
    },
    {
      "title": "registerCustomXPathFunction",
      "slug": "registercustomxpathfunction-0bdd5cc5cc59",
      "url": "https://documentation.fontoxml.com/latest/registercustomxpathfunction-0bdd5cc5cc59",
      "description": "The name of this test. This can have one of two forms: a tuple of a namespaceURI\n                    and a localname, or a prefixed name. The prefix of a name will be resolved using\n                    the namespace manager. If this can not be found, a console warning will appear."
    },
    {
      "title": "Fonto 8.8.0 (April 5, 2024)",
      "slug": "fonto-8-8-0-april-5-2024-d5f84f32bc77",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-8-0-april-5-2024-d5f84f32bc77",
      "description": "Fonto Document History now renders all available documents in publication mode. This uses the same underlying techniques as Fonto Editor and Review do, where documents are rendered in a so-called documents list. JIT loading is available to avoid spamming the CMS with too many requests."
    },
    {
      "title": "How to connect Content Quality to a custom service",
      "slug": "content-quality-custom-service-2856458cd8ab",
      "url": "https://documentation.fontoxml.com/latest/content-quality-custom-service-2856458cd8ab",
      "description": "In this guide you will be connecting a custom service to Fonto Content Quality to analyze the contents of your documents. The service that you are developing is going to implement the HttpApiAnnotator API and is responsible for returning Fonto Content Quality results where applicable."
    },
    {
      "title": "Fonto 7.11.0 (June 26, 2020)",
      "slug": "fonto-7-11-0-june-26-2020-7d461d26007a",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-11-0-june-26-2020-7d461d26007a",
      "description": "Updating the hierarchy, for instance by adding, removing or moving Outline items will no longer cause all documents with errors to be reloaded. To achieve this, the DocumentLoader was modified to default to not reloading a document that previously had an error. Please refer to the Upgrade from 7.10 to 7.11 page for details on how to modify your custom loading strategy / hierarchy management code to take advantage of this."
    },
    {
      "title": "Fonto 8.5.0 (June 22, 2023)",
      "slug": "fonto-8-5-0-june-22-2023-8223ac98c0e4",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-5-0-june-22-2023-8223ac98c0e4",
      "description": "Fixed an issue that could cause documentCapabilitiesManager's \"new document\" callbacks to fire for documents while they are being unloaded."
    },
    {
      "title": "Fonto 7.9.0 (December 19, 2019)",
      "slug": "fonto-7-9-0-december-19-2019-9e06ca406984",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-9-0-december-19-2019-9e06ca406984",
      "description": "Fonto can now receive and process additional documents in certain scenarios when requesting the initial document. Please refer to the CMS connectors API for more details."
    },
    {
      "title": "Upcoming removals 8.0",
      "slug": "upcoming-removals-8-0-49f5b2206a62",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-8-0-49f5b2206a62",
      "description": "For backwards-compatibility reasons, Fonto Editor releases prior to 7.16.0 would send separate /document GET requests for each unique combination of a given (remote) document ID and referrer ID. However, it is not allowed for the CMS to respond with different documents for the same document ID, based on a different referrer value. The all-remote-document-ids-are-absolute configuration value was used to opt-in to omitting these unnecessary requests, which has now been made the default behavior. Any code to set this configuration value can therefore be removed."
    },
    {
      "title": "addTransform",
      "slug": "addtransform-74a6b799a5ee",
      "url": "https://documentation.fontoxml.com/latest/addtransform-74a6b799a5ee",
      "description": "A transform does not automatically cause the state of operations using it to be\nrecomputed when the data it uses changes. While Fonto does automatically refresh\nsome operation states in some cases, this behavior is subject to change.\nTherefore, we recommend not relying on this behavior to also recompute the state\nof custom transforms. Instead, developers should make sure to call OperationsManager#invalidateOperationStatesByStepType whenever the result of\nthe transform may have changed. For example, a transform that uses the selection\nmay invalidate corresponding operation states when the selection changes by\nsubscribing to the selection change notifier. This is usually done in the same\ninstall.js that registers the transform:"
    },
    {
      "title": "My hooks are too spammy?!",
      "slug": "my-hooks-are-too-spammy-0f7a52681538",
      "url": "https://documentation.fontoxml.com/latest/my-hooks-are-too-spammy-0f7a52681538",
      "description": "See which nodes are changed and validate the document. If the document is not valid according to the schema, report the custom mutation (and therefore the operation) to be disabled"
    },
    {
      "title": "Fonto Editor 7.13.0 (December 17, 2020)",
      "slug": "fonto-editor-7-13-0-december-17-2020-9da0e0e7aea5",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-13-0-december-17-2020-9da0e0e7aea5",
      "description": "We simplified how the editor deals with the remote state of documents (e.g., whether the document is dirty, whether the lock is available, etc.) and how that is reflected in various places in the UI. These changes are intended to provide a more consistent user experience and fix a few holes in the previous implementation. Refer to the documentation to see how you should expect the editor to behave in relation to the various responses the CMS can provide. Custom sheet frame headers can also benefit from these simplifications. Refer to the upgrade instructions to see how you can upgrade them."
    },
    {
      "title": "Pagination",
      "slug": "pagination-503c130e4c1f",
      "url": "https://documentation.fontoxml.com/latest/pagination-503c130e4c1f",
      "description": "You can specify conditions for document pagination based on the elements in the document. For example, you might want to prevent a page break from being inserted between an image and its caption. Fonto Output allows you to define this behavior by using the child elements of a configured &lt;pagination&gt;."
    },
    {
      "title": "Use cases",
      "slug": "use-cases-35f75fd8476b",
      "url": "https://documentation.fontoxml.com/latest/use-cases-35f75fd8476b",
      "description": "In the background Fonto Editor uses the PUT /document/lock api to request a lock with the documentId set to the id of the current document, documentETag to the ETag of the current document from when the document was loaded and lock.isLockAcquired set to true."
    },
    {
      "title": "ChildrenProperties",
      "slug": "childrenproperties-d4cb480a10f4",
      "url": "https://documentation.fontoxml.com/latest/childrenproperties-d4cb480a10f4",
      "description": "The document ID of the loaded document."
    },
    {
      "title": "How to create a custom modal",
      "slug": "create-a-modal-0ada3f0660ff",
      "url": "https://documentation.fontoxml.com/latest/create-a-modal-0ada3f0660ff",
      "description": "import uiManager from 'fontoxml-modular-ui/src/uiManager';\n\nimport ExampleModal from './ui/ExampleModal';\n\nexport default function install() {\n\tuiManager.registerReactComponent('ExampleModal', ExampleModal);\n}"
    },
    {
      "title": "My operation is disabled?!",
      "slug": "my-operation-is-disabled-1f6339c4be1a",
      "url": "https://documentation.fontoxml.com/latest/my-operation-is-disabled-1f6339c4be1a",
      "description": "\"add-metadata-comment\": {\n    \"label\": \"Open comment\",\n    \"description\": \"Open the comment modal.\",\n    \"icon\": \"pencil\",\n    \"steps\": [\n        {\n            \"type\": \"transform/setContextNodeIdToSelectionAncestor\",\n            \"data\": { \n                \"selectionAncestorNodeSpec\": \"self::*\"\n            }\n        },\n        {\n            \"type\": \"transform/setDocumentIdToDocumentContainingContextNode\"\n        },\n        {\n            \"type\": \"modal/AddCommentModal\"\n        },\n        {\n            \"type\": \"operation/acquire-document-locks\",\n            \"data\": {\n                \"documentIds\": [\"{{documentId}}\"]\n            }\n        },\n        {\n            \"type\": \"action/setDocumentMetadata\",\n            \"data\": {\n                \"documentId\": \"{{documentId}}\",\n                \"documentMetadata\": {\n                    \"changes\": \"bountiful\"\n                }\n            }\n        }\n    ]\n}"
    },
    {
      "title": "createDitaUrlFromRemoteTarget",
      "slug": "createditaurlfromremotetarget-1c3db44eeb8a",
      "url": "https://documentation.fontoxml.com/latest/createditaurlfromremotetarget-1c3db44eeb8a",
      "description": "Creating a DITA URL requires a referrer document ID (to ensure that links within\nthe same document only include the fragment). This can be specified as either a\nDocumentId referrerDocumentId or a NodeId contextNodeId. If\nneither is provided, the current focused document is used as the referrer."
    },
    {
      "title": "createDitaUrlFromLoadedTarget",
      "slug": "createditaurlfromloadedtarget-a4d1aebcbe16",
      "url": "https://documentation.fontoxml.com/latest/createditaurlfromloadedtarget-a4d1aebcbe16",
      "description": "Creating a DITA URL requires a referrer document ID (to ensure that links within\nthe same document only include the fragment). This can be specified as either a\nDocumentId referrerDocumentId or a NodeId contextNodeId. If\nneither is provided, the current focused document is used as the referrer."
    },
    {
      "title": "Upcoming removals 8.10",
      "slug": "upcoming-removals-8-10-f06d5d6b3ca6",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-8-10-f06d5d6b3ca6",
      "description": "import connectorsManager from 'fontoxml-configuration/src/connectorsManager';\nimport RequestData from 'fontoxml-connector/src/RequestData';\nimport { SxModule } from 'fontoxml-modular-schema-experience/src/sxManager';\nimport addExternalValue from 'fontoxml-selectors/src/addExternalValue';\n\n/**\n * Simplified version of the deprecated Reference type, extend as necessary.\n */\ntype Reference = {\n\ttarget: string;\n};\n\n/**\n * Resolve a single batch of reference IDs through the CMS endpoint.\n */\nasync function retrieveReferences(referenceIds: string[]): Promise&lt;Map&lt;string, Reference&gt;&gt; {\n\tconst cmsClient = connectorsManager.getCmsClient();\n\tconst requestData = new RequestData();\n\trequestData.setContentType('json');\n\trequestData.addPostParameters({\n\t\tcontext: cmsClient.createContext(),\n\t\tpermanentIds: referenceIds,\n\t});\n\tconst response = await cmsClient.sendRequest('POST', '/reference/get', requestData);\n\tconst result = new Map&lt;string, Reference&gt;();\n\tfor (let i = 0; i &lt; referenceIds.length; i++) {\n\t\tresult.set(referenceIds[i], response.body.results[i].body);\n\t}\n\n\treturn result;\n}\n\n/**\n * Helper to create a promise and its corresponding resolve function.\n */\nfunction defer&lt;T&gt;(): [Promise&lt;T&gt;, (v: T | PromiseLike&lt;T&gt;) =&gt; void] {\n\tlet resolve: (v: T | PromiseLike&lt;T&gt;) =&gt; void;\n\tconst promise = new Promise&lt;T&gt;((r) =&gt; {\n\t\tresolve = r;\n\t});\n\treturn [promise, resolve];\n}\n\n/**\n * Helper to debounce, only calls the last callback if no new requests are made\n * within the given interval.\n */\nlet timeoutId: number | null = null;\nfunction debounce(cb: () =&gt; void, delay: number): void {\n\tclearTimeout(timeoutId);\n\ttimeoutId = setTimeout(cb, 1000);\n}\n\ntype Batch = {\n\treferenceIds: Set&lt;string&gt;;\n\tpromise: Promise&lt;Map&lt;string, Reference&gt;&gt;;\n\tresolve: (result: Promise&lt;Map&lt;string, Reference&gt;&gt;) =&gt; void;\n};\nlet currentBatch: Batch | null = null;\n\n/**\n * Retrieve a reference using batching to avoid spamming the CMS.\n */\nasync function retrieveReference(referenceId: string): Promise&lt;Reference&gt; {\n\t// Debounce for 1 second to batch references\n\tif (currentBatch === null) {\n\t\tconst [promise, resolve] = defer&lt;Map&lt;string, Reference&gt;&gt;();\n\t\tcurrentBatch = {\n\t\t\treferenceIds: new Set(),\n\t\t\tpromise,\n\t\t\tresolve,\n\t\t};\n\t}\n\tcurrentBatch.referenceIds.add(referenceId);\n\tdebounce(() =&gt; {\n\t\tconst batch = currentBatch;\n\t\tcurrentBatch = null;\n\t\tbatch.resolve(retrieveReferences(Array.from(batch.referenceIds)));\n\t}, 1000);\n\tconst results = await currentBatch.promise;\n\treturn results.get(referenceId);\n}\n\nexport default function configureSxModule(sxModule: SxModule): void {\n\tsxModule.markAsAddon();\n\n\t// Register the external value function to resolve references\n\taddExternalValue(\n\t\t'http://app',\n\t\t'resolve-reference',\n\t\t'xs:string',\n\t\t'xs:string?',\n\t\tnull,\n\t\tasync (referenceId: string): Promise&lt;string&gt; =&gt; {\n\t\t\tconst reference = await retrieveReference(referenceId);\n\t\t\treturn reference.target;\n\t\t}\n\t);\n\n\t// Example usage:\n\t// referenceQuery: xq`Q{http://app}resolve-reference(@href)`;\n}\n"
    },
    {
      "title": "FeedbackContextType",
      "slug": "feedbackcontexttype-e076fdb616c0",
      "url": "https://documentation.fontoxml.com/latest/feedbackcontexttype-e076fdb616c0",
      "description": "\"CONTEXT_TYPE_EDITOR_DOCUMENT_HISTORY_SIDEBAR\""
    },
    {
      "title": "Fonto 8.1.1 (July 25, 2022)",
      "slug": "fonto-8-1-1-july-25-2022-0586b732701f",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-1-1-july-25-2022-0586b732701f",
      "description": "Documents with multiple root nodes configured for them in editors with a single document hierarchy now open correctly."
    },
    {
      "title": "Fonto Output",
      "slug": "output-2ac4285e4de8",
      "url": "https://documentation.fontoxml.com/latest/output-2ac4285e4de8",
      "description": "Indicates whether additional documents may be included in the response. Its main purpose is to load a multi-document structure with a single request, which would otherwise require several subsequent document load requests. Additional documents typically only include documents from the document structure whose main purpose is to group and reference other documents e.g. DITA maps. Whether additional documents are actually included in the response is left to the discretion of the CMS. This property is automatically set to true for initial document load requests. This feature can be combined with just-in-time loading to minimize the number of document load requests."
    },
    {
      "title": "addAction",
      "slug": "addaction-a144e8747d9a",
      "url": "https://documentation.fontoxml.com/latest/addaction-a144e8747d9a",
      "description": "Examples of actions include saving the document, changing UI state, making\ncalls to custom CMS endpoints, etc."
    },
    {
      "title": "CvkHierarchyContentQuery",
      "slug": "cvkhierarchycontentquery-2e22f9d88a83",
      "url": "https://documentation.fontoxml.com/latest/cvkhierarchycontentquery-2e22f9d88a83",
      "description": "In particular, avoid situations where some parts of the hierarchy point\nat document nodes and others at document elements, as any document\nelement directly referenced by the hierarchy will not be rendered as a\nchild of its document node parent."
    },
    {
      "title": "Fonto 8.3.0 (December 22, 2022)",
      "slug": "fonto-8-3-0-december-22-2022-535b188e24ef",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-3-0-december-22-2022-535b188e24ef",
      "description": "Loading multiple documents and sheet frames in Fonto Editor has been made easier. Instead of writing complicated handlers in JavaScript, you can now simply configure a few XPath queries and Fonto Editor will automatically build your documents hierarchy, load additional documents and even update it when the structure of your documents change. Please refer to our new guide for more information, and make sure to check our upgrade instructions if you're upgrading from an older release."
    },
    {
      "title": "evaluateXPathToStrings",
      "slug": "evaluatexpathtostrings-040a29cca9c4",
      "url": "https://documentation.fontoxml.com/latest/evaluatexpathtostrings-040a29cca9c4",
      "description": "Evaluate any XQuery script to all strings in the result. You can also use\nfunctions defined in XQuery modules. Refer to the concept\npage of XQuery for details. While XQuery update facility is allowed, mutating\nexisting nodes is not allowed. Use the execute-update-script operation\nto mutate the document using XQUF."
    },
    {
      "title": "open-project-browser-modal",
      "slug": "open-project-browser-modal-e4999dd82d2b",
      "url": "https://documentation.fontoxml.com/latest/open-project-browser-modal-e4999dd82d2b",
      "description": "The document id of the document which should be preselected.\nThis option is commonly used when the modal is used in an edit flow.\nShould only be used in combination with nodeId"
    },
    {
      "title": "domInfo",
      "slug": "dominfo-03197bb6504c",
      "url": "https://documentation.fontoxml.com/latest/dominfo-03197bb6504c",
      "description": "isDocument"
    },
    {
      "title": "Fonto 8.3.2 (February 16, 2023)",
      "slug": "fonto-8-3-2-february-16-2023-900c06e2da94",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-3-2-february-16-2023-900c06e2da94",
      "description": "The go-to-history-for-document operation now saves changes to the document again before navigating to Document History."
    },
    {
      "title": "Fonto 7.12.0 (September 24, 2020)",
      "slug": "fonto-7-12-0-september-24-2020-70f3e79b406d",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-12-0-september-24-2020-70f3e79b406d",
      "description": "When loading, Fonto will now place the cursor in the first document rather than the first editable one. To override this, use the initialDocumentsLoadedNotifier on the InitialDocumentsManager to execute an operation to move the cursor to the desired location when the initial documents finish loading."
    },
    {
      "title": "XPath expressions in Fonto",
      "slug": "xpath-b79c646b1933",
      "url": "https://documentation.fontoxml.com/latest/xpath-b79c646b1933",
      "description": "We try to support the most usable parts of the XPath 3.1 specification, but we've also found that some parts are not useful. Currently, Fonto already supports a sleuth of data types, query axes, operators, node tests and functions. The full list of functionality is maintained in the documentation of the XPath engine itself."
    },
    {
      "title": "Fonto Review 7.15.0",
      "slug": "fonto-review-7-15-0-313017868dc1",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-7-15-0-313017868dc1",
      "description": "We introduced a way to navigate from Fonto Review to Fonto Document History. You can now use the regular go-to-history-for-document operation from the review route. Please refer to the documentation for Document History for more information on integrating Fonto Review and Fonto Document History."
    },
    {
      "title": "evaluateXPathToNodes",
      "slug": "evaluatexpathtonodes-218682131b39",
      "url": "https://documentation.fontoxml.com/latest/evaluatexpathtonodes-218682131b39",
      "description": "Evaluate any XQuery script to all nodes in the result. You can also use\nfunctions defined in XQuery modules. Refer to the concept\npage of XQuery for details. While XQuery update facility is allowed, mutating\nexisting nodes is not allowed. Use the execute-update-script operation\nto mutate the document using XQUF."
    },
    {
      "title": "Fonto Review 7.10.1",
      "slug": "fonto-review-7-10-1-83eb347d69a5",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-7-10-1-83eb347d69a5",
      "description": "Fonto did not trigger a document save before the revision identifier of the document was recorded on resolving of an annotation. This caused the resolvedDocumentRevisionId to be incorrect when the document had unsaved changes. We now trigger a document save before the annotation gets resolved if the document is dirty."
    },
    {
      "title": "ReviewProposalState",
      "slug": "reviewproposalstate-631410669fb4",
      "url": "https://documentation.fontoxml.com/latest/reviewproposalstate-631410669fb4",
      "description": "The state returned when merging the proposal would result in an invalid\nXML document."
    },
    {
      "title": "evaluateXPathToFirstNode",
      "slug": "evaluatexpathtofirstnode-bbde42f31f26",
      "url": "https://documentation.fontoxml.com/latest/evaluatexpathtofirstnode-bbde42f31f26",
      "description": "Evaluate any XQuery script to the first node in the result. You can also use\nfunctions defined in XQuery modules. Refer to the concept\npage of XQuery for details. While XQuery update facility is allowed, mutating\nexisting nodes is not allowed. Use the execute-update-script operation\nto mutate the document using XQUF."
    },
    {
      "title": "How to configure special characters menus",
      "slug": "special-characters-39d1644581f8",
      "url": "https://documentation.fontoxml.com/latest/special-characters-39d1644581f8",
      "description": "import specialCharactersManager from 'fontoxml-special-characters/src/specialCharactersManager';\n\nexport default function install() {\n\tspecialCharactersManager.addCharacterSet('recipe-character-set', [\n\t\t{\n\t\t\tcodePoints: ['U+1F60'],\n\t\t\tid: 'U+1F60',\n\t\t\tlabels: ['Greek Extended', 'Favorite Characters'],\n\t\t\tname: 'Greek small letter omega with psili',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+1F6A'],\n\t\t\tid: 'U+1F6A',\n\t\t\tlabels: ['Greek Extended'],\n\t\t\tname: 'Greek capital letter omega with psili and varia',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+1F6B'],\n\t\t\tid: 'U+1F6B',\n\t\t\tlabels: ['Greek Extended'],\n\t\t\tname: 'Greek capital letter omega with dasia and varia',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+1F70'],\n\t\t\tid: 'U+1F70',\n\t\t\tlabels: ['Greek Extended'],\n\t\t\tname: 'Greek small letter alpha with varia',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+1F71'],\n\t\t\tid: 'U+1F71',\n\t\t\tlabels: ['Greek Extended'],\n\t\t\tname: 'Greek small letter alpha with oxia',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2155'],\n\t\t\tid: 'U+2155',\n\t\t\tlabels: ['Number Forms'],\n\t\t\tname: 'Vulgar fraction one fifth',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2153'],\n\t\t\tid: 'U+2153',\n\t\t\tlabels: ['Number Forms'],\n\t\t\tname: 'Vulgar fraction one third',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2156'],\n\t\t\tid: 'U+2156',\n\t\t\tlabels: ['Number Forms'],\n\t\t\tname: 'Vulgar fraction two fifths',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2157'],\n\t\t\tid: 'U+2157',\n\t\t\tlabels: ['Number Forms', 'Favorite Characters'],\n\t\t\tname: 'Vulgar fraction three fifths',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2154'],\n\t\t\tid: 'U+2154',\n\t\t\tlabels: ['Number Forms'],\n\t\t\tname: 'Vulgar fraction two thirds',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2158'],\n\t\t\tid: 'U+2158',\n\t\t\tlabels: ['Number Forms'],\n\t\t\tname: 'Vulgar fraction four fifths',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2245'],\n\t\t\tid: 'U+2245',\n\t\t\tlabels: ['Mathematical Operators'],\n\t\t\tname: 'Approximately equal to',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2246'],\n\t\t\tid: 'U+2246',\n\t\t\tlabels: ['Mathematical Operators'],\n\t\t\tname: 'Approximately but not actually equal to',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2247'],\n\t\t\tid: 'U+2247',\n\t\t\tlabels: ['Mathematical Operators', 'Favorite Characters'],\n\t\t\tname: 'Neither approximately nor actually equal to',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2248'],\n\t\t\tid: 'U+2248',\n\t\t\tlabels: ['Mathematical Operators'],\n\t\t\tname: 'Almost equal to',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+2249'],\n\t\t\tid: 'U+2249',\n\t\t\tlabels: ['Mathematical Operators'],\n\t\t\tname: 'Not almost equal to',\n\t\t},\n\t\t{\n\t\t\tcodePoints: ['U+224A'],\n\t\t\tid: 'U+224A',\n\t\t\tlabels: ['Mathematical Operators', 'Favorite Characters'],\n\t\t\tname: 'Almost equal or equal to',\n\t\t},\n\t]);\n}\n"
    },
    {
      "title": "Fonto 7.8.2 (November 20, 2019)",
      "slug": "fonto-7-8-2-november-20-2019-f265851c6c7e",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-8-2-november-20-2019-f265851c6c7e",
      "description": "Resolved an issue where targets were created for a document version that is not yet saved in the CMS. The fix for this issue is that the document is being saved whenever an annotation is created. Expect more saves on a document while reviewing and editing at the same time."
    },
    {
      "title": "Upgrade from 7.8 to 7.9",
      "slug": "upgrade-from-7-8-to-7-9-525103ab88c3",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-8-to-7-9-525103ab88c3",
      "description": "{\n\t\"your-operation-to-open-image-browser-for-edit\": {\n        \"steps\": [\n            {\n                \"type\": \"transform/setDocumentIdToDocumentContainingContextNodeId\"\n            },\n            {\n                \"type\": \"transform/setRemoteDocumentIdFromDocumentId\"\n            },\n            {\n                \"type\": \"operation/open-image-browser-modal\",\n                \"data\": {\n                    \"browseContextDocumentId\": \"{{remoteDocumentId}}\"\n                }\n            }\n        ]\n\t}\n}"
    },
    {
      "title": "append-topicref",
      "slug": "append-topicref-7a5f4fa5579f",
      "url": "https://documentation.fontoxml.com/latest/append-topicref-7a5f4fa5579f",
      "description": "setContextNodeIdToDocumentElementOfDocument"
    },
    {
      "title": "useImageLoader",
      "slug": "useimageloader-36dbfa0810ea",
      "url": "https://documentation.fontoxml.com/latest/useimageloader-36dbfa0810ea",
      "description": "// An example on how the `useImageLoader` hook can be used.\n\nfunction ImagePreview() {\n    const referrerDocumentId = documentsManager.getRemoteDocumentId(selectionManager.focusedDocumentId);\n\n    const { error, isErrored, isLoading, imageData } = useImageLoader(\n        referrerDocumentId,\n        selectedItem.id,\n        \"web\"\n    );\n\n    if (isErrored) {\n        return (\n            &lt;StateMessage\n                connotation=\"warning\"\n                title=\"The image could not be loaded\"\n                message={error?.message}\n                visual=\"exclamation-triangle\"\n            /&gt;\n        );\n    }\n\n    if (isLoading) {\n        return &lt;StateMessage title=\"Loading...\" visual={&lt;SpinnerIcon /&gt;} /&gt;;\n    }\n\n    return &lt;ContainedImage src={imageData.dataUrl} /&gt;;\n}\n"
    },
    {
      "title": "evaluateXPathToNumber",
      "slug": "evaluatexpathtonumber-7495f4744b1d",
      "url": "https://documentation.fontoxml.com/latest/evaluatexpathtonumber-7495f4744b1d",
      "description": "Evaluate any XQuery script to the only number of the result, casting the\nreturned value if need-be. You can also use functions defined in XQuery modules.\nRefer to the concept page of XQuery for details. While XQuery update facility is\nallowed, mutating existing nodes is not allowed. Use the execute-update-script operation to mutate the document using XQUF."
    },
    {
      "title": "Fonto 8.9.1 (August 5, 2024)",
      "slug": "fonto-8-9-1-august-5-2024-bb5fa8bcc282",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-9-1-august-5-2024-bb5fa8bcc282",
      "description": "Fixed a bug where Document History would crash if you have just numbers as your document identifier."
    },
    {
      "title": "Upgrade from 7.6 to 7.7",
      "slug": "upgrade-from-7-6-to-7-7-2460d44a6644",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-6-to-7-7-2460d44a6644",
      "description": "For historical reasons, any (document) references in example documents served by the build tools were automatically postfixed with the  file extension if it was omitted. This behavior has now been removed for clarity, which might result in incorrect references in example documents, which in turn prevents documents from being loaded in the editor. This can be resolved by updating these references to include file extensions."
    },
    {
      "title": "Fonto 7.10.0 (March 26, 2020)",
      "slug": "fonto-7-10-0-march-26-2020-b30ac4f034a8",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-10-0-march-26-2020-b30ac4f034a8",
      "description": "In this 7.10 release we've updated React from version 16.8.3 to 16.12.0. From React version 16.9 onwards, React introduces warnings during development when you use deprecated lifecycle methods. We've rewritten class components in the SDK that use any of those methods to function components that use React hooks, and we encourage you to do the same in order to simplify code and prepare for future React versions. To help, Fonto now includes hooks to access common functionality: useOperation, useManagerState, useRemoteDocumentState and useXPath."
    },
    {
      "title": "Development server",
      "slug": "development-server-4fe6e4d66c2a",
      "url": "https://documentation.fontoxml.com/latest/development-server-4fe6e4d66c2a",
      "description": "'use strict';\n\nvar taxonomy = require('./taxonomy.json'),\n\ttaxonomy_faa = require('./taxonomy_faa.json'),\n\ttaxonomy_ta = require('./taxonomy_ta.json'),\n\ttaxonomy_l = require('./taxonomy_l.json'),\n\tsources = require('./sources.json');\n\nmodule.exports = (router, config) =&gt; {\n\trouter\n\t\t.route('/connectors/cms/standard/browse')\n\t\t.post((req, res, next) =&gt; {\n\t\t\tif (!req.body) {\n\t\t\t\treturn next();\n\t\t\t}\n\n\t\t\tvar assetTypes = req.body.assetTypes || [],\n\t\t\t\tfolderId = req.body.folderId;\n\n\t\t\t// If not requesting glossary listing, continue as normal.\n\t\t\tif (assetTypes.indexOf('glossary') === -1) {\n\t\t\t\treturn next();\n\t\t\t}\n\n\t\t\t// Override assetTypes and folderId to serve glossary items as documents from the glossary folder\n\t\t\treq.body.assetTypes = ['document'];\n\t\t\tif (folderId) {\n\t\t\t\treq.body.folderId = path.join('glossary', folderId);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treq.body.folderId = 'glossary';\n\t\t\t}\n\n\t\t\tnext();\n\t\t})\n\t\t.post((req, res, next) =&gt; {\n\t\t\t\tvar assetTypes = req.body.assetTypes || [],\n\t\t\t\t\tfolderId = req.body.folderId,\n\t\t\t\t\tquery = req.body.query,\n\t\t\t\t\tresults = null;\n\n\t\t\t\tif (assetTypes.indexOf('taxonomy') !== -1) {\n\t\t\t\t\tvar type = 'taxonomy',\n\t\t\t\t\t\tinternalTaxonomy = 'topical-area';\n\n\t\t\t\t\tswitch (req.body.query.taxonomy) {\n\t\t\t\t\t\tcase 'topical-area':\n\t\t\t\t\t\t\tinternalTaxonomy = taxonomy;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'facilities-and-activities':\n\t\t\t\t\t\t\tinternalTaxonomy = taxonomy_faa;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'target-audience':\n\t\t\t\t\t\t\tinternalTaxonomy = taxonomy_ta;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'lifetime':\n\t\t\t\t\t\t\tinternalTaxonomy = taxonomy_l;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (folderId) {\n\t\t\t\t\t\tresults = internalTaxonomy.filter(function (pointer) {\n\t\t\t\t\t\t\treturn (pointer.type == type || pointer.type == 'folder') &amp;&amp; pointer.parent == folderId;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresults = internalTaxonomy.filter(function (pointer) {\n\t\t\t\t\t\t\treturn (pointer.type == type || pointer.type == 'folder') &amp;&amp; !pointer.parent;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Returns only files (by only matching on type equals current type; 'taxonomy')\n\t\t\t\t\t// matching the given query\n\t\t\t\t\tif (query) {\n\t\t\t\t\t\tresults = results.filter(function (item) {\n\t\t\t\t\t\t\t// If a query is given, only return documents\n\t\t\t\t\t\t\tif (item.type !== type) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// If fulltext is provided, filter by label\n\t\t\t\t\t\t\tif (query.fulltext) {\n\t\t\t\t\t\t\t\treturn item.displayName.toLowerCase().indexOf(query.fulltext.toLowerCase()) !== -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresults = results.map(function (item) {\n\t\t\t\t\t\tvar data = {\n\t\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\t\ttype: item.type,\n\t\t\t\t\t\t\tlabel: item.displayName,\n\t\t\t\t\t\t\tmetadata: item.metadata\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t});\n\n\t\t\t\t\tres.status(200).json({\n\t\t\t\t\t\ttotalItemCount: results.length,\n\t\t\t\t\t\titems: results\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if (assetTypes.indexOf('warehouse-chunk') !== -1) {\n\t\t\t\t\treq.body.assetTypes = ['document'];\n\t\t\t\t\tif (!folderId || folderId.indexOf('reusable-') === -1) {\n\t\t\t\t\t\treq.body.folderId = 'reusable-chunks';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn next();\n\t\t\t\t}\n\t\t\t\telse if (assetTypes.indexOf('collection') !== -1) {\n\t\t\t\t\treq.body.assetTypes = ['document'];\n\t\t\t\t\tif (!folderId || folderId.indexOf('copyable-') === -1) {\n\t\t\t\t\t\treq.body.folderId = 'copyable-chunks';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn next();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn next();\n\t\t\t\t}\n\n\t\t})\n\t\t.post((req, res, next) =&gt; {\n\t\t\tvar assetTypes = req.body.assetTypes || [],\n\t\t\t\tquery = req.body.query,\n\t\t\t\tresults = null;\n\n\t\t\tif (assetTypes.indexOf('source') !== -1) {\n\t\t\t\tif (query) {\n\t\t\t\t\tresults = sources.filter(function (item) {\n\t\t\t\t\t\t// If fulltext is provided, filter by label\n\t\t\t\t\t\tif (query.fulltext) {\n\t\t\t\t\t\t\treturn item.fullyFormatted.toLowerCase().indexOf(query.fulltext.toLowerCase()) !== -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tresults = results.map(function (item) {\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\tlabel: item.fullyFormatted,\n\t\t\t\t\t\ttype: \"source\",\n\t\t\t\t\t\tfolderCount: 0,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinlineFormatted: item.inlineFormatted,\n\t\t\t\t\t\t\tfullyFormatted: item.fullyFormatted,\n\t\t\t\t\t\t\tlibrary: item.library,\n\t\t\t\t\t\t\tattachments: item.attachments,\n\t\t\t\t\t\t\tisSuspicious: item.isSuspicious,\n\t\t\t\t\t\t\tsuspicuousReason: item.suspicuousReason,\n\t\t\t\t\t\t\tnewTarget: item.newTarget,\n\t\t\t\t\t\t\tnewFullyFormatted: item.newFullyFormatted\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\n\t\t\t\tresults = results.filter(function (result) {\n\t\t\t\t\treturn !result.metadata.isSuspicious;\n\t\t\t\t});\n\n\t\t\t\tres.status(200).json({\n\t\t\t\t\ttotalItemCount: results.length,\n\t\t\t\t\titems: results\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn next();\n\t\t\t}\n\t\t});\n\n\treturn router;\n};"
    },
    {
      "title": "Fonto Editor 7.16.0 (September 23, 2021)",
      "slug": "fonto-editor-7-16-0-september-23-2021-5308f9bfe8dd",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-16-0-september-23-2021-5308f9bfe8dd",
      "description": "The new update-initial-documents-list operation allows re-opening the editor with a different document or set of documents without completely reloading the application."
    },
    {
      "title": "FxImageLoader",
      "slug": "fximageloader-24a4e105198c",
      "url": "https://documentation.fontoxml.com/latest/fximageloader-24a4e105198c",
      "description": "// An example on how the `FxImageLoader` can be used.\n\nfunction ImagePreview() {\n    const referrerDocumentId = documentsManager.getRemoteDocumentId(selectionManager.focusedDocumentId);\n\n    return (\n        &lt;FxImageLoader referrerDocumentId={referrerDocumentId} remoteId={selectedItem.id} type=\"web\"&gt;\n            {({ isErrored, isLoading, imageData }) =&gt; {\n                if (isErrored) {\n                    return (\n                        &lt;StateMessage\n                            connotation=\"warning\"\n                            title=\"The image could not be loaded\"\n                            visual=\"exclamation-triangle\"\n                        /&gt;\n                    );\n                }\n\n                if (isLoading) {\n                    return &lt;StateMessage title=\"Loading...\" visual={&lt;SpinnerIcon /&gt;} /&gt;;\n                }\n\n                return &lt;ContainedImage src={imageData.dataUrl} /&gt;;\n            }}\n        &lt;/FxImageLoader&gt;\n    )\n}\n"
    },
    {
      "title": "Fonto Editor 7.14.0 (April 1, 2021)",
      "slug": "fonto-editor-7-14-0-april-1-2021-217a6ac2024a",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-14-0-april-1-2021-217a6ac2024a",
      "description": "Fixed a regression introduced in 7.13 where the save-documents-and-wait and save-all-documents-and-wait operations could trigger an error if one of the documents being saved is modified while saving is in progress."
    },
    {
      "title": "fdt editor run",
      "slug": "fdt-editor-run-071f21a1f5cb",
      "url": "https://documentation.fontoxml.com/latest/fdt-editor-run-071f21a1f5cb",
      "description": "Savemode for your documents. Asset uploads are always saved to disk.\ndisk:           Create new documents on disk, and save documents to disk. (default)\nsession-memory: Create new documents in memory, and save documents to memory. \n                The memory store is unique for each session.\nshared-memory:  Create new documents in memory, and save documents to memory.\n                The memory store is shared between all sessions.\noff:            Same as session-memory, but start a new session on refresh."
    },
    {
      "title": "Fonto Content Quality 1.1.0",
      "slug": "fonto-content-quality-1-1-0-4a5e5a70b3aa",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-1-1-0-4a5e5a70b3aa",
      "description": "Fixed inconsistency in the order in which annotation request results were handled during the initial document check when simultaneously making changes to the document."
    },
    {
      "title": "open-nodes-browser-modal",
      "slug": "open-nodes-browser-modal-91a27c303a43",
      "url": "https://documentation.fontoxml.com/latest/open-nodes-browser-modal-91a27c303a43",
      "description": "The documentId of the document where the selected node is in."
    },
    {
      "title": "Set up local development environment",
      "slug": "set-up-local-development-environment-09bd8178f6d1",
      "url": "https://documentation.fontoxml.com/latest/set-up-local-development-environment-09bd8178f6d1",
      "description": "Any command in FDT has its own help information that you can find in our API documentation, or directly in the terminal using the --help flag."
    },
    {
      "title": "replacePlaceholdersWithValues",
      "slug": "replaceplaceholderswithvalues-eb4b13bd9d93",
      "url": "https://documentation.fontoxml.com/latest/replaceplaceholderswithvalues-eb4b13bd9d93",
      "description": "The document node which to process"
    },
    {
      "title": "FontoXML 6.0.3 (February 11, 2016)",
      "slug": "fontoxml-6-0-3-february-11-2016-c558ce24c6f0",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-0-3-february-11-2016-c558ce24c6f0",
      "description": "An issue has been resolved which caused parts of the document to disappear when edits are made near the root of the XML document."
    },
    {
      "title": "Upgrade from 6.8 to 6.9",
      "slug": "upgrade-from-6-8-to-6-9-ef562efdb82f",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-8-to-6-9-ef562efdb82f",
      "description": "This only affects instances using the single-document-hierarchy add-on. This add-on splits a single document into multiple sheets. Splitting a single document into a hierarchy enables viewport culling for improved perfomance."
    },
    {
      "title": "How to integrate Fonto Review with a CMS",
      "slug": "integrate-fonto-review-cd9039e10266",
      "url": "https://documentation.fontoxml.com/latest/integrate-fonto-review-cd9039e10266",
      "description": "Review stores annotations keyed on a document. Within that document, review stores targets of annotations keyed on a document revision. When a document save occurs, Fonto Review will automatically update the targets of the annotations to reflect their new positions in that document revision."
    },
    {
      "title": "evaluateXPathToBoolean",
      "slug": "evaluatexpathtoboolean-b71c9b24f4c1",
      "url": "https://documentation.fontoxml.com/latest/evaluatexpathtoboolean-b71c9b24f4c1",
      "description": "Evaluate an XQuery script to a boolean (using the effective boolean value\nproperty in the XPath 3.1 spec). You can also use functions defined in XQuery\nmodules. Refer to the concept\npage of XQuery for details. While XQuery update facility is allowed, mutating\nexisting nodes is not allowed. Use the execute-update-script operation\nto mutate the document using XQUF."
    },
    {
      "title": "Fonto 8.4.1 (May 8, 2023)",
      "slug": "fonto-8-4-1-may-8-2023-8915ee484147",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-4-1-may-8-2023-8915ee484147",
      "description": "Fixed an issue that prevented the 'tab' key from working correctly in documents after switching back and forth between Editor and Document History."
    },
    {
      "title": "StandardBrowseConnector",
      "slug": "standardbrowseconnector-83a79b6c900b",
      "url": "https://documentation.fontoxml.com/latest/standardbrowseconnector-83a79b6c900b",
      "description": "Browse the CMS for documents or other assets."
    },
    {
      "title": "insert-topicref-next-to-context-node",
      "slug": "insert-topicref-next-to-context-node-2b5ac14d69f0",
      "url": "https://documentation.fontoxml.com/latest/insert-topicref-next-to-context-node-2b5ac14d69f0",
      "description": "setContextNodeIdToDocumentElementOfDocument"
    },
    {
      "title": "createBlobResponseValidator",
      "slug": "createblobresponsevalidator-07f5b6d57959",
      "url": "https://documentation.fontoxml.com/latest/createblobresponsevalidator-07f5b6d57959",
      "description": "const validateBlobResponse = (\n    response: CmsClientResponse&lt;Blob | null&gt;\n): asserts response is\n    | CmsClientResponse&lt;MyResponseBody, 200&gt;\n    | CmsClientResponse&lt;null, 403 | 404 | 500&gt; =&gt; {\n    validateStatus(response, [200, 403, 404, 500]);\n\n    if (!response.ok) {\n        // Optional, check that there is no body for the error response. Alternatively check the\n        // error response shape.\n        validateIsNull(response.body, 'body');\n        return;\n    }\n\n    validateIsObject(response.body, 'body');\n    if (!response.type.startsWith('image/')) {\n        throw new Error('Response body is not an image.');\n    }\n};\n\nconst response = await connectorsManager\n    .getCmsClient()\n    .sendRequest('GET', '/custom/blob', requestData, {\n        responseType: 'blob',\n        validateResponse: createBlobResponseValidator(\n            validateBlobResponse,\n            `getting binary data for ${id}`\n        ),\n    });"
    },
    {
      "title": "Why is my operation not working!?",
      "slug": "why-is-my-operation-not-working-e23e5e088121",
      "url": "https://documentation.fontoxml.com/latest/why-is-my-operation-not-working-e23e5e088121",
      "description": "The breaking code seemed to be in some custom metadata panel where the OperationsManager's executeOperation function was evaluated. This code looked a bit like this:"
    },
    {
      "title": "StandardAssetConnector",
      "slug": "standardassetconnector-490869312beb",
      "url": "https://documentation.fontoxml.com/latest/standardassetconnector-490869312beb",
      "description": "The remote ID of the document in which this file is uploaded."
    },
    {
      "title": "Upcoming removals 8.2",
      "slug": "upcoming-removals-8-2-69909c526624",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-8-2-69909c526624",
      "description": "// Instead of the 'outOfSyncReasons.NOT_FOUND' property...\nimport { outOfSyncReasons } from 'fontoxml-remote-documents/src/remoteDocumentStateManager';\noutOfSyncReasons.NOT_FOUND;\n\n// ...use the 'OutOfSyncReasons.NOT_FOUND' property.\nimport OutOfSyncReasons from 'fontoxml-remote-documents/src/OutOfSyncReasons';\nOutOfSyncReasons.NOT_FOUND;"
    },
    {
      "title": "Track textual changes",
      "slug": "track-textual-changes-d95c6cbb86af",
      "url": "https://documentation.fontoxml.com/latest/track-textual-changes-d95c6cbb86af",
      "description": "The add-on saves tracked changes by adding three kinds of XML processing instructions in the document: one marking the start of an addition, one marking the end and one marking a deletion. These processing instructions are regarded private API and should not be processed or changed by external applications."
    },
    {
      "title": "Why & How",
      "slug": "why-how-df862e6b0e1e",
      "url": "https://documentation.fontoxml.com/latest/why-how-df862e6b0e1e",
      "description": "A partner reached out. Their authors are 'cutting' referenced nodes and pasting them in different documents! How can Fonto prevent these documents to break?!"
    },
    {
      "title": "Known Issues in Fonto Output",
      "slug": "known-fonto-output-issues-0841083c2931",
      "url": "https://documentation.fontoxml.com/latest/known-fonto-output-issues-0841083c2931",
      "description": "Changing the width of table columns then exporting a tracked-change document can cause visual errors in Word documents."
    },
    {
      "title": "Fonto 8.16.0 (March 19, 2026)",
      "slug": "fonto-8-16-0-march-19-2026-d6e5a3a77af6",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-16-0-march-19-2026-d6e5a3a77af6",
      "description": "The new fontoxml-document-history-feedback add-on enables creating Fonto Review annotations directly from within Fonto Document History. Please take a look at its documentation and the upgrade instruction for more details on how to enable this in your application!"
    },
    {
      "title": "fonto-doc-load:resolve-content-reference",
      "slug": "fonto-doc-load-resolve-content-reference-a550a84b2c04",
      "url": "https://documentation.fontoxml.com/latest/fonto-doc-load-resolve-content-reference-a550a84b2c04",
      "description": "The remote id of the document in which the reference resides. Use the\n                          fonto:remote-document-id function on the 'current' node to resolve\n                          local references."
    },
    {
      "title": "ReviewContext",
      "slug": "reviewcontext-d87a66bce64c",
      "url": "https://documentation.fontoxml.com/latest/reviewcontext-d87a66bce64c",
      "description": "Note that you need the fontoxml-document-history-feedback add-on to be\nable to use Review in Document History. The 'editor/history' and\n'review/history' values will have no effect if this add-on is not\ninstalled."
    },
    {
      "title": "Properties editor",
      "slug": "properties-editor-cc0de53675af",
      "url": "https://documentation.fontoxml.com/latest/properties-editor-cc0de53675af",
      "description": "import configurationManager from 'fontoxml-configuration/src/configurationManager';\nimport attributesEditorConfigurationJson from './attributesEditorConfiguration.json';\n\nconfigurationManager.set(\n\t'attributes-editor-configuration',\n\tattributesEditorConfigurationJson\n);"
    },
    {
      "title": "Fonto Editor 7.16.1 (November 3, 2021)",
      "slug": "fonto-editor-7-16-1-november-3-2021-3f52f008c032",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-16-1-november-3-2021-3f52f008c032",
      "description": "Fixed a regression in 7.16.0 where clicking an unloaded document in the Outline sidebar would not load and scroll to that document in some configurations."
    },
    {
      "title": "FontoXML 7.2.0 (April 12, 2018)",
      "slug": "fontoxml-7-2-0-april-12-2018-807c7a52956c",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-2-0-april-12-2018-807c7a52956c",
      "description": "The new disableOperationIfDocumentIsNotEditable transform can be used to disable an operation if a given document is not editable."
    },
    {
      "title": "Reconfiguring references",
      "slug": "reconfiguring-references-c8bb43d8e9bc",
      "url": "https://documentation.fontoxml.com/latest/reconfiguring-references-c8bb43d8e9bc",
      "description": "A cross reference is a reference from one XML position to another. A cross reference can reference an entire XML document or an element in the same or another XML document."
    },
    {
      "title": "Fonto 8.14.0 (September 18, 2025)",
      "slug": "fonto-8-14-0-september-18-2025-7d0e334be1c4",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-14-0-september-18-2025-7d0e334be1c4",
      "description": "The new configuration values maximum-documents-per-document-load-batch-request and maximum-documents-per-document-save-batch-request can be used to tweak batch sizes for the batched versions of the document load and save endpoints. These are only used if enable-experiment/request-batching-document-load and enable-experiment/request-batching-document-save are enabled, respectively."
    },
    {
      "title": "Fonto 7.9.1 (February 11, 2020)",
      "slug": "fonto-7-9-1-february-11-2020-1869c104ab73",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-9-1-february-11-2020-1869c104ab73",
      "description": "For an overview of resolved issues in Fonto Document History, please see the release notes of Document History."
    },
    {
      "title": "createGroupedChunkOutputProcessor",
      "slug": "creategroupedchunkoutputprocessor-9395aa94934f",
      "url": "https://documentation.fontoxml.com/latest/creategroupedchunkoutputprocessor-9395aa94934f",
      "description": "function(blueprint, insertionPosition, document) {\n    var newElement = document.createElement('someElement');\n    insertionPosition.setAtBegin(newElement);\n    return newElement;\n}"
    },
    {
      "title": "reload-image",
      "slug": "reload-image-75a60ca4fa37",
      "url": "https://documentation.fontoxml.com/latest/reload-image-75a60ca4fa37",
      "description": "// configureSxModule.ts file\nconfigureAsImageInFrame(sxModule, 'self::image', undefined, {\n   priority: 2,\n   referenceQuery: '@href',\n   contextualOperations: [\n      { name: ':contextual-reload-image' },\n   ],\n   blockOutsideAfter: [createElementMenuButtonWidget()]\n});\n\n// operations.json file\n{\n   \":contextual-reload-image\": {\n      \"label\": \"t__reload\",\n      \"description\": \"t__Reload image.\",\n      \"icon\": \"redo\",\n      \"steps\": {\n         \"type\": \"operation/reload-image\",\n         \"data\": { \"remoteId\":\"x__$data('contextNode')/@href\", \"referrerDocumentId\": \"x__fonto:remote-document-id($data('contextNode'))\" }\n      }\n   }\n}"
    },
    {
      "title": "How to configure the outline panel",
      "slug": "outline-panel-e4f7c8b3a049",
      "url": "https://documentation.fontoxml.com/latest/outline-panel-e4f7c8b3a049",
      "description": "Just like with titles, if your configuration references multiple documents, make sure to also configure an appropriate icon on the document-referencing elements shown in the outline. This icon will be used in any situation where the target document is not loaded. In DITA for example, the following could be added to the outline configuration rules for the map documents:"
    },
    {
      "title": "Fonto Editor 7.13.2 (January 15, 2021)",
      "slug": "fonto-editor-7-13-2-january-15-2021-3a32bb32edbb",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-13-2-january-15-2021-3a32bb32edbb",
      "description": "We resolved an issue that prevented remote state updates returned in error responses from the PUT /document and PUT /document/lock endpoints from being processed correctly in applications that use the iframe connectors."
    },
    {
      "title": "Fonto 8.5.1 (July 14, 2023)",
      "slug": "fonto-8-5-1-july-14-2023-a7d46850d2b7",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-5-1-july-14-2023-a7d46850d2b7",
      "description": "Fixed a regression in 8.5.0 that could cause a crash in the editor in configurations using addReducer when loading and/or scrolling to documents in a large hierarchy."
    },
    {
      "title": "Fonto 7.7.3 (August 9, 2019)",
      "slug": "fonto-7-7-3-august-9-2019-794b1fd83065",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-7-3-august-9-2019-794b1fd83065",
      "description": "Resolved an issue where searching for a word would take a very long time in long documents."
    },
    {
      "title": "contextual-topicref-remove",
      "slug": "contextual-topicref-remove-3b8eb41e3b18",
      "url": "https://documentation.fontoxml.com/latest/contextual-topicref-remove-3b8eb41e3b18",
      "description": "This operation can be used as a ContextualOperation on DITA topicref elements and specializations thereof. Using this on topics directly will not work, although the setContextNodeIdToTopicrefReferencingCurrentDocument transform can be used to obtain the NodeId for the currently focused document."
    },
    {
      "title": "createFormDataResponseValidator",
      "slug": "createformdataresponsevalidator-a97028082355",
      "url": "https://documentation.fontoxml.com/latest/createformdataresponsevalidator-a97028082355",
      "description": "const validateFormDataResponse = (\n    response: CmsClientResponse&lt;FormData | null&gt;\n): asserts response is\n    | CmsClientResponse&lt;MyResponseBody, 200&gt;\n    | CmsClientResponse&lt;null, 403 | 404 | 500&gt; =&gt; {\n    validateStatus(response, [200, 403, 404, 500]);\n\n    if (!response.ok) {\n        // Optional, check that there is no body for the error response. Alternatively check the\n        // error response shape.\n        validateIsNull(response.body, 'body');\n        return;\n    }\n\n    validateIsObject(response.body, 'body');\n    if (!response.type.startsWith('image/')) {\n        throw new Error('Response body is not an image.');\n    }\n};\n\nconst response = await connectorsManager\n    .getCmsClient()\n    .sendRequest('GET', '/custom/form-data', requestData, {\n        responseType: 'form-data',\n        validateResponse: createFormDataResponseValidator(\n            validateFormDataResponse,\n            'submitting inquiry'\n        ),\n    });"
    },
    {
      "title": "evaluateXPath",
      "slug": "evaluatexpath-e723f38e1abd",
      "url": "https://documentation.fontoxml.com/latest/evaluatexpath-e723f38e1abd",
      "description": "Evaluate any XQuery script. Note that since XQuery is a superset of XPath, any\nXPath expression is also a valid XQuery script. You can also use functions\ndefined in XQuery modules. Refer to the concept\npage of XQuery for details. While XQuery update facility is allowed, mutating\nexisting nodes is not allowed. Use the execute-update-script operation\nto mutate the document using XQUF."
    },
    {
      "title": "Upgrade from 7.12 to 7.13",
      "slug": "upgrade-from-7-12-to-7-13-46e52722c370",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-12-to-7-13-46e52722c370",
      "description": "We added the outOfSyncReason property which can be used to determine why a document is out of sync. We now consistently handle the 403 and 404 responses on various document-related endpoints by setting the document out of sync with an appropriate OutOfSyncReason."
    },
    {
      "title": "FontoXML 6.2.0 (April 15, 2016)",
      "slug": "fontoxml-6-2-0-april-15-2016-7d13ae3ac4ef",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-2-0-april-15-2016-7d13ae3ac4ef",
      "description": "Inserting a new document directly under a nested DITA map now correctly sends the referrer document ID of the map the document is inserted into, rather than the document ID of the root map."
    },
    {
      "title": "Fonto 8.5.2 (August 15, 2023)",
      "slug": "fonto-8-5-2-august-15-2023-4ceed08fc3ad",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-5-2-august-15-2023-4ceed08fc3ad",
      "description": "Fixed a regression in 8.2.0 that could cause various errors when loading documents containing CDATA sections."
    },
    {
      "title": "Fonto 8.0.0 (March 31, 2022)",
      "slug": "fonto-8-0-0-march-31-2022-97568294f52c",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-0-0-march-31-2022-97568294f52c",
      "description": "The outline is now located on the left side of the screen. This makes the natural flow of editing and reviewing documents more intuitive, and allows using the outline along with other functionality such as the sidebars. We've optimized the outline UI to make it easier to locate content at a glance, access related actions and understand the hierarchical relation between the loaded documents. When you're not using the outline, you can collapse it to the new compact version, which gets out of your way but still allows for quick navigation between documents."
    },
    {
      "title": "fonto:is-node-read-only",
      "slug": "fonto-is-node-read-only-72ca327d3704",
      "url": "https://documentation.fontoxml.com/latest/fonto-is-node-read-only-72ca327d3704",
      "description": "This includes cases where the entire document is read-only (e.g., due to its\nlock being unavailable or the document being out of sync with the CMS). It also\nincludes cases where the node or an ancestor is configured as read-only using\nconfigureAsReadOnly."
    },
    {
      "title": "FontoDOMImplementation",
      "slug": "fontodomimplementation-4c3f516a2f76",
      "url": "https://documentation.fontoxml.com/latest/fontodomimplementation-4c3f516a2f76",
      "description": "createDocumentType"
    },
    {
      "title": "Review",
      "slug": "review-dee6e5c903b7",
      "url": "https://documentation.fontoxml.com/latest/review-dee6e5c903b7",
      "description": "The result status. It uses HTTP status code style. Use 200 for documents which are found and 404 for unknown documents."
    },
    {
      "title": "contextual-topicref-indent",
      "slug": "contextual-topicref-indent-66ef7b8f401d",
      "url": "https://documentation.fontoxml.com/latest/contextual-topicref-indent-66ef7b8f401d",
      "description": "This operation can be used as a ContextualOperation on DITA topicref elements and specializations thereof. Using this on topics directly will not work, although the setContextNodeIdToTopicrefReferencingCurrentDocument transform can be used to obtain the NodeId for the currently focused document."
    },
    {
      "title": "FontoXML 7.4.1 (October 25, 2018)",
      "slug": "fontoxml-7-4-1-october-25-2018-f3198d865888",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-4-1-october-25-2018-f3198d865888",
      "description": "The dev-server could generate new document ids including backslashes. These ids could not be retrieved when saving this new document. This has been resolved."
    },
    {
      "title": "FontoXML 7.4.0 (September 26, 2018)",
      "slug": "fontoxml-7-4-0-september-26-2018-f593d62482ab",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-4-0-september-26-2018-f593d62482ab",
      "description": "We have reworked some of our internals that drive the way documents are rendered in the browser and how selections are translated between the browser and the XML documents. As a result, it is now possible to use the mouse to place the cursor in a number of places that previously could not be reached."
    },
    {
      "title": "FontoXML 6.1.1 (March 21, 2016)",
      "slug": "fontoxml-6-1-1-march-21-2016-0feec7c73a44",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-1-1-march-21-2016-0feec7c73a44",
      "description": "Clicking the save button no longer skips documents that have already been auto-saved, it now sends explicit save requests (autosave=false) for all documents that have changed since the last manual save."
    },
    {
      "title": "undo",
      "slug": "undo-970c1a5cbaa6",
      "url": "https://documentation.fontoxml.com/latest/undo-970c1a5cbaa6",
      "description": "Starting from Fonto 7.5, this operation works across all loaded documents. If the action to be undone affected a document that is no longer editable or has been unloaded, the operation will be disabled."
    },
    {
      "title": "Fonto 8.10.0 (September 19, 2024)",
      "slug": "fonto-8-10-0-september-19-2024-7b930beddccf",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-10-0-september-19-2024-7b930beddccf",
      "description": "We introduced a batch variant for the document load and save endpoints. The new POST /document/get and POST /document/put endpoints can be used to reduce the number of requests made to the CMS for document saving and loading, by combining concurrent loads or saves in a single request. By setting the enable-experiment/request-batching-document-load and enable-experiment/request-batching-document-save configuration values to true, Fonto Editor will use these endpoints instead of the single-document versions."
    },
    {
      "title": "serializeNodeToJsonMl",
      "slug": "serializenodetojsonml-9f28e78016dc",
      "url": "https://documentation.fontoxml.com/latest/serializenodetojsonml-9f28e78016dc",
      "description": "As Document nodes are not supported in JsonMl, pass\nDocument.documentElement if you need the JsonMl representation of a\ncomplete document, otherwise the Document node will be represented as an\nelement with an unexpected nodeName. This will not round-trip."
    },
    {
      "title": "Correlation identifiers",
      "slug": "correlation-identifiers-04d01b5a1549",
      "url": "https://documentation.fontoxml.com/latest/correlation-identifiers-04d01b5a1549",
      "description": "What does the error \"Authentication failed while requesting the history for document 'document-id' with correlation-id ''.\" mean?"
    },
    {
      "title": "open-warning-modal",
      "slug": "open-warning-modal-3e301d36be0d",
      "url": "https://documentation.fontoxml.com/latest/open-warning-modal-3e301d36be0d",
      "description": "{\n    \"document-remove\": {\n        \"label\": \"Remove\",\n        \"description\": \"Remove the document.\",\n        \"icon\": \"trash-can\",\n        \"steps\": [\n            {\n                \"type\": \"operation/open-warning-modal\",\n                \"data\": {\n                    \"warningModalBody\": \"Are you sure you want to remove this document?\",\n                    \"warningModalConfirmButtonLabel\": \"Remove\",\n                    \"warningModalTitle\": \"Remove document\"\n                }\n            },\n            ⋮\n        ]\n    }\n}"
    },
    {
      "title": "contextual-topicref-outdent",
      "slug": "contextual-topicref-outdent-c2ecd81f9ec1",
      "url": "https://documentation.fontoxml.com/latest/contextual-topicref-outdent-c2ecd81f9ec1",
      "description": "This operation can be used as a ContextualOperation on DITA topicref elements and specializations thereof. Using this on topics directly will not work, although the setContextNodeIdToTopicrefReferencingCurrentDocument transform can be used to obtain the NodeId for the currently focused document."
    },
    {
      "title": "redo",
      "slug": "redo-7d71ba6f5eb9",
      "url": "https://documentation.fontoxml.com/latest/redo-7d71ba6f5eb9",
      "description": "Starting from Fonto 7.5, this operation works across all loaded documents. If the action to be redone affected a document that is no longer editable or has been unloaded, the operation will be disabled."
    },
    {
      "title": "Create an output.xml file",
      "slug": "create-an-output-xml-file-387606c2f2e2",
      "url": "https://documentation.fontoxml.com/latest/create-an-output-xml-file-387606c2f2e2",
      "description": "&lt;xml&gt; exports a collection of every XML document included in the source document, including one file for each root document and one for each referenced document. Additionally, all images referenced within the loaded XML documents will be exported. You can learn more about exporting XML documents here."
    },
    {
      "title": "Fonto 8.9.0 (June 20, 2024)",
      "slug": "fonto-8-9-0-june-20-2024-55f2f003b869",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-9-0-june-20-2024-55f2f003b869",
      "description": "The new createDocumentFromXml API allows creating a new document in the CMS from an XML string."
    },
    {
      "title": "ChildrenProperties",
      "slug": "childrenproperties-cd85a562ce43",
      "url": "https://documentation.fontoxml.com/latest/childrenproperties-cd85a562ce43",
      "description": "Whether the document is still loading."
    },
    {
      "title": "Configure the Schema Experience",
      "slug": "configure-the-schema-experience-46be7253ebf3",
      "url": "https://documentation.fontoxml.com/latest/configure-the-schema-experience-46be7253ebf3",
      "description": "To assemble the XML from one or more files into a finished document, Fonto Output requires a document loading strategy. Fonto Output follows the same document loading strategy back-end schema experience."
    },
    {
      "title": "Performance",
      "slug": "performance-a2c8c8d819cd",
      "url": "https://documentation.fontoxml.com/latest/performance-a2c8c8d819cd",
      "description": "Full document scans (or traversing a large part of the document) should be avoided, unless they are absolutely necessary. If a developer knows a certain element can only occur in a certain subtree of the document, it is more efficient to only traverse that part. For example: If the element articleNumber can only occur as a descendant of /metadata/article/otherInfo, the XPath query /metadata/article/otherInfo/descendant::articleNumber will perform better than //articleNumber."
    },
    {
      "title": "contextual-topicref-move-to-bottom",
      "slug": "contextual-topicref-move-to-bottom-8f3046b8c9de",
      "url": "https://documentation.fontoxml.com/latest/contextual-topicref-move-to-bottom-8f3046b8c9de",
      "description": "This operation can be used as a ContextualOperation on DITA topicref elements and specializations thereof. Using this on topics directly will not work, although the setContextNodeIdToTopicrefReferencingCurrentDocument transform can be used to obtain the NodeId for the currently focused document."
    },
    {
      "title": "contextual-topicref-move-to-top",
      "slug": "contextual-topicref-move-to-top-4c62268a34e8",
      "url": "https://documentation.fontoxml.com/latest/contextual-topicref-move-to-top-4c62268a34e8",
      "description": "This operation can be used as a ContextualOperation on DITA topicref elements and specializations thereof. Using this on topics directly will not work, although the setContextNodeIdToTopicrefReferencingCurrentDocument transform can be used to obtain the NodeId for the currently focused document."
    },
    {
      "title": "Export XML files",
      "slug": "export-xml-files-1a2e40767b11",
      "url": "https://documentation.fontoxml.com/latest/export-xml-files-1a2e40767b11",
      "description": "By default, Fonto Output loads all documents specified in the documentIds parameter of the POST /output/get request. Based on the configuration, it may then export multiple XML files—or none at all."
    },
    {
      "title": "contextual-topicref-move-down",
      "slug": "contextual-topicref-move-down-15c73884b3b8",
      "url": "https://documentation.fontoxml.com/latest/contextual-topicref-move-down-15c73884b3b8",
      "description": "This operation can be used as a ContextualOperation on DITA topicref elements and specializations thereof. Using this on topics directly will not work, although the setContextNodeIdToTopicrefReferencingCurrentDocument transform can be used to obtain the NodeId for the currently focused document."
    },
    {
      "title": "contextual-topicref-move-up",
      "slug": "contextual-topicref-move-up-ef19a6482c0c",
      "url": "https://documentation.fontoxml.com/latest/contextual-topicref-move-up-ef19a6482c0c",
      "description": "This operation can be used as a ContextualOperation on DITA topicref elements and specializations thereof. Using this on topics directly will not work, although the setContextNodeIdToTopicrefReferencingCurrentDocument transform can be used to obtain the NodeId for the currently focused document."
    },
    {
      "title": "Fonto 8.6.1 (October 13, 2023)",
      "slug": "fonto-8-6-1-october-13-2023-5e0a19a839c0",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-6-1-october-13-2023-5e0a19a839c0",
      "description": "Fixed an issue where Fonto Document History would not detect table changes."
    },
    {
      "title": "createJsonResponseValidator",
      "slug": "createjsonresponsevalidator-de0101633850",
      "url": "https://documentation.fontoxml.com/latest/createjsonresponsevalidator-de0101633850",
      "description": "const validateJsonResponse = (\n    response: CmsClientResponse&lt;CmsClientJsonResponseBody&gt;\n): asserts response is\n    | CmsClientResponse&lt;MyResponseBody, 201&gt;\n    | CmsClientResponse&lt;null, 204&gt;\n    | CmsClientResponse&lt;null, 403 | 404 | 500&gt; =&gt; {\n    validateStatus(response, [200, 204, 403, 404, 500]);\n\n    if (!response.ok || response.status === 204) {\n        // Optional, check that there is no body for the error/204 response. Alternatively check the\n        // error response shape.\n        validateIsNull(response.body, 'body');\n        return;\n    }\n\n    validateIsObject(response.body, 'body');\n    validateProperty(response.body, 'id', 'string');\n    validateProperty(response.body, 'tags', 'array');\n    for (let i = 0; i &lt; response.body.tags.length; i++) {\n        validateIsObject(response.body.tags[i], `tags[${i}]`);\n        const tag: CmsClientJsonValue = response.body.tags[i];\n        validateIsObject(tag, `tags[${i}]`);\n        validateProperty(tag.id, `tags[${i}]`, 'number');\n        validateProperty(tag.label, `tags[${i}]`, 'string');\n    }\n};\n\nconst response = await connectorsManager\n    .getCmsClient()\n    .sendRequest('GET', '/custom/tags', requestData, {\n        validateResponse: createJsonResponseValidator(\n            validateJsonResponse,\n            `getting tags for ${id}`\n        ),\n    });"
    },
    {
      "title": "blueprintQuery",
      "slug": "blueprintquery-815bd5833153",
      "url": "https://documentation.fontoxml.com/latest/blueprintquery-815bd5833153",
      "description": "getDocumentNode"
    },
    {
      "title": "Endpoints for Fonto Output",
      "slug": "endpoints-a64321b19e37",
      "url": "https://documentation.fontoxml.com/latest/endpoints-a64321b19e37",
      "description": "Mutually exclusive with documentIds, and at least documentIds or content must be set."
    },
    {
      "title": "How to connect Fonto via Iframe communication",
      "slug": "iframe-communication-9cb582d26b4b",
      "url": "https://documentation.fontoxml.com/latest/iframe-communication-9cb582d26b4b",
      "description": "{\n\t\"type\": \"fontoxml-connectors-iframe\",\n\t\"correlationId\": \"f9f908a8-f1aa-4e55-a96e-f1806595bea9\",\n\t\"scope\": {\n\t\t\"documentIds\": [ \"74257961-EDE3-4180-AF17-0A435EE8FB7B\" ]\n\t},\n\t\"metadata\": {\n\t\t\"method\": \"GET\",\n\t\t\"url\": \"/document\",\n\t\t\"header\": {\n\t\t\t\"cache-control\": \"no-cache\",\n\t\t\t\"pragma\": \"no-cache\",\n\t\t\t\"accept\": \"application/json\"\n\t\t},\n\t\t\"query\": {\n\t\t\t\"context\": \"{\\\"editSessionToken\\\":\\\"EF091CD9-DC7A-4F91-9964-21CAF0DC3DCE\\\"}\",\n\t\t\t\"documentId\": \"74257961-EDE3-4180-AF17-0A435EE8FB7B\"\n\t\t}\n\t}\n}"
    },
    {
      "title": "Fonto 8.12.0 (March 20, 2025)",
      "slug": "fonto-8-12-0-march-20-2025-597da6871a9f",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-12-0-march-20-2025-597da6871a9f",
      "description": "The new setEnableUndo API can be used in advanced cases to exclude specific documents from participating in the undo stack. This is intended mainly for documents that are automatically generated and edited without direct user interaction. Please refer to the documentation for this function for important limitations to keep in mind when using this function."
    },
    {
      "title": "FontoXML 7.1.0 (February 23, 2018)",
      "slug": "fontoxml-7-1-0-february-23-2018-c3e8aeab0d9a",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-1-0-february-23-2018-c3e8aeab0d9a",
      "description": "An error has been resolved that could cause a document's documentContext to be updated incorrectly if the responses for both a lock or save request and a state request simultaneously returned a new value. As the editor can not determine whether the documentContext in the state response reflects the state before or after the lock modification or save, Fonto will now ignore the documentContext for state responses that overlap lock modification or document saves."
    },
    {
      "title": "Fonto 8.2.0 (September 23, 2022)",
      "slug": "fonto-8-2-0-september-23-2022-2b960323b80a",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-2-0-september-23-2022-2b960323b80a",
      "description": "Fixed an issue where document history would crash for certain documents in an editor using the fontoxml-single-document-hierarchy add-on."
    },
    {
      "title": "FontoXML 6.2.1 (April 22, 2016)",
      "slug": "fontoxml-6-2-1-april-22-2016-e8c7feb0ae10",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-2-1-april-22-2016-e8c7feb0ae10",
      "description": "If the CMS returns a 403 or 404 status code when attempting to save a document, this error is now considered unrecoverable and Fonto will no longer retry the save. If saving completes with any unrecoverable errors, Fonto will show the error page. The document-save-permanent-error-codes configuration value can be used to modify the status codes considered to be unrecoverable errors. Additionally, the document-save-retry-max-attempts configuration value can be used to limit the amount of retries before an error is considered to be unrecoverable."
    },
    {
      "title": "open-image-browser-modal",
      "slug": "open-image-browser-modal-7d68b1d4b789",
      "url": "https://documentation.fontoxml.com/latest/open-image-browser-modal-7d68b1d4b789",
      "description": "This id is sent to the CMS when the browse call is made.\nIf the CMS resolves a hierarchy for a reference in the metadata of a reference,\nthe folder containing the browseContextDocument will be opened."
    },
    {
      "title": "TypeScript",
      "slug": "typescript-f488eb98fb35",
      "url": "https://documentation.fontoxml.com/latest/typescript-f488eb98fb35",
      "description": "TypeScript is supported in the config/, packages/ and packages-shared/ directories of your configuration. The development server configuration, in dev-cms/, does not support TypeScript. You can freely mix JavaScript and TypeScript as you see fit. Simply rename the file extension of a .js(x) file to .ts(x) to start writing TypeScript and to profit from additional code intelligence and type checking. The official TypeScript documentation is a fine resource for getting started and learning the language."
    },
    {
      "title": "Migrate from a previous version",
      "slug": "migrate-from-a-previous-version-1d9a2150c193",
      "url": "https://documentation.fontoxml.com/latest/migrate-from-a-previous-version-1d9a2150c193",
      "description": "Please contact our support desk to get your Fonto Document History version upgraded."
    },
    {
      "title": "Fonto 8.3.1 (January 20, 2023)",
      "slug": "fonto-8-3-1-january-20-2023-dd218fcfa9c5",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-3-1-january-20-2023-dd218fcfa9c5",
      "description": "Fixed a regression in 8.3.0 that could cause an error when the loading strategy API is used with JIT document loading and an inclusion is rendered pointing to an unloaded document that is also part of the hierarchy."
    },
    {
      "title": "FindAndReplaceConfiguration",
      "slug": "findandreplaceconfiguration-03194e89a06b",
      "url": "https://documentation.fontoxml.com/latest/findandreplaceconfiguration-03194e89a06b",
      "description": "Enable the presearch, ensures not all documents will be searched through, but\nonly the related documents. This will use the standard POST /documents/presearch\ncontract. Defaults to false."
    },
    {
      "title": "Upgrade from 8.0 to 8.1",
      "slug": "upgrade-from-8-0-to-8-1-897d69e463cb",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-0-to-8-1-897d69e463cb",
      "description": "LoadInitialDocumentsHandler, ReloadDocumentHandler, RetryLoadingDocumentForHierarchyNodeHandler, UnloadAllDocumentsHandler, UnloadDocumentHandler (merged into DocumentsLoadingStrategy)"
    },
    {
      "title": "Upgrade from 8.1 to 8.2",
      "slug": "upgrade-from-8-1-to-8-2-74fb64750279",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-1-to-8-2-74fb64750279",
      "description": "The document identifier (documentId property) of the GET /document request must match the document identifier of the response. Having non-matching document identifiers was announced as a deprecation in 7.16, with a removal of support in 8.0. In 8.0, this was not yet checked and the Editor would not throw an error. This has changed in 8.2. We now explicitly check if the document identifiers are equal in request and response. Check that your CMS implementation does this correctly."
    },
    {
      "title": "createChunkOutputProcessor",
      "slug": "createchunkoutputprocessor-bc19cba6928a",
      "url": "https://documentation.fontoxml.com/latest/createchunkoutputprocessor-bc19cba6928a",
      "description": "function (blueprint, insertionPosition, document) {\n    var newElement = namespaceManager.createElement(document, 'someElement');\n    insertionPosition.setAtBegin(newElement);\n    return newElement;\n}"
    },
    {
      "title": "FontoXML 7.1.1 (March 20, 2018)",
      "slug": "fontoxml-7-1-1-march-20-2018-a62dcc04fdb1",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-1-1-march-20-2018-a62dcc04fdb1",
      "description": "An error has been resolved in the FxNodePreview and FxNodePreviewWithLinkSelector components that could cause FontoXML to crash when working with a single document hierarchy."
    },
    {
      "title": "open-project-browser-modal-with-multi-select",
      "slug": "open-project-browser-modal-with-multi-select-c1f6d61105c5",
      "url": "https://documentation.fontoxml.com/latest/open-project-browser-modal-with-multi-select-c1f6d61105c5",
      "description": "This selector decides which items of the Outline are\nselectable. This will be based on both the contextNode and the sourceNode\n(if there is one). For at least one of them true needs to be returned else\nthe item will not be selectable. In the case of JIT loading a document\n could not be loaded,which means only the sourceNode will be available to\ndetermine whether the checkbox is selectable. An example which allows the\nuser to select only whole documents, also in the case of JIT loading:\nself::topic[not(parent::*)] or self::topicref.\nDefaults to true() which means all items of the Outline are selectable."
    },
    {
      "title": "IDomFacade",
      "slug": "idomfacade-99cf565f2fe1",
      "url": "https://documentation.fontoxml.com/latest/idomfacade-99cf565f2fe1",
      "description": "If the node is itself a Document, the owner document is null. Use blueprintQuery.getDocumentNode if you want the node itself in that case."
    },
    {
      "title": "NodeProxy",
      "slug": "nodeproxy-ba46b7636ccb",
      "url": "https://documentation.fontoxml.com/latest/nodeproxy-ba46b7636ccb",
      "description": "FontoDocumentNode's doctype, documentElement and implementation properties"
    },
    {
      "title": "FontoNode",
      "slug": "fontonode-9ce1bcffd645",
      "url": "https://documentation.fontoxml.com/latest/fontonode-9ce1bcffd645",
      "description": "DOCUMENT_NODE"
    },
    {
      "title": "MutationHookCallback",
      "slug": "mutationhookcallback-9f09274580a4",
      "url": "https://documentation.fontoxml.com/latest/mutationhookcallback-9f09274580a4",
      "description": "For creation of new elements and other nodes, use the Document node of the\ntargeted document as a factory. See the documentation on createElementNS for more information."
    },
    {
      "title": "FontoCDATASectionNode",
      "slug": "fontocdatasectionnode-d61e39ed2840",
      "url": "https://documentation.fontoxml.com/latest/fontocdatasectionnode-d61e39ed2840",
      "description": "CDATASection nodes are not normally found in documents in Fonto Editor as they\nare converted to Text nodes when a document is loaded."
    },
    {
      "title": "ReviewAnnotation",
      "slug": "reviewannotation-159f58547291",
      "url": "https://documentation.fontoxml.com/latest/reviewannotation-159f58547291",
      "description": "If this is false, display a text link (or a button) to call\nonReviewAnnotationShowInCreatedContext to display the revision of the\ndocument when the current annotation was created, inside a Modal."
    },
    {
      "title": "FontoXML 6.5.0 (Augustus 12, 2016)",
      "slug": "fontoxml-6-5-0-augustus-12-2016-41c4b471e962",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-5-0-augustus-12-2016-41c4b471e962",
      "description": "The editor no longer crashes when loading the same document in multiple maps. Error messages are configurable using the keys 'document-referenced-multiple-times-error-message-with-title', 'document-referenced-multiple-times-error-message-without-title' and 'document-referenced-multiple-times-error-message-title-selector'"
    },
    {
      "title": "Upgrade from 7.17 to 8.0",
      "slug": "upgrade-from-7-17-to-8-0-6404f7c1a108",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-17-to-8-0-6404f7c1a108",
      "description": "For applications with sheet frame headers, use the FxDocumentContextualOperationsWidget instead. Sheet frame headers are the preferred UX as they are always visible, not only on hover."
    },
    {
      "title": "Asset preview and upload",
      "slug": "asset-preview-and-upload-43490bb433dd",
      "url": "https://documentation.fontoxml.com/latest/asset-preview-and-upload-43490bb433dd",
      "description": "The context from which the document was loaded."
    },
    {
      "title": "ReadOnlyBlueprint",
      "slug": "readonlyblueprint-24bb6305cb9c",
      "url": "https://documentation.fontoxml.com/latest/readonlyblueprint-24bb6305cb9c",
      "description": "If the node is itself a Document, the owner document is null. Use blueprintQuery.getDocumentNode if you want the node itself in that case."
    },
    {
      "title": "Fonto 8.7.1 (February 23, 2024)",
      "slug": "fonto-8-7-1-february-23-2024-74b3dea72e71",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-7-1-february-23-2024-74b3dea72e71",
      "description": "Fixed a rare issue with comment balloons that could lead to an error due to a race condition between showing the balloon and unloading the document it belonged to."
    },
    {
      "title": "FontoXML 6.10.0 (March 31, 2017)",
      "slug": "fontoxml-6-10-0-march-31-2017-fc01c9945ead",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-10-0-march-31-2017-fc01c9945ead",
      "description": "Documents for which FontoXML has acquired a lock will now be automatically unlocked when the document is unloaded. This solves documents remaining locked after being removed from a DITA map or after an error is encountered. In case of problems, the new behavior can be disabled by setting the enable-experiment/automatically-release-acquired-locks configuration value to false."
    },
    {
      "title": "NodeId",
      "slug": "nodeid-6f23070e6f8f",
      "url": "https://documentation.fontoxml.com/latest/nodeid-6f23070e6f8f",
      "description": "NodeIds can be resolved to a node using either the Blueprint#lookup and\nthe DocumentsManager#getNodeById methods."
    },
    {
      "title": "configureAsInvalid",
      "slug": "configureasinvalid-6f54b9c53425",
      "url": "https://documentation.fontoxml.com/latest/configureasinvalid-6f54b9c53425",
      "description": "We do still advise that situations which should be considered invalid at all\ntimes are resolved in the schema itself instead of using this family. If this\nfamily is used, ensure that no documents contain the matching element(s), as\nsuch documents can not be loaded in Fonto."
    },
    {
      "title": "How to build Fonto products for deployment",
      "slug": "build-for-deployment-8a34176f9ce3",
      "url": "https://documentation.fontoxml.com/latest/build-for-deployment-8a34176f9ce3",
      "description": "The Fonto Document History configuration will be included into the Docker image when it's being built. By running the following command from the root of your Document History configuration folder, you can build the image:"
    },
    {
      "title": "Whitespace Handling",
      "slug": "whitespace-handling-5a3aaa62e01d",
      "url": "https://documentation.fontoxml.com/latest/whitespace-handling-5a3aaa62e01d",
      "description": "If you are using external tools that modify the XML document, then the CMS has to apply the normalization rules before sending the document to Fonto Editor, Fonto Document History or Fonto Feedback. If the CMS does not apply the normalization rules, these products will think that there are changes to the document, as the editor will apply the normalization rules when content is edited."
    },
    {
      "title": "Fonto 8.8.1 (May 21, 2024)",
      "slug": "fonto-8-8-1-may-21-2024-e68adecae36d",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-8-1-may-21-2024-e68adecae36d",
      "description": "Please note that due to this change, the emptyElementPlaceholderText configuration no longer causes fontoxml-text-placeholder processing instructions to be inserted in your documents. In addition to preventing these issues, this also leads to improved performance as well as the ability for these placeholders to respond to localization changes. Because of this, we now recommend the use of emptyElementPlaceholderText over manually inserting fontoxml-text-placeholder processing instructions whenever possible."
    },
    {
      "title": "useReviewAnnotationRangeVisibility",
      "slug": "usereviewannotationrangevisibility-e1f15d5d6615",
      "url": "https://documentation.fontoxml.com/latest/usereviewannotationrangevisibility-e1f15d5d6615",
      "description": "The context in which this is used determines which document is used for the\ncalculation. E.g., for the annotation card shown in the created context\nmodal, the calculation is based on the document in which the annotation was\ncreated."
    },
    {
      "title": "Fonto 8.6.0 (September 21, 2023)",
      "slug": "fonto-8-6-0-september-21-2023-7db1a66cf0a0",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-6-0-september-21-2023-7db1a66cf0a0",
      "description": "Fixed an issue with Lazy/Just-In-Time loading in Fonto Document History that prevented navigation to the Fonto Editor for a selected document that wasn't loaded."
    },
    {
      "title": "Fonto 7.17.0 (December 23, 2021)",
      "slug": "fonto-7-17-0-december-23-2021-bc97dcacfdc7",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-17-0-december-23-2021-bc97dcacfdc7",
      "description": "Document History is now available through FDT. Find more information on the FDT commands in our API documentation, or use fdt document-history --help in your command line. This release also includes the public API and documentation for DH. See the Getting Started guide for more information."
    },
    {
      "title": "Fonto Editor 7.13.3 (February 12, 2021)",
      "slug": "fonto-editor-7-13-3-february-12-2021-03ccd7ef8c7e",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-13-3-february-12-2021-03ccd7ef8c7e",
      "description": "Resolved an issue that could cause a crash in certain configurations when loading documents with a title query that involves a reducer matching the root element of that document."
    },
    {
      "title": "Upgrade from 7.4 to 7.5",
      "slug": "upgrade-from-7-4-to-7-5-b84cbe1c806f",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-4-to-7-5-b84cbe1c806f",
      "description": "We have upgraded our dependency on FontoXPath to 3.0.0. This version fixes an issue with reversed axes i.e. the ancestor, ancestor-or-self, preceding and preceding-sibling axes sometimes mistakenly returned their results in reverse document order. Editors may (accidentally) depend on this specific order. The issue occurred for (partial) XPath queries which contained a single step e.g. ancestor-or-self::* or preceding-sibling::div[@class=\"something\"]. These queries used to result in a sequence containing the matching nodes in reverse document order instead of document order."
    },
    {
      "title": "Create a widget",
      "slug": "create-a-widget-1c568bad64a4",
      "url": "https://documentation.fontoxml.com/latest/create-a-widget-1c568bad64a4",
      "description": "Your own created widget can be used like any other widget by placing it in a widget area using either configureProperties or when configuring the CVK family for an element or node. Please refer to the documentation for CvkWidgetSubAreaByName for more information and examples."
    },
    {
      "title": "Upgrade from 7.3 to 7.4",
      "slug": "upgrade-from-7-3-to-7-4-890b6207b5ea",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-3-to-7-4-890b6207b5ea",
      "description": "This release introduces the ability to drag and drop to move items around in the Outline. Default implementations are provided for single document editors as well as for DITA maps (in the fontoxml-dita add-on). Applications with customized Outline configuration or other special requirements may need to register one or more custom operations using the new addDragAndDropOperation API. Please refer to our guide for more details."
    },
    {
      "title": "How to setup logging for our back-end applications",
      "slug": "application-logs-daa0c874ef68",
      "url": "https://documentation.fontoxml.com/latest/application-logs-daa0c874ef68",
      "description": "Logging options for Fonto Content Quality, Fonto Document History, Fonto Output, and Fonto Review can be provided using any of the supported configuration providers. Please refer to the logging configuration page for available options. In addition, our back-end applications support an optional NLog configuration file. Information about how to configure NLog can be found in its official documentation."
    },
    {
      "title": "Back-end schema experience",
      "slug": "back-end-schema-experience-42380d0f22c2",
      "url": "https://documentation.fontoxml.com/latest/back-end-schema-experience-42380d0f22c2",
      "description": "Just like in the editor, it's possible to work with multiple documents at once or with large chunked documents."
    },
    {
      "title": "Create a custom mutation",
      "slug": "custom-mutation-e33aa748e324",
      "url": "https://documentation.fontoxml.com/latest/custom-mutation-e33aa748e324",
      "description": "blueprint represents your temporary copy of the document. It contains a few useful methods and is expected to be passed on to some other functions if you use them. You cannot make changes outside the blueprint, nor should you use readOnlyBlueprint because it represents a different state or \"version\" of the document. If the blueprint document turns out to be schema invalid at the end of your operation, the operation becomes disabled and the blueprint is discarded."
    },
    {
      "title": "addReducer",
      "slug": "addreducer-0b33a4d17ffc",
      "url": "https://documentation.fontoxml.com/latest/addreducer-0b33a4d17ffc",
      "description": "Every reducer counts based on a traversal that considers the loaded documents in\nthe context of the DocumentsHierarchy. Essentially, this traversal walks\na single tree constructed by replacing each node of the documents hierarchy with\nthe corresponding target node, and adding the hierarchy node's children after\nthat target node's DOM children. Any DOM descendant of such a target node that\nis itself directly referenced by one or more hierarchy nodes, either as the\nsource node or as the target of the DocumentReference, is only\nconsidered in the position(s) defined by those hierarchy nodes and not as part\nof this ancestor target's subtree. Conversely, any element that is not directly\nreferenced by the hierarchy ends up being considered as as descendant of the\nclosest ancestor DOM node that is referenced."
    },
    {
      "title": "set-selection",
      "slug": "set-selection-aec9ee02137c",
      "url": "https://documentation.fontoxml.com/latest/set-selection-aec9ee02137c",
      "description": "Optionally, provide the hierarchy node ID under which to consider this selection. This\nis used in cases where a document appears in the hierarchy multiple times. If omitted,\nFonto prefers the same hierarchy node as the current (if the selection is in the same sheet\nframe), the sheet frame that most recently had the cursor in it, or the first occurrence in\nthe DocumentsHierarchy."
    },
    {
      "title": "Fonto 8.11.0 (December 19, 2024)",
      "slug": "fonto-8-11-0-december-19-2024-2e29a2d0d57a",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-11-0-december-19-2024-2e29a2d0d57a",
      "description": "Fixed an issue in the modal opened by the open-document-with-link-selector-browser-modal operation, where it would allow you to submit the modal after switching the selected document from one with valid link targets to one without."
    },
    {
      "title": "BrowseResponseItem",
      "slug": "browseresponseitem-f38d0558a041",
      "url": "https://documentation.fontoxml.com/latest/browseresponseitem-f38d0558a041",
      "description": "The type of item. For example: folder, document, document-template, link,\nimage, file, unknown."
    },
    {
      "title": "Known issues",
      "slug": "known-issues-98160783004a",
      "url": "https://documentation.fontoxml.com/latest/known-issues-98160783004a",
      "description": "This only happens if the document containing the link's target is also part of the hierarchy, but is not currently loaded due to just-in-time (JIT) loading. In general, we recommend to avoid serving documents that are not schema-valid, as aside from this issue such documents will not be editable and will only result in an error message for your users."
    },
    {
      "title": "fonto:curated-text-in-node",
      "slug": "fonto-curated-text-in-node-4623872061c2",
      "url": "https://documentation.fontoxml.com/latest/fonto-curated-text-in-node-4623872061c2",
      "description": "This function will resolve content inclusions to get the curated-text of\ntheir target. If the document of the inclusion target is loading or is\nunloaded this function will return '…' for that inclusion. If the document of\nthe inclusion target is in an error state, then this function will return '�'\nfor that inclusion."
    },
    {
      "title": "FontoXML 6.1.0 (February 19, 2016)",
      "slug": "fontoxml-6-1-0-february-19-2016-ec48b91c0c34",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-1-0-february-19-2016-ec48b91c0c34",
      "description": "Right-clicking outside of a document when no document contains the cursor no longer results in an error."
    },
    {
      "title": "Fonto 8.10.1 (October 10, 2024)",
      "slug": "fonto-8-10-1-october-10-2024-2a985b32aeab",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-10-1-october-10-2024-2a985b32aeab",
      "description": "Fixed an issue when using &lt;appendDocumentIdToQueryString /&gt; in a DictionaryAnnotator that could cause Fonto Content Quality to crash."
    },
    {
      "title": "FontoXML 6.9.0 (February 17, 2017)",
      "slug": "fontoxml-6-9-0-february-17-2017-1fc95b8c3e84",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-9-0-february-17-2017-1fc95b8c3e84",
      "description": "Multiple distinct references to the same remote document (e.g., topicrefs in different DITA maps) can no longer cause the document to be loaded twice in some situations."
    },
    {
      "title": "Self-contained server builds",
      "slug": "self-contained-server-builds-3687b06b54c9",
      "url": "https://documentation.fontoxml.com/latest/self-contained-server-builds-3687b06b54c9",
      "description": "document-history for Fonto Document History."
    },
    {
      "title": "Fonto 7.8.0 (September 26, 2019)",
      "slug": "fonto-7-8-0-september-26-2019-e0f2ac29fec2",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-8-0-september-26-2019-e0f2ac29fec2",
      "description": "Reloading the document that contains the cursor now places the cursor back at the start of that document. Previously, the cursor simply disappeared."
    },
    {
      "title": "FontoXML 6.8.0 (December 23, 2016)",
      "slug": "fontoxml-6-8-0-december-23-2016-05b2227dad5b",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-8-0-december-23-2016-05b2227dad5b",
      "description": "Loading and error placeholders are no longer shown for DITA topicrefs with the processing-role attribute set to \"resource-only\". Previously, the placeholders for these documents would show up, but the document would appear to disappear after being loaded."
    },
    {
      "title": "configureAsTitleFrame",
      "slug": "configureastitleframe-33f0625dbc74",
      "url": "https://documentation.fontoxml.com/latest/configureastitleframe-33f0625dbc74",
      "description": "Four levels of titles are available: collection title, document title, section\ntitle (the default), and figure title. Use the fontVariation visualization\noption to set one of these."
    },
    {
      "title": "ArgumentTypeByXPathType",
      "slug": "argumenttypebyxpathtype-c676803405cf",
      "url": "https://documentation.fontoxml.com/latest/argumenttypebyxpathtype-c676803405cf",
      "description": "document-node()"
    },
    {
      "title": "FontoXML 7.4.2 (November 7, 2018)",
      "slug": "fontoxml-7-4-2-november-7-2018-95b0c1b0c777",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-4-2-november-7-2018-95b0c1b0c777",
      "description": "Fixed a bug in Document History which prevented selected changes from being scrolled into view."
    },
    {
      "title": "Error codes for Fonto Output",
      "slug": "error-codes-f86e87113fae",
      "url": "https://documentation.fontoxml.com/latest/error-codes-f86e87113fae",
      "description": "Errors related to the Fonto Document History integration. Produced when generating tracked-changes documents."
    },
    {
      "title": "Implementing generated texts for cross-references",
      "slug": "generated-cross-reference-texts-dafc06842ef4",
      "url": "https://documentation.fontoxml.com/latest/generated-cross-reference-texts-dafc06842ef4",
      "description": "Not all editors have all the documents loaded at one time, which means the title will not always be available for those documents. We do not want to display a placeholder string for those references. A good fix for this issue is to let the CMS generate titles as well and to place them in the document from which all documents are referenced (dita maps for example.) This example will be specific to dita but a similar approach works for other schemata as well."
    },
    {
      "title": "How can I react to changes in the XML?!",
      "slug": "how-can-i-react-to-changes-in-the-xml-3adfc5c9e6f6",
      "url": "https://documentation.fontoxml.com/latest/how-can-i-react-to-changes-in-the-xml-3adfc5c9e6f6",
      "description": "I have an element that looks like this: &lt;note severity=\"something\" last-changed-severity=\"2022-03-10Z\"&gt;. It has a severity attribute that can have a number of values and an attribute last-changed-severity that should be set to the date of the last change. Currently my authors need to update that attribute to the current date whenever they change it, but I would like to make their lives easier. I have thought about computing a difference at the CMS whenever an author saves the document and applying the changes there, but Fonto would mark those documents as out-of-sync in the browser. We primarily use Fonto to edit our documents, so we would like to handle this in Fonto!"
    },
    {
      "title": "Endpoints for Fonto Review",
      "slug": "endpoints-139a362019aa",
      "url": "https://documentation.fontoxml.com/latest/endpoints-139a362019aa",
      "description": "Retrieves an export of annotations for the given documents using the export configuration specified by the {configurationId}. Requires an exports.xml configuration."
    },
    {
      "title": "FontoXML 6.6.1 (October 11, 2016)",
      "slug": "fontoxml-6-6-1-october-11-2016-06b42fbece81",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-6-1-october-11-2016-06b42fbece81",
      "description": "Fixed a regression in 6.6.0 where the last document was not displayed for some collection sizes."
    },
    {
      "title": "Fonto Review 7.12.2",
      "slug": "fonto-review-7-12-2-1b9041fd85e8",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-7-12-2-1b9041fd85e8",
      "description": "Resolved an issue where Fonto Review would not handle changes in the comment collection correctly when switching the loaded document."
    },
    {
      "title": "Upgrade from 7.8.1 to 7.8.2",
      "slug": "upgrade-from-7-8-1-to-7-8-2-e26c074dc523",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-8-1-to-7-8-2-e26c074dc523",
      "description": "This structure made a bug in our XPath engine (FontoXPath) visible. FontoXPath included the Document Type Declaration (DTD) in the sibling count to the root element of the document. This is not according to the XPath specification."
    },
    {
      "title": "Fonto 8.7.0 (December 21, 2023)",
      "slug": "fonto-8-7-0-december-21-2023-7794df9fdacb",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-7-0-december-21-2023-7794df9fdacb",
      "description": "Dictionaries for the DictionaryAnnotator in Fonto Content Quality can now be loaded for specific documents, e.g., to tag terms specific to a document. Use the new appendDocumentIdToQueryString property for the DictionaryAnnotator configuration."
    },
    {
      "title": "How to insert an image caption with XQuery Update Facility!?",
      "slug": "how-to-insert-an-image-caption-with-xquery-update-facility-4648e93ba95e",
      "url": "https://documentation.fontoxml.com/latest/how-to-insert-an-image-caption-with-xquery-update-facility-4648e93ba95e",
      "description": "import configureAsImageInFrame from 'fontoxml-families/src/configureAsImageInFrame.js';\nimport { SxModule } from 'fontoxml-modular-schema-experience/src/sxManager';\n\nexport default function configureSxModule(sxModule: SxModule): void {\n\tconfigureAsImageInFrame(sxModule, xq`self::renderMultiMedia`, 'image', {\n\t\treferenceQuery: '@src',\n\t\tblockHeaderRight: [createElementMenuButtonWidget()],\n\t\tcontextualOperations: [{name: 'insert-image-caption'}]\n\t});\n}\n"
    },
    {
      "title": "How do I add an external dependency?!",
      "slug": "how-do-i-add-an-external-dependency-1e7fd5960c65",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-add-an-external-dependency-1e7fd5960c65",
      "description": "But why is it so hard to include dependencies? And why are we not opening up our own WebPack configuration to allow you to plug your own things in it? This has a long history. Our build system has grown in the years and we need to have control on the order of loading files. For example, install.js files are evaluated before configureSxModule.js files. operation.json files are automatically loaded at another point in time. All files that import the configurationManager are deferred from loading until all configuration is actually available, which can be happen later, after reaching out to the CMS for instance."
    },
    {
      "title": "Upgrade from 8.14 to 8.14.1",
      "slug": "upgrade-from-8-14-to-8-14-1-e1394c2cc6d8",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-14-to-8-14-1-e1394c2cc6d8",
      "description": "We've changed the way Fonto Output uses the &lt;sx:configureProperties/&gt; element to define a document's hierarchy. Previously, Fonto Output's implementation of the &lt;sx:configureProperties/&gt; node did not distinguish between nodes that create the document hierarchy and nodes that create the document hierarchy and have their own content."
    },
    {
      "title": "FontoXML 6.8.1 (January 11, 2017)",
      "slug": "fontoxml-6-8-1-january-11-2017-e6b5be86d943",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-8-1-january-11-2017-e6b5be86d943",
      "description": "The changes to normalization in 6.8.0 inadvertently caused a performance regression for very large documents. This has been fixed."
    },
    {
      "title": "ExitNodeUntilOptions",
      "slug": "exitnodeuntiloptions-c677157c3e80",
      "url": "https://documentation.fontoxml.com/latest/exitnodeuntiloptions-c677157c3e80",
      "description": "Restricts the working of this method to only allow forward (according\nto document order) exiting."
    },
    {
      "title": "toggle-spell-checker",
      "slug": "toggle-spell-checker-482fda558c34",
      "url": "https://documentation.fontoxml.com/latest/toggle-spell-checker-482fda558c34",
      "description": "Check the document for correct spelling."
    },
    {
      "title": "Fonto 7.12.1 (October 9, 2020)",
      "slug": "fonto-7-12-1-october-9-2020-a1e125d8ce69",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-12-1-october-9-2020-a1e125d8ce69",
      "description": "Fixed a crash that could happen in certain rare situations, including sometimes when using Content Quality and simultaneously loading and unloading documents with content containing tables or using reducers."
    },
    {
      "title": "fonto:curated-text-in-range",
      "slug": "fonto-curated-text-in-range-33986dbff804",
      "url": "https://documentation.fontoxml.com/latest/fonto-curated-text-in-range-33986dbff804",
      "description": "This function will resolve content inclusions to get the curated-text of\ntheir target. If the document of the inclusion target is loading or is\nunloaded this function will return '…' for that inclusion. If the document of\nthe inclusion target is in an error state, then this function will return '�'\nfor that inclusion."
    },
    {
      "title": "DictionaryAnnotator",
      "slug": "dictionaryannotator-fe9e47fb834d",
      "url": "https://documentation.fontoxml.com/latest/dictionaryannotator-fe9e47fb834d",
      "description": "You have the ability to include the documentId in HTTP requests by enabling the appendDocumentIdToQueryString option using the endpointConfiguration. When using this flag, the documentId will be appended to the endpoint as a query string parameter."
    },
    {
      "title": "FontoXML 6.1.4 (April 6, 2016)",
      "slug": "fontoxml-6-1-4-april-6-2016-882f9b81e246",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-1-4-april-6-2016-882f9b81e246",
      "description": "When saving directly after edits are made, the document could be autosaved after it was saved explicitly, with the exact same contents. This superfluous action no longer occurs."
    },
    {
      "title": "FdsIconName",
      "slug": "fdsiconname-bf3c6f10d671",
      "url": "https://documentation.fontoxml.com/latest/fdsiconname-bf3c6f10d671",
      "description": "This should be one of the Font\nAwesome icons. Do not include the fa- prefix, just use the icon names as-is\nfrom the documentation."
    },
    {
      "title": "Upcoming removals 8.4",
      "slug": "upcoming-removals-8-4-167dd6e00dd4",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-8-4-167dd6e00dd4",
      "description": "enable-experiment/enable-cors-for-images. As documented in the documentation on Cross-origin requests, Fonto does not support CORS. This experiment enabled CORS headers on images, which made them not work in some browsers."
    },
    {
      "title": "Configure indentation and line spacing",
      "slug": "configure-indentation-and-spacing-14314a8d82a6",
      "url": "https://documentation.fontoxml.com/latest/configure-indentation-and-spacing-14314a8d82a6",
      "description": "Using a Word template file (.dotx) allows you to use existing document templates, and this method requires less configuration of styles in a Fonto Output stylesheet. This also helps ensure that styles you create are exported from Fonto Output to a .docx file in a way that is consistent with the template."
    },
    {
      "title": "Fonto Content Quality",
      "slug": "fonto-content-quality-8eb64cce9374",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-8eb64cce9374",
      "description": "It runs a check on all documents and all changes, splits the (changed) content into, by default, block level chunks and sends them to the Content Quality backend. The results can be visualized in the content using squiggles and in a so-called 'navigator': a panel that sits on the top-right of the documents list and shows details and actions for the selected annotation (squiggle)."
    },
    {
      "title": "Upgrade from 8.3 to 8.4",
      "slug": "upgrade-from-8-3-to-8-4-6337cf79971d",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-3-to-8-4-6337cf79971d",
      "description": "We have made a previously private API (FxErroredTemplatedView) public, but with a different name (FxNodePreviewErrorPlaceholder). This private API was used in the fontoxml-cms-browser add-on and erroneously documented in a code example of FxDocumentLoader. Make sure you change the occurrences in your own application. The props of the component are the same."
    },
    {
      "title": "CmsClient",
      "slug": "cmsclient-cdab45eeddd9",
      "url": "https://documentation.fontoxml.com/latest/cmsclient-cdab45eeddd9",
      "description": "For requests that are associated with a specific document, we recommend\nincluding a documentId property in the same context object containing the\nRemoteDocumentId of that document. This is done automatically by passing that\nRemoteDocumentId to this method."
    },
    {
      "title": "Fonto 7.5.1 (January 7, 2019)",
      "slug": "fonto-7-5-1-january-7-2019-91351728e851",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-5-1-january-7-2019-91351728e851",
      "description": "Resolved an issue where the DocumentHistoryShowChangesButton would display an unexpected border when used in the masthead."
    },
    {
      "title": "FontoXML 6.11.2 (May 10, 2017)",
      "slug": "fontoxml-6-11-2-may-10-2017-59fdbbd3d364",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-11-2-may-10-2017-59fdbbd3d364",
      "description": "Fixed an issue causing the local development CMS to fail to create new documents. This was introduced in the 6.11 release. This issue only affected the development CMS; it does not occur in a production environment."
    },
    {
      "title": "FxOperationIsDisabled",
      "slug": "fxoperationisdisabled-db58f50dd282",
      "url": "https://documentation.fontoxml.com/latest/fxoperationisdisabled-db58f50dd282",
      "description": "Setting it to false does not (re)enable it if the associated operation(s) are\nnot enabled. This prevents users from executing operations that would cause\nerrors or even break the document."
    },
    {
      "title": "Fonto Editor 7.15.0 (June 24, 2021)",
      "slug": "fonto-editor-7-15-0-june-24-2021-49ee9635029f",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-15-0-june-24-2021-49ee9635029f",
      "description": "We fixed an issue where the sidebar used for fontoxml-annotations and fontoxml-track-changes could crash Fonto Editor in some cases when documents containing annotations or tracked changes were added to and/or removed from the documents hierarchy."
    },
    {
      "title": "FontoXML 6.2.2 (April 28, 2016)",
      "slug": "fontoxml-6-2-2-april-28-2016-e5999191f9e8",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-2-2-april-28-2016-e5999191f9e8",
      "description": "If the CMS requires more than 4 seconds to handle a lock request and the application is using optimistic locking, FontoXML could send an autosave for a locked document. This has been resolved."
    },
    {
      "title": "Fonto APIs & reference articles",
      "slug": "api-061fa43724ff",
      "url": "https://documentation.fontoxml.com/latest/api-061fa43724ff",
      "description": "Actions can be used in Operations to change the state of the application that is not saved in a loaded document."
    },
    {
      "title": "FdsIconAfterName",
      "slug": "fdsiconaftername-3f1491c10a5c",
      "url": "https://documentation.fontoxml.com/latest/fdsiconaftername-3f1491c10a5c",
      "description": "This should be one of the Font\nAwesome icons. Do not include the fa- prefix, just use the icon names as-is\nfrom the documentation."
    },
    {
      "title": "Fonto 8.6.2 (November 14, 2023)",
      "slug": "fonto-8-6-2-november-14-2023-3b84ce2148f8",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-6-2-november-14-2023-3b84ce2148f8",
      "description": "Fonto Document History has been updated to .NET 6.0.24, which includes security-related fixes for CVE-2023-36792, CVE-2023-36794, CVE-2023-36793, CVE-2023-36796 and CVE-2023-36799."
    },
    {
      "title": "Get started with Fonto Review",
      "slug": "fonto-review-8ca615260377",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-8ca615260377",
      "description": "Annotations are stored in a database, not in the XML document itself. This avoids having to lock a document in order to annotate it, and not having to lock the document allows for unlimited concurrent users!"
    },
    {
      "title": "Fonto 8.13.0 (June 23, 2025)",
      "slug": "fonto-8-13-0-june-23-2025-c772579754f3",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-13-0-june-23-2025-c772579754f3",
      "description": "As the setContextNodeIdToTopicrefReferencingCurrentDocument transform is usually used for operations that insert a new topic in the hierarchy, it now also sets the hierarchyNodeId property to that of the corresponding hierarchy node. This should ensure the correct instance of the document is used in cases where the same document is referenced multiple times in the hierarchy."
    },
    {
      "title": "FontoXML 6.9.1 (March 2, 2017)",
      "slug": "fontoxml-6-9-1-march-2-2017-4738d0ca25d6",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-9-1-march-2-2017-4738d0ca25d6",
      "description": "Resolved an issue where the single document hierarchy did not update after certain operations that affect the nesting of hierarchy nodes."
    },
    {
      "title": "Fonto Content Quality 1.4.3",
      "slug": "fonto-content-quality-1-4-3-50aab0deeba5",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-1-4-3-50aab0deeba5",
      "description": "Resolved an issue that resulted in triggering the editor's error route when unloading / removing a document from the editor that contains annotations."
    },
    {
      "title": "How to configure drag & drop in the outline sidebar",
      "slug": "outline-drag-drop-3779095bf60a",
      "url": "https://documentation.fontoxml.com/latest/outline-drag-drop-3779095bf60a",
      "description": "addCustomMutation(\n\t'drag-and-drop-topicref',\n\t(argument, blueprint, format, selection) =&gt; {\n\t\t// The topicref is expected to be the source node of its outline item\n\t\tconst movingNodeId = argument.movingNodes?.[0]?.sourceNodeId;\n\t\tconst movingNode = movingNodeId &amp;&amp; blueprint.lookup(movingNodeId);\n\t\tif (!movingNode || !domInfo.isElement(movingNode, 'topicref')) {\n\t\t\t// Moving node was not provided or is not a topicref, nothing we can do\n\t\t\treturn CustomMutationResult.notAllowed();\n\t\t}\n\n\t\t// A topicref can only be placed under a map or other topicref. For\n\t\t// simplicity, we'll ignore DITA maprefs here and assume that both cases\n\t\t// correspond to the source node of their outline item.\n\t\tconst newParentNodeId = argument.newParentNode?.sourceNodeId;\n\t\tconst newParentNode =\n\t\t\tnewParentNodeId &amp;&amp; blueprint.lookup(newParentNodeId);\n\t\tif (\n\t\t\t!domInfo.isElement(newParentNode, 'topicref') &amp;&amp;\n\t\t\t!domInfo.isElement(newParentNode, 'map')\n\t\t) {\n\t\t\t// The parent selected for this drop does not allow topicref\n\t\t\treturn CustomMutationResult.notAllowed();\n\t\t}\n\n\t\t// Now we figure out where in the parent to drop the topicref. There are\n\t\t// two cases to consider:\n\t\t// - the drop position given is directly under the intended parent, in\n\t\t//   which case its reference is the first existing child (if any) and\n\t\t//   we should drop before that child.\n\t\t// - the drop position is inside of an existing child, meaning the drop\n\t\t//   should happen after that child.\n\n\t\t// This last option complicates things a little because in our assumed\n\t\t// configuration, tables are also part of the outline. The drop position\n\t\t// will usually be the deepest possible position in the preceding child,\n\t\t// so it may be inside of a table! To insert our topicref, we need to\n\t\t// find the closest topicref pointing to the topic containing that\n\t\t// table. Fortunately we can simplify things a bit because tables\n\t\t// are not part of the hierarchy, so we can use the hierarchy nodes\n\t\t// corresponding to the drop position to directly jump to the topicref.\n\t\tconst parentHierarchyNodeId =\n\t\t\targument.dropPosition?.parentNode?.hierarchyNodeId;\n\t\tconst parentSourceNode =\n\t\t\tparentHierarchyNodeId &amp;&amp;\n\t\t\tdocumentsHierarchy\n\t\t\t\t.get(parentHierarchyNodeId)\n\t\t\t\t?.documentReference?.getSourceNode();\n\t\tconst referenceHierarchyNodeId =\n\t\t\targument.dropPosition?.referenceNode?.hierarchyNodeId;\n\t\tconst referenceSourceNode =\n\t\t\treferenceHierarchyNodeId &amp;&amp;\n\t\t\tdocumentsHierarchy\n\t\t\t\t.get(referenceHierarchyNodeId)\n\t\t\t\t?.documentReference?.getSourceNode();\n\n\t\t// Option 1: drop position is already in our intended parent, we drop\n\t\t// before the reference node. We use the sourceNode to check this, just\n\t\t// like we did with the newParentNode earlier.\n\t\tconst dropPositionParentNodeId =\n\t\t\targument.dropPosition?.parentNode?.sourceNodeId;\n\t\tconst dropPositionParentNode =\n\t\t\tdropPositionParentNodeId &amp;&amp;\n\t\t\tblueprint.lookup(dropPositionParentNodeId);\n\n\t\tlet actualReferenceNode;\n\t\tif (dropPositionParentNode === newParentNode) {\n\t\t\t// Move into newParentNode before referenceSourceNode\n\t\t\tactualReferenceNode = referenceSourceNode ?? null;\n\t\t} else {\n\t\t\t// Option 2: drop position is somewhere inside of an existing\n\t\t\t// topicref or even table outline item, insert after the closest\n\t\t\t// topicref in the hierarchy\n\t\t\tactualReferenceNode = parentSourceNode\n\t\t\t\t? blueprint.getNextSibling(parentSourceNode)\n\t\t\t\t: null;\n\t\t}\n\n\t\t// Edge case: dropping a node before itself\n\t\tif (actualReferenceNode === movingNode) {\n\t\t\tactualReferenceNode = blueprint.getNextSibling(movingNode);\n\t\t}\n\n\t\t// Finally, move the topicref\n\t\tunsafeMoveNodes(\n\t\t\tmovingNode,\n\t\t\tmovingNode,\n\t\t\tblueprint,\n\t\t\tnewParentNode,\n\t\t\tactualReferenceNode,\n\t\t\tfalse\n\t\t);\n\n\t\t// Returning OK will automatically check the result against the schema,\n\t\t// so we don't need to worry about making the document invalid.\n\t\treturn CustomMutationResult.ok();\n\t}\n);\n"
    },
    {
      "title": "FontoXML 7.2.1 (May 22, 2018)",
      "slug": "fontoxml-7-2-1-may-22-2018-2e01ecd8f1ce",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-7-2-1-may-22-2018-2e01ecd8f1ce",
      "description": "An issue has been resolved that prevented FontoXML from correctly updating the displayed document under various circumstances in Microsoft Edge version 42 (which was included in the Windows 10 April feature update, version 1803)."
    },
    {
      "title": "Fonto Editor 7.14.1 (May 14, 2021)",
      "slug": "fonto-editor-7-14-1-may-14-2021-ddb3739c5ae3",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-14-1-may-14-2021-ddb3739c5ae3",
      "description": "Fixed an issue where, if the CMS would release the lock (available but not acquired) as part of a successful save response and the document has not been changed afterwards, Fonto would still re-acquire the lock."
    },
    {
      "title": "How and why we changed the way our references work",
      "slug": "how-and-why-we-changed-the-way-our-references-work-0adb7137823d",
      "url": "https://documentation.fontoxml.com/latest/how-and-why-we-changed-the-way-our-references-work-0adb7137823d",
      "description": "Permanent IDs should continue to be used for any reference for which the interpretation depends on the document they are located in, such as relative URLs. FontoXML will not modify your references if they are copy/pasted or otherwise moved between different documents. Permanent IDs make such references independent of their context, so their interpretation is no longer affected by these operations."
    },
    {
      "title": "Fonto 8.2.2 (December 1, 2022)",
      "slug": "fonto-8-2-2-december-1-2022-469c52c8b32e",
      "url": "https://documentation.fontoxml.com/latest/fonto-8-2-2-december-1-2022-469c52c8b32e",
      "description": "Fixed a regression in 8.2.0 that caused the hierarchy to stop updating in editors using the single document with multiple sheet-frames add-on. This could, for instance, cause content to seemingly disappear when moving its position in the hierarchy."
    },
    {
      "title": "FAQ",
      "slug": "frequently-asked-questions-1223cb8ed5d2",
      "url": "https://documentation.fontoxml.com/latest/frequently-asked-questions-1223cb8ed5d2",
      "description": "We impose no specific limit on the number or size of documents that can be concurrently loaded in Fonto Editor. Obviously, smaller documents will perform better than very large ones but the actual limits depend on the machine and browser used."
    },
    {
      "title": "HttpApiAnnotator",
      "slug": "httpapiannotator-94ecbf012eaa",
      "url": "https://documentation.fontoxml.com/latest/httpapiannotator-94ecbf012eaa",
      "description": "You have the ability to include the documentId in HTTP requests by enabling the appendDocumentIdToQueryString option using the endpointConfiguration. When using this flag, the documentId will be appended to the endpoint as a query string parameter."
    },
    {
      "title": "PropsNodeItem",
      "slug": "propsnodeitem-acbaa0838afc",
      "url": "https://documentation.fontoxml.com/latest/propsnodeitem-acbaa0838afc",
      "description": "The ID of the documents hierarchy node corresponding to the clicked item."
    },
    {
      "title": "DITA support",
      "slug": "dita-support-31328d3581a9",
      "url": "https://documentation.fontoxml.com/latest/dita-support-31328d3581a9",
      "description": "The example configuration assumes that the value of a topicref element's href attribute directly contains the RemoteDocumentId of the target document. In some cases it may contain a fragment identifier (#). This requires looking up the element in the referenced document and can be implemented using XQuery."
    },
    {
      "title": "Fonto Review 7.10.0",
      "slug": "fonto-review-7-10-0-dace8fc318e0",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-7-10-0-dace8fc318e0",
      "description": "We introduced grouping by document in the sidebars for Review. This gives you a clear overview of comments that correspond to a certain document in the hierarchy. Previously, this was just a flat list, but you can now navigate through the list more easily."
    },
    {
      "title": "How to configure content inclusions",
      "slug": "content-inclusion-d449b0ea4b97",
      "url": "https://documentation.fontoxml.com/latest/content-inclusion-d449b0ea4b97",
      "description": "In most XML tooling, XInclude is regarded as a pre-processing step. During the parsing of a document, all XInclude elements are resolved and replaced with what they reference. However when editing the XML with the editor, the inclusions should be present in the document so that you can work with them. Therefore, at least in the schema specific for the editor, the XInclude is required to be in the schema for the places where content can be referenced."
    },
    {
      "title": "Fonto Editor 7.14.2 (June 4, 2021)",
      "slug": "fonto-editor-7-14-2-june-4-2021-736c4a4c24be",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-14-2-june-4-2021-736c4a4c24be",
      "description": "Fixed several issues in Fonto Document History. Please see the release notes of that product."
    },
    {
      "title": "How to use the configureAsPlaceholder family",
      "slug": "how-to-use-the-configureasplaceholder-family-d51e931a6f00",
      "url": "https://documentation.fontoxml.com/latest/how-to-use-the-configureasplaceholder-family-d51e931a6f00",
      "description": "{\n\t\"insert-image-placeholder\": {\n\t\t\"label\": \"t__Figure with image placeholder\",\n\t\t\"description\": \"t__A figure that groups an image placeholder with its title and description.\",\n\t\t\"steps\": [\n\t\t\t{\n\t\t\t\t\"type\": \"operation/vertical-insert\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"childNodeStructure\": [\n\t\t\t\t\t\t\"fig\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"title\",\n\t\t\t\t\t\t\t[{ \"bindTo\": \"selection\", \"empty\": true }]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"imageplaceholder\"\n\t\t\t\t\t\t]\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t},\n\t\"insert-image\": {\n\t\t\"label\": \"t__Image\",\n\t\t\"description\": \"t__A figure that groups an image with its title and description.\",\n\t\t\"icon\": \"picture-o\",\n\t\t\"steps\": [\n\t\t\t{\n\t\t\t\t\"type\": \"operation/:_open-image-browser-for-insert\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"operation/vertical-insert\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"childNodeStructure\": [\n\t\t\t\t\t\t\"fig\",\n\t\t\t\t\t\t[\"title\", [{ \"bindTo\": \"selection\", \"empty\": true }]],\n\t\t\t\t\t\t[\"desc\"],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"image\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"href\": \"{{reference}}\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t},\n\t\"imageplaceholder-insert-image\": {\n\t\t\"label\": \"t__Insert\",\n\t\t\"steps\": [\n\t\t\t{\n\t\t\t\t\"type\": \"transform/setDocumentIdToDocumentContainingContextNodeId\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"transform/setRemoteDocumentIdFromDocumentId\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"operation/open-image-browser-modal\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"browseContextDocumentId\": \"{{remoteDocumentId}}\"\n\t\t\t\t}\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"operation/horizontal-insert\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"childNodeStructure\": [\n\t\t\t\t\t\t\"image\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"href\": \"{{selectedImageId}}\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n}"
    },
    {
      "title": "CvkFontVariation",
      "slug": "cvkfontvariation-c58c73444f02",
      "url": "https://documentation.fontoxml.com/latest/cvkfontvariation-c58c73444f02",
      "description": "document-title"
    },
    {
      "title": "ReviewTarget",
      "slug": "reviewtarget-ec06955eb85b",
      "url": "https://documentation.fontoxml.com/latest/reviewtarget-ec06955eb85b",
      "description": "The identifier of the document revision corresponding with the target."
    },
    {
      "title": "Open-source add-ons",
      "slug": "open-source-add-ons-ecabc4598484",
      "url": "https://documentation.fontoxml.com/latest/open-source-add-ons-ecabc4598484",
      "description": "More information about packages can be found in our Application Structure documentation. Specifically, the package manifest documentation."
    },
    {
      "title": "How do I configure Fonto",
      "slug": "how-do-i-configure-fonto-501ec827fdda",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-configure-fonto-501ec827fdda",
      "description": "The easiest way to address this is to supply some example documents in the dev-cms folder of the editor and keep them up-to-date. This allows you as a developer to run the editor locally with fdt editor run and experience the near-instant development cycle you deserve. Just make a code edit and refresh your browser! If your editor requires some custom contracts, you can stub them in the dev-cms/configureDevCms.js file (note this is NodeJS, not TypeScript)."
    },
    {
      "title": "CvkWhitespace",
      "slug": "cvkwhitespace-24b7c5b25441",
      "url": "https://documentation.fontoxml.com/latest/cvkwhitespace-24b7c5b25441",
      "description": "In many use cases of XML, whitespace at the start or end of elements and\nsequences of multiple consecutive whitespace characters may not be preserved.\nThis includes when the document is converted to and rendered as HTML, or when\n\"pretty print\"-type formatting is applied or removed in a source-level XML\neditor."
    },
    {
      "title": "FdsOnRefCallback",
      "slug": "fdsonrefcallback-f10591ca9cc4",
      "url": "https://documentation.fontoxml.com/latest/fdsonrefcallback-f10591ca9cc4",
      "description": "For more information about React and \"refs\", check the React documentation"
    },
    {
      "title": "Writing a great ticket",
      "slug": "writing-a-great-ticket-3201afc52adb",
      "url": "https://documentation.fontoxml.com/latest/writing-a-great-ticket-3201afc52adb",
      "description": "Access to supporting materials: If applicable, ensure you have any relevant files, links, or documentation to support your ticket. This might include your browser errors, editor source code, editor errors, example documents demonstrating the issue, network traffic, server logs and/or project-specific details."
    },
    {
      "title": "FontoXML 6.11.3 (May 11, 2017)",
      "slug": "fontoxml-6-11-3-may-11-2017-0b98177c7e7a",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-11-3-may-11-2017-0b98177c7e7a",
      "description": "Fixed an issue causing the development CMS to reject saving new documents when the save mode is off. This only occurs when developing a FontoXML instance."
    },
    {
      "title": "Choosing the right element configuration",
      "slug": "choosing-configuration-16bd34edbe76",
      "url": "https://documentation.fontoxml.com/latest/choosing-configuration-16bd34edbe76",
      "description": "Normally only the root element of the document is shown in a sheet frame. But when you divide your document up into multiple hierarchy nodes then each hierarchy node needs to become a sheet frame as well if you want to show them (alternatives are  or )."
    },
    {
      "title": "Upgrade from 7.9 to 7.10",
      "slug": "upgrade-from-7-9-to-7-10-a625b363167e",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-9-to-7-10-a625b363167e",
      "description": "To solve this problem, starting from this release Fonto will prevent users from inserting whitespace that is at risk of being removed or collapsed by other tooling. In particular, this concerns whitespace at the start or end of an element, as well as sequences of two or more adjacent whitespace characters. When existing content containing such whitespace is edited, Fonto will automatically remove whitespace in elements that are edited. Fonto will not automatically clean up full documents on load, as this would cause unexpected saves and may potentially introduce large changes that will show up in contexts such as Document History."
    },
    {
      "title": "Get started with Fonto Output",
      "slug": "fonto-output-8e32fefc01b5",
      "url": "https://documentation.fontoxml.com/latest/fonto-output-8e32fefc01b5",
      "description": "The URL of the Fonto Document History running instance. Fonto Output uses this URL to communicate with the back-end service to optionally produce tracked-changes documents."
    },
    {
      "title": "FontoXML 6.11.4 (May 16, 2017)",
      "slug": "fontoxml-6-11-4-may-16-2017-37c420df6f37",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-11-4-may-16-2017-37c420df6f37",
      "description": "An error prevented FontoXML from re-attempting to acquire a lock if the document had to be reloaded first. This has been resolved."
    },
    {
      "title": "Fonto Content Quality 7.15.0",
      "slug": "fonto-content-quality-7-15-0-3dc8adeb865d",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-7-15-0-3dc8adeb865d",
      "description": "The Fonto Content Quality navigator now shows its progression for long during scans by showing the amount of documents that have been scanned so far."
    },
    {
      "title": "Fonto Development Tools",
      "slug": "fonto-development-tools-354aeb84d6c5",
      "url": "https://documentation.fontoxml.com/latest/fonto-development-tools-354aeb84d6c5",
      "description": "Most of the time, a guide in Fonto's product documentation will let you know which command to use. However, commands sometimes come with additional options that might not be relevant to everyone. To find out more information about any of FDT's commands, please revise our FDT API documentation or explore the commands from your terminal by using the --help flag."
    },
    {
      "title": "Upgrade instructions",
      "slug": "upgrade-instructions-53f5b02b6e48",
      "url": "https://documentation.fontoxml.com/latest/upgrade-instructions-53f5b02b6e48",
      "description": "Version mismatches between components such as Fonto Editor, Fonto Content Quality, Fonto Document History, Fonto Output, and Fonto Review can lead to unexpected behavior and are not supported."
    },
    {
      "title": "Fonto 7.5.2 (January 11, 2019)",
      "slug": "fonto-7-5-2-january-11-2019-c2d9897926e0",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-5-2-january-11-2019-c2d9897926e0",
      "description": "We have released new versions of Fonto Connectors, Fonto Content Quality and Fonto Document History to fix a few security issues. Please refer to their release notes for details."
    },
    {
      "title": "How to localize the interface",
      "slug": "localization-85546fe1a7a6",
      "url": "https://documentation.fontoxml.com/latest/localization-85546fe1a7a6",
      "description": "import configurationManager from 'fontoxml-configuration/src/configurationManager';\nconst scope = configurationManager.get('scope');\n\nconfigurationManager.set('preferred-locales', [scope.locale, 'en']);\n\n// If loading from locales from `assets/localization/`, also set `remote-loaded-locales`.\nconfigurationManager.set('remote-loaded-locales', [scope.locale]);"
    },
    {
      "title": "Filters",
      "slug": "filters-6301ac7798b6",
      "url": "https://documentation.fontoxml.com/latest/filters-6301ac7798b6",
      "description": "Every filter has its own configuration options, and behaves in a slightly different way. Please find the full list of available filters in our API documentation."
    },
    {
      "title": "Upgrade from 8.5 to 8.6",
      "slug": "upgrade-from-8-5-to-8-6-646026fc1970",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-5-to-8-6-646026fc1970",
      "description": "This release of Fonto introduces person profiles. We now display more user information and a user avatar at places where we previously showed just the display name. This works for all parts of Fonto; Fonto Document History, Fonto Review, track changes, annotations and custom implementations. For custom implementations, use the new FxProfileChip component to align with our user interface."
    },
    {
      "title": "t",
      "slug": "t-e7c2eb445a2f",
      "url": "https://documentation.fontoxml.com/latest/t-e7c2eb445a2f",
      "description": "The preferredLocales option can be used to override the configuration. If\nset, the given locales will be tried before falling back to the configured\nones. This is intended to be used only for labels used in the content view\nthat can be considered part of the content, such as generated numbering and\nreference text. If authors write documents in a language that is different\nfrom the one in which the user interface is localized, such labels should use\nthe language of the document rather than that of the UI."
    },
    {
      "title": "How to integrate Fonto Content Quality with a CMS",
      "slug": "integrate-fonto-content-quality-9720cc2bba41",
      "url": "https://documentation.fontoxml.com/latest/integrate-fonto-content-quality-9720cc2bba41",
      "description": "The documentation for the proxy endpoint can be found in our API documentation​​."
    },
    {
      "title": "FdsEmptyVisual",
      "slug": "fdsemptyvisual-b81d8d4715a1",
      "url": "https://documentation.fontoxml.com/latest/fdsemptyvisual-b81d8d4715a1",
      "description": "Icon: a name of an icon. This should be one of the Font\nAwesome icons. Do not include the fa- prefix, just use the icon names as-is\nfrom the documentation."
    },
    {
      "title": "toggle-table-overflow-mode",
      "slug": "toggle-table-overflow-mode-94ca1199800a",
      "url": "https://documentation.fontoxml.com/latest/toggle-table-overflow-mode-94ca1199800a",
      "description": "The hierarchy node ID corresponding to the instance of the document in which to toggle the table."
    },
    {
      "title": "Processing instructions",
      "slug": "processing-instructions-369f925f1673",
      "url": "https://documentation.fontoxml.com/latest/processing-instructions-369f925f1673",
      "description": "Common use-cases for using this processing instruction are for document templates or, when using an operation and adding an XML structure to an already existing document."
    },
    {
      "title": "getClosestStructureViewItem",
      "slug": "getcloseststructureviewitem-8622cdc3a9ad",
      "url": "https://documentation.fontoxml.com/latest/getcloseststructureviewitem-8622cdc3a9ad",
      "description": "Can be used to disambiguate cases where documents occur multiple times."
    },
    {
      "title": "configureAsInlineLink",
      "slug": "configureasinlinelink-e505067dd2fc",
      "url": "https://documentation.fontoxml.com/latest/configureasinlinelink-e505067dd2fc",
      "description": "Use this family for e.g. links internal to a document, to other documents, and\nto web addresses."
    },
    {
      "title": "getCurrentRangeForReviewAnnotation",
      "slug": "getcurrentrangeforreviewannotation-602f766bec1d",
      "url": "https://documentation.fontoxml.com/latest/getcurrentrangeforreviewannotation-602f766bec1d",
      "description": "The document the annotation is on is not loaded."
    },
    {
      "title": "createNumberingWidget",
      "slug": "createnumberingwidget-d158e717b167",
      "url": "https://documentation.fontoxml.com/latest/createnumberingwidget-d158e717b167",
      "description": "By default, the numbering is rest per document, but the\ncontainerSelector option can set a different scope."
    },
    {
      "title": "ContentQualityStructureCheckWidget",
      "slug": "contentqualitystructurecheckwidget-1faed2caa425",
      "url": "https://documentation.fontoxml.com/latest/contentqualitystructurecheckwidget-1faed2caa425",
      "description": "Used to select annotations in the right document occurrence (in case of reuse)."
    },
    {
      "title": "FdsColorName",
      "slug": "fdscolorname-6feee7ee02f0",
      "url": "https://documentation.fontoxml.com/latest/fdscolorname-6feee7ee02f0",
      "description": "DocumentHistoryUIColor"
    },
    {
      "title": "apply-model-using-stencil",
      "slug": "apply-model-using-stencil-7eff388ee131",
      "url": "https://documentation.fontoxml.com/latest/apply-model-using-stencil-7eff388ee131",
      "description": "Object containing properties with the same names as the gaps in the stencil, whose values will be set in the matching locations in the document."
    },
    {
      "title": "Troubleshooting with the manifest.json file",
      "slug": "troubleshooting-with-the-manifest-json-file-aa5942d980df",
      "url": "https://documentation.fontoxml.com/latest/troubleshooting-with-the-manifest-json-file-aa5942d980df",
      "description": "The manifest.json is generated in response to each document request sent to Fonto Output. This file contains information about the request, as well as critical, warning and error messages. These messages arise from issues encountered by the Fonto Output back-end service as it generates a document."
    },
    {
      "title": "createInlineNumberingWidget",
      "slug": "createinlinenumberingwidget-500ccc94021e",
      "url": "https://documentation.fontoxml.com/latest/createinlinenumberingwidget-500ccc94021e",
      "description": "By default, the numbering is rest per document, but the\ncontainerSelector option can set a different scope."
    },
    {
      "title": "FontoNodeMutability",
      "slug": "fontonodemutability-e20c7cc15d2a",
      "url": "https://documentation.fontoxml.com/latest/fontonodemutability-e20c7cc15d2a",
      "description": "writable - allows mutating DOM state directly. Almost never required, but\ntypically used for any newly created nodes, as mutating those does not affect\nthe actual documents in the editor."
    },
    {
      "title": "registerEditorSidebarTab",
      "slug": "registereditorsidebartab-ebf28ed0f4c5",
      "url": "https://documentation.fontoxml.com/latest/registereditorsidebartab-ebf28ed0f4c5",
      "description": "Find and Replace panel; Used for\nsearching into the document and displaying/replacing the results."
    },
    {
      "title": "ConfigureAsStructureViewItemOptions",
      "slug": "configureasstructureviewitemoptions-2a7ffe0fc6e4",
      "url": "https://documentation.fontoxml.com/latest/configureasstructureviewitemoptions-2a7ffe0fc6e4",
      "description": "Each outline item displays the title corresponding to the node it\nrepresents. Some outline items that correspond to hierarchy nodes may\nrepresent two nodes: a reference and its target. For example, a DITA\ntopicref and the topic it points at. In these cases, the title for\nthe target element will be preferred. If that element is not available,\nfor instance when the target document is not loaded, the title configured\nfor the referencing element (hierarchy source node) will be used as a\nfallback."
    },
    {
      "title": "CustomMutationResult",
      "slug": "custommutationresult-40f359ca032e",
      "url": "https://documentation.fontoxml.com/latest/custommutationresult-40f359ca032e",
      "description": "Indicates the changes in the blueprint and/or selection should be applied to the\ndocument, provided the result is valid."
    },
    {
      "title": "editEditorSidebarTab",
      "slug": "editeditorsidebartab-0fa9ec75e7bf",
      "url": "https://documentation.fontoxml.com/latest/editeditorsidebartab-0fa9ec75e7bf",
      "description": "Find and Replace panel; Used for\nsearching into the document and displaying/replacing the results."
    },
    {
      "title": "Fonto 7.8.3 (December 2, 2019)",
      "slug": "fonto-7-8-3-december-2-2019-ca3bd80fa9d2",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-8-3-december-2-2019-ca3bd80fa9d2",
      "description": "Users could experience some issues with making comments at certain positions in the document, buttons to create comments were disabled on those locations. This is now resolved, you should be able to comment everywhere."
    },
    {
      "title": "FontoXML 6.0.2 (January 27, 2016)",
      "slug": "fontoxml-6-0-2-january-27-2016-37fd8686686a",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-0-2-january-27-2016-37fd8686686a",
      "description": "FontoXML now more aggressively reuses HTML when updating a document, resulting in faster visual updates."
    },
    {
      "title": "Fonto Editor 7.12.2 (October 23, 2020)",
      "slug": "fonto-editor-7-12-2-october-23-2020-60ebbdbe9000",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-12-2-october-23-2020-60ebbdbe9000",
      "description": "For the release notes of Fonto Document History, please click here."
    },
    {
      "title": "createHierarchicalNumberingWidget",
      "slug": "createhierarchicalnumberingwidget-ffcc0b525428",
      "url": "https://documentation.fontoxml.com/latest/createhierarchicalnumberingwidget-ffcc0b525428",
      "description": "By default, the numbering is rest per document, but the containerSelector\noption can set a different scope."
    },
    {
      "title": "toggle-table-overflow-expanded",
      "slug": "toggle-table-overflow-expanded-fce02faeabb7",
      "url": "https://documentation.fontoxml.com/latest/toggle-table-overflow-expanded-fce02faeabb7",
      "description": "The hierarchy node ID corresponding to the instance of the document in which to toggle the table."
    },
    {
      "title": "CuratedTextOptions",
      "slug": "curatedtextoptions-6700d84b8b72",
      "url": "https://documentation.fontoxml.com/latest/curatedtextoptions-6700d84b8b72",
      "description": "While this is documented in terms of a TypeScript type, the actual options\nargument for these functions needs to be represented by an XQuery map. For\nexample, you can use the following syntax to enable the dfcs option:"
    },
    {
      "title": "Custom fonts",
      "slug": "custom-fonts-d8b549dbec3b",
      "url": "https://documentation.fontoxml.com/latest/custom-fonts-d8b549dbec3b",
      "description": "Due to current limitations, custom fonts cannot be exported to DOCX format. The DOCX generated documents rely on system-installed fonts or embedded fonts supported directly within the document itself. As a result, custom web fonts or dynamically loaded fonts may not render correctly in exported DOCX files, and fallback fonts will be used instead."
    },
    {
      "title": "Upgrade from 8.13 to 8.14",
      "slug": "upgrade-from-8-13-to-8-14-f34046c3996a",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-13-to-8-14-f34046c3996a",
      "description": "The annotation model XQuery functions that users can create to render Review annotations in exported documents now receive the complete annotation (or reply) as a first parameter—instead of only the application-specific metadata. Please see the documentation here for more information."
    },
    {
      "title": "Fonto 7.10.1 (April 14, 2020)",
      "slug": "fonto-7-10-1-april-14-2020-5576ebd205de",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-10-1-april-14-2020-5576ebd205de",
      "description": "Resolved an issue in the quick navigation modal where users were allowed to Shift+Tab out of the modal into the document content."
    },
    {
      "title": "createInlineHierarchicalNumberingWidget",
      "slug": "createinlinehierarchicalnumberingwidget-595a41c3699b",
      "url": "https://documentation.fontoxml.com/latest/createinlinehierarchicalnumberingwidget-595a41c3699b",
      "description": "By default, the numbering is rest per document, but the\ncontainerSelector option can set a different scope."
    },
    {
      "title": "open-web-reference-modal-for-edit",
      "slug": "open-web-reference-modal-for-edit-a72833dcaf79",
      "url": "https://documentation.fontoxml.com/latest/open-web-reference-modal-for-edit-a72833dcaf79",
      "description": "The icon to show at the top of the modal. This should be one of the Font Awesome icons. Do not include the fa- prefix, just use the icon names as-is from the documentation."
    },
    {
      "title": "SidebarTabConfigOverride",
      "slug": "sidebartabconfigoverride-4e31064a7434",
      "url": "https://documentation.fontoxml.com/latest/sidebartabconfigoverride-4e31064a7434",
      "description": "The icon to use on the tab's button. This should be one of the\nFont Awesome\nicons. Do not include the fa- prefix, just use the icon names as-is from the\ndocumentation."
    },
    {
      "title": "Upgrade from 7.13 to 7.14",
      "slug": "upgrade-from-7-13-to-7-14-f6164d84641b",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-13-to-7-14-f6164d84641b",
      "description": "The unload-dita-document operation is the same as the unload-document operation."
    },
    {
      "title": "translateNamespacePrefixes",
      "slug": "translatenamespaceprefixes-ba3c84da9b9a",
      "url": "https://documentation.fontoxml.com/latest/translatenamespaceprefixes-ba3c84da9b9a",
      "description": "This can be used if a source of XML might not use the same namespace prefixes as\nthe documents edited by Fonto."
    },
    {
      "title": "Upgrade from 7.15 to 7.16",
      "slug": "upgrade-from-7-15-to-7-16-ee339c8c49b6",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-15-to-7-16-ee339c8c49b6",
      "description": "In preparation of the deprecation of the all-remote-document-ids-are-absolute configuration value, we've changed its default to true to prevent unnecessary CMS requests in most configurations. Please refer to the Upcoming removals 8.0 page for more details and check whether this change impacts your application."
    },
    {
      "title": "FontoXML 6.0.1 (January 13, 2016)",
      "slug": "fontoxml-6-0-1-january-13-2016-5a4fc8f10353",
      "url": "https://documentation.fontoxml.com/latest/fontoxml-6-0-1-january-13-2016-5a4fc8f10353",
      "description": "To improve responsiveness of the editor, the XML source view is no longer updated when the panel is closed. As generating this view can take some time for large documents, we now show a loading message while the source view is being prepared."
    },
    {
      "title": "fdt editor build",
      "slug": "fdt-editor-build-68e0a0733d33",
      "url": "https://documentation.fontoxml.com/latest/fdt-editor-build-68e0a0733d33",
      "description": "This creates a build of a Fonto Editor instance which can be used for production deployment, or can be served using the development server by running \"fdt editor run --dist\". See the documentation for help with creating a production build at https://documentation.fontoxml.com/latest/upgrade-instructions-53f5b02b6e48\n        "
    },
    {
      "title": "How to use environment variables for Fonto Content Quality",
      "slug": "using-environment-variables-ad59b0df456c",
      "url": "https://documentation.fontoxml.com/latest/using-environment-variables-ad59b0df456c",
      "description": "The documentation and analysis XSD will mention when environment variables are allowed to be used."
    },
    {
      "title": "MutationHookResult",
      "slug": "mutationhookresult-ac2a670738fb",
      "url": "https://documentation.fontoxml.com/latest/mutationhookresult-ac2a670738fb",
      "description": "Indicates the changes in the blueprint and/or selection should be applied to the\ndocument, provided the result is valid."
    },
    {
      "title": "NotificationOptions",
      "slug": "notificationoptions-c3098eab52ca",
      "url": "https://documentation.fontoxml.com/latest/notificationoptions-c3098eab52ca",
      "description": "The icon displayed in the notification. This should be one of the\nFont Awesome\nicons. Do not include the fa- prefix, just use the icon names\nas-is from the documentation."
    },
    {
      "title": "createIconWidget",
      "slug": "createiconwidget-f58e4c10c050",
      "url": "https://documentation.fontoxml.com/latest/createiconwidget-f58e4c10c050",
      "description": "The icon name to use. This should be one of the\n                  Font Awesome\n                  icons. Do not include the fa- prefix, just use the icon\n                  names as-is from the documentation."
    },
    {
      "title": "Why is typing so slow?!",
      "slug": "why-is-typing-so-slow-b16acff68c3c",
      "url": "https://documentation.fontoxml.com/latest/why-is-typing-so-slow-b16acff68c3c",
      "description": "When we load a huge document, we notice a significant slowdown in just about everything. Mainly typing gets slow, but any operation is slower. Can you tell us what's up? We attached the editor and a big document in which the slowdown is very noticable"
    },
    {
      "title": "configureAsInlineStructure",
      "slug": "configureasinlinestructure-cf73a5ad4c8b",
      "url": "https://documentation.fontoxml.com/latest/configureasinlinestructure-cf73a5ad4c8b",
      "description": "Elements configured as inline structure are not visible in the document\nthemselves. They are, like all ancestors of the elements that contains the\ncursor, included in the breadcrumb menu."
    },
    {
      "title": "fdt editor upgrade",
      "slug": "fdt-editor-upgrade-88df5b1458e5",
      "url": "https://documentation.fontoxml.com/latest/fdt-editor-upgrade-88df5b1458e5",
      "description": "See the documentation for help with upgrading a Fonto Editor instance at https://documentation.fontoxml.com/latest/upgrade-instructions-53f5b02b6e48\n        "
    },
    {
      "title": "CvkCreateInnerJsonMl",
      "slug": "cvkcreateinnerjsonml-f59b7ef0b602",
      "url": "https://documentation.fontoxml.com/latest/cvkcreateinnerjsonml-f59b7ef0b602",
      "description": "The renderer provides ways to render other nodes in your\ndocument inside of an object or widget."
    },
    {
      "title": "insertNodes",
      "slug": "insertnodes-79d4c4dbaef7",
      "url": "https://documentation.fontoxml.com/latest/insertnodes-79d4c4dbaef7",
      "description": "The highest parent under which the node should be inserted, or null to\n                             continue until the document level"
    },
    {
      "title": "registerReviewSidebarTab",
      "slug": "registerreviewsidebartab-70bbdff4ad81",
      "url": "https://documentation.fontoxml.com/latest/registerreviewsidebartab-70bbdff4ad81",
      "description": "Find and Replace panel; Used for\nsearching into the document and displaying/replacing the results."
    },
    {
      "title": "OrderingByAttributeWidgetOptions",
      "slug": "orderingbyattributewidgetoptions-f552ca7633b5",
      "url": "https://documentation.fontoxml.com/latest/orderingbyattributewidgetoptions-f552ca7633b5",
      "description": "This should be one of the\nFont Awesome\nicons. Do not include the fa- prefix, just use the icon names as-is from\nthe documentation."
    },
    {
      "title": "OverrideRange",
      "slug": "overriderange-ab46bed72fce",
      "url": "https://documentation.fontoxml.com/latest/overriderange-ab46bed72fce",
      "description": "The start container of the range. Should always be before the end container, in\ndocument order."
    },
    {
      "title": "Upgrade from 8.5.1 to 8.5.2",
      "slug": "upgrade-from-8-5-1-to-8-5-2-7c5613270c94",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-5-1-to-8-5-2-7c5613270c94",
      "description": "Besides that, the name of the query parameter has always been wrong. The name previously was context[editSessionToken]. That is now context with a JSON object as its value, having the editSessionToken as a property in that object. We have made that breaking change in 8.5.2. We have also updated the endpoint documentation of GET /document/revision to include the context object, something that was not there before."
    },
    {
      "title": "Fonto Content Quality 7.16.0",
      "slug": "fonto-content-quality-7-16-0-53df115492b3",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-7-16-0-53df115492b3",
      "description": "The Content Quality navigator now has a new 'skip uneditable documents' filter, which, when turned off, allows scanning for quality issues in content that is not editable."
    },
    {
      "title": "DitaCrossReferencePopover",
      "slug": "ditacrossreferencepopover-b294e07bab05",
      "url": "https://documentation.fontoxml.com/latest/ditacrossreferencepopover-b294e07bab05",
      "description": "configureAsInlineLink(sxModule, 'self::xref[@format=\"dita\"]', 'link', {\n    emptyElementPlaceholderText: 'type the link text',\n    popoverComponentName: 'DitaCrossReferencePopover',\n    popoverData: {\n        editOperationName: 'dita-reference-document-edit',\n        targetQuery: '@href'\n    },\n    referenceQuery: '@href'\n});"
    },
    {
      "title": "How to configure tables",
      "slug": "configure-tables-5933caf63fa8",
      "url": "https://documentation.fontoxml.com/latest/configure-tables-5933caf63fa8",
      "description": "To configure simpletable table elements, use the configureAsSimpletableTableElements function. The options object as second argument is not required. For a full list of available options, refer to the configureAsSimpletableTableElements documentation and to the DITA support add-on documentation."
    },
    {
      "title": "Context menu",
      "slug": "context-menu-51d4afe5a0e6",
      "url": "https://documentation.fontoxml.com/latest/context-menu-51d4afe5a0e6",
      "description": "These operations remove one or more elements from the document."
    },
    {
      "title": "unsafeWrapInSingleElement",
      "slug": "unsafewrapinsingleelement-eb5c5cdbddf8",
      "url": "https://documentation.fontoxml.com/latest/unsafewrapinsingleelement-eb5c5cdbddf8",
      "description": "The element / documentFragment to wrap under"
    },
    {
      "title": "open-web-reference-modal-for-insert",
      "slug": "open-web-reference-modal-for-insert-07f229b0f657",
      "url": "https://documentation.fontoxml.com/latest/open-web-reference-modal-for-insert-07f229b0f657",
      "description": "The icon to show at the top of the modal. This should be one of the Font Awesome icons. Do not include the fa- prefix, just use the icon names as-is from the documentation."
    },
    {
      "title": "Configure Fonto's out-of-the-box features",
      "slug": "configure-ecad8576c19a",
      "url": "https://documentation.fontoxml.com/latest/configure-ecad8576c19a",
      "description": "Configure element visualization and behavior using families. This allows parts of a document to be shown (or remain hidden), and determines the way the cursor and selection behaves around those elements."
    },
    {
      "title": "MutationHookConfig",
      "slug": "mutationhookconfig-341e93aee3a2",
      "url": "https://documentation.fontoxml.com/latest/mutationhookconfig-341e93aee3a2",
      "description": "When provided, the hook will only trigger when the result of this query changes\nfor any node matching the selector that remains part of a loaded document."
    },
    {
      "title": "How to configure elements",
      "slug": "elements-3ac02ec0c6c2",
      "url": "https://documentation.fontoxml.com/latest/elements-3ac02ec0c6c2",
      "description": "In our XML file the first element we encounter is &lt;recipe&gt;. For this element, we select the configureAsSheetFrame family. Sheet frames are meant for elements that represent a document or parts of several documents and they are displayed as a sheet of 'paper'."
    },
    {
      "title": "open-operations-browser-modal",
      "slug": "open-operations-browser-modal-6aeb94d72df3",
      "url": "https://documentation.fontoxml.com/latest/open-operations-browser-modal-6aeb94d72df3",
      "description": "The icon to show at the top of the modal. This should be one of the Font Awesome icons. Do not include the fa- prefix, just use the icon names as-is from the documentation."
    },
    {
      "title": "SelectFileButton",
      "slug": "selectfilebutton-5ff88de408f7",
      "url": "https://documentation.fontoxml.com/latest/selectfilebutton-5ff88de408f7",
      "description": "For more information about MIME types, check the MDN documentation"
    },
    {
      "title": "addDragAndDropOperation",
      "slug": "adddraganddropoperation-735fb8adb711",
      "url": "https://documentation.fontoxml.com/latest/adddraganddropoperation-735fb8adb711",
      "description": "{ name: 'move-hierarchy-node-in-dom', priority: 0 }, added by this package,\nuseful for single document editors"
    },
    {
      "title": "How to configure user profiles",
      "slug": "how-to-configure-user-profiles-aa4dd4b9c5c8",
      "url": "https://documentation.fontoxml.com/latest/how-to-configure-user-profiles-aa4dd4b9c5c8",
      "description": "User profiles contain additional information on users. This can, for example, include an avatar and a headline that can be used for roles and departments. By default, user profiles are displayed in Fonto Track Changes, Fonto Annotations, Fonto Document History and in Fonto Review in the fontoxml-review-reference-configuration."
    },
    {
      "title": "SpecialCharacterSetItem",
      "slug": "specialcharactersetitem-d16129d5f503",
      "url": "https://documentation.fontoxml.com/latest/specialcharactersetitem-d16129d5f503",
      "description": "Unicode code points to insert when the character is inserted into the document,\nin order, encoded as strings starting with U+ followed by the hexadecimal\nrepresentation of the code point."
    },
    {
      "title": "FDS Concepts",
      "slug": "fds-concepts-73c4c60aaf4f",
      "url": "https://documentation.fontoxml.com/latest/fds-concepts-73c4c60aaf4f",
      "description": "Focus management"
    },
    {
      "title": "Fonto Content Quality 1.0.0",
      "slug": "fonto-content-quality-1-0-0-b9ce00d34d1f",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-1-0-0-b9ce00d34d1f",
      "description": "Cannot show details of annotations which are shown in the content due to changes made to the document while the initial check is still in progress."
    },
    {
      "title": "How to create a schema bundle",
      "slug": "create-a-schema-bundle-d186eeb79200",
      "url": "https://documentation.fontoxml.com/latest/create-a-schema-bundle-d186eeb79200",
      "description": "The locations property is used to match a given XML document with the schema. The value for this property can be found on the xs:schemaLocation or xsi:noNamespaceSchemaLocation attributes of the root element on one of the files you intend to use with your schema - the documentation of SchemaLocationToSchemaExperienceResolver has more information on where the location may be matched with."
    },
    {
      "title": "open-default-special-character-dialog",
      "slug": "open-default-special-character-dialog-b1f9410fe443",
      "url": "https://documentation.fontoxml.com/latest/open-default-special-character-dialog-b1f9410fe443",
      "description": "This can be used to render certain unicode icons you use commonly in your publications with\nyour own custom (publication) font.\nThis is usually set when using a custom (publication) font for certain/all parts of your\ndocument in the editor (via the registerFontStack API and related fontStack CVK option)."
    },
    {
      "title": "scroll-node-into-view",
      "slug": "scroll-node-into-view-dd491b967f62",
      "url": "https://documentation.fontoxml.com/latest/scroll-node-into-view-dd491b967f62",
      "description": "The hierarchy node ID under which the node to be scrolled into view is rendered. This can be\nused to disambiguate cases where the hierarchy contains multiple references to the same\ndocument. If omitted, Fonto will use the sheet frame that most recently contained the cursor."
    },
    {
      "title": "Fonto Editor 7.15.3 (October 1, 2021)",
      "slug": "fonto-editor-7-15-3-october-1-2021-d5bb62a46c62",
      "url": "https://documentation.fontoxml.com/latest/fonto-editor-7-15-3-october-1-2021-d5bb62a46c62",
      "description": "The outputClass and clickOperation options for configureAsStructureViewItem now work correctly for both loaded and unloaded documents."
    },
    {
      "title": "editReviewSidebarTab",
      "slug": "editreviewsidebartab-90af7613cde7",
      "url": "https://documentation.fontoxml.com/latest/editreviewsidebartab-90af7613cde7",
      "description": "Find and Replace panel; Used for\nsearching into the document and displaying/replacing the results."
    },
    {
      "title": "How to configure elements for bidirectional content",
      "slug": "configure-elements-for-bidirectional-content-53097435422b",
      "url": "https://documentation.fontoxml.com/latest/configure-elements-for-bidirectional-content-53097435422b",
      "description": "Elements with a dir attribute will now be render their content according to the content direction set by the attribute value. This can be tested by manually setting a dir attribute on an element in a document and opening the document in the configured editor."
    },
    {
      "title": "Upgrade from 7.1 to 7.2",
      "slug": "upgrade-from-7-1-to-7-2-4d9470377bff",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-1-to-7-2-4d9470377bff",
      "description": "Opening sidebars by default when opening the editor previously required executing an operation (like ) after all documents loaded. This release offers the initial-editor-sidebar-tab-id configuration option as replacement, which is recommended over the previous approach."
    },
    {
      "title": "open-special-character-dialog",
      "slug": "open-special-character-dialog-da789acb6c3f",
      "url": "https://documentation.fontoxml.com/latest/open-special-character-dialog-da789acb6c3f",
      "description": "This can be used to render certain unicode icons you use commonly in your publications with\nyour own custom (publication) font.\nThis is usually set when using a custom (publication) font for certain/all parts of your\ndocument in the editor (via the registerFontStack API and related fontStack CVK option)."
    },
    {
      "title": "Upgrade from 6.7 to 6.8",
      "slug": "upgrade-from-6-7-to-6-8-06ae7526f239",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-7-to-6-8-06ae7526f239",
      "description": "The schemas are now served as separate JSON files. Some servers may require additional configuration to be able to serve these correctly. Please refer to the documentation for your server software for further details."
    },
    {
      "title": "ContentQualityAnnotationTypeConfiguration",
      "slug": "contentqualityannotationtypeconfiguration-2dabfc61da60",
      "url": "https://documentation.fontoxml.com/latest/contentqualityannotationtypeconfiguration-2dabfc61da60",
      "description": "The icon that will be used when rendering annotations of this type. This should\nbe one of the\nFont Awesome\nicons. Do not include the fa- prefix, just use the icon names as-is from the\ndocumentation."
    },
    {
      "title": "Fonto Review 7.9.0",
      "slug": "fonto-review-7-9-0-50e05e9c972b",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-7-9-0-50e05e9c972b",
      "description": "We have added a feature to place annotations on entire publications. These annotations are not related to any range in the document."
    },
    {
      "title": "editAnnotation",
      "slug": "editannotation-4052d7d9ce6a",
      "url": "https://documentation.fontoxml.com/latest/editannotation-4052d7d9ce6a",
      "description": "resolvedDocumentRevisionId"
    },
    {
      "title": "How to configure the Review content view",
      "slug": "fonto-review-extras-49de6e5cc842",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-extras-49de6e5cc842",
      "description": "Fonto Editor has the capability of adding widgets to the content. Widgets can contain operations that alter the content of the document. Documents loaded in Fonto Review are read-only, and can therefore not be changed. To make the review process smoother for end users, we recommend hiding the widgets that make edits to the document. For example, the element menu button."
    },
    {
      "title": "Upgrade from 8.14 to 8.15",
      "slug": "upgrade-from-8-14-to-8-15-bad5f45a3092",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-14-to-8-15-bad5f45a3092",
      "description": "When configuring the document hierarchy, users do not need to take fo:* nodes into consideration."
    },
    {
      "title": "UnicodeSymbol",
      "slug": "unicodesymbol-a5d22665132f",
      "url": "https://documentation.fontoxml.com/latest/unicodesymbol-a5d22665132f",
      "description": "This can be used to render certain unicode icons you use commonly in your\npublications with your own custom (publication) font. This is usually set when\nusing a custom (publication) font for certain/all parts of your document in the\neditor (via the registerFontStack API and related fontStack CVK option)."
    },
    {
      "title": "Mutation hooks",
      "slug": "mutation-hooks-3b01af6e7112",
      "url": "https://documentation.fontoxml.com/latest/mutation-hooks-3b01af6e7112",
      "description": "Full document searches: prevent requesting all descendants of a given node, try to avoid constructions like //* to search for all elements in a document. Try to use for example the addAttributeIndex when looking for an element with a given attribute value."
    },
    {
      "title": "How do I make dynamic markup labels!?",
      "slug": "how-do-i-make-dynamic-markup-labels-082e17fc02e4",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-make-dynamic-markup-labels-082e17fc02e4",
      "description": "Markup labels were actually one of the driving APIs for the XQExpression effort. One of the editors that we maintain ourselves is using a highly configurable schema: a meta-schema so to say. Instead of having all the elements in an XSD schema, the document defines which elements to use in a special XML document. Instead of using different elements names, a class attribute defines the semantic value of the elements. That's why the markup label of those elements is dynamic as well. An author is not interested they are marking something as a generic inline, they want to work with a contract names!"
    },
    {
      "title": "Forms",
      "slug": "forms-843b941ed7c5",
      "url": "https://documentation.fontoxml.com/latest/forms-843b941ed7c5",
      "description": "The main reason to use a Form component is to easily manage multiple related form fields as a single unit of data. This is usually best when the form should be submitted only when it's complete and has an explicit submit button to do so. This could be the case when the form is submitted to an external API."
    },
    {
      "title": "Fonto 7.7.1 (June 27, 2019)",
      "slug": "fonto-7-7-1-june-27-2019-4b0ef000c6f8",
      "url": "https://documentation.fontoxml.com/latest/fonto-7-7-1-june-27-2019-4b0ef000c6f8",
      "description": "This hotfix improves the robustness of IME input detection, fixing a few cases where input might arrive in the wrong order or leak into read-only parts of the document."
    },
    {
      "title": "Profiles",
      "slug": "profiles-7331e5ca2d78",
      "url": "https://documentation.fontoxml.com/latest/profiles-7331e5ca2d78",
      "description": "Retrieves all the profiles details for multiple identifiers. Fonto will request user details and avatars when the system loads with profiles present in the Fonto Annotations, Fonto Track Changes, Fonto Document History or Fonto Review systems."
    },
    {
      "title": "Fonto Content Quality 1.4.0",
      "slug": "fonto-content-quality-1-4-0-cc8577491826",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-1-4-0-cc8577491826",
      "description": "Improved sorting of content menu items to be in reverse document order."
    },
    {
      "title": "configureAsStructure",
      "slug": "configureasstructure-49e7150d33e2",
      "url": "https://documentation.fontoxml.com/latest/configureasstructure-49e7150d33e2",
      "description": "Elements configured as structure are not visible in the document themselves.\nThey are, like all ancestors of the elements that contains the cursor, included\nin the breadcrumb menu."
    },
    {
      "title": "Upgrade from 6.9 to 6.10",
      "slug": "upgrade-from-6-9-to-6-10-613323d98546",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-9-to-6-10-613323d98546",
      "description": "For individual control over text size and document width, use the set-content-view-document-width-to-* and set-content-view-text-size-to-* operations. For combined zooming, use the zoom-content-view-to-*-* operations. The wide-canvas-content-view-to-150%-text-size-not-150% operation provides a way to add a \"wide canvas\" option when using the zoom operations."
    },
    {
      "title": "Upgrade from 6.0 to 6.1",
      "slug": "upgrade-from-6-0-to-6-1-cdc7bc7ed4de",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-0-to-6-1-cdc7bc7ed4de",
      "description": "tasks(gulp, {\n\t// ...\n\tscope: {\n\t\tdocumentIds: ['test.ditamap']\n\t}\n\t// ...\n});\n\n\n{\n\t\"scope\": {\n\t\t\"documentIds\": [\n\t\t\t\"test.ditamap\"\n\t\t]\n\t}\n}"
    },
    {
      "title": "ReviewFilterFormComponentProps",
      "slug": "reviewfilterformcomponentprops-4d380ded49f4",
      "url": "https://documentation.fontoxml.com/latest/reviewfilterformcomponentprops-4d380ded49f4",
      "description": "Use in case you want to adapt your form to whether it is being shown in\nthe Fonto Editor, Fonto Document History or Fonto Review interface."
    },
    {
      "title": "Environment variables for Fonto Content Quality",
      "slug": "environment-variables-33fdc8855bc1",
      "url": "https://documentation.fontoxml.com/latest/environment-variables-33fdc8855bc1",
      "description": "For more details about our supported log providers, please consult the Application logs documentation."
    },
    {
      "title": "fdt editor schema compile <input>",
      "slug": "fdt-editor-schema-compile-input-9401ae3370c5",
      "url": "https://documentation.fontoxml.com/latest/fdt-editor-schema-compile-input-9401ae3370c5",
      "description": "See the documentation for help with compiling a schema at https://documentation.fontoxml.com/latest/create-a-schema-bundle-d186eeb79200\n        "
    },
    {
      "title": "Fonto Review configuration",
      "slug": "fonto-review-configuration-1df1248d5852",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-configuration-1df1248d5852",
      "description": "A Fonto Review front-end configuration roughly consists of three parts: annotations, navigators, and filters. Annotations are, technically speaking, ranges in an XML document with some (meta)data associated with them. Check out our guide on configuring an annotation type for Fonto Review to configure your own annotation type."
    },
    {
      "title": "MathML support",
      "slug": "mathml-support-215855ecb95b",
      "url": "https://documentation.fontoxml.com/latest/mathml-support-215855ecb95b",
      "description": "MathML can be edited using the mathml-edit or open-mathml-editor operations. This functionality is provided by the WIRIS MathType editor. Please refer to its documentation for a list of supported MathML features."
    },
    {
      "title": "Annotators",
      "slug": "annotators-1d6f848be2df",
      "url": "https://documentation.fontoxml.com/latest/annotators-1d6f848be2df",
      "description": "Every annotator has its own configuration options. Please find the full list of available annotators, and what they do, in our API documentation."
    },
    {
      "title": "Content Quality annotations",
      "slug": "content-quality-annotations-6506158c076e",
      "url": "https://documentation.fontoxml.com/latest/content-quality-annotations-6506158c076e",
      "description": "The value of the tag is an IETF language as described in the BCP 47 document series."
    },
    {
      "title": "ReviewFilterFormSummaryComponentProps",
      "slug": "reviewfilterformsummarycomponentprops-b5401af6f3cb",
      "url": "https://documentation.fontoxml.com/latest/reviewfilterformsummarycomponentprops-b5401af6f3cb",
      "description": "Use in case you want to adapt your summary to whether it is being shown\nin the Fonto Editor, Fonto Document History or Fonto Review interface."
    },
    {
      "title": "Fonto Content Quality 7.8.0",
      "slug": "fonto-content-quality-7-8-0-edcf98ec104d",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-7-8-0-edcf98ec104d",
      "description": "The HttpApiAnnotator can now be configured with an experimental flag that appends to documentId to the endpoint as a query string parameter."
    },
    {
      "title": "Custom footnote implementation",
      "slug": "custom-footnote-implementation-781da642f3f7",
      "url": "https://documentation.fontoxml.com/latest/custom-footnote-implementation-781da642f3f7",
      "description": "{\n\t\"insert-xref[@type=fn]\": {\n\t\t\"label\": \"t__Link to an existing footnote\",\n\t\t\"icon\": \"link\",\n\t\t\"steps\": [\n\t\t\t{\n\t\t\t\t\"type\": \"transform/setContextNodeIdToSelectionAncestor\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"selectionAncestorNodeSpec\": \"self::table or self::rootElement\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"operation/open-nodes-browser-modal\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"linkableElementsQuery\": \"x__if ($data?contextNode/self::table) then concat('//fn[@id and ancestor::table[1][@id = \\\"', $data?contextNode/@id, '\\\"]]') else '//fn[@id and not(ancestor::table)]'\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"transform/setRemoteDocumentIdFromDocumentId\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"documentId\": \"{{documentId}}\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"operation/vertical-insert\",\n\t\t\t\t\"data\": {\n\t\t\t\t\t\"childNodeStructure\": [\n\t\t\t\t\t\t\"xref\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"href\": \"x__concat($data?remoteDocumentId,'#', $data?node/ancestor::rootElement[1]/@id, '/', $data?node/@id)\",\n\t\t\t\t\t\t\t\"type\": \"fn\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n}"
    },
    {
      "title": "Fonto Review 7.11.0",
      "slug": "fonto-review-7-11-0-a899b8d706e3",
      "url": "https://documentation.fontoxml.com/latest/fonto-review-7-11-0-a899b8d706e3",
      "description": "Of course we took a lot of edge cases into account, where the document may not be editable, or the text the proposal was originally placed on changed. We inform the user about these events and always offer the option to manually merge the proposed text. We have also improved the visualization of the diff, especially when proposing larger changes to the text."
    },
    {
      "title": "Upgrade from 8.15 to 8.16",
      "slug": "upgrade-from-8-15-to-8-16-2fc1af97333a",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-15-to-8-16-2fc1af97333a",
      "description": "8.16 introduces the Document History Review Integration add-on, letting users view and create annotations directly in the Document History view."
    },
    {
      "title": "fdt editor init <output>",
      "slug": "fdt-editor-init-output-7ba7ea318dde",
      "url": "https://documentation.fontoxml.com/latest/fdt-editor-init-output-7ba7ea318dde",
      "description": "See the documentation for help with creating a new Fonto Editor instance at https://documentation.fontoxml.com/latest/create-a-base-editor-c34231080298\n        "
    },
    {
      "title": "Upcoming removals 8.18",
      "slug": "upcoming-removals-8-18-0a649c945792",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-8-18-0a649c945792",
      "description": "Fonto Review back-end schema configuration using the SchemaExperience__BlockTest and SchemaExperience__ObjectTest environment variables must be replaced with sx.xml based back-end schema experience configuration. This brings the back-end schema configuration for Fonto Review in line with Fonto Document History and Fonto Output."
    },
    {
      "title": "SymbolsGrid",
      "slug": "symbolsgrid-71bec01239e7",
      "url": "https://documentation.fontoxml.com/latest/symbolsgrid-71bec01239e7",
      "description": "This can be used to render certain unicode icons you use commonly in your\npublications with your own custom (publication) font. This is usually set when\nusing a custom (publication) font for certain/all parts of your document in the\neditor (via the registerFontStack API and related fontStack CVK option)."
    },
    {
      "title": "evaluateXPathToArray",
      "slug": "evaluatexpathtoarray-c7094f379fd2",
      "url": "https://documentation.fontoxml.com/latest/evaluatexpathtoarray-c7094f379fd2",
      "description": "You can also use functions defined in XQuery modules. Refer to the concept\npage of XQuery for details. While XQuery update facility is allowed, mutating\nexisting nodes is not allowed. Use the execute-update-script operation\nto mutate the document using XQUF."
    },
    {
      "title": "XPathAnnotator",
      "slug": "xpathannotator-f3b93cb97c99",
      "url": "https://documentation.fontoxml.com/latest/xpathannotator-f3b93cb97c99",
      "description": "If annotating PI's (processing instructions), make sure they have a form of visualization in the document so FCQ is able to highlight that particular node."
    },
    {
      "title": "Stencil",
      "slug": "stencil-ccf7eb1fa3ca",
      "url": "https://documentation.fontoxml.com/latest/stencil-ccf7eb1fa3ca",
      "description": "documentNode"
    },
    {
      "title": "fdt editor add-ons",
      "slug": "fdt-editor-add-ons-641e1c239b73",
      "url": "https://documentation.fontoxml.com/latest/fdt-editor-add-ons-641e1c239b73",
      "description": "See the documentation for help with add-ons of a Fonto Editor instance at https://documentation.fontoxml.com/latest/add-on-56fcb6851ff4\n        "
    },
    {
      "title": "Upgrade from 6.10 to 6.11",
      "slug": "upgrade-from-6-10-to-6-11-133968864abb",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-10-to-6-11-133968864abb",
      "description": "Please also read the documentation of selector performance for more background on selector optimization."
    },
    {
      "title": "Known tools issues",
      "slug": "known-tools-issues-0e55425358ab",
      "url": "https://documentation.fontoxml.com/latest/known-tools-issues-0e55425358ab",
      "description": "Use --non-interactive and when initializing or upgrading an editor. The downside is that you would need to know the add-on names beforehand. See the add-ons API documentation for a list of names."
    },
    {
      "title": "RecentSymbolsGrid",
      "slug": "recentsymbolsgrid-6a876877a3cb",
      "url": "https://documentation.fontoxml.com/latest/recentsymbolsgrid-6a876877a3cb",
      "description": "This can be used to render certain unicode icons you use commonly in your\npublications with your own custom (publication) font. This is usually set when\nusing a custom (publication) font for certain/all parts of your document in the\neditor (via the registerFontStack API and related fontStack CVK option)."
    },
    {
      "title": "SpellCheckerConfiguration",
      "slug": "spellcheckerconfiguration-5d9709b00674",
      "url": "https://documentation.fontoxml.com/latest/spellcheckerconfiguration-5d9709b00674",
      "description": "Whether the spell checker is enabled on start-up. Be careful enabling\nthis with large documents, as spell checking may negatively impact\napplication start-up performance."
    },
    {
      "title": "Operations browser library",
      "slug": "operations-browser-library-f69282987eb9",
      "url": "https://documentation.fontoxml.com/latest/operations-browser-library-f69282987eb9",
      "description": "This package can serve as a base for custom versions of the operations browser. It can be forked by checking it out directly in the packages folder of an editor. When making a fork, consider keeping it up-to-date with new Fonto Editor versions when they release. For more information, see our documentation regarding open-source add-ons."
    },
    {
      "title": "configureAsDefinitionsTableRow",
      "slug": "configureasdefinitionstablerow-7bcb70afda85",
      "url": "https://documentation.fontoxml.com/latest/configureasdefinitionstablerow-7bcb70afda85",
      "description": " \":insert-definitions-row-on-tab\": {\n     \"__documentation\": {\n         \"summary\": \"Inserts a new row to the current definition table with tab.\",\n         \"description\": [\n             \"Use this operation to insert a new definitions row when the cursor is located \",\n             \"in the second cell of the last row of a definition table.\"\n         ]\n     },\n     \"keyBinding\": \"tab\",\n     \"keyBindingDisabled\": true,\n     \"steps\": [\n         {\n             \"type\": \"operation/your-dlentry-insertion-below-operation\",\n             \"data\": {\n                 \"contextNodeId\": \"x__import module namespace app = 'http://www.fontoxml.com/functions/app'; app:get-last-dlentry()\"\n             }\n         }\n     ]\n }"
    },
    {
      "title": "Upgrade from 7.16 to 7.17",
      "slug": "upgrade-from-7-16-to-7-17-4bdb4015c725",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-7-16-to-7-17-4bdb4015c725",
      "description": "Please refer to the updated DefaultTextContainerConfiguration documentation for more information on the different properties of this object."
    },
    {
      "title": "Fonto: Why & How: How do I generate IDs in a more predictable way?!",
      "slug": "how-do-i-generate-ids-in-a-more-predictable-way-a725b497aa49",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-generate-ids-in-a-more-predictable-way-a725b497aa49",
      "description": "We are editing XML documents that have IDs. The standard UUIDs that get generated are okay, but it would be better if we can generate IDs that conform to our customer's ID format."
    },
    {
      "title": "Get started with Fonto Content Quality",
      "slug": "fonto-content-quality-21845e46ef2c",
      "url": "https://documentation.fontoxml.com/latest/fonto-content-quality-21845e46ef2c",
      "description": "For certain assignments it may be necessary to redact some Personal Identifiable Information (PII) contained in the content. Fonto (semi) automatically, detects, redacts and scrubs PII from your documents."
    },
    {
      "title": "UIColor",
      "slug": "uicolor-afdf30d7ec1c",
      "url": "https://documentation.fontoxml.com/latest/uicolor-afdf30d7ec1c",
      "description": "\"document-history-body-background\""
    },
    {
      "title": "Accessibility",
      "slug": "accessibility-efd353d4d54c",
      "url": "https://documentation.fontoxml.com/latest/accessibility-efd353d4d54c",
      "description": "One component that can be used in multiple ways is Chip. We've added the ariaRole and ariaLabel props and will by default set ariaRole=\"button\" if the Chip has the onClick prop set. In some cases, you may want to use Chips to convey a document status. In this case you'll want to configure ariaRole as \"status\"."
    },
    {
      "title": "Upgrade from 8.6 to 8.7",
      "slug": "upgrade-from-8-6-to-8-7-a66fba9e0dec",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-6-to-8-7-a66fba9e0dec",
      "description": "We've also removed an unused query parameter from the open-create-document-form-modal and open-open-or-create-document-browser-modal operations provided by that package."
    },
    {
      "title": "registerNodeStatus",
      "slug": "registernodestatus-dc8b1cd71d0e",
      "url": "https://documentation.fontoxml.com/latest/registernodestatus-dc8b1cd71d0e",
      "description": "// The simplest option is to only specify a label to use with a certain ID.\nregisterNodeStatus('needs-review', t('Review'));\n\n// Or you can customize the default status badge component with some props:\nregisterNodeStatus('needs-review', t('Review'), {\n    componentProps: {\n        backgroundColor: 'state-message-error-color',\n        clickOperation: 'scroll-node-into-view',\n        condensedLabel: 'R',\n        foregroundColor: 'text-color',\n        icon: 'gem',\n        label: t('Review'),\n        tooltipContent: t('This document needs review.'),\n    }\n});"
    },
    {
      "title": "How to configure title queries for bidirectional content",
      "slug": "configure-title-queries-for-bidirectional-content-e5db2f9bc42e",
      "url": "https://documentation.fontoxml.com/latest/configure-title-queries-for-bidirectional-content-e5db2f9bc42e",
      "description": "In some cases, the title query returns a title which is made from a few different bits of content. For example, a number generated by document numbering, a hyphen, and the actual title content. In this case, it is unclear what the content direction of the full title is. The titleDirectionQuery CVK option can be used to configure a query which will return the content direction of the full title to solve this problem."
    },
    {
      "title": "Upgrade from 8.10 to 8.11",
      "slug": "upgrade-from-8-10-to-8-11-9b18da204cdf",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-8-10-to-8-11-9b18da204cdf",
      "description": "Note that future changes will be based on the same pattern to use undefined instead of null. Please always follow the types as stated in the documentation for any API, and change your code to use appropriate values. If you have not done so already, we recommend configuring your editor to use TypeScript to detect any issues with your use of these components or any other APIs."
    },
    {
      "title": "ReturnTypes",
      "slug": "returntypes-471cc6286832",
      "url": "https://documentation.fontoxml.com/latest/returntypes-471cc6286832",
      "description": "Resolve to all nodes the XPath resolves to. Returns nodes in the order the XPath\nwould. Meaning (//a, //b) resolves to all 'A' nodes, followed by all 'B' nodes.\n//*[self::a or self::b] resolves to 'A' and 'B' nodes in document order."
    },
    {
      "title": "Upgrade from 6.6 to 6.7",
      "slug": "upgrade-from-6-6-to-6-7-c19254ce8c3e",
      "url": "https://documentation.fontoxml.com/latest/upgrade-from-6-6-to-6-7-c19254ce8c3e",
      "description": "Test the new changes by loading documents with and without titles."
    },
    {
      "title": "Known browser issues",
      "slug": "known-browser-issues-209d85acf910",
      "url": "https://documentation.fontoxml.com/latest/known-browser-issues-209d85acf910",
      "description": "Note: Fonto Editor provides built-in document zoom options that you could configure and offer to your users if you like."
    },
    {
      "title": "AsyncSchemaLocationToSchemaExperienceResolverRegistrationApi",
      "slug": "asyncschemalocationtoschemaexperienceresolverregistrationapi-391a4c9c87c6",
      "url": "https://documentation.fontoxml.com/latest/asyncschemalocationtoschemaexperienceresolverregistrationapi-391a4c9c87c6",
      "description": "Schema locations on which to apply the schema experience. See SchemaLocationToSchemaExperienceResolver for information on how documents\n                         are matched against schema locations."
    },
    {
      "title": "How to configure a table toolbar",
      "slug": "table-toolbar-5604bf0609b5",
      "url": "https://documentation.fontoxml.com/latest/table-toolbar-5604bf0609b5",
      "description": "As an example, we will add a button to remove the table containing the cursor from the document. Additionally, we do not want to show the operation's default label. In order to add this button, what we need are:"
    },
    {
      "title": "ReviewCardContentComponentProps",
      "slug": "reviewcardcontentcomponentprops-f3b4f7f130c5",
      "url": "https://documentation.fontoxml.com/latest/reviewcardcontentcomponentprops-f3b4f7f130c5",
      "description": "This opens a modal with the revision of the document when the current\nannotation was created and a card for the annotation in its current state\nwith its current data."
    },
    {
      "title": "How to customize the masthead",
      "slug": "masthead-76dec04281f6",
      "url": "https://documentation.fontoxml.com/latest/masthead-76dec04281f6",
      "description": "You can add any amount of toolbar tabs by using the tabs property on FxEditorMasthead. Check out the API documentation of that component for all the information accepted in tabs!"
    },
    {
      "title": "Configure lists in Fonto Output",
      "slug": "configure-lists-2dbdd7820a40",
      "url": "https://documentation.fontoxml.com/latest/configure-lists-2dbdd7820a40",
      "description": "MS Word does not support both marker alignment. Generating a document that uses this setting may result in loss of content or incorrect formatting."
    },
    {
      "title": "My button is disabled?! Attributes in operations",
      "slug": "my-button-is-disabled-attributes-in-operations-7bb9a733c602",
      "url": "https://documentation.fontoxml.com/latest/my-button-is-disabled-attributes-in-operations-7bb9a733c602",
      "description": "$ fdt element link\n  fdt element &lt;element&gt;  \n  Looking up schemas... (27ms)\n  Reading from my-sx-shell  \n  Found 1 element definitions for element \"link\" across 703 elements.  \n\n  Definition 1  \n    Element name   link\n    Namespace URI  http://www.example.com/\n    Documentation  -\n    Contents       Text and elements (mixed)\n    Contained by   166 unique nodes (23.6%)\n    Contains       98 unique nodes (13.9%)\n    Attributes     30 unique attributes\n    Default class  -\n\n    Contained by  \n    ... &lt;omitted for brevity&gt; ...\n\n    Attributes  \n    class, href*, role, ... &lt;omitted for brevity&gt; ... "
    },
    {
      "title": "How to add a custom Content Quality structure check",
      "slug": "content-quality-structure-checks-f64131f7f542",
      "url": "https://documentation.fontoxml.com/latest/content-quality-structure-checks-f64131f7f542",
      "description": "If you want to target an element configured with the sheet frame (configureAsSheetFrame) family that uses a sheet frame header, you will need to add ContentQualityStructureCheckWidget to your sheet frame header. We recommend adding it to your FxSheetFrameHeaderActionArea, left adjacent to your FxDocumentContextualOperationsWidget, if used."
    },
    {
      "title": "How do I indent my content?",
      "slug": "how-do-i-indent-my-content-c7915a1d7846",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-indent-my-content-c7915a1d7846",
      "description": "We would like to reproduce that in our editor. Could you point us to the documentation on how we can do this ourselves? We'd like to make the following:"
    },
    {
      "title": "Upcoming removals 8.8",
      "slug": "upcoming-removals-8-8-2c1572f75505",
      "url": "https://documentation.fontoxml.com/latest/upcoming-removals-8-8-2c1572f75505",
      "description": "In the 8.0 release we optimized Fonto Editor's use of screen estate, which included moving the outline to the left for improved usability and decreasing the unused empty space around documents in general. As a result, this left the blockOutsideBefore widget area on any elements configured with the configureAsSheetFrame family too narrow to usefully hold any widgets. We are therefore deprecating this area on sheet frames."
    },
    {
      "title": "How do I customize enter behavior?!",
      "slug": "how-do-i-customize-enter-behavior-feb5a755cca1",
      "url": "https://documentation.fontoxml.com/latest/how-do-i-customize-enter-behavior-feb5a755cca1",
      "description": "addTransform('disable-if-not-at-end-of-intermediate', (stepData) =&gt; {\n    const selectionPosition = {container: selectionManager.getEndContainer(), offset: selectionManager.getEndOffset()};\n    if (domInfo.isTextNode(selectionPosition.container)) {\n        // If we are in a textnode, but not at the end, we are disabled!\n        if (readOnlyBlueprint.getData(selectionPosition.container).length !== selectionPosition.offset) {\n            stepData.operationState = {enabled: false};\n            return stepData;\n\n        }\n        selectionPosition.offset = blueprintQuery.getParentChildIndex(readOnlyBlueprint, selectionPosition.container);\n        selectionPosition.container = readOnlyBlueprint.getParentNode(selectionPosition.container);\n    }\n    while (!domInfo.isDocument(selectionPosition.container)) {\n        if (domInfo.isElement(selectionPosition.container, 'intermediate')) {\n            // If we are the `intermediate`, we are done with the transform and we are at the end\n            return stepData;\n        }\n        selectionPosition.offset = blueprintQuery.getParentChildIndex(readOnlyBlueprint, selectionPosition.container);\n        selectionPosition.container = readOnlyBlueprint.getParentNode(selectionPosition.container);\n\n        if ((selectionPosition.container as FontoElementNode&lt;'readable'&gt;).childNodes.length !== selectionPosition.offset) {\n            stepData.operationState = {enabled: false};\n            return stepData;\n        }\n    }\n\n    // If we got to here, we are all the way to the document, meaning we are not at the end of an 'intermediate'\n    stepData.operationState = {enabled: false};\n    return stepData;\n});"
    },
    {
      "title": "Corporate Proxies and VPNs",
      "slug": "corporate-proxies-and-vpns-d010b9ed2b82",
      "url": "https://documentation.fontoxml.com/latest/corporate-proxies-and-vpns-d010b9ed2b82",
      "description": "Required for downloading Fonto Document History container images."
    },
    {
      "title": "How to configure custom table definitions",
      "slug": "custom-table-definition-00bd421c5be8",
      "url": "https://documentation.fontoxml.com/latest/custom-table-definition-00bd421c5be8",
      "description": "Create aliases for all elements to be used in XPath queries to increase readability of those XPath queries. This is especially useful when your table definition should support tables with a namespace different from the namespace of the document."
    },
    {
      "title": "addExternalValue",
      "slug": "addexternalvalue-415f52828380",
      "url": "https://documentation.fontoxml.com/latest/addexternalvalue-415f52828380",
      "description": "In complex cases where you need to set external data based on XML nodes (e.g.\nretrieving data from your CMS based on the elements that refer to it in a loaded\ndocument) please contact our support\nteam."
    },
    {
      "title": "How to add a custom Content Quality annotation",
      "slug": "content-quality-annotation-types-1a6d0e512e95",
      "url": "https://documentation.fontoxml.com/latest/content-quality-annotation-types-1a6d0e512e95",
      "description": "You have configured Fonto Content Quality to suggest synonyms using a DictionaryAnnotator. See the DictionaryAnnotator documentation on how to create more advanced implementations using custom dictionaries."
    },
    {
      "title": "XQuery",
      "slug": "xquery-adb3122a8307",
      "url": "https://documentation.fontoxml.com/latest/xquery-adb3122a8307",
      "description": "The Editor sees these processing instructions as selection markers. They are not added to your document. After setting the selection the editor immediately removes them."
    },
    {
      "title": "TableDefinitionProperties",
      "slug": "tabledefinitionproperties-b9204155103b",
      "url": "https://documentation.fontoxml.com/latest/tabledefinitionproperties-b9204155103b",
      "description": "FontoDocumentNode"
    }
  ]
}