diff --git a/package.json b/package.json index ecb7f97..0e44858 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fantasy-maphub", "name_full": "Fantasy MapHub Generators", - "version": "1.2.1", + "version": "1.2.2-add-data-export-cave-gla.0", "description": "An offline-first hub that bundles several Watabou map generators into one consistent web app: same UI patterns, local assets, and modern import/export. It adds OpenAPI docs, proto-first serialization (including pure protobuf files), and a PWA build so everything works without an internet connection.", "license": "MPL-2.0", "author": "mail@sunsung.fun", diff --git a/src/js/Cave.js b/src/js/Cave.js index 60dabac..7a3ba29 100644 --- a/src/js/Cave.js +++ b/src/js/Cave.js @@ -11346,22 +11346,33 @@ var $lime_init = function (A, r) { return Sa.baseURL + Sa.getParams() }; Sa.update = function () { - window.history.replaceState(Sa.data, "", Sa.getParams()) - }; - Sa.fromString = function (a) { - Sa.data = {}; - a = S.substr(a, a.indexOf("?") + 1, null).split("&"); - for (var b = 0; b < a.length;) { - var c = a[b]; - ++b; - var d = c.indexOf("="), - f = S.substr(c, 0, d); - c = S.substr(c, d + 1, null); - c = decodeURIComponent(c.split("+").join(" ")); - Sa.data[f] = c - } - Sa.update() + if (Sa.__disabled) return; + + Sa.init(); + Sa.__pendingParams = Sa.getParams(); + if (Sa.__timer != null) return; + + var now = (window.performance && window.performance.now) ? window.performance.now() : Date.now(); + var last = (Sa.__lastCall != null) ? Sa.__lastCall : 0; + var interval = (Sa.__minInterval != null) ? Sa.__minInterval : 250; + var wait = Math.max(0, last + interval - now); + + Sa.__timer = window.setTimeout(function () { + Sa.__timer = null; + Sa.__lastCall = (window.performance && window.performance.now) ? window.performance.now() : Date.now(); + + var params = Sa.__pendingParams; + if (params === Sa.__lastParams) return; + Sa.__lastParams = params; + + try { + window.history.replaceState(Sa.data, "", params); + } catch (e) { + Sa.__disabled = true; + } + }, wait); }; + var rf = function (a) { this.ruleSet = a; this.clearState()