403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/bbcode/model/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/bbcode/model/dist/model.bundle.js.map
{"version":3,"file":"model.bundle.js","sources":["../../shared/src/get-by-index.js","../src/nodes/node.js","../src/nodes/element-node.js","../src/nodes/root-node.js","../src/nodes/fragment-node.js","../src/nodes/text-node.js","../src/nodes/new-line-node.js","../src/nodes/tab-node.js","../src/scheme/node-schemes/node-scheme.js","../src/scheme/node-schemes/tag-scheme.js","../src/scheme/bbcode-scheme.js","../src/scheme/node-schemes/text-scheme.js","../src/scheme/node-schemes/new-line-scheme.js","../src/scheme/node-schemes/tab-scheme.js","../src/scheme/default-bbcode-scheme.js"],"sourcesContent":["import { Type } from 'main.core';\n\nexport function getByIndex<T>(array: Array<T>, index: number): ?T\n{\n\tif (!Type.isArray(array))\n\t{\n\t\tthrow new TypeError('array is not a array');\n\t}\n\n\tif (!Type.isInteger(index))\n\t{\n\t\tthrow new TypeError('index is not a integer');\n\t}\n\n\tconst preparedIndex = index < 0 ? array.length + index : index;\n\n\treturn array[preparedIndex];\n}\n","import { Type } from 'main.core';\nimport type { BBCodeEncoder } from 'ui.bbcode.encoder';\nimport { getByIndex } from '../../../shared';\nimport { typeof BBCodeElementNode } from './element-node';\nimport { typeof BBCodeTextNode } from './text-node';\nimport { typeof BBCodeNewLineNode } from './new-line-node';\nimport { typeof BBCodeTabNode } from './tab-node';\nimport { typeof BBCodeRootNode } from './root-node';\nimport { typeof BBCodeFragmentNode } from './fragment-node';\nimport { typeof BBCodeScheme } from '../scheme/bbcode-scheme';\nimport { type BBCodeNodeScheme } from '../scheme/node-schemes/node-scheme';\n\nexport type BBCodeSpecialCharNode = BBCodeNewLineNode | BBCodeTabNode;\nexport type BBCodeContentNode = BBCodeElementNode | BBCodeTextNode | BBCodeSpecialCharNode;\nexport type BBCodeParentNode = BBCodeRootNode | BBCodeElementNode | BBCodeFragmentNode;\n\nexport type BBCodeNodeOptions = {\n\tname?: string,\n\tparent?: BBCodeParentNode | null,\n\tchildren?: Array<BBCodeContentNode | BBCodeFragmentNode>,\n\tscheme: BBCodeScheme,\n};\n\nexport type SerializedBBCodeNode = {\n\tname: string,\n\tchildren: Array<SerializedBBCodeNode>,\n};\n\ntype PrivateMapKey = BBCodeNode | BBCodeContentNode | BBCodeRootNode | BBCodeFragmentNode;\ntype PrivateStorage = {[key: string]: any};\n\nexport const privateMap: WeakMap<PrivateMapKey, PrivateStorage> = new WeakMap();\nexport const nameSymbol: Symbol = Symbol('name');\n\nexport class BBCodeNode\n{\n\t[nameSymbol]: string = '#unknown';\n\tchildren: Array<BBCodeContentNode | BBCodeFragmentNode> = [];\n\n\tconstructor(options: BBCodeNodeOptions = {})\n\t{\n\t\tprivateMap.set(this, {\n\t\t\tdelayedChildren: [],\n\t\t});\n\n\t\tthis.setName(options.name);\n\t\tprivateMap.get(this).scheme = options.scheme;\n\t\tthis.setParent(options.parent);\n\t\tthis.setChildren(options.children);\n\t}\n\n\tstatic get ELEMENT_NODE(): number\n\t{\n\t\treturn 1;\n\t}\n\n\tstatic get TEXT_NODE(): number\n\t{\n\t\treturn 2;\n\t}\n\n\tstatic get ROOT_NODE(): number\n\t{\n\t\treturn 3;\n\t}\n\n\tstatic get FRAGMENT_NODE(): number\n\t{\n\t\treturn 4;\n\t}\n\n\tstatic freezeProperty(node: BBCodeNode, property: string, value: any, enumerable: boolean = true)\n\t{\n\t\tObject.defineProperty(node, property, {\n\t\t\tvalue,\n\t\t\twritable: false,\n\t\t\tconfigurable: false,\n\t\t\tenumerable,\n\t\t});\n\t}\n\n\tstatic makeNonEnumerableProperty(node: BBCodeNode, property: string)\n\t{\n\t\tObject.defineProperty(node, property, {\n\t\t\twritable: false,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: false,\n\t\t});\n\t}\n\n\tstatic flattenChildren(children: Array<BBCodeContentNode | BBCodeFragmentNode>): Array<BBCodeContentNode>\n\t{\n\t\tif (Type.isArrayFilled(children))\n\t\t{\n\t\t\treturn children.flatMap((node: BBCodeContentNode | BBCodeFragmentNode) => {\n\t\t\t\tif (node.getType() === BBCodeNode.FRAGMENT_NODE)\n\t\t\t\t{\n\t\t\t\t\treturn node.getChildren();\n\t\t\t\t}\n\n\t\t\t\treturn node;\n\t\t\t});\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tsetScheme(scheme: BBCodeScheme, onUnknown: (node: BBCodeContentNode) => any)\n\t{\n\t\tprivateMap.get(this).scheme = scheme;\n\t}\n\n\tgetScheme(): BBCodeScheme\n\t{\n\t\treturn privateMap.get(this).scheme;\n\t}\n\n\tgetTagScheme(): BBCodeNodeScheme\n\t{\n\t\treturn this.getScheme().getTagScheme(this.getName());\n\t}\n\n\tgetEncoder(): BBCodeEncoder\n\t{\n\t\treturn this.getScheme().getEncoder();\n\t}\n\n\tprepareCase(value: string): string\n\t{\n\t\tconst scheme: BBCodeScheme = this.getScheme();\n\t\tconst currentCase = scheme.getOutputTagCase();\n\t\tif (currentCase === 'upper')\n\t\t{\n\t\t\treturn value.toUpperCase();\n\t\t}\n\n\t\treturn value.toLowerCase();\n\t}\n\n\tsetName(name: string)\n\t{\n\t\tif (Type.isString(name))\n\t\t{\n\t\t\tthis[nameSymbol] = name.toLowerCase();\n\t\t}\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this[nameSymbol];\n\t}\n\n\tgetDisplayedName(): string\n\t{\n\t\treturn this.prepareCase(this.getName());\n\t}\n\n\tsetParent(parent: BBCodeParentNode | null = null)\n\t{\n\t\tconst mounted = !this.hasParent() && parent;\n\t\tprivateMap.get(this).parent = parent;\n\n\t\tif (mounted)\n\t\t{\n\t\t\tthis.onNodeDidMount();\n\t\t}\n\t}\n\n\tgetParent(): BBCodeParentNode | null\n\t{\n\t\treturn privateMap.get(this).parent;\n\t}\n\n\tgetType(): number\n\t{\n\t\treturn privateMap.get(this).type;\n\t}\n\n\thasParent(): boolean\n\t{\n\t\treturn Boolean(privateMap.get(this).parent);\n\t}\n\n\tremove()\n\t{\n\t\tif (this.hasParent())\n\t\t{\n\t\t\tthis.getParent().removeChild(this);\n\t\t}\n\t}\n\n\tsetChildren(children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tif (Type.isArray(children))\n\t\t{\n\t\t\tthis.children = [];\n\t\t\tthis.appendChild(...children);\n\t\t}\n\t}\n\n\tgetChildren(): Array<BBCodeContentNode>\n\t{\n\t\treturn [...this.children];\n\t}\n\n\tgetLastChild(): ?BBCodeContentNode\n\t{\n\t\treturn getByIndex(this.getChildren(), -1);\n\t}\n\n\tgetLastChildOfType(type: number): ?BBCodeContentNode\n\t{\n\t\treturn this.getChildren().reverse().find((node: BBCodeContentNode) => {\n\t\t\treturn node.getType() === type;\n\t\t});\n\t}\n\n\tgetLastChildOfName(name: string): ?BBCodeContentNode\n\t{\n\t\treturn this.getChildren().reverse().find((node: BBCodeContentNode) => {\n\t\t\treturn node.getType() === BBCodeNode.ELEMENT_NODE && node.getName() === name;\n\t\t});\n\t}\n\n\tgetFirstChild(): ?BBCodeContentNode\n\t{\n\t\treturn getByIndex(this.getChildren(), 0);\n\t}\n\n\tgetFirstChildOfType(type: number): ?BBCodeContentNode\n\t{\n\t\treturn this.getChildren().find((node: BBCodeContentNode) => {\n\t\t\treturn node.getType() === type;\n\t\t});\n\t}\n\n\tgetFirstChildOfName(name: string): ?BBCodeContentNode\n\t{\n\t\treturn this.getChildren().find((node: BBCodeContentNode) => {\n\t\t\treturn node.getType() === BBCodeNode.ELEMENT_NODE && node.getName() === name;\n\t\t});\n\t}\n\n\tgetPreviewsSibling(): ?BBCodeContentNode\n\t{\n\t\tif (this.hasParent())\n\t\t{\n\t\t\tconst parentChildren: Array<BBCodeContentNode> = this.getParent().getChildren();\n\t\t\tconst currentIndex: number = parentChildren.indexOf(this);\n\t\t\tif (currentIndex > 0)\n\t\t\t{\n\t\t\t\treturn getByIndex(parentChildren, currentIndex - 1);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetPreviewsSiblings(): ?Array<BBCodeContentNode>\n\t{\n\t\tif (this.hasParent())\n\t\t{\n\t\t\tconst parentChildren: Array<BBCodeContentNode> = this.getParent().getChildren();\n\t\t\tconst currentIndex: number = parentChildren.indexOf(this);\n\n\t\t\treturn parentChildren.filter((child: BBCodeContentNode, index) => {\n\t\t\t\treturn index < currentIndex;\n\t\t\t});\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetNextSibling(): ?BBCodeContentNode\n\t{\n\t\tif (this.hasParent())\n\t\t{\n\t\t\tconst parentChildren: Array<BBCodeContentNode> = this.getParent().getChildren();\n\t\t\tconst currentIndex: number = parentChildren.indexOf(this);\n\t\t\tif (currentIndex !== -1 && currentIndex !== parentChildren.length)\n\t\t\t{\n\t\t\t\treturn getByIndex(parentChildren, currentIndex + 1);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetNextSiblings(): ?Array<BBCodeContentNode>\n\t{\n\t\tif (this.hasParent())\n\t\t{\n\t\t\tconst parentChildren: Array<BBCodeContentNode> = this.getParent().getChildren();\n\t\t\tconst currentIndex: number = parentChildren.indexOf(this);\n\n\t\t\treturn parentChildren.filter((child: BBCodeContentNode, index) => {\n\t\t\t\treturn index > currentIndex;\n\t\t\t});\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetChildrenCount(): number\n\t{\n\t\treturn this.children.length;\n\t}\n\n\thasChildren(): boolean\n\t{\n\t\treturn this.getChildrenCount() > 0;\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn this.getChildrenCount() === 0;\n\t}\n\n\tadjustChildren()\n\t{\n\t\tthis.setChildren(this.getChildren());\n\t}\n\n\tsetDelayedChildren(children: Array<BBCodeContentNode>)\n\t{\n\t\tif (Type.isArray(children))\n\t\t{\n\t\t\tprivateMap.get(this).delayedChildren = children;\n\t\t}\n\t}\n\n\taddDelayedChildren(children: Array<BBCodeContentNode>)\n\t{\n\t\tif (Type.isArrayFilled(children))\n\t\t{\n\t\t\tthis.setDelayedChildren([\n\t\t\t\t...this.getDelayedChildren(),\n\t\t\t\t...children,\n\t\t\t]);\n\t\t}\n\t}\n\n\thasDelayedChildren(): boolean\n\t{\n\t\treturn privateMap.get(this).delayedChildren.length > 0;\n\t}\n\n\tgetDelayedChildren(): Array<BBCodeContentNode>\n\t{\n\t\treturn [...privateMap.get(this).delayedChildren];\n\t}\n\n\tappendChild(...children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tconst flattenedChildren: Array<BBCodeContentNode> = BBCodeNode.flattenChildren(children);\n\n\t\tflattenedChildren.forEach((node: BBCodeContentNode) => {\n\t\t\tnode.remove();\n\t\t\tnode.setParent(this);\n\t\t\tthis.children.push(node);\n\t\t});\n\t}\n\n\tprependChild(...children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tconst flattenedChildren: Array<BBCodeContentNode> = BBCodeNode.flattenChildren(children);\n\n\t\tflattenedChildren.forEach((node: BBCodeContentNode) => {\n\t\t\tnode.remove();\n\t\t\tnode.setParent(this);\n\t\t\tthis.children.unshift(node);\n\t\t});\n\t}\n\n\tinsertBefore(...nodes: Array<BBCodeContentNode>)\n\t{\n\t\tif (this.hasParent() && Type.isArrayFilled(nodes))\n\t\t{\n\t\t\tconst parent: BBCodeContentNode = this.getParent();\n\t\t\tconst parentChildren: Array<BBCodeContentNode> = parent.getChildren();\n\t\t\tconst currentNodeIndex: number = parentChildren.indexOf(this);\n\n\t\t\tconst deleteCount: number = 0;\n\t\t\tparentChildren.splice(currentNodeIndex, deleteCount, ...nodes);\n\n\t\t\tparent.setChildren(parentChildren);\n\t\t}\n\t}\n\n\tinsertAfter(...nodes: Array<BBCodeContentNode>)\n\t{\n\t\tif (this.hasParent() && Type.isArrayFilled(nodes))\n\t\t{\n\t\t\tconst parent: BBCodeContentNode = this.getParent();\n\t\t\tconst parentChildren: Array<BBCodeContentNode> = parent.getChildren();\n\t\t\tconst currentNodeIndex: number = parentChildren.indexOf(this);\n\n\t\t\tconst startIndex: number = currentNodeIndex + 1;\n\t\t\tconst deleteCount: number = 0;\n\t\t\tparentChildren.splice(startIndex, deleteCount, ...nodes);\n\n\t\t\tparent.setChildren(parentChildren);\n\t\t}\n\t}\n\n\tpropagateChild(...children: Array<BBCodeContentNode>)\n\t{\n\t\tif (this.hasParent())\n\t\t{\n\t\t\tthis.insertBefore(\n\t\t\t\t...children.filter((child: BBCodeContentNode) => {\n\t\t\t\t\treturn !['#linebreak', '#tab'].includes(child.getName());\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addDelayedChildren(children);\n\t\t}\n\t}\n\n\tonNodeDidMount()\n\t{\n\t\tconst delayedChildren = this.getDelayedChildren();\n\t\tif (Type.isArrayFilled(delayedChildren))\n\t\t{\n\t\t\tthis.propagateChild(...delayedChildren);\n\t\t\tthis.setDelayedChildren([]);\n\t\t}\n\t}\n\n\tremoveChild(...children: Array<BBCodeContentNode>)\n\t{\n\t\tconst filteredChildren = [];\n\t\tthis.children.forEach((node: BBCodeContentNode) => {\n\t\t\tif (children.includes(node))\n\t\t\t{\n\t\t\t\tnode.setParent(null);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilteredChildren.push(node);\n\t\t\t}\n\t\t});\n\n\t\tthis.children = filteredChildren;\n\t}\n\n\treplaceChild(targetNode: BBCodeContentNode, ...children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tthis.children = this.children.flatMap((node: BBCodeContentNode) => {\n\t\t\tif (node === targetNode)\n\t\t\t{\n\t\t\t\tnode.setParent(null);\n\n\t\t\t\tconst flattenedChildren: Array<BBCodeContentNode> = BBCodeNode.flattenChildren(children);\n\n\t\t\t\treturn flattenedChildren.map((child: BBCodeContentNode) => {\n\t\t\t\t\tchild.remove();\n\t\t\t\t\tchild.setParent(this);\n\n\t\t\t\t\treturn child;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}\n\n\treplace(...children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tif (this.hasParent())\n\t\t{\n\t\t\tconst parent = this.getParent();\n\t\t\tparent.replaceChild(this, ...children);\n\t\t}\n\t}\n\n\tclone(options: { deep: boolean } = {}): BBCodeNode\n\t{\n\t\tconst children = (() => {\n\t\t\tif (options.deep)\n\t\t\t{\n\t\t\t\treturn this.getChildren().map((child) => {\n\t\t\t\t\treturn child.clone(options);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [];\n\t\t})();\n\n\t\treturn this.getScheme().createNode({\n\t\t\tname: this.getName(),\n\t\t\tparent: this.getParent(),\n\t\t\tchildren,\n\t\t});\n\t}\n\n\ttoPlainText(): string\n\t{\n\t\treturn this.getChildren().map((child) => {\n\t\t\treturn child.toPlainText();\n\t\t}).join('');\n\t}\n\n\tgetTextContent(): string\n\t{\n\t\treturn this.toPlainText();\n\t}\n\n\tgetPlainTextLength(): number\n\t{\n\t\treturn this.toPlainText().length;\n\t}\n\n\tremovePreviewsSiblings()\n\t{\n\t\tconst removePreviewsSiblings = (node: BBCodeContentNode) => {\n\t\t\tconst previewsSiblings = node.getPreviewsSiblings();\n\t\t\tif (Type.isArray(previewsSiblings))\n\t\t\t{\n\t\t\t\tpreviewsSiblings.forEach((sibling: BBCodeContentNode) => {\n\t\t\t\t\tsibling.remove();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst parent = node.getParent();\n\t\t\tif (parent)\n\t\t\t{\n\t\t\t\tremovePreviewsSiblings(parent);\n\t\t\t}\n\t\t};\n\n\t\tremovePreviewsSiblings(this);\n\t}\n\n\tremoveNextSiblings()\n\t{\n\t\tconst removeNextSiblings = (node: BBCodeContentNode) => {\n\t\t\tconst nextSiblings = node.getNextSiblings();\n\t\t\tif (Type.isArray(nextSiblings))\n\t\t\t{\n\t\t\t\tnextSiblings.forEach((sibling: BBCodeContentNode) => {\n\t\t\t\t\tsibling.remove();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst parent = node.getParent();\n\t\t\tif (parent)\n\t\t\t{\n\t\t\t\tremoveNextSiblings(parent);\n\t\t\t}\n\t\t};\n\n\t\tremoveNextSiblings(this);\n\t}\n\n\tfindByTextIndex(index: number): ?{ node: BBCodeTextNode, startIndex: number, endIndex: number }\n\t{\n\t\tlet currentIndex = 0;\n\t\tlet startIndex = 0;\n\t\tlet endIndex = 0;\n\n\t\tconst node = BBCodeNode.flattenAst(this).find((child: BBCodeContentNode) => {\n\t\t\tif (\n\t\t\t\tchild.getName() === '#text'\n\t\t\t\t|| child.getName() === '#linebreak'\n\t\t\t\t|| child.getName() === '#tab'\n\t\t\t)\n\t\t\t{\n\t\t\t\tstartIndex = currentIndex;\n\t\t\t\tendIndex = startIndex + child.getLength();\n\t\t\t\tcurrentIndex = endIndex;\n\n\t\t\t\treturn index >= startIndex && endIndex >= index;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\tif (node)\n\t\t{\n\t\t\treturn { node, startIndex, endIndex };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsplit(options: { offset: number, byWord?: boolean}): Array<BBCodeContentNode>\n\t{\n\t\tconst { offset, byWord = false } = options;\n\t\tconst plainTextLength = this.getPlainTextLength();\n\n\t\tconst leftTree = (() => {\n\t\t\tif (plainTextLength === offset)\n\t\t\t{\n\t\t\t\treturn this.clone({ deep: true });\n\t\t\t}\n\n\t\t\tif (offset <= 0 || offset > plainTextLength)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst tree = this.clone({ deep: true });\n\t\t\tconst { node, startIndex } = tree.findByTextIndex(offset);\n\t\t\tconst [leftNode, rightNode] = node.split({ offset: offset - startIndex, byWord });\n\t\t\tif (leftNode)\n\t\t\t{\n\t\t\t\tnode.replace(leftNode);\n\t\t\t\tleftNode.removeNextSiblings();\n\t\t\t}\n\t\t\telse if (rightNode)\n\t\t\t{\n\t\t\t\trightNode.removeNextSiblings();\n\t\t\t\trightNode.remove();\n\t\t\t}\n\n\t\t\treturn tree;\n\t\t})();\n\n\t\tconst rightTree = (() => {\n\t\t\tif (plainTextLength === offset)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (offset === 0)\n\t\t\t{\n\t\t\t\treturn this.clone({ deep: true });\n\t\t\t}\n\n\t\t\tconst tree = this.clone({ deep: true });\n\t\t\tconst { node, startIndex } = tree.findByTextIndex(offset);\n\t\t\tconst [leftNode, rightNode] = node.split({ offset: offset - startIndex, byWord });\n\t\t\tif (rightNode)\n\t\t\t{\n\t\t\t\tnode.replace(rightNode);\n\t\t\t\trightNode.removePreviewsSiblings();\n\t\t\t}\n\t\t\telse if (leftNode)\n\t\t\t{\n\t\t\t\tleftNode.removePreviewsSiblings();\n\t\t\t\tif (leftNode.hasParent())\n\t\t\t\t{\n\t\t\t\t\tconst parent = leftNode.getParent();\n\t\t\t\t\tleftNode.remove();\n\t\t\t\t\tif (parent.getChildrenCount() === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tparent.remove();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn tree;\n\t\t})();\n\n\t\treturn [leftTree, rightTree];\n\t}\n\n\tstatic flattenAst(ast): Array<any>\n\t{\n\t\tconst flat = [];\n\n\t\tconst traverse = (node: BBCodeContentNode) => {\n\t\t\tflat.push(node);\n\t\t\tif (node.hasChildren())\n\t\t\t{\n\t\t\t\tnode.getChildren().forEach((child: BBCodeContentNode) => {\n\t\t\t\t\ttraverse(child);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tif (ast.hasChildren())\n\t\t{\n\t\t\tast.getChildren().forEach((child: BBCodeContentNode) => {\n\t\t\t\ttraverse(child);\n\t\t\t});\n\t\t}\n\n\t\treturn flat;\n\t}\n\n\ttoJSON(): SerializedBBCodeNode\n\t{\n\t\treturn {\n\t\t\tname: this.getName(),\n\t\t\tchildren: this.getChildren().map((child: BBCodeContentNode) => {\n\t\t\t\treturn child.toJSON();\n\t\t\t}),\n\t\t};\n\t}\n}\n","import { Type, type JsonObject, type JsonValue } from 'main.core';\nimport { BBCodeNode, type BBCodeNodeOptions, type BBCodeContentNode, type SerializedBBCodeNode, privateMap } from './node';\nimport { typeof BBCodeFragmentNode } from './fragment-node';\nimport { type BBCodeNodeStringifier } from '../scheme/node-schemes/node-scheme';\nimport { typeof BBCodeTagScheme } from '../scheme/node-schemes/tag-scheme';\nimport { typeof BBCodeScheme } from '../scheme/bbcode-scheme';\nimport { type BBCodeToStringOptions } from './root-node';\n\nexport type BBCodeElementNodeValue = string | number | boolean;\n\nexport type BBCodeElementNodeOptions = BBCodeNodeOptions & {\n\tattributes?: JsonObject,\n\tvalue?: BBCodeElementNodeValue,\n};\n\nexport type SerializedBBCodeElementNode = SerializedBBCodeNode & {\n\tattributes: JsonObject,\n\tvalue: BBCodeElementNodeValue,\n};\n\nexport type FilteredChildren = {\n\tresolved: Array<BBCodeContentNode>,\n\tunresolved: Array<BBCodeContentNode>,\n};\n\nconst voidSymbol: Symbol = Symbol('void');\n\nexport class BBCodeElementNode extends BBCodeNode\n{\n\tattributes: JsonObject = {};\n\tvalue: JsonValue = '';\n\t[voidSymbol]: boolean = false;\n\n\tconstructor(options: BBCodeElementNodeOptions = {})\n\t{\n\t\tsuper(options);\n\t\tprivateMap.get(this).type = BBCodeNode.ELEMENT_NODE;\n\n\t\tconst tagScheme: BBCodeTagScheme = this.getTagScheme();\n\n\t\tthis[voidSymbol] = tagScheme.isVoid();\n\n\t\tthis.setValue(options.value);\n\t\tthis.setAttributes(options.attributes);\n\t}\n\n\tsetScheme(scheme: BBCodeScheme, onUnknown: (node: BBCodeContentNode) => any)\n\t{\n\t\tthis.getChildren().forEach((node: BBCodeContentNode) => {\n\t\t\tnode.setScheme(scheme, onUnknown);\n\t\t});\n\n\t\tif (scheme.isAllowedTag(this.getName()))\n\t\t{\n\t\t\tsuper.setScheme(scheme);\n\n\t\t\tconst tagScheme: BBCodeTagScheme = this.getTagScheme();\n\t\t\tthis[voidSymbol] = tagScheme.isVoid();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsuper.setScheme(scheme);\n\t\t\tonUnknown(this, scheme);\n\t\t}\n\t}\n\n\tfilterChildren(children: Array<BBCodeContentNode>): FilteredChildren\n\t{\n\t\tconst filteredChildren: FilteredChildren = {\n\t\t\tresolved: [],\n\t\t\tunresolved: [],\n\t\t};\n\t\tconst scheme: BBCodeScheme = this.getScheme();\n\n\t\tchildren.forEach((child: BBCodeContentNode) => {\n\t\t\tif (scheme.isChildAllowed(this, child))\n\t\t\t{\n\t\t\t\tfilteredChildren.resolved.push(child);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilteredChildren.unresolved.push(child);\n\t\t\t}\n\t\t});\n\n\t\treturn filteredChildren;\n\t}\n\n\tconvertChildren(children: Array<BBCodeContentNode>): Array<BBCodeContentNode>\n\t{\n\t\tconst tagScheme: BBCodeTagScheme = this.getTagScheme();\n\t\tconst childConverter = tagScheme.getChildConverter();\n\t\tif (childConverter)\n\t\t{\n\t\t\tconst scheme: BBCodeScheme = this.getScheme();\n\n\t\t\treturn children.map((child: BBCodeNode) => {\n\t\t\t\treturn childConverter(child, scheme);\n\t\t\t});\n\t\t}\n\n\t\treturn children;\n\t}\n\n\tsetValue(value: BBCodeElementNodeValue)\n\t{\n\t\tif (Type.isString(value) || Type.isNumber(value) || Type.isBoolean(value))\n\t\t{\n\t\t\tthis.value = value;\n\t\t}\n\t}\n\n\tgetValue(): BBCodeElementNodeValue\n\t{\n\t\treturn this.value;\n\t}\n\n\tisVoid(): boolean\n\t{\n\t\treturn this[voidSymbol];\n\t}\n\n\tcanBeEmpty(): boolean\n\t{\n\t\treturn this.getTagScheme().canBeEmpty();\n\t}\n\n\thasGroup(groupName: string): boolean\n\t{\n\t\treturn this.getTagScheme().hasGroup(groupName);\n\t}\n\n\tsetAttributes(attributes: JsonObject)\n\t{\n\t\tif (Type.isPlainObject(attributes))\n\t\t{\n\t\t\tconst entries = Object.entries(attributes).map(([key, value]) => {\n\t\t\t\treturn [key.toLowerCase(), value];\n\t\t\t});\n\n\t\t\tthis.attributes = Object.fromEntries(entries);\n\t\t}\n\t}\n\n\tsetAttribute(name: string, value: any)\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tconst preparedName: string = name.toLowerCase();\n\t\t\tif (Type.isNil(value))\n\t\t\t{\n\t\t\t\tdelete this.attributes[preparedName];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.attributes[preparedName] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAttribute(name: string): string | number | null\n\t{\n\t\tif (Type.isString(name))\n\t\t{\n\t\t\treturn this.attributes[name.toLowerCase()];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetAttributes(): JsonObject\n\t{\n\t\treturn { ...this.attributes };\n\t}\n\n\tappendChild(...children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tconst flattenedChildren: Array<BBCodeContentNode> = BBCodeNode.flattenChildren(children);\n\t\tconst convertedChildren: Array<BBCodeContentNode> = this.convertChildren(flattenedChildren);\n\t\tconst filteredChildren: FilteredChildren = this.filterChildren(convertedChildren);\n\n\t\tfilteredChildren.resolved.forEach((node: BBCodeContentNode) => {\n\t\t\tnode.remove();\n\t\t\tnode.setParent(this);\n\t\t\tthis.children.push(node);\n\t\t});\n\n\t\tif (Type.isArrayFilled(filteredChildren.unresolved))\n\t\t{\n\t\t\tconst tagScheme: BBCodeTagScheme = this.getTagScheme();\n\t\t\tif (tagScheme.hasNotAllowedChildrenCallback())\n\t\t\t{\n\t\t\t\ttagScheme.runNotAllowedChildrenCallback({\n\t\t\t\t\tnode: this,\n\t\t\t\t\tchildren: filteredChildren.unresolved,\n\t\t\t\t\tscheme: this.getScheme(),\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (this.getScheme().isAllowedUnresolvedNodesHoisting())\n\t\t\t{\n\t\t\t\tthis.propagateChild(...filteredChildren.unresolved);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilteredChildren.unresolved.forEach((node: BBCodeContentNode) => {\n\t\t\t\t\tnode.remove();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprependChild(...children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tconst flattenedChildren: Array<BBCodeContentNode> = BBCodeNode.flattenChildren(children);\n\t\tconst convertedChildren: Array<BBCodeContentNode> = this.convertChildren(flattenedChildren);\n\t\tconst filteredChildren: FilteredChildren = this.filterChildren(convertedChildren);\n\n\t\tfilteredChildren.resolved.forEach((node: BBCodeContentNode) => {\n\t\t\tnode.remove();\n\t\t\tnode.setParent(this);\n\t\t\tthis.children.unshift(node);\n\t\t});\n\n\t\tif (Type.isArrayFilled(filteredChildren.unresolved))\n\t\t{\n\t\t\tconst tagScheme: BBCodeTagScheme = this.getTagScheme();\n\t\t\tif (tagScheme.hasNotAllowedChildrenCallback())\n\t\t\t{\n\t\t\t\ttagScheme.runNotAllowedChildrenCallback({\n\t\t\t\t\tnode: this,\n\t\t\t\t\tchildren: filteredChildren.unresolved,\n\t\t\t\t\tscheme: this.getScheme(),\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (this.getScheme().isAllowedUnresolvedNodesHoisting())\n\t\t\t{\n\t\t\t\tthis.propagateChild(...filteredChildren.unresolved);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilteredChildren.unresolved.forEach((node: BBCodeContentNode) => {\n\t\t\t\t\tnode.remove();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treplaceChild(targetNode: BBCodeContentNode, ...children: Array<BBCodeContentNode | BBCodeFragmentNode>)\n\t{\n\t\tthis.children = this.children.flatMap((node: BBCodeContentNode) => {\n\t\t\tif (node === targetNode)\n\t\t\t{\n\t\t\t\tnode.setParent(null);\n\n\t\t\t\tconst flattenedChildren: Array<BBCodeContentNode> = BBCodeNode.flattenChildren(children);\n\t\t\t\tconst convertedChildren: Array<BBCodeContentNode> = this.convertChildren(flattenedChildren);\n\t\t\t\tconst filteredChildren: FilteredChildren = this.filterChildren(convertedChildren);\n\n\t\t\t\treturn filteredChildren.resolved.map((child: BBCodeContentNode) => {\n\t\t\t\t\tchild.remove();\n\t\t\t\t\tchild.setParent(this);\n\n\t\t\t\t\treturn child;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}\n\n\ttoStringValue(): string\n\t{\n\t\tconst value: BBCodeElementNodeValue = this.getValue();\n\t\tconst encodedValue: string = this.getEncoder().encodeAttribute(value);\n\n\t\treturn value ? `=${encodedValue}` : '';\n\t}\n\n\ttoStringAttributes(): string\n\t{\n\t\treturn Object\n\t\t\t.entries(this.getAttributes())\n\t\t\t.map(([key: string, attrValue: string]) => {\n\t\t\t\tconst preparedKey: string = this.prepareCase(key);\n\t\t\t\tconst encodedValue: string = this.getEncoder().encodeAttribute(attrValue);\n\n\t\t\t\treturn attrValue ? `${preparedKey}=${encodedValue}` : preparedKey;\n\t\t\t})\n\t\t\t.join(' ');\n\t}\n\n\tgetContent(options: BBCodeToStringOptions = {}): string\n\t{\n\t\treturn this.getChildren()\n\t\t\t.map((child: BBCodeContentNode) => {\n\t\t\t\treturn child.toString(options);\n\t\t\t})\n\t\t\t.join('');\n\t}\n\n\tgetOpeningTag(): string\n\t{\n\t\tconst displayedName: string = this.getDisplayedName();\n\t\tconst tagValue: BBCodeElementNodeValue = this.toStringValue();\n\t\tconst attributes: JsonObject = this.toStringAttributes();\n\t\tconst formattedAttributes: string = Type.isStringFilled(attributes) ? ` ${attributes}` : '';\n\n\t\treturn `[${displayedName}${tagValue}${formattedAttributes}]`;\n\t}\n\n\tgetClosingTag(): string\n\t{\n\t\treturn `[/${this.getDisplayedName()}]`;\n\t}\n\n\tclone(options: { deep: boolean } = {}): BBCodeElementNode\n\t{\n\t\tconst children = (() => {\n\t\t\tif (options.deep)\n\t\t\t{\n\t\t\t\treturn this.getChildren().map((child) => {\n\t\t\t\t\treturn child.clone(options);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [];\n\t\t})();\n\n\t\treturn this.getScheme().createElement({\n\t\t\tname: this.getName(),\n\t\t\tvoid: this.isVoid(),\n\t\t\tvalue: this.getValue(),\n\t\t\tattributes: { ...this.getAttributes() },\n\t\t\tchildren,\n\t\t});\n\t}\n\n\tsplitByChildIndex(index: number): Array<BBCodeElementNode | null>\n\t{\n\t\tif (!Type.isNumber(index))\n\t\t{\n\t\t\tthrow new TypeError('index is not a number');\n\t\t}\n\n\t\tconst childrenCount = this.getChildrenCount();\n\t\tif (index < 0 || index > childrenCount)\n\t\t{\n\t\t\tthrow new TypeError(`index '${index}' is out of range ${0}-${childrenCount}`);\n\t\t}\n\n\t\tconst leftNode = (() => {\n\t\t\tif (index === childrenCount)\n\t\t\t{\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (index === 0)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst leftChildren = this.getChildren().filter((child, childIndex) => {\n\t\t\t\treturn childIndex < index;\n\t\t\t});\n\n\t\t\tconst node = this.clone();\n\t\t\tnode.setChildren(leftChildren);\n\n\t\t\treturn node;\n\t\t})();\n\n\t\tconst rightNode = (() => {\n\t\t\tif (index === 0)\n\t\t\t{\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (index === childrenCount)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst rightChildren = this.getChildren();\n\t\t\tconst node = this.clone();\n\t\t\tnode.setChildren(rightChildren);\n\n\t\t\treturn node;\n\t\t})();\n\n\t\tif (leftNode && rightNode)\n\t\t{\n\t\t\tthis.replace(leftNode, rightNode);\n\t\t}\n\n\t\treturn [leftNode, rightNode];\n\t}\n\n\tgetTagScheme(): BBCodeTagScheme\n\t{\n\t\treturn super.getTagScheme();\n\t}\n\n\ttrimStartLinebreaks()\n\t{\n\t\tconst firstChild: BBCodeContentNode = this.getFirstChild();\n\t\tif (firstChild && firstChild.getName() === '#linebreak')\n\t\t{\n\t\t\tfirstChild.remove();\n\t\t\tthis.trimStartLinebreaks();\n\t\t}\n\t}\n\n\ttrimEndLinebreaks()\n\t{\n\t\tconst lastChild: BBCodeContentNode = this.getLastChild();\n\t\tif (lastChild && lastChild.getName() === '#linebreak')\n\t\t{\n\t\t\tlastChild.remove();\n\t\t\tthis.trimEndLinebreaks();\n\t\t}\n\t}\n\n\ttrimLinebreaks()\n\t{\n\t\tthis.trimStartLinebreaks();\n\t\tthis.trimEndLinebreaks();\n\t}\n\n\ttrimLinebreaksOnce()\n\t{\n\t\t[this.getFirstChild(), this.getLastChild()].forEach((child: BBCodeContentNode) => {\n\t\t\tif (child && child.getName() === '#linebreak')\n\t\t\t{\n\t\t\t\tchild.remove();\n\t\t\t}\n\t\t});\n\t}\n\n\ttoString(options: BBCodeToStringOptions = {}): string\n\t{\n\t\tconst tagScheme: BBCodeTagScheme = this.getTagScheme();\n\t\tconst stringifier: BBCodeNodeStringifier = tagScheme.getStringifier();\n\t\tif (Type.isFunction(stringifier))\n\t\t{\n\t\t\tconst scheme: BBCodeScheme = this.getScheme();\n\n\t\t\treturn stringifier(this, scheme, options);\n\t\t}\n\n\t\tconst openingTag: string = this.getOpeningTag();\n\t\tconst content: string = this.getContent(options);\n\n\t\tif (this.isVoid())\n\t\t{\n\t\t\treturn `${openingTag}${content}`;\n\t\t}\n\n\t\tconst closingTag: string = this.getClosingTag();\n\n\t\treturn `${openingTag}${content}${closingTag}`;\n\t}\n\n\ttoJSON(): SerializedBBCodeElementNode\n\t{\n\t\treturn {\n\t\t\t...super.toJSON(),\n\t\t\tvalue: this.getValue(),\n\t\t\tattributes: this.getAttributes(),\n\t\t\tvoid: this.isVoid(),\n\t\t};\n\t}\n}\n","import { BBCodeNode, privateMap, nameSymbol, type BBCodeContentNode } from './node';\nimport { BBCodeElementNode } from './element-node';\nimport { typeof BBCodeScheme } from '../scheme/bbcode-scheme';\n\nexport type RootNodeOptions = {\n\tchildren: Array<BBCodeNode>,\n};\n\nexport type BBCodeToStringOptions = {\n\tencode?: boolean,\n};\n\nexport class BBCodeRootNode extends BBCodeElementNode\n{\n\tconstructor(options: RootNodeOptions)\n\t{\n\t\tsuper({ ...options, name: '#root' });\n\t\tprivateMap.get(this).type = BBCodeNode.ROOT_NODE;\n\t\tBBCodeRootNode.makeNonEnumerableProperty(this, 'value');\n\t\tBBCodeRootNode.makeNonEnumerableProperty(this, 'attributes');\n\t\tBBCodeRootNode.freezeProperty(this, nameSymbol, '#root');\n\t}\n\n\tsetScheme(scheme: BBCodeScheme, onUnknown: (node: BBCodeContentNode) => any)\n\t{\n\t\tBBCodeNode.flattenAst(this).forEach((node: BBCodeContentNode) => {\n\t\t\tnode.setScheme(scheme, onUnknown);\n\t\t});\n\n\t\tsuper.setScheme(scheme);\n\n\t\tBBCodeNode.flattenAst(this).forEach((node: BBCodeContentNode) => {\n\t\t\tnode.adjustChildren();\n\t\t});\n\t}\n\n\tgetParent(): null\n\t{\n\t\treturn null;\n\t}\n\n\tclone(options: { deep: boolean } = {}): BBCodeRootNode\n\t{\n\t\tconst children = (() => {\n\t\t\tif (options.deep)\n\t\t\t{\n\t\t\t\treturn this.getChildren().map((child) => {\n\t\t\t\t\treturn child.clone(options);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [];\n\t\t})();\n\n\t\treturn this.getScheme().createRoot({\n\t\t\tchildren,\n\t\t});\n\t}\n\n\ttoString(options: BBCodeToStringOptions = {}): string\n\t{\n\t\treturn this.getChildren()\n\t\t\t.map((child: BBCodeContentNode) => {\n\t\t\t\treturn child.toString(options);\n\t\t\t})\n\t\t\t.join('');\n\t}\n\n\ttoJSON(): any\n\t{\n\t\treturn this.getChildren().map((node: BBCodeNode) => {\n\t\t\treturn node.toJSON();\n\t\t});\n\t}\n}\n","import { BBCodeNode, nameSymbol, privateMap } from './node';\nimport { BBCodeElementNode } from './element-node';\n\nexport type FragmentNodeOptions = {\n\tchildren: Array<BBCodeNode>,\n};\n\nexport class BBCodeFragmentNode extends BBCodeElementNode\n{\n\tconstructor(options: FragmentNodeOptions)\n\t{\n\t\tsuper({ ...options, name: '#fragment' });\n\t\tprivateMap.get(this).type = BBCodeNode.FRAGMENT_NODE;\n\t\tBBCodeFragmentNode.makeNonEnumerableProperty(this, 'value');\n\t\tBBCodeFragmentNode.makeNonEnumerableProperty(this, 'attributes');\n\t\tBBCodeFragmentNode.freezeProperty(this, nameSymbol, '#fragment');\n\t}\n\n\tclone(options: { deep: boolean } = {}): BBCodeFragmentNode\n\t{\n\t\tconst children = (() => {\n\t\t\tif (options.deep)\n\t\t\t{\n\t\t\t\treturn this.getChildren().map((child) => {\n\t\t\t\t\treturn child.clone(options);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn [];\n\t\t})();\n\n\t\treturn this.getScheme().createFragment({\n\t\t\tchildren,\n\t\t});\n\t}\n}\n","import { Type } from 'main.core';\nimport { BBCodeNode, privateMap, nameSymbol, type BBCodeNodeOptions } from './node';\nimport { type BBCodeToStringOptions } from './root-node';\n\nexport const contentSymbol = Symbol('content');\n\nexport type BBCodeTextNodeContent = string | number;\n\nexport type BBCodeTextNodeOptions = BBCodeTextNodeContent | BBCodeNodeOptions & {\n\tcontent?: string,\n};\n\nexport type BBCodeSerializedTextNode = {\n\tname: string,\n\tcontent: BBCodeTextNodeContent,\n};\n\nexport class BBCodeTextNode extends BBCodeNode\n{\n\t[nameSymbol]: string = '#text';\n\t[contentSymbol]: string = '';\n\n\tconstructor(options: BBCodeTextNodeOptions = {})\n\t{\n\t\tconst nodeOptions: BBCodeTextNodeOptions = Type.isString(options) ? { content: options } : options;\n\t\tsuper(nodeOptions);\n\t\tprivateMap.get(this).type = BBCodeNode.TEXT_NODE;\n\t\tthis.setContent(nodeOptions.content);\n\t\tBBCodeNode.makeNonEnumerableProperty(this, 'children');\n\t}\n\n\tstatic isTextNodeContent(value: any): boolean\n\t{\n\t\treturn Type.isString(value) || Type.isNumber(value);\n\t}\n\n\tsetName(name: string)\n\t{}\n\n\tsetContent(content: BBCodeTextNodeContent)\n\t{\n\t\tif (BBCodeTextNode.isTextNodeContent(content))\n\t\t{\n\t\t\tthis[contentSymbol] = content;\n\t\t}\n\t}\n\n\tgetContent(): BBCodeTextNodeContent\n\t{\n\t\treturn this[contentSymbol];\n\t}\n\n\tadjustChildren()\n\t{}\n\n\tgetLength(): number\n\t{\n\t\treturn String(this[contentSymbol]).length;\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn this.getLength() === 0;\n\t}\n\n\tclone(options): BBCodeTextNode\n\t{\n\t\treturn this.getScheme().createText({\n\t\t\tcontent: this.getContent(),\n\t\t});\n\t}\n\n\tsplit(options: { offset: number, byWord?: boolean}): Array<BBCodeTextNode | null>\n\t{\n\t\tconst { offset: sourceOffset, byWord = false } = options;\n\n\t\tif (!Type.isNumber(sourceOffset))\n\t\t{\n\t\t\tthrow new TypeError('offset is not a number');\n\t\t}\n\n\t\tconst contentLength = this.getLength();\n\t\tif (sourceOffset < 0 || sourceOffset > contentLength)\n\t\t{\n\t\t\tthrow new TypeError(`offset '${sourceOffset}' is out of range ${0}-${contentLength}`);\n\t\t}\n\n\t\tconst content = this.getContent();\n\n\t\tconst offset = (() => {\n\t\t\tif (byWord && sourceOffset !== contentLength)\n\t\t\t{\n\t\t\t\tconst lastIndex = content.lastIndexOf(' ', sourceOffset);\n\t\t\t\tif (lastIndex !== -1)\n\t\t\t\t{\n\t\t\t\t\tif (sourceOffset > lastIndex)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn lastIndex + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn lastIndex;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\treturn sourceOffset;\n\t\t})();\n\n\t\tconst leftNode = (() => {\n\t\t\tif (offset === contentLength)\n\t\t\t{\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (offset === 0)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst node = this.clone();\n\t\t\tnode.setContent(content.slice(0, offset));\n\n\t\t\treturn node;\n\t\t})();\n\n\t\tconst rightNode = (() => {\n\t\t\tif (offset === 0)\n\t\t\t{\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (offset === contentLength)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst node = this.clone();\n\t\t\tnode.setContent(content.slice(offset, contentLength));\n\n\t\t\treturn node;\n\t\t})();\n\n\t\treturn [leftNode, rightNode];\n\t}\n\n\ttoString(options: BBCodeToStringOptions = {}): string\n\t{\n\t\tif (options.encode !== false)\n\t\t{\n\t\t\treturn this.getEncoder().encodeText(this.getContent());\n\t\t}\n\n\t\treturn this.getContent();\n\t}\n\n\ttoPlainText(): string\n\t{\n\t\treturn this.toString({ encode: false });\n\t}\n\n\ttoJSON(): BBCodeSerializedTextNode\n\t{\n\t\treturn {\n\t\t\tname: this.getName(),\n\t\t\tcontent: this.toString(),\n\t\t};\n\t}\n}\n","import { nameSymbol } from './node';\nimport { BBCodeTextNode, contentSymbol, type BBCodeTextNodeContent, type BBCodeTextNodeOptions } from './text-node';\n\nexport class BBCodeNewLineNode extends BBCodeTextNode\n{\n\t[nameSymbol]: string = '#linebreak';\n\t[contentSymbol]: string = '\\n';\n\n\tconstructor(options: BBCodeTextNodeOptions = {})\n\t{\n\t\tsuper(options);\n\t}\n\n\tsetContent(options: BBCodeTextNodeContent)\n\t{}\n\n\tclone(options): BBCodeNewLineNode\n\t{\n\t\treturn this.getScheme().createNewLine();\n\t}\n}\n","import { nameSymbol } from './node';\nimport { BBCodeTextNode, contentSymbol, type BBCodeTextNodeContent, type BBCodeTextNodeOptions } from './text-node';\n\nexport class BBCodeTabNode extends BBCodeTextNode\n{\n\t[nameSymbol]: string = '#tab';\n\t[contentSymbol]: string = '\\t';\n\n\tconstructor(options: BBCodeTextNodeOptions = {})\n\t{\n\t\tsuper(options);\n\t}\n\n\tsetContent(options: BBCodeTextNodeContent)\n\t{}\n\n\tclone(options): BBCodeTabNode\n\t{\n\t\treturn this.getScheme().createTab();\n\t}\n}\n","import { Type } from 'main.core';\nimport type { BBCodeContentNode } from '../../nodes/node';\nimport type { BBCodeToStringOptions } from '../../nodes/root-node';\nimport { typeof BBCodeScheme } from '../bbcode-scheme';\n\nexport type BBCodeNodeConverter = (node: BBCodeContentNode, scheme: BBCodeScheme) => BBCodeContentNode | Array<BBCodeContentNode> | null;\nexport type BBCodeNodeStringifier = (node: BBCodeContentNode, scheme: BBCodeScheme, toStringOptions: BBCodeToStringOptions) => string;\nexport type BBCodeNodeSerializer = (node: BBCodeContentNode, scheme: BBCodeScheme) => any;\nexport type BBCodeNodeName = string;\nexport type BBCodeGroupName = string;\n\nexport type BBCodeNodeSchemeOptions = {\n\tname: BBCodeNodeName | Array<BBCodeNodeName>,\n\tgroup: BBCodeGroupName | Array<BBCodeGroupName>,\n\tstringify?: BBCodeNodeStringifier,\n\tserialize?: BBCodeNodeSerializer,\n\tallowedIn?: Array<BBCodeNodeName>,\n\tonChange?: () => void,\n};\n\nexport class BBCodeNodeScheme\n{\n\tname: Array<BBCodeNodeName> = [];\n\tgroup: Array<BBCodeGroupName> = [];\n\tstringifier: BBCodeNodeStringifier | null = null;\n\tserializer: BBCodeNodeSerializer | null = null;\n\tallowedIn: Array<BBCodeNodeName> = [];\n\tonChangeHandler: () => void = null;\n\n\tconstructor(options: BBCodeNodeSchemeOptions)\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\tthrow new TypeError('options is not a object');\n\t\t}\n\n\t\tif (\n\t\t\t!Type.isArrayFilled(this.name)\n\t\t\t&& !Type.isArrayFilled(options.name)\n\t\t\t&& !Type.isStringFilled(options.name)\n\t\t)\n\t\t{\n\t\t\tthrow new TypeError('options.name is not specified');\n\t\t}\n\n\t\tthis.setGroup(options.group);\n\t\tthis.setName(options.name);\n\t\tthis.setAllowedIn(options.allowedIn);\n\t\tthis.setStringifier(options.stringify);\n\t\tthis.setSerializer(options.serialize);\n\t\tthis.setOnChangeHandler(options.onChange);\n\t}\n\n\tsetName(name: BBCodeNodeSchemeOptions['name'])\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.name = [name];\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\n\t\tif (Type.isArrayFilled(name))\n\t\t{\n\t\t\tthis.name = name;\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\t}\n\n\tgetName(): Array<string>\n\t{\n\t\treturn this.name;\n\t}\n\n\tremoveName(...names: Array<BBCodeNodeName>)\n\t{\n\t\tthis.setName(\n\t\t\tthis.getName().filter((name: BBCodeNodeName) => {\n\t\t\t\treturn !names.includes(name);\n\t\t\t}),\n\t\t);\n\t\tthis.runOnChangeHandler();\n\t}\n\n\tsetGroup(name: BBCodeNodeSchemeOptions['group'])\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.group = [name];\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\n\t\tif (Type.isArrayFilled(name))\n\t\t{\n\t\t\tthis.group = name;\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\t}\n\n\tremoveGroup(...groups: Array<BBCodeGroupName>)\n\t{\n\t\tthis.setGroup(\n\t\t\tthis.getGroup().filter((group: BBCodeGroupName) => {\n\t\t\t\treturn !groups.includes(group);\n\t\t\t}),\n\t\t);\n\t\tthis.runOnChangeHandler();\n\t}\n\n\tgetGroup(): Array<BBCodeGroupName>\n\t{\n\t\treturn this.group;\n\t}\n\n\thasGroup(groupName: string): boolean\n\t{\n\t\treturn this.getGroup().includes(groupName);\n\t}\n\n\tsetStringifier(stringifier: BBCodeNodeStringifier | null)\n\t{\n\t\tif (Type.isFunction(stringifier) || Type.isNull(stringifier))\n\t\t{\n\t\t\tthis.stringifier = stringifier;\n\t\t}\n\t}\n\n\tgetStringifier(): BBCodeNodeStringifier | null\n\t{\n\t\treturn this.stringifier;\n\t}\n\n\tsetSerializer(serializer: BBCodeNodeSerializer | null)\n\t{\n\t\tif (Type.isFunction(serializer) || Type.isNull(serializer))\n\t\t{\n\t\t\tthis.serializer = serializer;\n\t\t}\n\t}\n\n\tgetSerializer(): BBCodeNodeSerializer | null\n\t{\n\t\treturn this.serializer;\n\t}\n\n\tsetAllowedIn(allowedParents: Array<BBCodeNodeName>)\n\t{\n\t\tif (Type.isArray(allowedParents))\n\t\t{\n\t\t\tthis.allowedIn = [...allowedParents];\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\t}\n\n\tgetAllowedIn(): Array<BBCodeNodeName>\n\t{\n\t\treturn this.allowedIn;\n\t}\n\n\tisAllowedIn(tagName: string): boolean\n\t{\n\t\tconst allowedIn: Array<BBCodeNodeName> = this.getAllowedIn();\n\n\t\treturn (\n\t\t\t!Type.isArrayFilled(allowedIn)\n\t\t\t|| (\n\t\t\t\tType.isArrayFilled(allowedIn)\n\t\t\t\t&& allowedIn.includes(tagName)\n\t\t\t)\n\t\t);\n\t}\n\n\tsetOnChangeHandler(handler: () => void)\n\t{\n\t\tthis.onChangeHandler = handler;\n\t}\n\n\tgetOnChangeHandler(): (() => void) | null\n\t{\n\t\treturn this.onChangeHandler;\n\t}\n\n\trunOnChangeHandler()\n\t{\n\t\tconst handler = this.getOnChangeHandler();\n\t\tif (Type.isFunction(handler))\n\t\t{\n\t\t\thandler();\n\t\t}\n\t}\n}\n","import { Type } from 'main.core';\nimport { type BBCodeToStringOptions } from '../../nodes/root-node';\nimport { typeof BBCodeScheme } from '../bbcode-scheme';\nimport {\n\tBBCodeNodeScheme,\n\ttype BBCodeNodeSchemeOptions,\n\ttype BBCodeNodeConverter,\n\ttype BBCodeNodeName,\n} from './node-scheme';\nimport { typeof BBCodeElementNode } from '../../nodes/element-node';\nimport { BBCodeNode, type BBCodeContentNode } from '../../nodes/node';\n\nexport type BBCodeNodeOnParse = (node: BBCodeContentNode, scheme: BBCodeScheme) => void;\n\nexport type NotAllowedChildrenCallbackOptions = {\n\tnode: BBCodeContentNode,\n\tscheme: BBCodeScheme,\n\tchildren: Array<BBCodeContentNode>,\n};\n\nexport type BBCodeTagSchemeOptions = BBCodeNodeSchemeOptions & {\n\tvoid?: boolean,\n\tcanBeEmpty?: boolean,\n\tconvertChild?: BBCodeNodeConverter,\n\tallowedChildren?: Array<BBCodeNodeName>,\n\tonNotAllowedChildren?: () => void,\n\tonParse?: BBCodeNodeOnParse,\n};\n\nconst canBeEmptySymbol = Symbol('@canBeEmpty');\nconst voidSymbol = Symbol('@void');\n\nexport class BBCodeTagScheme extends BBCodeNodeScheme\n{\n\t[voidSymbol]: boolean = false;\n\t[canBeEmptySymbol]: boolean = true;\n\tchildConverter: BBCodeNodeConverter | null = null;\n\tallowedChildren: Array<BBCodeNodeName> = [];\n\tnotAllowedChildrenCallback: (NotAllowedChildrenCallbackOptions) => void = null;\n\tonParseHandler: () => void = null;\n\n\tconstructor(options: BBCodeTagSchemeOptions)\n\t{\n\t\tsuper(options);\n\t\tthis.setVoid(options.void);\n\t\tthis.setCanBeEmpty(options.canBeEmpty);\n\t\tthis.setChildConverter(options.convertChild);\n\t\tthis.setAllowedChildren(options.allowedChildren);\n\t\tthis.setOnChangeHandler(options.onChange);\n\t\tthis.setNotAllowedChildrenCallback(options.onNotAllowedChildren);\n\t\tthis.setOnParseHandler(options.onParse);\n\t}\n\n\tstatic defaultBlockStringifier(\n\t\tnode: BBCodeElementNode,\n\t\tscheme: BBCodeTagScheme,\n\t\toptions: BBCodeToStringOptions = {},\n\t): string\n\t{\n\t\tconst isAllowNewlineBeforeOpeningTag: boolean = (() => {\n\t\t\tconst previewsSibling: ?BBCodeContentNode = node.getPreviewsSibling();\n\n\t\t\treturn previewsSibling && previewsSibling.getName() !== '#linebreak';\n\t\t})();\n\t\tconst isAllowNewlineAfterClosingTag: boolean = (() => {\n\t\t\tconst nextSibling: ?BBCodeContentNode = node.getNextSibling();\n\n\t\t\treturn (\n\t\t\t\tnextSibling\n\t\t\t\t&& nextSibling.getName() !== '#linebreak'\n\t\t\t\t&& !(\n\t\t\t\t\tnextSibling.getType() === BBCodeNode.ELEMENT_NODE\n\t\t\t\t\t&& !nextSibling.getTagScheme().getGroup().includes('#inline')\n\t\t\t\t)\n\t\t\t);\n\t\t})();\n\n\t\tconst openingTag: string = node.getOpeningTag();\n\t\tconst content: string = node.getContent(options);\n\t\tconst closingTag: string = node.getClosingTag();\n\n\t\tconst isAllowContentLinebreaks: boolean = content.length > 0;\n\n\t\treturn [\n\t\t\tisAllowNewlineBeforeOpeningTag ? '\\n' : '',\n\t\t\topeningTag,\n\t\t\tisAllowContentLinebreaks ? '\\n' : '',\n\t\t\tcontent,\n\t\t\tisAllowContentLinebreaks ? '\\n' : '',\n\t\t\tclosingTag,\n\t\t\tisAllowNewlineAfterClosingTag ? '\\n' : '',\n\t\t].join('');\n\t}\n\n\tstatic defaultOnBlockParseHandler(node: BBCodeElementNode)\n\t{\n\t\tif (node)\n\t\t{\n\t\t\tnode.trimLinebreaksOnce();\n\t\t}\n\t}\n\n\tsetVoid(value: boolean)\n\t{\n\t\tif (Type.isBoolean(value))\n\t\t{\n\t\t\tthis[voidSymbol] = value;\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\t}\n\n\tisVoid(): boolean\n\t{\n\t\treturn this[voidSymbol];\n\t}\n\n\tsetCanBeEmpty(value: boolean)\n\t{\n\t\tif (Type.isBoolean(value))\n\t\t{\n\t\t\tthis[canBeEmptySymbol] = value;\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\t}\n\n\tcanBeEmpty(): boolean\n\t{\n\t\treturn this[canBeEmptySymbol];\n\t}\n\n\tsetChildConverter(converter: BBCodeNodeConverter | null)\n\t{\n\t\tif (Type.isFunction(converter) || Type.isNull(converter))\n\t\t{\n\t\t\tthis.childConverter = converter;\n\t\t}\n\t}\n\n\tgetChildConverter(): BBCodeNodeConverter | null\n\t{\n\t\treturn this.childConverter;\n\t}\n\n\tsetAllowedChildren(allowedChildren: Array<BBCodeNodeName>)\n\t{\n\t\tif (Type.isArray(allowedChildren))\n\t\t{\n\t\t\tthis.allowedChildren = allowedChildren;\n\t\t\tthis.runOnChangeHandler();\n\t\t}\n\t}\n\n\tgetAllowedChildren(): Array<BBCodeNodeName>\n\t{\n\t\treturn this.allowedChildren;\n\t}\n\n\tisChildAllowed(tagName: string): boolean\n\t{\n\t\tconst allowedChildren: Array<BBCodeNodeName> = this.getAllowedChildren();\n\n\t\treturn (\n\t\t\t!Type.isArrayFilled(allowedChildren)\n\t\t\t|| (\n\t\t\t\tType.isArrayFilled(allowedChildren)\n\t\t\t\t&& allowedChildren.includes(tagName)\n\t\t\t)\n\t\t);\n\t}\n\n\tsetNotAllowedChildrenCallback(callback: (NotAllowedChildrenCallbackOptions) => void)\n\t{\n\t\tthis.notAllowedChildrenCallback = callback;\n\t}\n\n\thasNotAllowedChildrenCallback(): boolean\n\t{\n\t\treturn Type.isFunction(this.notAllowedChildrenCallback);\n\t}\n\n\trunNotAllowedChildrenCallback(options: NotAllowedChildrenCallbackOptions)\n\t{\n\t\tif (Type.isFunction(this.notAllowedChildrenCallback))\n\t\t{\n\t\t\tthis.notAllowedChildrenCallback(options);\n\t\t}\n\t}\n\n\tsetOnParseHandler(handler: () => void)\n\t{\n\t\tthis.onParseHandler = handler;\n\t}\n\n\tgetOnParseHandler(): (() => void) | null\n\t{\n\t\treturn this.onParseHandler;\n\t}\n\n\trunOnParseHandler(node: BBCodeNode)\n\t{\n\t\tconst handler = this.getOnParseHandler();\n\t\tif (Type.isFunction(handler))\n\t\t{\n\t\t\thandler(node);\n\t\t}\n\t}\n}\n","import { Type } from 'main.core';\nimport { BBCodeEncoder } from 'ui.bbcode.encoder';\nimport { BBCodeTagScheme } from './node-schemes/tag-scheme';\nimport { BBCodeNode, type BBCodeNodeOptions } from '../nodes/node';\nimport { BBCodeRootNode, type RootNodeOptions } from '../nodes/root-node';\nimport { BBCodeFragmentNode, type FragmentNodeOptions } from '../nodes/fragment-node';\nimport { BBCodeElementNode, type BBCodeElementNodeOptions } from '../nodes/element-node';\nimport { BBCodeTextNode, type BBCodeTextNodeOptions } from '../nodes/text-node';\nimport { BBCodeNewLineNode } from '../nodes/new-line-node';\nimport { BBCodeTabNode } from '../nodes/tab-node';\nimport { BBCodeNodeScheme } from './node-schemes/node-scheme';\nimport type { BBCodeGroupName, BBCodeNodeName } from './node-schemes/node-scheme';\n\nexport type OutputTagCases = $Values<BBCodeScheme.Case>;\n\nexport type ParentChildMap = Map<\n\tBBCodeNodeName | BBCodeGroupName,\n\t{\n\t\tallowedChildren: Array<BBCodeNodeName | BBCodeGroupName>,\n\t\tallowedIn: Array<BBCodeNodeName | BBCodeGroupName>,\n\t\taliases: Array<BBCodeNodeName | BBCodeGroupName>,\n\t},\n>;\n\nexport type BBCodeSchemeOptions = {\n\ttagSchemes: Array<BBCodeTagScheme>,\n\toutputTagCase?: OutputTagCases,\n\tunresolvedNodesHoisting?: boolean,\n\tencoder?: BBCodeEncoder,\n};\n\nexport class BBCodeScheme\n{\n\tstatic Case: {[key: string]: string} = {\n\t\tLOWER: 'lower',\n\t\tUPPER: 'upper',\n\t};\n\n\ttagSchemes: Array<BBCodeTagScheme> = [];\n\toutputTagCase: OutputTagCases = BBCodeScheme.Case.LOWER;\n\tunresolvedNodesHoisting: boolean = true;\n\tencoder: BBCodeEncoder = new BBCodeEncoder();\n\tparentChildMap: ?ParentChildMap = null;\n\n\tstatic isNodeScheme(value: any): boolean\n\t{\n\t\treturn value instanceof BBCodeNodeScheme;\n\t}\n\n\tstatic getTagName(node: string | BBCodeNode): string | null\n\t{\n\t\tif (Type.isString(node))\n\t\t{\n\t\t\treturn node;\n\t\t}\n\n\t\tif (Type.isObject(node) && node instanceof BBCodeNode)\n\t\t{\n\t\t\treturn node.getName();\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tconstructor(options: BBCodeSchemeOptions = {})\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\tthrow new TypeError('options is not a object');\n\t\t}\n\n\t\tthis.onTagSchemeChange = this.onTagSchemeChange.bind(this);\n\n\t\tthis.setTagSchemes(options.tagSchemes);\n\t\tthis.setOutputTagCase(options.outputTagCase);\n\t\tthis.setUnresolvedNodesHoisting(options.unresolvedNodesHoisting);\n\t\tthis.setEncoder(options.encoder);\n\t}\n\n\tonTagSchemeChange()\n\t{\n\t\tthis.parentChildMap = null;\n\t}\n\n\tsetTagSchemes(tagSchemes: Array<BBCodeTagScheme>)\n\t{\n\t\tif (Type.isArray(tagSchemes))\n\t\t{\n\t\t\tconst invalidSchemeIndex: number = tagSchemes.findIndex((scheme: BBCodeTagScheme): boolean => {\n\t\t\t\treturn !BBCodeScheme.isNodeScheme(scheme);\n\t\t\t});\n\n\t\t\tif (invalidSchemeIndex > -1)\n\t\t\t{\n\t\t\t\tthrow new TypeError(`tagScheme #${invalidSchemeIndex} is not TagScheme instance`);\n\t\t\t}\n\n\t\t\ttagSchemes.forEach((tagScheme: BBCodeTagScheme) => {\n\t\t\t\ttagScheme.setOnChangeHandler(this.onTagSchemeChange);\n\t\t\t});\n\n\t\t\tthis.tagSchemes = [...tagSchemes];\n\t\t}\n\t}\n\n\tsetTagScheme(...tagSchemes: Array<BBCodeTagScheme>)\n\t{\n\t\tconst invalidSchemeIndex: number = tagSchemes.findIndex((scheme: BBCodeTagScheme): boolean => {\n\t\t\treturn !BBCodeScheme.isNodeScheme(scheme);\n\t\t});\n\n\t\tif (invalidSchemeIndex > -1)\n\t\t{\n\t\t\tthrow new TypeError(`tagScheme #${invalidSchemeIndex} is not TagScheme instance`);\n\t\t}\n\n\t\tconst newTagSchemesNames: Array<string> = tagSchemes.flatMap((scheme: BBCodeTagScheme) => {\n\t\t\treturn scheme.getName();\n\t\t});\n\n\t\tconst currentTagSchemes: Array<BBCodeTagScheme> = this.getTagSchemes();\n\t\tcurrentTagSchemes.forEach((scheme: BBCodeTagScheme) => {\n\t\t\tscheme.removeName(...newTagSchemesNames);\n\t\t});\n\n\t\tconst filteredCurrentTagSchemes: Array<BBCodeTagScheme> = currentTagSchemes.filter((scheme: BBCodeTagScheme) => {\n\t\t\treturn Type.isArrayFilled(scheme.getName());\n\t\t});\n\n\t\tthis.setTagSchemes([\n\t\t\t...filteredCurrentTagSchemes,\n\t\t\t...tagSchemes,\n\t\t]);\n\t}\n\n\tgetTagSchemes(): Array<BBCodeTagScheme>\n\t{\n\t\treturn [...this.tagSchemes];\n\t}\n\n\tgetTagScheme(node: string | BBCodeNode): ?BBCodeTagScheme\n\t{\n\t\tconst tagName: ?string = BBCodeScheme.getTagName(node);\n\t\tif (Type.isString(tagName))\n\t\t{\n\t\t\treturn this.getTagSchemes().find((scheme: BBCodeTagScheme): boolean => {\n\t\t\t\treturn scheme.getName().includes(tagName.toLowerCase());\n\t\t\t});\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetOutputTagCase(tagCase: $Values<BBCodeScheme.Case>)\n\t{\n\t\tif (!Type.isNil(tagCase))\n\t\t{\n\t\t\tconst allowedCases = Object.values(BBCodeScheme.Case);\n\t\t\tif (allowedCases.includes(tagCase))\n\t\t\t{\n\t\t\t\tthis.outputTagCase = tagCase;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthrow new TypeError(`'${tagCase}' is not allowed`);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetOutputTagCase(): $Values<BBCodeScheme.Case>\n\t{\n\t\treturn this.outputTagCase;\n\t}\n\n\tsetUnresolvedNodesHoisting(value: boolean)\n\t{\n\t\tif (!Type.isNil(value))\n\t\t{\n\t\t\tif (Type.isBoolean(value))\n\t\t\t{\n\t\t\t\tthis.unresolvedNodesHoisting = value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthrow new TypeError(`'${value}' is not allowed value`);\n\t\t\t}\n\t\t}\n\t}\n\n\tisAllowedUnresolvedNodesHoisting(): boolean\n\t{\n\t\treturn this.unresolvedNodesHoisting;\n\t}\n\n\tsetEncoder(encoder: BBCodeEncoder)\n\t{\n\t\tif (encoder instanceof BBCodeEncoder)\n\t\t{\n\t\t\tthis.encoder = encoder;\n\t\t}\n\t}\n\n\tgetEncoder(): BBCodeEncoder\n\t{\n\t\treturn this.encoder;\n\t}\n\n\tgetAllowedTags(): Array<string>\n\t{\n\t\treturn this.getTagSchemes().flatMap((tagScheme: BBCodeTagScheme) => {\n\t\t\treturn tagScheme.getName();\n\t\t});\n\t}\n\n\tisAllowedTag(node: string | BBCodeNode): boolean\n\t{\n\t\tconst allowedTags: Array<string> = this.getAllowedTags();\n\t\tconst tagName: ?string = BBCodeScheme.getTagName(node);\n\n\t\treturn allowedTags.includes(String(tagName).toLowerCase());\n\t}\n\n\tisVoid(node: string | BBCodeNode): boolean\n\t{\n\t\tconst tagScheme: ?BBCodeTagScheme = this.getTagScheme(node);\n\t\tif (tagScheme)\n\t\t{\n\t\t\treturn tagScheme.isVoid();\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tisElement(node: BBCodeNode): boolean\n\t{\n\t\treturn node && node.getType() === BBCodeNode.ELEMENT_NODE;\n\t}\n\n\tisRoot(node: BBCodeNode): boolean\n\t{\n\t\treturn node && node.getName() === '#root';\n\t}\n\n\tisFragment(node: BBCodeNode): boolean\n\t{\n\t\treturn node && node.getName() === '#fragment';\n\t}\n\n\tisAnyText(node: BBCodeNode): boolean\n\t{\n\t\treturn node && node.getType() === BBCodeNode.TEXT_NODE;\n\t}\n\n\tisText(node: BBCodeNode): boolean\n\t{\n\t\treturn node && node.getName() === '#text';\n\t}\n\n\tisNewLine(node: BBCodeNode): boolean\n\t{\n\t\treturn node && node.getName() === '#linebreak';\n\t}\n\n\tisTab(node: BBCodeNode): boolean\n\t{\n\t\treturn node && node.getName() === '#tab';\n\t}\n\n\tgetParentChildMap(): ParentChildMap\n\t{\n\t\tif (Type.isNull(this.parentChildMap))\n\t\t{\n\t\t\tconst tagSchemes: Array<BBCodeTagScheme> = this.getTagSchemes();\n\t\t\tconst map = new Map();\n\n\t\t\ttagSchemes.forEach((tagScheme: BBCodeTagScheme) => {\n\t\t\t\tconst groups: Array<BBCodeGroupName> = tagScheme.getGroup();\n\t\t\t\tconst schemeNames: Array<string> = [\n\t\t\t\t\t...tagScheme.getName(),\n\t\t\t\t\t...groups,\n\t\t\t\t\t...(tagScheme.isVoid() ? ['#void'] : []),\n\t\t\t\t];\n\n\t\t\t\tconst allowedChildren = tagScheme.getAllowedChildren();\n\t\t\t\tconst allowedIn = tagScheme.getAllowedIn();\n\n\t\t\t\tschemeNames.forEach((name) => {\n\t\t\t\t\tif (!map.has(name))\n\t\t\t\t\t{\n\t\t\t\t\t\tmap.set(\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tallowedChildren: new Set(),\n\t\t\t\t\t\t\t\tallowedIn: new Set(),\n\t\t\t\t\t\t\t\taliases: new Set(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst entry: {\n\t\t\t\t\t\tallowedChildren: Set,\n\t\t\t\t\t\tallowedIn: Set,\n\t\t\t\t\t\taliases: Set,\n\t\t\t\t\t} = map.get(name);\n\n\t\t\t\t\tconst newEntry = {\n\t\t\t\t\t\tallowedChildren: new Set([...entry.allowedChildren, ...allowedChildren]),\n\t\t\t\t\t\tallowedIn: new Set([...entry.allowedIn, ...allowedIn]),\n\t\t\t\t\t\taliases: new Set([name, ...groups, ...(tagScheme.isVoid() ? ['#void'] : [])]),\n\t\t\t\t\t};\n\n\t\t\t\t\tmap.set(name, newEntry);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.parentChildMap = map;\n\t\t}\n\n\t\treturn this.parentChildMap;\n\t}\n\n\tisChildAllowed(parent: string | BBCodeNode, child: string | BBCodeNode): boolean\n\t{\n\t\tconst parentName: ?string = BBCodeScheme.getTagName(parent);\n\t\tconst childName: ?string = BBCodeScheme.getTagName(child);\n\n\t\tif (\n\t\t\tType.isStringFilled(parentName)\n\t\t\t&& Type.isStringFilled(childName)\n\t\t)\n\t\t{\n\t\t\tif (parentName === '#fragment')\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst parentChildMap = this.getParentChildMap();\n\t\t\tconst parentMap = parentChildMap.get(parentName);\n\t\t\tconst childMap = parentChildMap.get(childName);\n\n\t\t\tif (\n\t\t\t\tType.isPlainObject(parentMap)\n\t\t\t\t&& Type.isPlainObject(childMap)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn (\n\t\t\t\t\t(\n\t\t\t\t\t\tparentMap.allowedChildren.size === 0\n\t\t\t\t\t\t|| [...childMap.aliases].some((name) => {\n\t\t\t\t\t\t\treturn parentMap.allowedChildren.has(name);\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t&& (\n\t\t\t\t\t\tchildMap.allowedIn.size === 0\n\t\t\t\t\t\t|| [...parentMap.aliases].some((name) => {\n\t\t\t\t\t\t\treturn childMap.allowedIn.has(name);\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\n\t\treturn false;\n\t}\n\n\tcreateRoot(options: RootNodeOptions = {}): BBCodeRootNode\n\t{\n\t\treturn new BBCodeRootNode({\n\t\t\t...options,\n\t\t\tscheme: this,\n\t\t});\n\t}\n\n\tcreateNode(options: BBCodeNodeOptions): BBCodeNode\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\tthrow new TypeError('options is not a object');\n\t\t}\n\n\t\tif (!Type.isStringFilled(options.name))\n\t\t{\n\t\t\tthrow new TypeError('options.name is required');\n\t\t}\n\n\t\tif (!this.isAllowedTag(options.name))\n\t\t{\n\t\t\tthrow new TypeError(`Scheme for \"${options.name}\" tag is not specified.`);\n\t\t}\n\n\t\treturn new BBCodeNode({\n\t\t\t...options,\n\t\t\tscheme: this,\n\t\t});\n\t}\n\n\tcreateElement(options: BBCodeElementNodeOptions = {}): BBCodeElementNode\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\tthrow new TypeError('options is not a object');\n\t\t}\n\n\t\tif (!Type.isStringFilled(options.name))\n\t\t{\n\t\t\tthrow new TypeError('options.name is required');\n\t\t}\n\n\t\tif (!this.isAllowedTag(options.name))\n\t\t{\n\t\t\tthrow new TypeError(`Scheme for \"${options.name}\" tag is not specified.`);\n\t\t}\n\n\t\treturn new BBCodeElementNode({\n\t\t\t...options,\n\t\t\tscheme: this,\n\t\t});\n\t}\n\n\tcreateText(options: BBCodeTextNodeOptions = {}): BBCodeTextNode\n\t{\n\t\tconst preparedOptions = Type.isPlainObject(options) ? options : { content: options };\n\n\t\treturn new BBCodeTextNode({\n\t\t\t...preparedOptions,\n\t\t\tscheme: this,\n\t\t});\n\t}\n\n\tcreateNewLine(options: BBCodeTextNodeOptions = {}): BBCodeNewLineNode\n\t{\n\t\tconst preparedOptions = Type.isPlainObject(options) ? options : { content: options };\n\n\t\treturn new BBCodeNewLineNode({\n\t\t\t...preparedOptions,\n\t\t\tscheme: this,\n\t\t});\n\t}\n\n\tcreateTab(options: BBCodeTextNodeOptions = {}): BBCodeTabNode\n\t{\n\t\tconst preparedOptions = Type.isPlainObject(options) ? options : { content: options };\n\n\t\treturn new BBCodeTabNode({\n\t\t\t...preparedOptions,\n\t\t\tscheme: this,\n\t\t});\n\t}\n\n\tcreateFragment(options: FragmentNodeOptions = {}): BBCodeFragmentNode\n\t{\n\t\treturn new BBCodeFragmentNode({\n\t\t\t...options,\n\t\t\tscheme: this,\n\t\t});\n\t}\n}\n","import { BBCodeNodeScheme } from './node-scheme';\n\nexport class BBCodeTextScheme extends BBCodeNodeScheme\n{\n\tconstructor(options)\n\t{\n\t\tsuper({ ...options, name: ['#text'] });\n\t}\n}\n","import { BBCodeNodeScheme } from './node-scheme';\n\nexport class BBCodeNewLineScheme extends BBCodeNodeScheme\n{\n\tconstructor(options = {})\n\t{\n\t\tsuper({ ...options, name: ['#linebreak'] });\n\t}\n}\n","import { BBCodeNodeScheme } from './node-scheme';\n\nexport class BBCodeTabScheme extends BBCodeNodeScheme\n{\n\tconstructor(options)\n\t{\n\t\tsuper({ ...options, name: ['#tab'] });\n\t}\n}\n","import { Type } from 'main.core';\nimport type { BBCodeToStringOptions } from '../nodes/root-node';\nimport { BBCodeScheme } from './bbcode-scheme';\nimport { BBCodeTagScheme } from './node-schemes/tag-scheme';\nimport { type BBCodeContentNode, BBCodeNode } from '../nodes/node';\nimport { typeof BBCodeElementNode } from '../nodes/element-node';\nimport type { BBCodeSchemeOptions } from './bbcode-scheme';\n\nexport type DefaultBBCodeSchemeOptions = BBCodeSchemeOptions & {\n\tfileTag: 'disk' | 'file' | 'none',\n};\n\nexport class DefaultBBCodeScheme extends BBCodeScheme\n{\n\tconstructor(options: DefaultBBCodeSchemeOptions = {})\n\t{\n\t\tconst tagSchemes = [\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['b', 'u', 'i', 's'],\n\t\t\t\tgroup: ['#inline', '#format'],\n\t\t\t\tallowedChildren: ['#text', '#linebreak', '#inline'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['img'],\n\t\t\t\tgroup: ['#inlineBlock'],\n\t\t\t\tallowedChildren: ['#text'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['url'],\n\t\t\t\tgroup: ['#inline'],\n\t\t\t\tallowedChildren: ['#text', '#format', 'img'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t\tstringify(node: BBCodeElementNode): BBCodeElementNode {\n\t\t\t\t\tconst openingTag = node.getOpeningTag();\n\t\t\t\t\tconst closingTag = node.getClosingTag();\n\t\t\t\t\tconst content = node.getContent();\n\n\t\t\t\t\treturn `${openingTag}${content}${closingTag}`;\n\t\t\t\t},\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'p',\n\t\t\t\tgroup: ['#block'],\n\t\t\t\tallowedChildren: ['#text', '#linebreak', '#inline', '#inlineBlock'],\n\t\t\t\tstringify: BBCodeTagScheme.defaultBlockStringifier,\n\t\t\t\tonParse: BBCodeTagScheme.defaultOnBlockParseHandler,\n\t\t\t\tallowedIn: ['#root', '#shadowRoot'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'list',\n\t\t\t\tgroup: ['#block'],\n\t\t\t\tallowedChildren: ['*'],\n\t\t\t\tstringify: BBCodeTagScheme.defaultBlockStringifier,\n\t\t\t\tonParse: BBCodeTagScheme.defaultOnBlockParseHandler,\n\t\t\t\tallowedIn: ['#root', '#shadowRoot'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t\tonNotAllowedChildren: ({ node, children }): BBCodeElementNode => {\n\t\t\t\t\tconst notAllowedChildren: Set<string> = new Set(['#tab', '#linebreak']);\n\t\t\t\t\tconst bePropagated: Array<BBCodeContentNode> = [];\n\t\t\t\t\tchildren.forEach((child: BBCodeContentNode) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnotAllowedChildren.has(child.getName())\n\t\t\t\t\t\t\t|| (\n\t\t\t\t\t\t\t\tchild.getName() === '#text'\n\t\t\t\t\t\t\t\t&& /^\\s+$/.test(child.getContent())\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tchild.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbePropagated.push(child);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tnode.propagateChild(...bePropagated);\n\t\t\t\t},\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['*'],\n\t\t\t\tallowedChildren: ['#text', '#linebreak', '#inline', '#inlineBlock'],\n\t\t\t\tstringify: (node: BBCodeElementNode, scheme: BBCodeScheme, toStringOptions: BBCodeToStringOptions) => {\n\t\t\t\t\tconst openingTag: string = node.getOpeningTag();\n\t\t\t\t\tconst content: string = node.getContent(toStringOptions).trim();\n\n\t\t\t\t\treturn `${openingTag}${content}`;\n\t\t\t\t},\n\t\t\t\tallowedIn: ['list'],\n\t\t\t\tonNotAllowedChildren: ({ node, children }): BBCodeElementNode => {\n\t\t\t\t\tconst bePropagated: Array<BBCodeContentNode> = [];\n\t\t\t\t\tchildren.forEach((child: BBCodeContentNode) => {\n\t\t\t\t\t\tif (child.getName() === '#tab')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tchild.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbePropagated.push(child);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tnode.propagateChild(...bePropagated);\n\t\t\t\t},\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'table',\n\t\t\t\tgroup: ['#block'],\n\t\t\t\tallowedChildren: ['tr'],\n\t\t\t\tstringify: BBCodeTagScheme.defaultBlockStringifier,\n\t\t\t\tonParse: BBCodeTagScheme.defaultOnBlockParseHandler,\n\t\t\t\tallowedIn: ['#root', 'td', 'th', 'quote', 'spoiler'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'tr',\n\t\t\t\tallowedChildren: ['th', 'td'],\n\t\t\t\tallowedIn: ['table'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['th', 'td'],\n\t\t\t\tgroup: ['#shadowRoot'],\n\t\t\t\tallowedChildren: ['#text', '#linebreak', '#inline', '#inlineBlock', '#block'],\n\t\t\t\tallowedIn: ['tr'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'quote',\n\t\t\t\tgroup: ['#block', '#shadowRoot'],\n\t\t\t\tallowedChildren: ['#text', '#linebreak', '#inline', '#inlineBlock', '#block'],\n\t\t\t\tallowedIn: ['#root', '#shadowRoot'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'code',\n\t\t\t\tgroup: ['#block'],\n\t\t\t\tstringify: BBCodeTagScheme.defaultBlockStringifier,\n\t\t\t\tonParse: BBCodeTagScheme.defaultOnBlockParseHandler,\n\t\t\t\tallowedChildren: ['#text', '#linebreak', '#tab'],\n\t\t\t\tallowedIn: ['#root', '#shadowRoot'],\n\t\t\t\tconvertChild: (\n\t\t\t\t\tchild: BBCodeContentNode,\n\t\t\t\t\tscheme: BBCodeScheme,\n\t\t\t\t\ttoStringOptions: BBCodeToStringOptions,\n\t\t\t\t): BBCodeContentNode => {\n\t\t\t\t\tif (['#linebreak', '#tab', '#text'].includes(child.getName()))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn child;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn scheme.createText(child.toString(toStringOptions));\n\t\t\t\t},\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'video',\n\t\t\t\tgroup: ['#inlineBlock'],\n\t\t\t\tallowedChildren: ['#text'],\n\t\t\t\tallowedIn: ['#root', '#shadowRoot', 'p'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: 'spoiler',\n\t\t\t\tgroup: ['#block', '#shadowRoot'],\n\t\t\t\tallowedChildren: ['#text', '#linebreak', '#inline', '#inlineBlock', '#block'],\n\t\t\t\tallowedIn: ['#root', '#shadowRoot'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['user', 'project', 'department'],\n\t\t\t\tgroup: ['#inline', '#mention'],\n\t\t\t\tallowedChildren: ['#text', '#format'],\n\t\t\t\tcanBeEmpty: false,\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['#root'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['#fragment'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['#text'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['#linebreak'],\n\t\t\t}),\n\t\t\tnew BBCodeTagScheme({\n\t\t\t\tname: ['#tab'],\n\t\t\t\tstringify: () => {\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t}),\n\t\t];\n\n\t\tif (options?.fileTag !== 'none')\n\t\t{\n\t\t\ttagSchemes.push(\n\t\t\t\tnew BBCodeTagScheme({\n\t\t\t\t\tname: options?.fileTag === 'file' ? 'file' : 'disk',\n\t\t\t\t\tgroup: ['#inline'],\n\t\t\t\t\tvoid: true,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tsuper({\n\t\t\ttagSchemes,\n\t\t\toutputTagCase: BBCodeScheme.Case.LOWER,\n\t\t\tunresolvedNodesHoisting: true,\n\t\t});\n\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tthis.setTagSchemes(options.tagSchemes);\n\t\t\tthis.setOutputTagCase(options.outputTagCase);\n\t\t\tthis.setUnresolvedNodesHoisting(options.unresolvedNodesHoisting);\n\t\t}\n\t}\n}\n"],"names":["getByIndex","array","index","Type","isArray","TypeError","isInteger","preparedIndex","length","privateMap","WeakMap","nameSymbol","Symbol","BBCodeNode","constructor","options","children","set","delayedChildren","setName","name","get","scheme","setParent","parent","setChildren","ELEMENT_NODE","TEXT_NODE","ROOT_NODE","FRAGMENT_NODE","freezeProperty","node","property","value","enumerable","Object","defineProperty","writable","configurable","makeNonEnumerableProperty","flattenChildren","isArrayFilled","flatMap","getType","getChildren","setScheme","onUnknown","getScheme","getTagScheme","getName","getEncoder","prepareCase","currentCase","getOutputTagCase","toUpperCase","toLowerCase","isString","getDisplayedName","mounted","hasParent","onNodeDidMount","getParent","type","Boolean","remove","removeChild","appendChild","getLastChild","getLastChildOfType","reverse","find","getLastChildOfName","getFirstChild","getFirstChildOfType","getFirstChildOfName","getPreviewsSibling","parentChildren","currentIndex","indexOf","getPreviewsSiblings","filter","child","getNextSibling","getNextSiblings","getChildrenCount","hasChildren","isEmpty","adjustChildren","setDelayedChildren","addDelayedChildren","getDelayedChildren","hasDelayedChildren","flattenedChildren","forEach","push","prependChild","unshift","insertBefore","nodes","currentNodeIndex","deleteCount","splice","insertAfter","startIndex","propagateChild","includes","filteredChildren","replaceChild","targetNode","map","replace","clone","deep","createNode","toPlainText","join","getTextContent","getPlainTextLength","removePreviewsSiblings","previewsSiblings","sibling","removeNextSiblings","nextSiblings","findByTextIndex","endIndex","flattenAst","getLength","split","offset","byWord","plainTextLength","leftTree","tree","leftNode","rightNode","rightTree","ast","flat","traverse","toJSON","voidSymbol","BBCodeElementNode","attributes","tagScheme","isVoid","setValue","setAttributes","isAllowedTag","filterChildren","resolved","unresolved","isChildAllowed","convertChildren","childConverter","getChildConverter","isNumber","isBoolean","getValue","canBeEmpty","hasGroup","groupName","isPlainObject","entries","key","fromEntries","setAttribute","isStringFilled","preparedName","isNil","getAttribute","getAttributes","convertedChildren","hasNotAllowedChildrenCallback","runNotAllowedChildrenCallback","isAllowedUnresolvedNodesHoisting","toStringValue","encodedValue","encodeAttribute","toStringAttributes","attrValue","preparedKey","getContent","toString","getOpeningTag","displayedName","tagValue","formattedAttributes","getClosingTag","createElement","void","splitByChildIndex","childrenCount","leftChildren","childIndex","rightChildren","trimStartLinebreaks","firstChild","trimEndLinebreaks","lastChild","trimLinebreaks","trimLinebreaksOnce","stringifier","getStringifier","isFunction","openingTag","content","closingTag","BBCodeRootNode","createRoot","BBCodeFragmentNode","createFragment","contentSymbol","BBCodeTextNode","nodeOptions","setContent","isTextNodeContent","String","createText","sourceOffset","contentLength","lastIndex","lastIndexOf","slice","encode","encodeText","BBCodeNewLineNode","createNewLine","BBCodeTabNode","createTab","BBCodeNodeScheme","group","serializer","allowedIn","onChangeHandler","setGroup","setAllowedIn","setStringifier","stringify","setSerializer","serialize","setOnChangeHandler","onChange","runOnChangeHandler","removeName","names","removeGroup","groups","getGroup","isNull","getSerializer","allowedParents","getAllowedIn","isAllowedIn","tagName","handler","getOnChangeHandler","canBeEmptySymbol","BBCodeTagScheme","allowedChildren","notAllowedChildrenCallback","onParseHandler","setVoid","setCanBeEmpty","setChildConverter","convertChild","setAllowedChildren","setNotAllowedChildrenCallback","onNotAllowedChildren","setOnParseHandler","onParse","defaultBlockStringifier","isAllowNewlineBeforeOpeningTag","previewsSibling","isAllowNewlineAfterClosingTag","nextSibling","isAllowContentLinebreaks","defaultOnBlockParseHandler","converter","getAllowedChildren","callback","getOnParseHandler","runOnParseHandler","BBCodeScheme","isNodeScheme","getTagName","isObject","tagSchemes","outputTagCase","Case","LOWER","unresolvedNodesHoisting","encoder","BBCodeEncoder","parentChildMap","onTagSchemeChange","bind","setTagSchemes","setOutputTagCase","setUnresolvedNodesHoisting","setEncoder","invalidSchemeIndex","findIndex","setTagScheme","newTagSchemesNames","currentTagSchemes","getTagSchemes","filteredCurrentTagSchemes","tagCase","allowedCases","values","getAllowedTags","allowedTags","isElement","isRoot","isFragment","isAnyText","isText","isNewLine","isTab","getParentChildMap","Map","schemeNames","has","Set","aliases","entry","newEntry","parentName","childName","parentMap","childMap","size","some","preparedOptions","UPPER","BBCodeTextScheme","BBCodeNewLineScheme","BBCodeTabScheme","DefaultBBCodeScheme","notAllowedChildren","bePropagated","test","toStringOptions","trim","fileTag"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit