{ "version": 3, "sources": ["src/docuK-prepare-2.3.ts"], "sourcesContent": ["import type {\r\n\tDecomposedURI,\r\n\tDescR,\r\n\tFSToRs,\r\n\tFuzzySearch,\r\n\tFuzzySearchResult,\r\n\tPatternURI,\r\n\tRenderResult,\r\n\tSearchVars,\r\n\tSplitHangul,\r\n\tStrToJSON,\r\n\tYTiframeConfig,\r\n\tYTiframeResult,\r\n} from \"./types/types\";\r\n\r\nwindow.m = window.k = window.k || {}; // window.m can be asigned another JSON or number/string and so on. But window.k must be kept.\r\n(function (m, $) {\r\n\tm.version0 = \"3.1\";\r\n\tm.$window = $(window);\r\n\tm.$document = $(document);\r\n\tm.$html = $(\"html\");\r\n\tm.$title = $(\"title\");\r\n\tconst fsToRs: FSToRs = (m.fsToRs = {\r\n\t\tfixed: false,\r\n\t});\r\n\r\n\t$.fn.exists = function (): boolean {\r\n\t\treturn Boolean(this.length);\r\n\t};\r\n\tm.browserWidth = window.innerWidth;\r\n\tm.$docuK = $(\".docuK\");\r\n\r\n\tm.getUTF8Length = function (s: string): number {\r\n\t\tlet len = 0;\r\n\t\tfor (let i = 0; i < s.length; i++) {\r\n\t\t\tlet code = s.charCodeAt(i);\r\n\t\t\tif (code <= 0x7f) {\r\n\t\t\t\tlen += 1;\r\n\t\t\t} else if (code <= 0x7ff) {\r\n\t\t\t\tlen += 2;\r\n\t\t\t} else if (code >= 0xd800 && code <= 0xdfff) {\r\n\t\t\t\t// Surrogate pair: These take 4 bytes in UTF-8 and 2 chars in UCS-2\r\n\t\t\t\t// (Assume next char is the other [valid] half and just skip it)\r\n\t\t\t\tlen += 4;\r\n\t\t\t\ti++;\r\n\t\t\t} else if (code < 0xffff) {\r\n\t\t\t\tlen += 3;\r\n\t\t\t} else {\r\n\t\t\t\tlen += 4;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn len;\r\n\t};\r\n\tm.getSearchVars = function (searchStr: string | null | undefined): SearchVars {\r\n\t\tlet vars: SearchVars = [];\r\n\t\tif (searchStr !== null && searchStr !== undefined && searchStr.length) {\r\n\t\t\tif (searchStr.startsWith(\"?\")) {\r\n\t\t\t\tsearchStr = searchStr.substring(1);\r\n\t\t\t}\r\n\t\t\tlet j = searchStr.indexOf(\"#\");\r\n\t\t\tif (j !== -1) {\r\n\t\t\t\tsearchStr = searchStr.substring(0, j);\r\n\t\t\t}\r\n\t\t\tlet splits = searchStr.replace(/&/gi, \"&\").split(\"&\");\r\n\t\t\tfor (let i = 0; i < splits.length; i++) {\r\n\t\t\t\tlet key = splits[i];\r\n\t\t\t\tlet value = \"\";\r\n\t\t\t\tlet k = key.indexOf(\"=\");\r\n\t\t\t\tif (k !== -1) {\r\n\t\t\t\t\tvalue = decodeURIComponent(key.substring(k + 1));\r\n\t\t\t\t\tkey = key.substring(0, k);\r\n\t\t\t\t}\r\n\t\t\t\tkey = decodeURIComponent(key);\r\n\t\t\t\tvars[i] = vars[key] = { key: key, val: value };\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn vars;\r\n\t};\r\n\r\n\t////////////////////////////////////////////////////\r\n\t// Heap sort.\r\n\t////////////////////////////////////////////////////\r\n\tm.heapify = function (arr: any[], key: string, sorted: number[], n: number, i: number): void {\r\n\t\tlet largest = i;\r\n\t\tlet l = 2 * i + 1;\r\n\t\tlet r = 2 * i + 2;\r\n\t\tif (l < n && arr[sorted[l]][key] > arr[sorted[largest]][key]) {\r\n\t\t\tlargest = l;\r\n\t\t}\r\n\t\tif (r < n && arr[sorted[r]][key] > arr[sorted[largest]][key]) {\r\n\t\t\tlargest = r;\r\n\t\t}\r\n\t\tif (largest != i) {\r\n\t\t\t[sorted[i], sorted[largest]] = [sorted[largest], sorted[i]];\r\n\t\t\tm.heapify(arr, key, sorted, n, largest);\r\n\t\t}\r\n\t};\r\n\tm.heapsort = function (arr: any[], key: string, sorted: number[], upto: number): number {\r\n\t\tlet n = arr.length;\r\n\t\tfor (let i = Math.floor(n / 2) - 1; i >= 0; i--) {\r\n\t\t\tm.heapify(arr, key, sorted, n, i);\r\n\t\t}\r\n\t\tif (upto) {\r\n\t\t\tupto = upto > n ? n : upto;\r\n\t\t} else {\r\n\t\t\tupto = n;\r\n\t\t}\r\n\t\tlet until = n - upto;\r\n\t\tfor (let i = n - 1; i >= until; i--) {\r\n\t\t\t[sorted[0], sorted[i]] = [sorted[i], sorted[0]];\r\n\t\t\tm.heapify(arr, key, sorted, i, 0);\r\n\t\t}\r\n\t\treturn until;\r\n\t};\r\n\tm.heapsortRest = function (arr: any[], key: string, sorted: number[], upto: number, n: number): number {\r\n\t\tupto = upto > n ? n : upto;\r\n\t\tlet until = n - upto;\r\n\t\tfor (let i = n - 1; i >= until; i--) {\r\n\t\t\t[sorted[0], sorted[i]] = [sorted[i], sorted[0]];\r\n\t\t\tm.heapify(arr, key, sorted, i, 0);\r\n\t\t}\r\n\t\treturn until;\r\n\t};\r\n\r\n\t////////////////////////////////////////////////////\r\n\t// Escape and Unescape HTML string.\r\n\t////////////////////////////////////////////////////\r\n\tm.escapeHTML = function (str: string): string {\r\n\t\tif (!str || typeof str !== \"string\") {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn str.replace(/&/g, \"&\").replace(//g, \">\");\r\n\t};\r\n\tm.escapeOnlyTag = function (str: string): string {\r\n\t\tif (!str || typeof str !== \"string\") {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn str.replace(//g, \">\");\r\n\t};\r\n\tm.unescapeHTML = function (str: string): string {\r\n\t\tif (!str || typeof str !== \"string\") {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn str.replace(/>/g, \">\").replace(/</g, \"<\").replace(/&/g, \"&\");\r\n\t};\r\n\tm.escapeAMP = function (str: string): string {\r\n\t\tif (!str || typeof str !== \"string\") {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn str.replace(/%/g, \"%25\").replace(/&/g, \"%26\").replace(/#/g, \"%23\");\r\n\t};\r\n\tm.unescapeAMP = function (str: string): string {\r\n\t\tif (!str || typeof str !== \"string\") {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn str.replace(/%23/g, \"#\").replace(/%26/g, \"&\").replace(/%25/g, \"%\");\r\n\t};\r\n\tm.escapeEncodePctg = function (str: string): string {\r\n\t\tif (!str || typeof str !== \"string\") {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn str.replace(/([\\!\\@\\#\\$\\%\\^\\&\\*\\[\\]\\{\\}\\_\\<\\>\\,\\.\\/\\?\\~])/g, \"\\\\$1\");\r\n\t};\r\n\r\n\t////////////////////////////////////////////////////\r\n\t// URI rendering :: http link itself, videos, images, maps.\r\n\t////////////////////////////////////////////////////\r\n\tm.ptnURI = {};\r\n\tm.ptnURL = /^https?:\\/\\/[^\\s\\t\\n\\r\\\"\\'\\`\\<\\>\\{\\}\\[\\]]+/i;\r\n\tm.ptnFILE = /^file:\\/\\/\\/[^\\s\\t\\n\\r\\\"\\'\\`\\<\\>\\{\\}\\[\\]]+/i;\r\n\tm.ptnTag = /^<\\w+[\\s\\S]+>/i;\r\n\tm.ptnVal = /^([0-9]+(?:\\.[0-9]+)?)\\/([0-9]+(?:\\.[0-9]+)?)$/;\r\n\r\n\tm.uriToA = function (uri: string | null | undefined): string {\r\n\t\tif (!uri || typeof uri !== \"string\") {\r\n\t\t\turi = String(uri);\r\n\t\t}\r\n\t\tlet exec = m.ptnURL.exec(uri);\r\n\t\tif (exec !== null) {\r\n\t\t\treturn `${m.escapeOnlyTag(decodeURIComponent(uri).replace(/[\\n\\s\\t\\r]/g, \" \"))}`;\r\n\t\t} else {\r\n\t\t\texec = m.ptnFILE.exec(uri);\r\n\t\t\tif (exec !== null) {\r\n\t\t\t\treturn `${m.escapeOnlyTag(decodeURIComponent(uri).replace(/[\\n\\s\\t\\r]/g, \" \"))}`;\r\n\t\t\t} else {\r\n\t\t\t\treturn m.escapeOnlyTag(uri);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tm.videoZIndex = 10000;\r\n\tm.togglePosition = function (elem: HTMLElement): void {\r\n\t\tlet $elem = $(elem);\r\n\t\tlet $parent = $elem.closest(\".rC\");\r\n\t\tif ($parent.hasClass(\"fixed\")) {\r\n\t\t\t$parent.removeClass(\"fixed\");\r\n\t\t\t$parent.css(\"z-index\", 0);\r\n\t\t\twindow.scrollTo(0, $parent.offset().top);\r\n\t\t\t$elem.text(\"\u25B2 [--stick to the left top--]\");\r\n\t\t\tm.fsToRs.fixed = false;\r\n\t\t} else {\r\n\t\t\twindow.scrollBy({ left: 0, top: -$parent.height(), behavior: \"smooth\" });\r\n\t\t\t$parent.addClass(\"fixed\");\r\n\t\t\tlet $z = $parent.find(\".z-index\");\r\n\t\t\tlet zIndex = m.videoZIndex;\r\n\t\t\tif ($z.length) {\r\n\t\t\t\tzIndex = parseInt($z.html());\r\n\t\t\t} else {\r\n\t\t\t\t$elem.before(`${m.videoZIndex}`);\r\n\t\t\t\tm.videoZIndex--;\r\n\t\t\t}\r\n\t\t\t$parent.css(\"z-index\", zIndex);\r\n\t\t\t$elem.text(\"\u25B2 [--return to the original position--]\");\r\n\t\t\tm.fsToRs.fixed = true;\r\n\t\t}\r\n\t};\r\n\tm.rC = function (elemStr: string, option?: string | null, id?: string | null, noPc?: boolean): string {\r\n\t\treturn `
${m.escapeOnlyTag(txtArray[row][col]).replace(/\\n/g, \" \")} | `;\r\n\t\t\t}\r\n\t\t\ttableStr += \"
]*>/i.test(subStr)) {\r\n\t\t\t\twhile (!/<\\/pre>$/i.test(subStr)) {\r\n\t\t\t\t\tdE.exec(SEE);\r\n\t\t\t\t\tend = dE.lastIndex;\r\n\t\t\t\t\tsubStr = SEE.substring(start, end).trim();\r\n\t\t\t\t}\r\n\t\t\t} else if (/^```/.test(subStr)) {\r\n\t\t\t\twhile (!/```\\/$/.test(subStr)) {\r\n\t\t\t\t\tdE.exec(SEE);\r\n\t\t\t\t\tend = dE.lastIndex;\r\n\t\t\t\t\tsubStr = SEE.substring(start, end).trim();\r\n\t\t\t\t}\r\n\t\t\t} else if (/^