From c4ad024a7a839bd883c66ee182727d46196f4260 Mon Sep 17 00:00:00 2001 From: Simon Cozens Date: Wed, 17 Apr 2024 17:15:37 +0100 Subject: [PATCH] Add built web version --- docs/0.bootstrap.js | 61 + docs/255ed0e08b1b0bb0136c.module.wasm | Bin 0 -> 1446798 bytes docs/bootstrap.js | 279 + docs/index.html | 185 + docs/wordlists/Adlam.txt | 693 + docs/wordlists/Arabic.txt | 44567 ++ docs/wordlists/Armenian.txt | 58845 +++ docs/wordlists/Avestan.txt | 4298 + docs/wordlists/Bengali.txt | 49519 ++ docs/wordlists/Bopomofo.txt | 35 + docs/wordlists/Canadian_Aboriginal.txt | 28488 ++ docs/wordlists/Chakma.txt | 4401 + docs/wordlists/Cherokee.txt | 7467 + docs/wordlists/Common.txt | 11 + docs/wordlists/Cyrillic.txt | 4798 + docs/wordlists/Devanagari.txt | 61867 +++ docs/wordlists/Ethiopic.txt | 91698 ++++ docs/wordlists/Georgian.txt | 32321 ++ docs/wordlists/Grantha.txt | 844 + docs/wordlists/Greek.txt | 67998 +++ docs/wordlists/Gujarati.txt | 94935 ++++ docs/wordlists/Gurmukhi.txt | 107775 ++++ docs/wordlists/Hebrew.txt | 51815 ++ docs/wordlists/Hiragana.txt | 2265 + docs/wordlists/Inherited.txt | 0 docs/wordlists/Japanese.txt | 14005 + docs/wordlists/Kannada.txt | 6262 + docs/wordlists/Katakana.txt | 17244 + docs/wordlists/Khmer.txt | 9206 + docs/wordlists/Lao.txt | 15028 + docs/wordlists/Latin.txt | 594758 ++++++++++++++++++++++ docs/wordlists/Lisu.txt | 1382 + docs/wordlists/Malayalam.txt | 5839 + docs/wordlists/Mongolian.txt | 34330 ++ docs/wordlists/Myanmar.txt | 19375 + docs/wordlists/Ol_Chiki.txt | 5274 + docs/wordlists/Oriya.txt | 68547 +++ docs/wordlists/Osage.txt | 1324 + docs/wordlists/Sinhala.txt | 97995 ++++ docs/wordlists/Syriac.txt | 64611 +++ docs/wordlists/Tamil.txt | 126052 +++++ docs/wordlists/Telugu.txt | 184932 +++++++ docs/wordlists/Thai.txt | 18778 + docs/wordlists/Thanaa.txt | 1251 + docs/wordlists/Tibetan.txt | 7037 + docs/wordlists/Tifinagh.txt | 28542 ++ docs/wordlists/Vai.txt | 454 + 47 files changed, 2037391 insertions(+) create mode 100644 docs/0.bootstrap.js create mode 100644 docs/255ed0e08b1b0bb0136c.module.wasm create mode 100644 docs/bootstrap.js create mode 100644 docs/index.html create mode 100644 docs/wordlists/Adlam.txt create mode 100644 docs/wordlists/Arabic.txt create mode 100644 docs/wordlists/Armenian.txt create mode 100644 docs/wordlists/Avestan.txt create mode 100644 docs/wordlists/Bengali.txt create mode 100644 docs/wordlists/Bopomofo.txt create mode 100644 docs/wordlists/Canadian_Aboriginal.txt create mode 100644 docs/wordlists/Chakma.txt create mode 100644 docs/wordlists/Cherokee.txt create mode 100644 docs/wordlists/Common.txt create mode 100644 docs/wordlists/Cyrillic.txt create mode 100644 docs/wordlists/Devanagari.txt create mode 100644 docs/wordlists/Ethiopic.txt create mode 100644 docs/wordlists/Georgian.txt create mode 100644 docs/wordlists/Grantha.txt create mode 100644 docs/wordlists/Greek.txt create mode 100644 docs/wordlists/Gujarati.txt create mode 100644 docs/wordlists/Gurmukhi.txt create mode 100644 docs/wordlists/Hebrew.txt create mode 100644 docs/wordlists/Hiragana.txt create mode 100644 docs/wordlists/Inherited.txt create mode 100644 docs/wordlists/Japanese.txt create mode 100644 docs/wordlists/Kannada.txt create mode 100644 docs/wordlists/Katakana.txt create mode 100644 docs/wordlists/Khmer.txt create mode 100644 docs/wordlists/Lao.txt create mode 100644 docs/wordlists/Latin.txt create mode 100644 docs/wordlists/Lisu.txt create mode 100644 docs/wordlists/Malayalam.txt create mode 100644 docs/wordlists/Mongolian.txt create mode 100644 docs/wordlists/Myanmar.txt create mode 100644 docs/wordlists/Ol_Chiki.txt create mode 100644 docs/wordlists/Oriya.txt create mode 100644 docs/wordlists/Osage.txt create mode 100644 docs/wordlists/Sinhala.txt create mode 100644 docs/wordlists/Syriac.txt create mode 100644 docs/wordlists/Tamil.txt create mode 100644 docs/wordlists/Telugu.txt create mode 100644 docs/wordlists/Thai.txt create mode 100644 docs/wordlists/Thanaa.txt create mode 100644 docs/wordlists/Tibetan.txt create mode 100644 docs/wordlists/Tifinagh.txt create mode 100644 docs/wordlists/Vai.txt diff --git a/docs/0.bootstrap.js b/docs/0.bootstrap.js new file mode 100644 index 0000000..724c073 --- /dev/null +++ b/docs/0.bootstrap.js @@ -0,0 +1,61 @@ +(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{ + +/***/ "../pkg/diffenator3.js": +/*!*****************************!*\ + !*** ../pkg/diffenator3.js ***! + \*****************************/ +/*! exports provided: __wbg_set_wasm, word_diff, supported_scripts, diff, debugging, __wbindgen_object_drop_ref, __wbg_new_abda76e883ba8a5f, __wbg_stack_658279fe44541cf6, __wbg_error_f851667af71bcfc6, __wbindgen_throw */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _diffenator3_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./diffenator3_bg.wasm */ \"../pkg/diffenator3_bg.wasm\");\n/* harmony import */ var _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./diffenator3_bg.js */ \"../pkg/diffenator3_bg.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbg_set_wasm\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbg_set_wasm\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"word_diff\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"word_diff\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"supported_scripts\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"supported_scripts\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"diff\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"diff\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"debugging\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"debugging\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_object_drop_ref\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbindgen_object_drop_ref\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbg_new_abda76e883ba8a5f\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbg_new_abda76e883ba8a5f\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbg_stack_658279fe44541cf6\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbg_stack_658279fe44541cf6\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbg_error_f851667af71bcfc6\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbg_error_f851667af71bcfc6\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_throw\", function() { return _diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbindgen_throw\"]; });\n\n\n\nObject(_diffenator3_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbg_set_wasm\"])(_diffenator3_bg_wasm__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\n//# sourceURL=webpack:///../pkg/diffenator3.js?"); + +/***/ }), + +/***/ "../pkg/diffenator3_bg.js": +/*!********************************!*\ + !*** ../pkg/diffenator3_bg.js ***! + \********************************/ +/*! exports provided: __wbg_set_wasm, word_diff, supported_scripts, diff, debugging, __wbindgen_object_drop_ref, __wbg_new_abda76e883ba8a5f, __wbg_stack_658279fe44541cf6, __wbg_error_f851667af71bcfc6, __wbindgen_throw */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(module) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbg_set_wasm\", function() { return __wbg_set_wasm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"word_diff\", function() { return word_diff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"supported_scripts\", function() { return supported_scripts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"diff\", function() { return diff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debugging\", function() { return debugging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_object_drop_ref\", function() { return __wbindgen_object_drop_ref; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbg_new_abda76e883ba8a5f\", function() { return __wbg_new_abda76e883ba8a5f; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbg_stack_658279fe44541cf6\", function() { return __wbg_stack_658279fe44541cf6; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbg_error_f851667af71bcfc6\", function() { return __wbg_error_f851667af71bcfc6; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_throw\", function() { return __wbindgen_throw; });\nlet wasm;\nfunction __wbg_set_wasm(val) {\n wasm = val;\n}\n\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\n\nlet cachedTextEncoder = new lTextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n/**\n* @param {Uint8Array} font_a\n* @param {Uint8Array} font_b\n* @param {string} wordlist\n* @returns {string}\n*/\nfunction word_diff(font_a, font_b, wordlist) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(font_a, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm0(font_b, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(wordlist, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n wasm.word_diff(retptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {Uint8Array} font_a\n* @returns {string}\n*/\nfunction supported_scripts(font_a) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(font_a, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.supported_scripts(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {Uint8Array} font_a\n* @param {Uint8Array} font_b\n* @returns {string}\n*/\nfunction diff(font_a, font_b) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(font_a, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm0(font_b, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n wasm.diff(retptr, ptr0, len0, ptr1, len1);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n*/\nfunction debugging() {\n wasm.debugging();\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nfunction __wbg_new_abda76e883ba8a5f() {\n const ret = new Error();\n return addHeapObject(ret);\n};\n\nfunction __wbg_stack_658279fe44541cf6(arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n};\n\nfunction __wbg_error_f851667af71bcfc6(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n};\n\nfunction __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../www/node_modules/webpack/buildin/harmony-module.js */ \"./node_modules/webpack/buildin/harmony-module.js\")(module)))\n\n//# sourceURL=webpack:///../pkg/diffenator3_bg.js?"); + +/***/ }), + +/***/ "../pkg/diffenator3_bg.wasm": +/*!**********************************!*\ + !*** ../pkg/diffenator3_bg.wasm ***! + \**********************************/ +/*! exports provided: memory, word_diff, supported_scripts, diff, debugging, __wbindgen_add_to_stack_pointer, __wbindgen_malloc, __wbindgen_realloc, __wbindgen_free */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\"use strict\";\n// Instantiate WebAssembly module\nvar wasmExports = __webpack_require__.w[module.i];\n__webpack_require__.r(exports);\n// export exports from WebAssembly module\nfor(var name in wasmExports) if(name != \"__webpack_init__\") exports[name] = wasmExports[name];\n// exec imports from WebAssembly module (for esm order)\n/* harmony import */ var m0 = __webpack_require__(/*! ./diffenator3_bg.js */ \"../pkg/diffenator3_bg.js\");\n\n\n// exec wasm module\nwasmExports[\"__webpack_init__\"]()\n\n//# sourceURL=webpack:///../pkg/diffenator3_bg.wasm?"); + +/***/ }), + +/***/ "./index.js": +/*!******************!*\ + !*** ./index.js ***! + \******************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var diffenator3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! diffenator3 */ \"../pkg/diffenator3.js\");\n\ndiffenator3__WEBPACK_IMPORTED_MODULE_0__[\"debugging\"]();\n\n\n\njQuery.fn.shake = function(interval, distance, times) {\n\tinterval = typeof interval == \"undefined\" ? 100 : interval;\n\tdistance = typeof distance == \"undefined\" ? 10 : distance;\n\ttimes = typeof times == \"undefined\" ? 3 : times;\n\tvar jTarget = $(this);\n\tjTarget.css('position', 'relative');\n\tfor (var iter = 0; iter < (times + 1); iter++) {\n\t\tjTarget.animate({\n\t\t\tleft: ((iter % 2 == 0 ? distance : distance * -1))\n\t\t}, interval);\n\t}\n\treturn jTarget.animate({\n\t\tleft: 0\n\t}, interval);\n}\n\nclass Diffenator {\n\tconstructor() {\n\t\tthis.beforeFont = null;\n\t\tthis.afterFont = null;\n\t}\n\n\tget beforeCssStyle() {\n\t\treturn document.styleSheets[0].cssRules[0].style\n\t}\n\tget afterCssStyle() {\n\t\treturn document.styleSheets[0].cssRules[1].style\n\t}\n\n\tdropFile(files, element) {\n\t\tif (!files[0].name.match(/\\.[ot]tf$/i)) {\n\t\t\t$(element).shake()\n\t\t\treturn;\n\t\t}\n\t\tvar style;\n\t\tif (element.id == \"fontbefore\") {\n\t\t\tstyle = this.beforeCssStyle;\n\t\t\t$(element).find(\"h2\").addClass(\"font-before\")\n\t\t} else {\n\t\t\tstyle = this.afterCssStyle;\n\t\t\t$(element).find(\"h2\").addClass(\"font-after\")\n\t\t}\n\t\twindow.thing = files[0]\n\t\t$(element).find(\"h2\").text(files[0].name);\n\t\tstyle.setProperty(\"src\", \"url(\" + URL.createObjectURL(files[0]) + \")\")\n\t\tvar reader = new FileReader();\n\t\tlet that = this;\n\t\treader.onload = function(e) {\n\t\t\tlet u8 = new Uint8Array(this.result);\n\t\t\tif (element.id == \"fontbefore\") {\n\t\t\t\tthat.beforeFont = u8;\n\t\t\t} else {\n\t\t\t\tthat.afterFont = u8;\n\t\t\t}\n\t\t\tif (that.beforeFont && that.afterFont) {\n\t\t\t\tthat.letsDoThis();\n\t\t\t}\n\t\t};\n\t\treader.readAsArrayBuffer(files[0]);\n\t}\n\n\n\trenderTableDiff(node, toplevel) {\n\t\tvar wrapper = $(\"
\");\n\t\tif (!node) { \n\t\t\treturn wrapper\n\t\t}\n\t\tif (Array.isArray(node)) {\n\t\t\tvar before = $(\"\");\n\t\t\tbefore.addClass(\"attr-before\");\n\t\t\tbefore.html(\" \" + node[0] + \" \");\n\t\t\tvar after = $(\"\");\n\t\t\tafter.addClass(\"attr-after\");\n\t\t\tafter.append(this.renderTableDiff(node[1], true).children());\n\t\t\twrapper.append(before);\n\t\t\twrapper.append(after);\n\t\t\treturn wrapper\n\t\t}\n\t\tif (node.constructor != Object) {\n\t\t\tvar thing = $(\"\");\n\t\t\tthing.html(node);\n\t\t\twrapper.append(thing);\n\t\t\treturn wrapper\n\t\t}\n\t\tfor (const [key, value] of Object.entries(node)) {\n\t\t\tvar display = $(\"
\");\n\t\t\tdisplay.addClass(\"node\")\n\t\t\tif (!toplevel) {\n\t\t\t\tdisplay.hide()\n\t\t\t}\n\t\t\tdisplay.append(key);\n\t\t\tdisplay.append(this.renderTableDiff(value, false).children());\n\t\t\twrapper.append(display)\n\t\t}\n\t\treturn wrapper\n\n\t}\n\n\tasync wordlists() {\n\t\tlet scripts_before = new Set(JSON.parse(diffenator3__WEBPACK_IMPORTED_MODULE_0__[\"supported_scripts\"](this.beforeFont)));\n\t\tlet scripts_after = new Set(JSON.parse(diffenator3__WEBPACK_IMPORTED_MODULE_0__[\"supported_scripts\"](this.afterFont)));\n\t\tconsole.log(\"Scripts before\", scripts_before);\n\t\tconsole.log(\"Scripts after\", scripts_after);\n\t\t// intersection\n\t\tlet scripts = [...scripts_before].filter(x => scripts_after.has(x));\n\t\treturn await Promise.all(\n\t\t\tscripts.map(async script => {\n\t\t\t\tlet url = `${document.URL}/wordlists/${script}.txt`;\n\t\t\t const resp = await fetch(url);\n\t\t\t return [script, await resp.text()];\n\t\t}))\n\t}\n\n\n\tletsDoThis() {\n\t\t$(\"#startModal\").hide()\n\t\t\tlet diffs = JSON.parse(diffenator3__WEBPACK_IMPORTED_MODULE_0__[\"diff\"](this.beforeFont, this.afterFont));\n\t\t\tlet table_diff = diffs[\"tables\"];\n\t\t\tlet glyph_diff = diffs[\"glyphs\"];\n\t\t\t$(\"#difftable\").append(this.renderTableDiff(table_diff, true).children())\n\t\t\t$(\".node\").on(\"click\", function(event){ $(this).children().toggle(); event.stopPropagation() })\n\t\t\tthis.renderGlyphDiff(glyph_diff);\n\t\t$(\"#worddiffbutton\").click( () => {\n\t\t\tthis.wordlists().then( (wl) => {\n\t\t\t\t$(\"#worddiff\").empty()\n\t\t\t\tfor (let [script, words] of wl) {\n\t\t\t\t\tlet diffs = JSON.parse(diffenator3__WEBPACK_IMPORTED_MODULE_0__[\"word_diff\"](this.beforeFont, this.afterFont, words));\n\t\t\t\t\tif (diffs.length > 0) {\n\t\t\t\t\t\tthis.renderWordDiff(script, diffs)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t});\n\t}\n\n\taddAGlyph(glyph, where) {\n\t\twhere.append(`\n\t\t\t
\n\t\t unicode: ${ glyph.unicode }\">\n\t ${ glyph.string }\n\t \n\t\t\t
\n\t\t`);\n\t}\n\n\n\taddAWord(diff, where) {\n\t\twhere.append(`\n\t\t\t
\n\t\t ${ diff.buffer_a }
after:
${ diff.buffer_b }

percent: ${ diff.percent }\">\n\t ${ diff.word }\n\t
\n\t\t\t
\n\t\t`);\n\t}\n\trenderGlyphDiff(glyph_diff) {\n\t\t$(\"#glyphdiff\").empty();\n\t\tfor (var [key, glyphs] of Object.entries(glyph_diff)) {\n\t\t\tlet title = key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tif (glyphs.length > 0) {\n\t\t\t\tlet that = this;\n\t\t\t\t$(\"#glyphdiff\").append($(`

${title} glyphs

`));\n\t\t\t\tlet place = $('
')\n\t\t\t\t$(\"#glyphdiff\").append(place);\n\t\t\t\tglyphs.forEach( (glyph) => {\n\t\t\t\t\tthat.addAGlyph(glyph, place)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t}\n\n\n\trenderWordDiff(script, diffs) {\n\t\t$(\"#worddiff\").append($(`

${script} words

`));\n\t\tlet place = $('
')\n\t\t$(\"#worddiff\").append(place);\n\t\tdiffs.forEach( (glyph) => {\n\t\t\t\t\tthis.addAWord(glyph, place)\n\t\t})\n\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t}\n\n}\n\n$(function() {\n\twindow.diffenator = new Diffenator();\n\n\t$(\"#startModal\").show()\n\n\t$('.fontdrop').on(\n\t\t'dragover dragenter',\n\t\tfunction(e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\t$(this).addClass(\"dragging\");\n\t\t}\n\t)\n\t$('.fontdrop').on(\n\t\t'dragleave dragend',\n\t\tfunction(e) {\n\t\t\t$(this).removeClass(\"dragging\");\n\t\t}\n\t);\n\n\t$('.fontdrop').on(\n\t\t'drop',\n\t\tfunction(e) {\n\t\t\t$(this).removeClass(\"dragging\");\n\t\t\tif (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files.length) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tdiffenator.dropFile(e.originalEvent.dataTransfer.files, this);\n\t\t\t}\n\t\t}\n\t);\n\n\t$(\"#fonttoggle\").click(function() {\n\t\tif ($(this).text() == \"Old\") {\n\t\t\t$(this).text(\"New\");\n\t\t\t$(\".font-before\").removeClass(\"font-before\").addClass(\"font-after\");\n\t\t} else {\n\t\t\t$(this).text(\"Old\");\n\t\t\t$(\".font-after\").removeClass(\"font-after\").addClass(\"font-before\");\n\t\t}\n\t})\n\n})\n\n\n//# sourceURL=webpack:///./index.js?"); + +/***/ }), + +/***/ "./node_modules/webpack/buildin/harmony-module.js": +/*!*******************************************!*\ + !*** (webpack)/buildin/harmony-module.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n//# sourceURL=webpack:///(webpack)/buildin/harmony-module.js?"); + +/***/ }) + +}]); \ No newline at end of file diff --git a/docs/255ed0e08b1b0bb0136c.module.wasm b/docs/255ed0e08b1b0bb0136c.module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e30b4f919d0f9ce7774161bf3b76c6c76b1c14b7 GIT binary patch literal 1446798 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%0A!|Usej8G$EFJaQB47qt&vX^2xuG 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