From c0a023e721decb09a6e323adc6695f2736400f58 Mon Sep 17 00:00:00 2001 From: Sarsoo Date: Mon, 21 Jun 2021 21:48:40 +0000 Subject: [PATCH] deploy: b52ca7d6c1ff2cb817aeca62a6cabfc1372b151e --- .nojekyll | 0 bootstrap.js | 379 +++++++++++++++++++++++++++++++ de0e97b9a311abef847f.module.wasm | Bin 0 -> 65181 bytes index.html | 38 ++++ index_js.bootstrap.js | 44 ++++ 5 files changed, 461 insertions(+) create mode 100644 .nojekyll create mode 100644 bootstrap.js create mode 100644 de0e97b9a311abef847f.module.wasm create mode 100644 index.html create mode 100644 index_js.bootstrap.js diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap.js b/bootstrap.js new file mode 100644 index 0000000..c806d32 --- /dev/null +++ b/bootstrap.js @@ -0,0 +1,379 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./bootstrap.js": +/*!**********************!*\ + !*** ./bootstrap.js ***! + \**********************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("// A dependency graph that contains any wasm must all be imported\n// asynchronously. This `bootstrap.js` file does the single async import, so\n// that no one else needs to worry about it again.\n__webpack_require__.e(/*! import() */ \"index_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./index.js */ \"./index.js\"))\n .catch(e => console.error(\"Error importing `index.js`:\", e));\n\n\n//# sourceURL=webpack://game-of-life-web/./bootstrap.js?"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ loaded: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/async module */ +/******/ (() => { +/******/ var webpackThen = typeof Symbol === "function" ? Symbol("webpack then") : "__webpack_then__"; +/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__"; +/******/ var completeQueue = (queue) => { +/******/ if(queue) { +/******/ queue.forEach((fn) => (fn.r--)); +/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn())); +/******/ } +/******/ } +/******/ var completeFunction = (fn) => (!--fn.r && fn()); +/******/ var queueFunction = (queue, fn) => (queue ? queue.push(fn) : completeFunction(fn)); +/******/ var wrapDeps = (deps) => (deps.map((dep) => { +/******/ if(dep !== null && typeof dep === "object") { +/******/ if(dep[webpackThen]) return dep; +/******/ if(dep.then) { +/******/ var queue = []; +/******/ dep.then((r) => { +/******/ obj[webpackExports] = r; +/******/ completeQueue(queue); +/******/ queue = 0; +/******/ }); +/******/ var obj = { [webpackThen]: (fn, reject) => (queueFunction(queue, fn), dep.catch(reject)) }; +/******/ return obj; +/******/ } +/******/ } +/******/ return { [webpackThen]: (fn) => (completeFunction(fn)), [webpackExports]: dep }; +/******/ })); +/******/ __webpack_require__.a = (module, body, hasAwait) => { +/******/ var queue = hasAwait && []; +/******/ var exports = module.exports; +/******/ var currentDeps; +/******/ var outerResolve; +/******/ var reject; +/******/ var isEvaluating = true; +/******/ var nested = false; +/******/ var whenAll = (deps, onResolve, onReject) => { +/******/ if (nested) return; +/******/ nested = true; +/******/ onResolve.r += deps.length; +/******/ deps.map((dep, i) => (dep[webpackThen](onResolve, onReject))); +/******/ nested = false; +/******/ }; +/******/ var promise = new Promise((resolve, rej) => { +/******/ reject = rej; +/******/ outerResolve = () => (resolve(exports), completeQueue(queue), queue = 0); +/******/ }); +/******/ promise[webpackExports] = exports; +/******/ promise[webpackThen] = (fn, rejectFn) => { +/******/ if (isEvaluating) { return completeFunction(fn); } +/******/ if (currentDeps) whenAll(currentDeps, fn, rejectFn); +/******/ queueFunction(queue, fn); +/******/ promise.catch(rejectFn); +/******/ }; +/******/ module.exports = promise; +/******/ body((deps) => { +/******/ if(!deps) return outerResolve(); +/******/ currentDeps = wrapDeps(deps); +/******/ var fn, result; +/******/ var promise = new Promise((resolve, reject) => { +/******/ fn = () => (resolve(result = currentDeps.map((d) => (d[webpackExports])))); +/******/ fn.r = 0; +/******/ whenAll(currentDeps, fn, reject); +/******/ }); +/******/ return fn.r ? promise : result; +/******/ }).then(outerResolve, reject); +/******/ isEvaluating = false; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/ensure chunk */ +/******/ (() => { +/******/ __webpack_require__.f = {}; +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = (chunkId) => { +/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { +/******/ __webpack_require__.f[key](chunkId, promises); +/******/ return promises; +/******/ }, [])); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/get javascript chunk filename */ +/******/ (() => { +/******/ // This function allow to reference async chunks +/******/ __webpack_require__.u = (chunkId) => { +/******/ // return url for filenames based on template +/******/ return "" + chunkId + ".bootstrap.js"; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/global */ +/******/ (() => { +/******/ __webpack_require__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ })(); +/******/ +/******/ /* webpack/runtime/harmony module decorator */ +/******/ (() => { +/******/ __webpack_require__.hmd = (module) => { +/******/ module = Object.create(module); +/******/ if (!module.children) module.children = []; +/******/ Object.defineProperty(module, 'exports', { +/******/ enumerable: true, +/******/ set: () => { +/******/ throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id); +/******/ } +/******/ }); +/******/ return module; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/load script */ +/******/ (() => { +/******/ var inProgress = {}; +/******/ var dataWebpackPrefix = "game-of-life-web:"; +/******/ // loadScript function to load a script via script tag +/******/ __webpack_require__.l = (url, done, key, chunkId) => { +/******/ if(inProgress[url]) { inProgress[url].push(done); return; } +/******/ var script, needAttach; +/******/ if(key !== undefined) { +/******/ var scripts = document.getElementsByTagName("script"); +/******/ for(var i = 0; i < scripts.length; i++) { +/******/ var s = scripts[i]; +/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; } +/******/ } +/******/ } +/******/ if(!script) { +/******/ needAttach = true; +/******/ script = document.createElement('script'); +/******/ +/******/ script.charset = 'utf-8'; +/******/ script.timeout = 120; +/******/ if (__webpack_require__.nc) { +/******/ script.setAttribute("nonce", __webpack_require__.nc); +/******/ } +/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key); +/******/ script.src = url; +/******/ } +/******/ inProgress[url] = [done]; +/******/ var onScriptComplete = (prev, event) => { +/******/ // avoid mem leaks in IE. +/******/ script.onerror = script.onload = null; +/******/ clearTimeout(timeout); +/******/ var doneFns = inProgress[url]; +/******/ delete inProgress[url]; +/******/ script.parentNode && script.parentNode.removeChild(script); +/******/ doneFns && doneFns.forEach((fn) => (fn(event))); +/******/ if(prev) return prev(event); +/******/ } +/******/ ; +/******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000); +/******/ script.onerror = onScriptComplete.bind(null, script.onerror); +/******/ script.onload = onScriptComplete.bind(null, script.onload); +/******/ needAttach && document.head.appendChild(script); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/publicPath */ +/******/ (() => { +/******/ var scriptUrl; +/******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + ""; +/******/ var document = __webpack_require__.g.document; +/******/ if (!scriptUrl && document) { +/******/ if (document.currentScript) +/******/ scriptUrl = document.currentScript.src +/******/ if (!scriptUrl) { +/******/ var scripts = document.getElementsByTagName("script"); +/******/ if(scripts.length) scriptUrl = scripts[scripts.length - 1].src +/******/ } +/******/ } +/******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration +/******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic. +/******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser"); +/******/ scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/"); +/******/ __webpack_require__.p = scriptUrl; +/******/ })(); +/******/ +/******/ /* webpack/runtime/jsonp chunk loading */ +/******/ (() => { +/******/ // no baseURI +/******/ +/******/ // object to store loaded and loading chunks +/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched +/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded +/******/ var installedChunks = { +/******/ "main": 0 +/******/ }; +/******/ +/******/ __webpack_require__.f.j = (chunkId, promises) => { +/******/ // JSONP chunk loading for javascript +/******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined; +/******/ if(installedChunkData !== 0) { // 0 means "already installed". +/******/ +/******/ // a Promise means "currently loading". +/******/ if(installedChunkData) { +/******/ promises.push(installedChunkData[2]); +/******/ } else { +/******/ if(true) { // all chunks have JS +/******/ // setup Promise in chunk cache +/******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject])); +/******/ promises.push(installedChunkData[2] = promise); +/******/ +/******/ // start chunk loading +/******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId); +/******/ // create error before stack unwound to get useful stacktrace later +/******/ var error = new Error(); +/******/ var loadingEnded = (event) => { +/******/ if(__webpack_require__.o(installedChunks, chunkId)) { +/******/ installedChunkData = installedChunks[chunkId]; +/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined; +/******/ if(installedChunkData) { +/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); +/******/ var realSrc = event && event.target && event.target.src; +/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; +/******/ error.name = 'ChunkLoadError'; +/******/ error.type = errorType; +/******/ error.request = realSrc; +/******/ installedChunkData[1](error); +/******/ } +/******/ } +/******/ }; +/******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId); +/******/ } else installedChunks[chunkId] = 0; +/******/ } +/******/ } +/******/ }; +/******/ +/******/ // no prefetching +/******/ +/******/ // no preloaded +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ +/******/ // no on chunks loaded +/******/ +/******/ // install a JSONP callback for chunk loading +/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { +/******/ var [chunkIds, moreModules, runtime] = data; +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0; +/******/ for(moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) var result = runtime(__webpack_require__); +/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { +/******/ installedChunks[chunkId][0](); +/******/ } +/******/ installedChunks[chunkIds[i]] = 0; +/******/ } +/******/ +/******/ } +/******/ +/******/ var chunkLoadingGlobal = self["webpackChunkgame_of_life_web"] = self["webpackChunkgame_of_life_web"] || []; +/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); +/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); +/******/ })(); +/******/ +/******/ /* webpack/runtime/wasm chunk loading */ +/******/ (() => { +/******/ __webpack_require__.v = (exports, wasmModuleId, wasmModuleHash, importsObj) => { +/******/ var req = fetch(__webpack_require__.p + "" + wasmModuleHash + ".module.wasm"); +/******/ if (typeof WebAssembly.instantiateStreaming === 'function') { +/******/ return WebAssembly.instantiateStreaming(req, importsObj) +/******/ .then((res) => (Object.assign(exports, res.instance.exports))); +/******/ } +/******/ return req +/******/ .then((x) => (x.arrayBuffer())) +/******/ .then((bytes) => (WebAssembly.instantiate(bytes, importsObj))) +/******/ .then((res) => (Object.assign(exports, res.instance.exports))); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module can't be inlined because the eval devtool is used. +/******/ var __webpack_exports__ = __webpack_require__("./bootstrap.js"); +/******/ +/******/ })() +; \ No newline at end of file diff --git a/de0e97b9a311abef847f.module.wasm b/de0e97b9a311abef847f.module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..657c6638e01de2121cec34a5cdc0ce6937450b30 GIT binary patch literal 65181 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 YcXP|r;=}52nO%2189SxbOwtYi2Zs-kx&QzG literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..1469a49 --- /dev/null +++ b/index.html @@ -0,0 +1,38 @@ + + + + + game of life + + + + + + + + + + + + + + + + + +
+ + + diff --git a/index_js.bootstrap.js b/index_js.bootstrap.js new file mode 100644 index 0000000..0c1067c --- /dev/null +++ b/index_js.bootstrap.js @@ -0,0 +1,44 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(self["webpackChunkgame_of_life_web"] = self["webpackChunkgame_of_life_web"] || []).push([["index_js"],{ + +/***/ "../pkg/game_of_life_bg.js": +/*!*********************************!*\ + !*** ../pkg/game_of_life_bg.js ***! + \*********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__) => {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"init\": () => (/* binding */ init),\n/* harmony export */ \"Cell\": () => (/* binding */ Cell),\n/* harmony export */ \"Universe\": () => (/* binding */ Universe),\n/* harmony export */ \"__wbindgen_object_drop_ref\": () => (/* binding */ __wbindgen_object_drop_ref),\n/* harmony export */ \"__wbindgen_string_new\": () => (/* binding */ __wbindgen_string_new),\n/* harmony export */ \"__wbg_new_59cb74e423758ede\": () => (/* binding */ __wbg_new_59cb74e423758ede),\n/* harmony export */ \"__wbg_stack_558ba5917b466edd\": () => (/* binding */ __wbg_stack_558ba5917b466edd),\n/* harmony export */ \"__wbg_error_4bb6c2a97407129a\": () => (/* binding */ __wbg_error_4bb6c2a97407129a),\n/* harmony export */ \"__wbg_log_9a99fb1af846153b\": () => (/* binding */ __wbg_log_9a99fb1af846153b),\n/* harmony export */ \"__wbg_time_8897e55ebee4075f\": () => (/* binding */ __wbg_time_8897e55ebee4075f),\n/* harmony export */ \"__wbg_timeEnd_6186a583833a7163\": () => (/* binding */ __wbg_timeEnd_6186a583833a7163),\n/* harmony export */ \"__wbindgen_throw\": () => (/* binding */ __wbindgen_throw)\n/* harmony export */ });\n/* harmony import */ var _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./game_of_life_bg.wasm */ \"../pkg/game_of_life_bg.wasm\");\n/* module decorator */ module = __webpack_require__.hmd(module);\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__]);\n_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? await __webpack_async_dependencies__ : __webpack_async_dependencies__)[0];\n\n\nconst heap = new Array(32).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 < 36) 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 cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\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/**\n*/\nfunction init() {\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.init();\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nlet WASM_VECTOR_LEN = 0;\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/**\n*/\nconst Cell = Object.freeze({ Dead:0,\"0\":\"Dead\",Alive:1,\"1\":\"Alive\", });\n/**\n*/\nclass Universe {\n\n static __wrap(ptr) {\n const obj = Object.create(Universe.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbg_universe_free(ptr);\n }\n /**\n */\n tick() {\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.universe_tick(this.ptr);\n }\n /**\n * @param {number} width\n * @param {number} height\n * @param {number} rand_threshold\n * @param {number} seed\n * @returns {Universe}\n */\n static new(width, height, rand_threshold, seed) {\n var ret = _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.universe_new(width, height, rand_threshold, seed);\n return Universe.__wrap(ret);\n }\n /**\n * @returns {string}\n */\n render() {\n try {\n const retptr = _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16);\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.universe_render(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16);\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1);\n }\n }\n /**\n * @returns {number}\n */\n width() {\n var ret = _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.universe_width(this.ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n height() {\n var ret = _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.universe_height(this.ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n cells() {\n var ret = _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.universe_cells(this.ptr);\n return ret;\n }\n /**\n */\n reset() {\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.universe_reset(this.ptr);\n }\n}\n\nfunction __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nfunction __wbindgen_string_new(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n};\n\nfunction __wbg_new_59cb74e423758ede() {\n var ret = new Error();\n return addHeapObject(ret);\n};\n\nfunction __wbg_stack_558ba5917b466edd(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n};\n\nfunction __wbg_error_4bb6c2a97407129a(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n _game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(arg0, arg1);\n }\n};\n\nfunction __wbg_log_9a99fb1af846153b(arg0) {\n console.log(getObject(arg0));\n};\n\nfunction __wbg_time_8897e55ebee4075f(arg0, arg1) {\n console.time(getStringFromWasm0(arg0, arg1));\n};\n\nfunction __wbg_timeEnd_6186a583833a7163(arg0, arg1) {\n console.timeEnd(getStringFromWasm0(arg0, arg1));\n};\n\nfunction __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\n\n});\n\n//# sourceURL=webpack://game-of-life-web/../pkg/game_of_life_bg.js?"); + +/***/ }), + +/***/ "../pkg/game_of_life_bg.wasm": +/*!***********************************!*\ + !*** ../pkg/game_of_life_bg.wasm ***! + \***********************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +eval("var __webpack_instantiate__ = ([WEBPACK_IMPORTED_MODULE_0]) => {\n\treturn __webpack_require__.v(exports, module.id, \"de0e97b9a311abef847f\", {\n\t\t\"./game_of_life_bg.js\": {\n\t\t\t\"__wbindgen_object_drop_ref\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_object_drop_ref,\n\t\t\t\"__wbindgen_string_new\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_string_new,\n\t\t\t\"__wbg_new_59cb74e423758ede\": WEBPACK_IMPORTED_MODULE_0.__wbg_new_59cb74e423758ede,\n\t\t\t\"__wbg_stack_558ba5917b466edd\": WEBPACK_IMPORTED_MODULE_0.__wbg_stack_558ba5917b466edd,\n\t\t\t\"__wbg_error_4bb6c2a97407129a\": WEBPACK_IMPORTED_MODULE_0.__wbg_error_4bb6c2a97407129a,\n\t\t\t\"__wbg_log_9a99fb1af846153b\": WEBPACK_IMPORTED_MODULE_0.__wbg_log_9a99fb1af846153b,\n\t\t\t\"__wbg_time_8897e55ebee4075f\": WEBPACK_IMPORTED_MODULE_0.__wbg_time_8897e55ebee4075f,\n\t\t\t\"__wbg_timeEnd_6186a583833a7163\": WEBPACK_IMPORTED_MODULE_0.__wbg_timeEnd_6186a583833a7163,\n\t\t\t\"__wbindgen_throw\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_throw\n\t\t}\n\t});\n}\n__webpack_require__.a(module, (__webpack_handle_async_dependencies__) => {\n\t/* harmony import */ var WEBPACK_IMPORTED_MODULE_0 = __webpack_require__(/*! ./game_of_life_bg.js */ \"../pkg/game_of_life_bg.js\");\n\tvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([WEBPACK_IMPORTED_MODULE_0]);\n\treturn __webpack_async_dependencies__.then ? __webpack_async_dependencies__.then(__webpack_instantiate__) : __webpack_instantiate__(__webpack_async_dependencies__);\n}, 1);\n\n//# sourceURL=webpack://game-of-life-web/../pkg/game_of_life_bg.wasm?"); + +/***/ }), + +/***/ "./index.js": +/*!******************!*\ + !*** ./index.js ***! + \******************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__) => {\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var game_of_life__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! game-of-life */ \"../pkg/game_of_life_bg.js\");\n/* harmony import */ var game_of_life_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! game-of-life/game_of_life_bg.wasm */ \"../pkg/game_of_life_bg.wasm\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([game_of_life__WEBPACK_IMPORTED_MODULE_0__, game_of_life_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_1__]);\n([game_of_life__WEBPACK_IMPORTED_MODULE_0__, game_of_life_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? await __webpack_async_dependencies__ : __webpack_async_dependencies__);\n\n\n\n// let PLAY = true;\n// let PLAY = false;\n(0,game_of_life__WEBPACK_IMPORTED_MODULE_0__.init)();\nconst randSlider = document.getElementById(\"randThreshold\");\nconst randSliderLabel = document.getElementById(\"randThreshold-label\");\n\nconst CELL_SIZE = 5; // px\nconst GRID_COLOR = \"#BBBBBB\";\nconst DEAD_COLOR = \"#FFFFFF\";\nconst ALIVE_COLOR = \"#FF55AA\";\n\nlet universe = game_of_life__WEBPACK_IMPORTED_MODULE_0__.Universe.new(100, 100, randSlider.value, new Date().getTime() / 1000);\nlet width = universe.width();\nlet height = universe.height();\n\nconst canvas = document.getElementById(\"game-of-life-canvas\");\ncanvas.height = (CELL_SIZE + 1) * height + 1;\ncanvas.width = (CELL_SIZE + 1) * width + 1;\n\nconst ctx = canvas.getContext('2d');\n \nconst drawGrid = () => {\n ctx.beginPath();\n ctx.strokeStyle = GRID_COLOR;\n\n // Vertical lines.\n for (let i = 0; i <= width; i++) {\n ctx.moveTo(i * (CELL_SIZE + 1) + 1, 0);\n ctx.lineTo(i * (CELL_SIZE + 1) + 1, (CELL_SIZE + 1) * height + 1);\n }\n\n // Horizontal lines.\n for (let j = 0; j <= height; j++) {\n ctx.moveTo(0, j * (CELL_SIZE + 1) + 1);\n ctx.lineTo((CELL_SIZE + 1) * width + 1, j * (CELL_SIZE + 1) + 1);\n }\n\n ctx.stroke();\n};\n\nconst getIndex = (row, column) => {\n return row * width + column;\n};\n\nconst drawCells = () => {\n const cellsPtr = universe.cells();\n const cells = new Uint8Array(game_of_life_game_of_life_bg_wasm__WEBPACK_IMPORTED_MODULE_1__.memory.buffer, cellsPtr, width * height);\n\n ctx.beginPath();\n\n for (let row = 0; row < height; row++) {\n for (let col = 0; col < width; col++) {\n const idx = getIndex(row, col);\n\n ctx.fillStyle = cells[idx] === game_of_life__WEBPACK_IMPORTED_MODULE_0__.Cell.Dead\n ? DEAD_COLOR\n : ALIVE_COLOR;\n\n ctx.fillRect(\n col * (CELL_SIZE + 1) + 1,\n row * (CELL_SIZE + 1) + 1,\n CELL_SIZE,\n CELL_SIZE\n );\n }\n }\n\n ctx.stroke();\n};\n\nconst renderSingle = () => {\n fps.render(); //new\n universe.tick();\n \n drawGrid();\n drawCells();\n}\n\nconst start = () => {\n if(loop != null) clearInterval(loop);\n loop = setInterval(renderSingle, frameInterval);\n}\n\nconst stop = () => {\n if(loop != null) clearInterval(loop);\n loop = null;\n}\n\n// const renderLoop = () => {\n// if(PLAY){\n// renderSingle();\n// requestAnimationFrame(renderLoop);\n// }\n// };\n\n// renderSingle();\n// requestAnimationFrame(renderLoop);\n\nvar frameInterval = 50;\n// var loop = setInterval(renderSingle, frameInterval);\nvar loop = null;\n\nconst frameSlider = document.getElementById(\"frameRate\");\nconst frameSliderLabel = document.getElementById(\"frameRate-label\");\nconst onFrameSlider = () => {\n stop();\n\n frameInterval = frameSlider.value;\n frameSliderLabel.innerHTML = `Frame Interval: ${frameSlider.value}`;\n\n if(playCheck.checked) start();\n}\nframeSlider.onchange = onFrameSlider;\n\nconst onRandSlider = () => {\n stop();\n\n universe = game_of_life__WEBPACK_IMPORTED_MODULE_0__.Universe.new(width, height, randSlider.value, new Date().getTime() / 1000);\n refreshCanvas();\n randSliderLabel.innerHTML = `Rand Threshold: ${randSlider.value}`;\n\n if(playCheck.checked) start();\n}\nrandSlider.onchange = onRandSlider;\n\nconst refreshCanvas = () => {\n canvas.width = (CELL_SIZE + 1) * width + 1;\n canvas.height = (CELL_SIZE + 1) * height + 1;\n drawGrid();\n drawCells();\n}\n\nconst widthBox = document.getElementById(\"width\");\nconst onWidth = () => {\n // PLAY = false;\n width = widthBox.value;\n universe = game_of_life__WEBPACK_IMPORTED_MODULE_0__.Universe.new(width, height, randSlider.value, new Date().getTime() / 1000);\n refreshCanvas();\n // PLAY = true;\n // requestAnimationFrame(renderLoop);\n}\nwidthBox.onchange = onWidth;\n\nconst heightBox = document.getElementById(\"height\");\nconst onHeight = () => {\n // PLAY = false;\n height = heightBox.value;\n universe = game_of_life__WEBPACK_IMPORTED_MODULE_0__.Universe.new(width, height, randSlider.value, new Date().getTime() / 1000);\n refreshCanvas();\n // PLAY = true;\n // requestAnimationFrame(renderLoop);\n}\nheightBox.onchange = onHeight;\n\nconst playCheck = document.getElementById(\"play-check\");\nconst onPlay = () => {\n console.log(\"play: \" + playCheck.checked);\n if(playCheck.checked) {\n start();\n }else {\n stop();\n }\n // PLAY = playCheck.checked;\n // requestAnimationFrame(renderLoop);\n}\nplayCheck.onchange = onPlay;\n\nconst onStep = () => {\n console.log(\"stepping\");\n renderSingle();\n}\ndocument.getElementById(\"step\").onclick = onStep;\n\n\nconst onReset = () => {\n universe = game_of_life__WEBPACK_IMPORTED_MODULE_0__.Universe.new(width, height, randSlider.value, new Date().getTime() / 1000);\n refreshCanvas();\n}\ndocument.getElementById(\"reset\").onclick = onReset;\n\ndrawGrid();\ndrawCells();\n\nconst fps = new class {\n constructor() {\n this.fps = document.getElementById(\"fps\");\n this.frames = [];\n this.lastFrameTimeStamp = performance.now();\n }\n \n render() {\n // Convert the delta time since the last frame render into a measure\n // of frames per second.\n const now = performance.now();\n const delta = now - this.lastFrameTimeStamp;\n this.lastFrameTimeStamp = now;\n const fps = 1 / delta * 1000;\n \n // Save only the latest 100 timings.\n this.frames.push(fps);\n if (this.frames.length > 100) {\n this.frames.shift();\n }\n \n // Find the max, min, and mean of our 100 latest timings.\n let min = Infinity;\n let max = -Infinity;\n let sum = 0;\n for (let i = 0; i < this.frames.length; i++) {\n sum += this.frames[i];\n min = Math.min(this.frames[i], min);\n max = Math.max(this.frames[i], max);\n }\n let mean = sum / this.frames.length;\n \n // Render the statistics.\n this.fps.textContent = `\n Frames per Second:\n latest = ${Math.round(fps)} // \n avg of last 100 = ${Math.round(mean)} // \n min of last 100 = ${Math.round(min)} // \n max of last 100 = ${Math.round(max)}\n `.trim();\n }\n };\n});\n\n//# sourceURL=webpack://game-of-life-web/./index.js?"); + +/***/ }) + +}]); \ No newline at end of file