{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/svelte/store/index.mjs","../../node_modules/svelte-spa-router/Router.svelte","../../node_modules/regexparam/dist/regexparam.mjs","../../node_modules/svelte/easing/index.mjs","../../node_modules/svelte/transition/index.mjs","../../ClientApp/Modal.svelte","../../ClientApp/js/constants.js","../../ClientApp/js/util.js","../../node_modules/dexie/dist/dexie.mjs","../../ClientApp/store/db.js","../../ClientApp/store/langtexts.js","../../ClientApp/store/loggedInUser.js","../../ClientApp/store/calculators.js","../../ClientApp/store/countries.js","../../ClientApp/store/factories.js","../../ClientApp/SharedComponents/Country.svelte","../../ClientApp/SharedComponents/Date.svelte","../../ClientApp/SharedComponents/FadeIn.svelte","../../node_modules/svelte-select/src/Item.svelte","../../node_modules/svelte-select/src/VirtualList.svelte","../../node_modules/svelte-select/src/List.svelte","../../node_modules/svelte-select/src/Selection.svelte","../../node_modules/svelte-select/src/MultiSelection.svelte","../../node_modules/svelte-select/src/Select.svelte","../../node_modules/svelte-select/src/utils/debounce.js","../../node_modules/svelte-select/src/utils/isOutOfViewport.js","../../ClientApp/SharedComponents/FactorySettingsSelector.svelte","../../ClientApp/SharedComponents/LangSelector.svelte","../../ClientApp/Vectors/delete.svelte","../../ClientApp/Vectors/copy.svelte","../../ClientApp/Vectors/download.svelte","../../ClientApp/Vectors/plus.svelte","../../ClientApp/Vectors/edit.svelte","../../ClientApp/SharedComponents/Confirm.svelte","../../ClientApp/SharedComponents/Prompt.svelte","../../ClientApp/Dashboard/FactoryList.svelte","../../ClientApp/Dashboard/SortDirection.svelte","../../ClientApp/store/inputVariables.js","../../ClientApp/Dashboard/ProductList.svelte","../../ClientApp/Dashboard/Dashboard.svelte","../../ClientApp/Dashboard/CreateProduct.svelte","../../ClientApp/store/Calculators.js","../../ClientApp/Dashboard/CreateFactory.svelte","../../ClientApp/store/numberFormat.js","../../ClientApp/SharedComponents/InputPercent.svelte","../../ClientApp/SharedComponents/InputMoney.svelte","../../ClientApp/store/outputVariables.js","../../ClientApp/SharedComponents/InputVar.svelte","../../ClientApp/SharedComponents/TitleWithHelp.svelte","../../ClientApp/Calculator/WageDistribution.svelte","../../ClientApp/Calculator/WizardCalculation.svelte","../../ClientApp/Calculator/WizardSectionSelector.svelte","../../ClientApp/Vectors/Download.svelte","../../ClientApp/Calculator/WizardInputSection.svelte","../../ClientApp/Calculator/WizardSummarySection.svelte","../../ClientApp/Calculator/WizardSuperHelpSection.svelte","../../ClientApp/SharedComponents/LangSelectorRestricted.svelte","../../ClientApp/SharedComponents/InputVarScenario.svelte","../../ClientApp/Calculator/ScenarioTool.svelte","../../ClientApp/Calculator/GenerateReport.svelte","../../node_modules/layercake/src/utils/makeAccessor.js","../../node_modules/layercake/src/utils/canBeZero.js","../../node_modules/layercake/src/utils/filterObject.js","../../node_modules/layercake/src/lib/calcExtents.js","../../node_modules/layercake/src/utils/partialDomain.js","../../node_modules/layercake/src/helpers/calcDomain.js","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/number.js","../../node_modules/internmap/src/index.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-array/src/range.js","../../node_modules/layercake/node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/numberArray.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/layercake/node_modules/d3-scale/src/number.js","../../node_modules/layercake/node_modules/d3-scale/src/continuous.js","../../node_modules/layercake/node_modules/d3-scale/src/constant.js","../../node_modules/layercake/node_modules/d3-format/src/formatDecimal.js","../../node_modules/layercake/node_modules/d3-format/src/exponent.js","../../node_modules/layercake/node_modules/d3-format/src/formatSpecifier.js","../../node_modules/layercake/node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/layercake/node_modules/d3-format/src/formatRounded.js","../../node_modules/layercake/node_modules/d3-format/src/formatTypes.js","../../node_modules/layercake/node_modules/d3-format/src/identity.js","../../node_modules/layercake/node_modules/d3-format/src/locale.js","../../node_modules/layercake/node_modules/d3-format/src/defaultLocale.js","../../node_modules/layercake/node_modules/d3-format/src/formatGroup.js","../../node_modules/layercake/node_modules/d3-format/src/formatNumerals.js","../../node_modules/layercake/node_modules/d3-format/src/formatTrim.js","../../node_modules/layercake/node_modules/d3-scale/src/tickFormat.js","../../node_modules/layercake/node_modules/d3-format/src/precisionPrefix.js","../../node_modules/layercake/node_modules/d3-format/src/precisionRound.js","../../node_modules/layercake/node_modules/d3-format/src/precisionFixed.js","../../node_modules/layercake/node_modules/d3-scale/src/linear.js","../../node_modules/layercake/node_modules/d3-scale/src/pow.js","../../node_modules/layercake/src/settings/defaultScales.js","../../node_modules/layercake/src/utils/identity.js","../../node_modules/layercake/src/helpers/getPadFunctions.js","../../node_modules/layercake/src/utils/padScale.js","../../node_modules/layercake/src/helpers/findScaleType.js","../../node_modules/layercake/src/helpers/createScale.js","../../node_modules/layercake/src/settings/getDefaultRange.js","../../node_modules/layercake/src/helpers/createGetter.js","../../node_modules/layercake/src/helpers/getRange.js","../../node_modules/layercake/src/settings/defaultReverses.js","../../node_modules/layercake/src/LayerCake.svelte","../../node_modules/layercake/src/layouts/Svg.svelte","../../node_modules/layercake/src/lib/flatten.js","../../node_modules/layercake/src/lib/uniques.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/array.js","../../node_modules/d3-shape/src/offset/none.js","../../node_modules/d3-shape/src/order/none.js","../../node_modules/d3-shape/src/stack.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-scale/src/ordinal.js","../../node_modules/d3-scale/src/band.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatTrim.js","../../ClientApp/SharedComponents/Graph/ColumnStacked.svelte","../../ClientApp/SharedComponents/Graph/AxisX.svelte","../../ClientApp/SharedComponents/Graph/AxisY.svelte","../../ClientApp/SharedComponents/Graph/Graph.svelte","../../node_modules/d3-format/src/precisionFixed.js","../../ClientApp/Calculator/BreakDownSummary.svelte","../../ClientApp/Calculator/MajorUpgrade.svelte","../../ClientApp/Calculator/ProductListForFactory.svelte","../../ClientApp/Calculator/Calculator.svelte","../../ClientApp/Calculator/CalculatorRoot.svelte","../../ClientApp/Dashboard/ProductUpload.svelte","../../ClientApp/App.svelte","../../ClientApp/Fullscreen/Tour.svelte","../../ClientApp/Fullscreen/FactorySaved.svelte","../../ClientApp/Fullscreen/ProductSaved.svelte","../../ClientApp/FullScreen.svelte","../../ClientApp/Login.svelte","../../ClientApp/Root.svelte","../../ClientApp/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot_spread(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_spread_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_spread_changes_fn(dirty) | get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n let j = 0;\n const remove = [];\n while (j < node.attributes.length) {\n const attribute = node.attributes[j++];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n for (let k = 0; k < remove.length; k++) {\n node.removeAttribute(remove[k]);\n }\n return nodes.splice(i, 1)[0];\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(anchor = null) {\n this.a = anchor;\n this.e = this.n = null;\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.h(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = node.ownerDocument;\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${String(value).replace(/\"/g, '"').replace(/'/g, ''')}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.32.3' }, detail)));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to seperate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_custom_elements_slots, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, update_slot, update_slot_spread, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","\n\n{#if componentParams}\n \n{:else}\n \n{/if}\n\n\n","export default function (str, loose) {\n\tif (str instanceof RegExp) return { keys:false, pattern:str };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push('wild');\n\t\t\tpattern += '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, linear, cubicOut } from '../easing/index.mjs';\nimport { is_function, assign } from '../internal/index.mjs';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n easing,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => 'overflow: hidden;' +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n const len = node.getTotalLength();\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","\r\n\r\n\r\n\r\n\r\n\r\n{#if Component}\r\n
\r\n
\r\n
\r\n {#if state.closeButton}\r\n \r\n {/if}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n{/if}\r\n\r\n","export const constants = {\r\n baseUrl: '/'\r\n} ","import { debug } from 'svelte/internal';\r\nimport { constants } from './constants.js';\r\n\r\nexport function getCommaSeparted(thelist) {\r\n if (thelist == undefined || thelist == null)\r\n return '';\r\n\r\n return thelist.map(x => x.name).join(\", \");\r\n}\r\n\r\nexport function getCommaSepartedStringsAsNoBr(thelist) {\r\n if (thelist == undefined || thelist == null)\r\n return '';\r\n\r\n return thelist.map(x => '' + x + '').join(\", \");\r\n}\r\n\r\nexport function getCommaSepartedStringsAsBr(thelist) {\r\n if (thelist == undefined || thelist == null)\r\n return '';\r\n\r\n return thelist.map(x => x + '
').join(\" \");\r\n}\r\n\r\nvar shownalert = false\r\nexport function formatNumber(\r\n amount,\r\n decimalCount = amount < 1 ? 4 : amount < 5 ? 3 : amount < 1000 ? 2 : 0,\r\n decimal = \",\",\r\n thousands = \".\", valueIf0 = \"\"\r\n) {\r\n if (!shownalert) {\r\n alert('using old formatNumber')\r\n\r\n }\r\n}\r\n\r\n\r\nexport function getCommaSepartedVariables(thelist) {\r\n if (thelist == undefined || thelist == null)\r\n return '';\r\n return thelist.map(x => x.variable.name).join(\",\");\r\n}\r\n\r\nexport async function fetchJson(url) {\r\n const res = await fetch(constants.baseUrl + url);\r\n const json = await res.json();\r\n if (res.ok) {\r\n if (json.Error) {\r\n alert(json.Message)\r\n return;\r\n }\r\n return json;\r\n } else {\r\n alert('Mogelijk was je uitgelogd : an error happened in fetch json! \\r\\n' + url);\r\n alert(JSON.stringify(json));\r\n location.reload();\r\n throw new Error(json);\r\n }\r\n}\r\n\r\nexport async function fetchPlain(url) {\r\n const res = await fetch(constants.baseUrl + url);\r\n const text = await res.text();\r\n if (res.ok) {\r\n if (text.includes('Error')) {\r\n var json = JSON.parse(text)\r\n alert(json.Message)\r\n return;\r\n }\r\n return text;\r\n } else {\r\n alert('Mogelijk was je uitgelogd : an error happened in fetch plain! \\r\\n' + url);\r\n alert(JSON.stringify(json));\r\n location.reload();\r\n\r\n throw new Error(json);\r\n }\r\n}\r\nexport function sortByField(prop) {\r\n return function (a, b) {\r\n if (a[prop] > b[prop])\r\n return 1;\r\n if (a[prop] < b[prop])\r\n return -1\r\n return 0\r\n }\r\n}\r\n\r\nexport async function fetchJsonWithMethod(method, url, params) {\r\n try {\r\n const res = await fetch(constants.baseUrl + url, {\r\n method: method,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(params)\r\n });\r\n var json = await res.json();\r\n if (json.Error) {\r\n alert(json.Message)\r\n return;\r\n }\r\n return json;\r\n\r\n } catch (s) {\r\n alert('Mogelijk was je uitgelogd : an error happened in fetch json with method! \\r\\n' + url + '\\r\\n' + s);\r\n alert(JSON.stringify(json));\r\n location.reload();\r\n\r\n throw new Error('an error happened posting data');\r\n\r\n }\r\n}\r\n\r\nexport function saveAsFile(txt, filename) {\r\n var blob = new Blob([txt], { type: 'text/plain' })\r\n const url2 = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.style.display = 'none';\r\n a.href = url2;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n window.URL.revokeObjectURL(url2);\r\n}\r\n\r\nexport async function fetchFileWithMethod(method, url, params, filename) {\r\n try {\r\n const res = await fetch(constants.baseUrl + url, {\r\n method: method,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(params)\r\n });\r\n var file = await res.blob();\r\n const url2 = window.URL.createObjectURL(file);\r\n const a = document.createElement('a');\r\n a.style.display = 'none';\r\n a.href = url2;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n window.URL.revokeObjectURL(url2);\r\n\r\n } catch (s) {\r\n alert('Mogelijk was je uitgelogd : an error happened in fetch json with method! \\r\\n' + url + '\\r\\n' + s);\r\n alert(JSON.stringify(json));\r\n location.reload();\r\n\r\n throw new Error('an error happened posting data');\r\n\r\n }\r\n}\r\nexport async function downloadFile(url, filename) {\r\n fetch(constants.baseUrl + url)\r\n .then(resp => resp.blob())\r\n .then(blob => {\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.style.display = 'none';\r\n a.href = url;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n })\r\n .catch((s) => {\r\n alert('Mogelijk was je uitgelogd : An error has happened in download file! \\r\\n' + url + '\\r\\n' + s)\r\n });\r\n}\r\n\r\nexport function generateUUID() { // Public Domain/MIT\r\n var d = new Date().getTime();//Timestamp\r\n var d2 = (performance && performance.now && (performance.now() * 1000)) || 0;//Time in microseconds since page-load or 0 if unsupported\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16;//random number between 0 and 16\r\n if (d > 0) {//Use timestamp until depleted\r\n r = (d + r) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n } else {//Use microseconds since page-load if supported\r\n r = (d2 + r) % 16 | 0;\r\n d2 = Math.floor(d2 / 16);\r\n }\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n}\r\n\r\nexport function sentenceCase(txt, makerestlower=true) {\r\n if(makerestlower){\r\n\r\n \r\n txt = txt.toLowerCase();\r\n}\r\n if (!txt || txt.length == 0) return txt;\r\n\r\n let ret = txt.substr(0, 1).toUpperCase();\r\n if (txt.length > 1) {\r\n ret += txt.substring(1);\r\n }\r\n return ret;\r\n}","/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 3.0.3, Wed Nov 18 2020\n *\n * http://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n \nvar __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\n\n\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nvar keys = Object.keys;\nvar isArray = Array.isArray;\nvar _global = typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\nif (typeof Promise !== 'undefined' && !_global.Promise) {\n _global.Promise = Promise;\n}\nfunction extend(obj, extension) {\n if (typeof extension !== 'object')\n return obj;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj;\n}\nvar getProto = Object.getPrototypeOf;\nvar _hasOwn = {}.hasOwnProperty;\nfunction hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n}\nfunction props(proto, extension) {\n if (typeof extension === 'function')\n extension = extension(getProto(proto));\n keys(extension).forEach(function (key) {\n setProp(proto, key, extension[key]);\n });\n}\nvar defineProperty = Object.defineProperty;\nfunction setProp(obj, prop, functionOrGetSet, options) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } :\n { value: functionOrGetSet, configurable: true, writable: true }, options));\n}\nfunction derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n}\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nfunction getPropertyDescriptor(obj, prop) {\n var pd = getOwnPropertyDescriptor(obj, prop);\n var proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n}\nvar _slice = [].slice;\nfunction slice(args, start, end) {\n return _slice.call(args, start, end);\n}\nfunction override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n}\nfunction assert(b) {\n if (!b)\n throw new Error(\"Assertion Failed\");\n}\nfunction asap(fn) {\n if (_global.setImmediate)\n setImmediate(fn);\n else\n setTimeout(fn, 0);\n}\n\nfunction arrayToObject(array, extractor) {\n return array.reduce(function (result, item, i) {\n var nameAndValue = extractor(item, i);\n if (nameAndValue)\n result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n}\n\nfunction tryCatch(fn, onerror, args) {\n try {\n fn.apply(null, args);\n }\n catch (ex) {\n onerror && onerror(ex);\n }\n}\nfunction getByKeyPath(obj, keyPath) {\n if (hasOwn(obj, keyPath))\n return obj[keyPath];\n if (!keyPath)\n return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n}\nfunction setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined)\n return;\n if ('isFrozen' in Object && Object.isFrozen(obj))\n return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n }\n else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))\n obj.splice(currentKeyPath, 1);\n else\n delete obj[currentKeyPath];\n }\n else\n obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj)\n innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n }\n else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath)))\n obj.splice(keyPath, 1);\n else\n delete obj[keyPath];\n }\n else\n obj[keyPath] = value;\n }\n }\n}\nfunction delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function (kp) {\n setByKeyPath(obj, kp, undefined);\n });\n}\nfunction shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m))\n rv[m] = obj[m];\n }\n return rv;\n}\nvar concat = [].concat;\nfunction flatten(a) {\n return concat.apply([], a);\n}\nvar intrinsicTypeNames = \"Boolean,String,Date,RegExp,Blob,File,FileList,ArrayBuffer,DataView,Uint8ClampedArray,ImageData,Map,Set\"\n .split(',').concat(flatten([8, 16, 32, 64].map(function (num) { return [\"Int\", \"Uint\", \"Float\"].map(function (t) { return t + num + \"Array\"; }); }))).filter(function (t) { return _global[t]; });\nvar intrinsicTypes = intrinsicTypeNames.map(function (t) { return _global[t]; });\nvar intrinsicTypeNameSet = arrayToObject(intrinsicTypeNames, function (x) { return [x, true]; });\nfunction deepClone(any) {\n if (!any || typeof any !== 'object')\n return any;\n var rv;\n if (isArray(any)) {\n rv = [];\n for (var i = 0, l = any.length; i < l; ++i) {\n rv.push(deepClone(any[i]));\n }\n }\n else if (intrinsicTypes.indexOf(any.constructor) >= 0) {\n rv = any;\n }\n else {\n rv = any.constructor ? Object.create(any.constructor.prototype) : {};\n for (var prop in any) {\n if (hasOwn(any, prop)) {\n rv[prop] = deepClone(any[prop]);\n }\n }\n }\n return rv;\n}\nvar toString = {}.toString;\nfunction toStringTag(o) {\n return toString.call(o).slice(8, -1);\n}\nvar getValueOf = function (val, type) {\n return type === \"Array\" ? '' + val.map(function (v) { return getValueOf(v, toStringTag(v)); }) :\n type === \"ArrayBuffer\" ? '' + new Uint8Array(val) :\n type === \"Date\" ? val.getTime() :\n ArrayBuffer.isView(val) ? '' + new Uint8Array(val.buffer) :\n val;\n};\nfunction getObjectDiff(a, b, rv, prfx) {\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach(function (prop) {\n if (!hasOwn(b, prop))\n rv[prfx + prop] = undefined;\n else {\n var ap = a[prop], bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n var apTypeName = toStringTag(ap);\n var bpTypeName = toStringTag(bp);\n if (apTypeName === bpTypeName) {\n if (intrinsicTypeNameSet[apTypeName]) {\n if (getValueOf(ap, apTypeName) !== getValueOf(bp, bpTypeName)) {\n rv[prfx + prop] = b[prop];\n }\n }\n else {\n getObjectDiff(ap, bp, rv, prfx + prop + \".\");\n }\n }\n else {\n rv[prfx + prop] = b[prop];\n }\n }\n else if (ap !== bp)\n rv[prfx + prop] = b[prop];\n }\n });\n keys(b).forEach(function (prop) {\n if (!hasOwn(a, prop)) {\n rv[prfx + prop] = b[prop];\n }\n });\n return rv;\n}\nvar iteratorSymbol = typeof Symbol !== 'undefined' && Symbol.iterator;\nvar getIteratorOf = iteratorSymbol ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nvar NO_CHAR_ARRAY = {};\nfunction getArrayOf(arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike))\n return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string')\n return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while (x = it.next(), !x.done)\n a.push(x.value);\n return a;\n }\n if (arrayLike == null)\n return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--)\n a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--)\n a[i] = arguments[i];\n return a;\n}\nvar isAsyncFunction = typeof Symbol !== 'undefined'\n ? function (fn) { return fn[Symbol.toStringTag] === 'AsyncFunction'; }\n : function () { return false; };\n\nvar debug = typeof location !== 'undefined' &&\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\nfunction setDebug(value, filter) {\n debug = value;\n libraryFilter = filter;\n}\nvar libraryFilter = function () { return true; };\nvar NEEDS_THROW_FOR_STACK = !new Error(\"\").stack;\nfunction getErrorWithStack() {\n if (NEEDS_THROW_FOR_STACK)\n try {\n throw new Error();\n }\n catch (e) {\n return e;\n }\n return new Error();\n}\nfunction prettyStack(exception, numIgnoredFrames) {\n var stack = exception.stack;\n if (!stack)\n return \"\";\n numIgnoredFrames = (numIgnoredFrames || 0);\n if (stack.indexOf(exception.name) === 0)\n numIgnoredFrames += (exception.name + exception.message).split('\\n').length;\n return stack.split('\\n')\n .slice(numIgnoredFrames)\n .filter(libraryFilter)\n .map(function (frame) { return \"\\n\" + frame; })\n .join('');\n}\n\nvar dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n];\nvar idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n];\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\nvar defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\"\n};\nfunction DexieError(name, msg) {\n this._e = getErrorWithStack();\n this.name = name;\n this.message = msg;\n}\nderive(DexieError).from(Error).extend({\n stack: {\n get: function () {\n return this._stack ||\n (this._stack = this.name + \": \" + this.message + prettyStack(this._e, 2));\n }\n },\n toString: function () { return this.name + \": \" + this.message; }\n});\nfunction getMultiErrorMessage(msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(function (key) { return failures[key].toString(); })\n .filter(function (v, i, s) { return s.indexOf(v) === i; })\n .join('\\n');\n}\nfunction ModifyError(msg, failures, successCount, failedKeys) {\n this._e = getErrorWithStack();\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\nfunction BulkError(msg, failures) {\n this._e = getErrorWithStack();\n this.name = \"BulkError\";\n this.failures = failures;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(BulkError).from(DexieError);\nvar errnames = errorList.reduce(function (obj, name) { return (obj[name] = name + \"Error\", obj); }, {});\nvar BaseException = DexieError;\nvar exceptions = errorList.reduce(function (obj, name) {\n var fullName = name + \"Error\";\n function DexieError(msgOrInner, inner) {\n this._e = getErrorWithStack();\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n }\n else if (typeof msgOrInner === 'string') {\n this.message = \"\" + msgOrInner + (!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n }\n else if (typeof msgOrInner === 'object') {\n this.message = msgOrInner.name + \" \" + msgOrInner.message;\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name] = DexieError;\n return obj;\n}, {});\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\nvar exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfunction mapError(domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n setProp(rv, \"stack\", { get: function () {\n return this.inner.stack;\n } });\n }\n return rv;\n}\nvar fullNameExceptions = errorList.reduce(function (obj, name) {\n if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n\nfunction nop() { }\nfunction mirror(val) { return val; }\nfunction pureFunctionChain(f1, f2) {\n if (f1 == null || f1 === mirror)\n return f2;\n return function (val) {\n return f2(f1(val));\n };\n}\nfunction callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n}\nfunction hookCreatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined)\n arguments[0] = res;\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n}\nfunction hookDeletingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n}\nfunction hookUpdatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n}\nfunction reverseStoppableEventChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n if (f2.apply(this, arguments) === false)\n return false;\n return f1.apply(this, arguments);\n };\n}\n\nfunction promisableChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this, i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n}\n\nvar INTERNAL = {};\nvar LONG_STACKS_CLIP_LIMIT = 100;\nvar MAX_LONG_STACKS = 20;\nvar ZONE_ECHO_LIMIT = 100;\nvar _a = typeof Promise === 'undefined' ?\n [] :\n (function () {\n var globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, globalP.__proto__, globalP];\n var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n nativeP.__proto__,\n globalP\n ];\n })();\nvar resolvedNativePromise = _a[0];\nvar nativePromiseProto = _a[1];\nvar resolvedGlobalPromise = _a[2];\nvar nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\nvar NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nvar patchGlobalPromise = !!resolvedGlobalPromise;\nvar stack_being_generated = false;\nvar schedulePhysicalTick = resolvedGlobalPromise ?\n function () { resolvedGlobalPromise.then(physicalTick); }\n :\n _global.setImmediate ?\n setImmediate.bind(null, physicalTick) :\n _global.MutationObserver ?\n function () {\n var hiddenDiv = document.createElement(\"div\");\n (new MutationObserver(function () {\n physicalTick();\n hiddenDiv = null;\n })).observe(hiddenDiv, { attributes: true });\n hiddenDiv.setAttribute('i', '1');\n } :\n function () { setTimeout(physicalTick, 0); };\nvar asap$1 = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\nvar isOutsideMicroTick = true;\nvar needsNewPhysicalTick = true;\nvar unhandledErrors = [];\nvar rejectingErrors = [];\nvar currentFulfiller = null;\nvar rejectionMapper = mirror;\nvar globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: globalError,\n pgp: false,\n env: {},\n finalize: function () {\n this.unhandleds.forEach(function (uh) {\n try {\n globalError(uh[0], uh[1]);\n }\n catch (e) { }\n });\n }\n};\nvar PSD = globalPSD;\nvar microtickQueue = [];\nvar numScheduledCalls = 0;\nvar tickFinalizers = [];\nfunction DexiePromise(fn) {\n if (typeof this !== 'object')\n throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this.onuncatched = nop;\n this._lib = false;\n var psd = (this._PSD = PSD);\n if (debug) {\n this._stackHolder = getErrorWithStack();\n this._prev = null;\n this._numPrev = 0;\n }\n if (typeof fn !== 'function') {\n if (fn !== INTERNAL)\n throw new TypeError('Not a function');\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value);\n return;\n }\n this._state = null;\n this._value = null;\n ++psd.ref;\n executePromiseTask(this, fn);\n}\nvar thenProp = {\n get: function () {\n var psd = PSD, microTaskId = totalEchoes;\n function then(onFulfilled, onRejected) {\n var _this = this;\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n var cleanup = possibleAwait && !decrementExpectedAwaits();\n var rv = new DexiePromise(function (resolve, reject) {\n propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd));\n });\n debug && linkToPreviousPromise(rv, this);\n return rv;\n }\n then.prototype = INTERNAL;\n return then;\n },\n set: function (value) {\n setProp(this, 'then', value && value.prototype === INTERNAL ?\n thenProp :\n {\n get: function () {\n return value;\n },\n set: thenProp.set\n });\n }\n};\nprops(DexiePromise.prototype, {\n then: thenProp,\n _then: function (onFulfilled, onRejected) {\n propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD));\n },\n catch: function (onRejected) {\n if (arguments.length === 1)\n return this.then(null, onRejected);\n var type = arguments[0], handler = arguments[1];\n return typeof type === 'function' ? this.then(null, function (err) {\n return err instanceof type ? handler(err) : PromiseReject(err);\n })\n : this.then(null, function (err) {\n return err && err.name === type ? handler(err) : PromiseReject(err);\n });\n },\n finally: function (onFinally) {\n return this.then(function (value) {\n onFinally();\n return value;\n }, function (err) {\n onFinally();\n return PromiseReject(err);\n });\n },\n stack: {\n get: function () {\n if (this._stack)\n return this._stack;\n try {\n stack_being_generated = true;\n var stacks = getStack(this, [], MAX_LONG_STACKS);\n var stack = stacks.join(\"\\nFrom previous: \");\n if (this._state !== null)\n this._stack = stack;\n return stack;\n }\n finally {\n stack_being_generated = false;\n }\n }\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ?\n new DexiePromise(function (resolve, reject) {\n var handle = setTimeout(function () { return reject(new exceptions.Timeout(msg)); }, ms);\n _this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n }) : this;\n }\n});\nif (typeof Symbol !== 'undefined' && Symbol.toStringTag)\n setProp(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.Promise');\nglobalPSD.env = snapShot();\nfunction Listener(onFulfilled, onRejected, resolve, reject, zone) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n this.psd = zone;\n}\nprops(DexiePromise, {\n all: function () {\n var values = getArrayOf.apply(null, arguments)\n .map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (values.length === 0)\n resolve([]);\n var remaining = values.length;\n values.forEach(function (a, i) { return DexiePromise.resolve(a).then(function (x) {\n values[i] = x;\n if (!--remaining)\n resolve(values);\n }, reject); });\n });\n },\n resolve: function (value) {\n if (value instanceof DexiePromise)\n return value;\n if (value && typeof value.then === 'function')\n return new DexiePromise(function (resolve, reject) {\n value.then(resolve, reject);\n });\n var rv = new DexiePromise(INTERNAL, true, value);\n linkToPreviousPromise(rv, currentFulfiller);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n values.map(function (value) { return DexiePromise.resolve(value).then(resolve, reject); });\n });\n },\n PSD: {\n get: function () { return PSD; },\n set: function (value) { return PSD = value; }\n },\n totalEchoes: { get: function () { return totalEchoes; } },\n newPSD: newScope,\n usePSD: usePSD,\n scheduler: {\n get: function () { return asap$1; },\n set: function (value) { asap$1 = value; }\n },\n rejectionMapper: {\n get: function () { return rejectionMapper; },\n set: function (value) { rejectionMapper = value; }\n },\n follow: function (fn, zoneProps) {\n return new DexiePromise(function (resolve, reject) {\n return newScope(function (resolve, reject) {\n var psd = PSD;\n psd.unhandleds = [];\n psd.onunhandled = reject;\n psd.finalize = callBoth(function () {\n var _this = this;\n run_at_end_of_this_or_next_physical_tick(function () {\n _this.unhandleds.length === 0 ? resolve() : reject(_this.unhandleds[0]);\n });\n }, psd.finalize);\n fn();\n }, zoneProps, resolve, reject);\n });\n }\n});\nif (NativePromise) {\n if (NativePromise.allSettled)\n setProp(DexiePromise, \"allSettled\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve) {\n if (possiblePromises.length === 0)\n resolve([]);\n var remaining = possiblePromises.length;\n var results = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return results[i] = { status: \"fulfilled\", value: value }; }, function (reason) { return results[i] = { status: \"rejected\", reason: reason }; })\n .then(function () { return --remaining || resolve(results); }); });\n });\n });\n if (NativePromise.any && typeof AggregateError !== 'undefined')\n setProp(DexiePromise, \"any\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (possiblePromises.length === 0)\n reject(new AggregateError([]));\n var remaining = possiblePromises.length;\n var failures = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return resolve(value); }, function (failure) {\n failures[i] = failure;\n if (!--remaining)\n reject(new AggregateError(failures));\n }); });\n });\n });\n}\nfunction executePromiseTask(promise, fn) {\n try {\n fn(function (value) {\n if (promise._state !== null)\n return;\n if (value === promise)\n throw new TypeError('A promise cannot be resolved with itself.');\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n if (value && typeof value.then === 'function') {\n executePromiseTask(promise, function (resolve, reject) {\n value instanceof DexiePromise ?\n value._then(resolve, reject) :\n value.then(resolve, reject);\n });\n }\n else {\n promise._state = true;\n promise._value = value;\n propagateAllListeners(promise);\n }\n if (shouldExecuteTick)\n endMicroTickScope();\n }, handleRejection.bind(null, promise));\n }\n catch (ex) {\n handleRejection(promise, ex);\n }\n}\nfunction handleRejection(promise, reason) {\n rejectingErrors.push(reason);\n if (promise._state !== null)\n return;\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n reason = rejectionMapper(reason);\n promise._state = false;\n promise._value = reason;\n debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(function () {\n var origProp = getPropertyDescriptor(reason, \"stack\");\n reason._promise = promise;\n setProp(reason, \"stack\", {\n get: function () {\n return stack_being_generated ?\n origProp && (origProp.get ?\n origProp.get.apply(reason) :\n origProp.value) :\n promise.stack;\n }\n });\n });\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick)\n endMicroTickScope();\n}\nfunction propagateAllListeners(promise) {\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize();\n if (numScheduledCalls === 0) {\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n }\n}\nfunction propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n return (promise._state ? listener.resolve : listener.reject)(promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap$1(callListener, [cb, promise, listener]);\n}\nfunction callListener(cb, promise, listener) {\n try {\n currentFulfiller = promise;\n var ret, value = promise._value;\n if (promise._state) {\n ret = cb(value);\n }\n else {\n if (rejectingErrors.length)\n rejectingErrors = [];\n ret = cb(value);\n if (rejectingErrors.indexOf(value) === -1)\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n }\n catch (e) {\n listener.reject(e);\n }\n finally {\n currentFulfiller = null;\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\nfunction getStack(promise, stacks, limit) {\n if (stacks.length === limit)\n return stacks;\n var stack = \"\";\n if (promise._state === false) {\n var failure = promise._value, errorName, message;\n if (failure != null) {\n errorName = failure.name || \"Error\";\n message = failure.message || failure;\n stack = prettyStack(failure, 0);\n }\n else {\n errorName = failure;\n message = \"\";\n }\n stacks.push(errorName + (message ? \": \" + message : \"\") + stack);\n }\n if (debug) {\n stack = prettyStack(promise._stackHolder, 2);\n if (stack && stacks.indexOf(stack) === -1)\n stacks.push(stack);\n if (promise._prev)\n getStack(promise._prev, stacks, limit);\n }\n return stacks;\n}\nfunction linkToPreviousPromise(promise, prev) {\n var numPrev = prev ? prev._numPrev + 1 : 0;\n if (numPrev < LONG_STACKS_CLIP_LIMIT) {\n promise._prev = prev;\n promise._numPrev = numPrev;\n }\n}\nfunction physicalTick() {\n beginMicroTickScope() && endMicroTickScope();\n}\nfunction beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n}\nfunction endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n}\nfunction finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(function (p) {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0);\n var i = finalizers.length;\n while (i)\n finalizers[--i]();\n}\nfunction run_at_end_of_this_or_next_physical_tick(fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n}\nfunction addPossiblyUnhandledError(promise) {\n if (!unhandledErrors.some(function (p) { return p._value === promise._value; }))\n unhandledErrors.push(promise);\n}\nfunction markErrorAsHandled(promise) {\n var i = unhandledErrors.length;\n while (i)\n if (unhandledErrors[--i]._value === promise._value) {\n unhandledErrors.splice(i, 1);\n return;\n }\n}\nfunction PromiseReject(reason) {\n return new DexiePromise(INTERNAL, false, reason);\n}\nfunction wrap(fn, errorCatcher) {\n var psd = PSD;\n return function () {\n var wasRootExec = beginMicroTickScope(), outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn.apply(this, arguments);\n }\n catch (e) {\n errorCatcher && errorCatcher(e);\n }\n finally {\n switchToZone(outerScope, false);\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n}\nvar task = { awaits: 0, echoes: 0, id: 0 };\nvar taskCounter = 0;\nvar zoneStack = [];\nvar zoneEchoes = 0;\nvar totalEchoes = 0;\nvar zone_id_counter = 0;\nfunction newScope(fn, props$$1, a1, a2) {\n var parent = PSD, psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n var globalEnv = globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: DexiePromise,\n PromiseProp: { value: DexiePromise, configurable: true, writable: true },\n all: DexiePromise.all,\n race: DexiePromise.race,\n allSettled: DexiePromise.allSettled,\n any: DexiePromise.any,\n resolve: DexiePromise.resolve,\n reject: DexiePromise.reject,\n nthen: getPatchedPromiseThen(globalEnv.nthen, psd),\n gthen: getPatchedPromiseThen(globalEnv.gthen, psd)\n } : {};\n if (props$$1)\n extend(psd, props$$1);\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n };\n var rv = usePSD(psd, fn, a1, a2);\n if (psd.ref === 0)\n psd.finalize();\n return rv;\n}\nfunction incrementExpectedAwaits() {\n if (!task.id)\n task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n}\nfunction decrementExpectedAwaits() {\n if (!task.awaits)\n return false;\n if (--task.awaits === 0)\n task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT;\n return true;\n}\nif (('' + nativePromiseThen).indexOf('[native code]') === -1) {\n incrementExpectedAwaits = decrementExpectedAwaits = nop;\n}\nfunction onPossibleParallellAsync(possiblePromise) {\n if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n incrementExpectedAwaits();\n return possiblePromise.then(function (x) {\n decrementExpectedAwaits();\n return x;\n }, function (e) {\n decrementExpectedAwaits();\n return rejection(e);\n });\n }\n return possiblePromise;\n}\nfunction zoneEnterEcho(targetZone) {\n ++totalEchoes;\n if (!task.echoes || --task.echoes === 0) {\n task.echoes = task.id = 0;\n }\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n}\nfunction zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length - 1];\n zoneStack.pop();\n switchToZone(zone, false);\n}\nfunction switchToZone(targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD)\n return;\n PSD = targetZone;\n if (currentZone === globalPSD)\n globalPSD.env = snapShot();\n if (patchGlobalPromise) {\n var GlobalPromise_1 = globalPSD.env.Promise;\n var targetEnv = targetZone.env;\n nativePromiseProto.then = targetEnv.nthen;\n GlobalPromise_1.prototype.then = targetEnv.gthen;\n if (currentZone.global || targetZone.global) {\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n GlobalPromise_1.all = targetEnv.all;\n GlobalPromise_1.race = targetEnv.race;\n GlobalPromise_1.resolve = targetEnv.resolve;\n GlobalPromise_1.reject = targetEnv.reject;\n if (targetEnv.allSettled)\n GlobalPromise_1.allSettled = targetEnv.allSettled;\n if (targetEnv.any)\n GlobalPromise_1.any = targetEnv.any;\n }\n }\n}\nfunction snapShot() {\n var GlobalPromise = _global.Promise;\n return patchGlobalPromise ? {\n Promise: GlobalPromise,\n PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n all: GlobalPromise.all,\n race: GlobalPromise.race,\n allSettled: GlobalPromise.allSettled,\n any: GlobalPromise.any,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject,\n nthen: nativePromiseProto.then,\n gthen: GlobalPromise.prototype.then\n } : {};\n}\nfunction usePSD(psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n }\n finally {\n switchToZone(outerScope, false);\n }\n}\nfunction enqueueNativeMicroTask(job) {\n nativePromiseThen.call(resolvedNativePromise, job);\n}\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\n return typeof fn !== 'function' ? fn : function () {\n var outerZone = PSD;\n if (possibleAwait)\n incrementExpectedAwaits();\n switchToZone(zone, true);\n try {\n return fn.apply(this, arguments);\n }\n finally {\n switchToZone(outerZone, false);\n if (cleanup)\n enqueueNativeMicroTask(decrementExpectedAwaits);\n }\n };\n}\nfunction getPatchedPromiseThen(origThen, zone) {\n return function (onResolved, onRejected) {\n return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone));\n };\n}\nvar UNHANDLEDREJECTION = \"unhandledrejection\";\nfunction globalError(err, promise) {\n var rv;\n try {\n rv = promise.onuncatched(err);\n }\n catch (e) { }\n if (rv !== false)\n try {\n var event, eventData = { promise: promise, reason: err };\n if (_global.document && document.createEvent) {\n event = document.createEvent('Event');\n event.initEvent(UNHANDLEDREJECTION, true, true);\n extend(event, eventData);\n }\n else if (_global.CustomEvent) {\n event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData });\n extend(event, eventData);\n }\n if (event && _global.dispatchEvent) {\n dispatchEvent(event);\n if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)\n try {\n _global.onunhandledrejection(event);\n }\n catch (_) { }\n }\n if (debug && event && !event.defaultPrevented) {\n console.warn(\"Unhandled rejection: \" + (err.stack || err));\n }\n }\n catch (e) { }\n}\nvar rejection = DexiePromise.reject;\n\nfunction tempTransaction(db, mode, storeNames, fn) {\n if (!db._state.openComplete && (!PSD.letThrough)) {\n if (!db._state.isBeingOpened) {\n if (!db._options.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop);\n }\n return db._state.dbReadyPromise.then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n }\n catch (ex) {\n return rejection(ex);\n }\n return trans._promise(mode, function (resolve, reject) {\n return newScope(function () {\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(function (result) {\n return trans._completion.then(function () { return result; });\n });\n }\n}\n\nvar DEXIE_VERSION = '3.0.3';\nvar maxString = String.fromCharCode(65535);\nvar minKey = -Infinity;\nvar INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array.\";\nvar STRING_EXPECTED = \"String expected.\";\nvar connections = [];\nvar isIEOrEdge = typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent);\nvar hasIEDeleteObjectStoreBug = isIEOrEdge;\nvar hangsOnDeleteLargeKeyRange = isIEOrEdge;\nvar dexieStackFrameFilter = function (frame) { return !/(dexie\\.js|dexie\\.min\\.js)/.test(frame); };\nvar DBNAMES_DB = '__dbnames';\nvar READONLY = 'readonly';\nvar READWRITE = 'readwrite';\n\nfunction combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n}\n\nvar AnyRange = {\n type: 3 ,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n};\n\nfunction workaroundForUndefinedPrimKey(keyPath) {\n return function (obj) {\n if (getByKeyPath(obj, keyPath) === undefined) {\n obj = deepClone(obj);\n delByKeyPath(obj, keyPath);\n }\n return obj;\n };\n}\n\nvar Table = (function () {\n function Table() {\n }\n Table.prototype._trans = function (mode, fn, writeLocked) {\n var trans = this._tx || PSD.trans;\n var tableName = this.name;\n function checkTableInTransaction(resolve, reject, trans) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n var wasRootExec = beginMicroTickScope();\n try {\n return trans && trans.db === this.db ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(function () { return trans._promise(mode, checkTableInTransaction, writeLocked); }, { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n }\n finally {\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n Table.prototype.get = function (keyOrCrit, cb) {\n var _this = this;\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit).first(cb);\n return this._trans('readonly', function (trans) {\n return _this.core.get({ trans: trans, key: keyOrCrit })\n .then(function (res) { return _this.hook.reading.fire(res); });\n }).then(cb);\n };\n Table.prototype.where = function (indexOrCrit) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, \"[\" + indexOrCrit.join('+') + \"]\");\n var keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n return ix.compound &&\n keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; }) &&\n ix.keyPath.every(function (keyPath) { return keyPaths.indexOf(keyPath) >= 0; });\n })[0];\n if (compoundIndex && this.db._maxKey !== maxString)\n return this\n .where(compoundIndex.name)\n .equals(compoundIndex.keyPath.map(function (kp) { return indexOrCrit[kp]; }));\n if (!compoundIndex && debug)\n console.warn(\"The query \" + JSON.stringify(indexOrCrit) + \" on \" + this.name + \" would benefit of a \" +\n (\"compound index [\" + keyPaths.join('+') + \"]\"));\n var idxByName = this.schema.idxByName;\n var idb = this.db._deps.indexedDB;\n function equals(a, b) {\n try {\n return idb.cmp(a, b) === 0;\n }\n catch (e) {\n return false;\n }\n }\n var _a = keyPaths.reduce(function (_a, keyPath) {\n var prevIndex = _a[0], prevFilterFn = _a[1];\n var index = idxByName[keyPath];\n var value = indexOrCrit[keyPath];\n return [\n prevIndex || index,\n prevIndex || !index ?\n combine(prevFilterFn, index && index.multi ?\n function (x) {\n var prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(function (item) { return equals(value, item); });\n } : function (x) { return equals(value, getByKeyPath(x, keyPath)); })\n : prevFilterFn\n ];\n }, [null, null]), idx = _a[0], filterFunction = _a[1];\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) :\n this.where(keyPaths).equals('');\n };\n Table.prototype.filter = function (filterFunction) {\n return this.toCollection().and(filterFunction);\n };\n Table.prototype.count = function (thenShortcut) {\n return this.toCollection().count(thenShortcut);\n };\n Table.prototype.offset = function (offset) {\n return this.toCollection().offset(offset);\n };\n Table.prototype.limit = function (numRows) {\n return this.toCollection().limit(numRows);\n };\n Table.prototype.each = function (callback) {\n return this.toCollection().each(callback);\n };\n Table.prototype.toArray = function (thenShortcut) {\n return this.toCollection().toArray(thenShortcut);\n };\n Table.prototype.toCollection = function () {\n return new this.db.Collection(new this.db.WhereClause(this));\n };\n Table.prototype.orderBy = function (index) {\n return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ?\n \"[\" + index.join('+') + \"]\" :\n index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n this.schema.mappedClass = constructor;\n var readHook = function (obj) {\n if (!obj)\n return obj;\n var res = Object.create(constructor.prototype);\n for (var m in obj)\n if (hasOwn(obj, m))\n try {\n res[m] = obj[m];\n }\n catch (_) { }\n return res;\n };\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n };\n Table.prototype.defineClass = function () {\n function Class(content) {\n extend(this, content);\n }\n \n return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'add', keys: key != null ? [key] : null, values: [objToAdd] });\n }).then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\n \n }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof modifications !== 'object' || isArray(modifications))\n throw new exceptions.InvalidArgument(\"Modifications must be an object.\");\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n keys(modifications).forEach(function (keyPath) {\n setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n });\n var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined)\n return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n return this.where(\":id\").equals(key).modify(modifications);\n }\n else {\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n };\n Table.prototype.put = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'put', values: [objToAdd], keys: key != null ? [key] : null }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\n \n }\n return lastResult;\n });\n };\n Table.prototype.delete = function (key) {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'delete', keys: [key] }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.clear = function () {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'deleteRange', range: AnyRange }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.bulkGet = function (keys$$1) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys$$1,\n trans: trans\n }).then(function (result) { return result.map(function (res) { return _this.hook.reading.fire(res); }); });\n });\n };\n Table.prototype.bulkAdd = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys$$1 = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys$$1 ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys$$1)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToAdd = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'add', keys: keys$$1, values: objectsToAdd, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(_this.name + \".bulkAdd(): \" + numFailures + \" of \" + numObjects + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys$$1 = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys$$1 ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys$$1)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToPut = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'put', keys: keys$$1, values: objectsToPut, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(_this.name + \".bulkPut(): \" + numFailures + \" of \" + numObjects + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkDelete = function (keys$$1) {\n var _this = this;\n var numKeys = keys$$1.length;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'delete', keys: keys$$1 });\n }).then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(_this.name + \".bulkDelete(): \" + numFailures + \" of \" + numKeys + \" operations failed\", failures);\n });\n };\n return Table;\n}());\n\nfunction Events(ctx) {\n var evs = {};\n var rv = function (eventName, subscriber) {\n if (subscriber) {\n var i = arguments.length, args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n evs[eventName].subscribe.apply(null, args);\n return ctx;\n }\n else if (typeof (eventName) === 'string') {\n return evs[eventName];\n }\n };\n rv.addEventType = add;\n for (var i = 1, l = arguments.length; i < l; ++i) {\n add(arguments[i]);\n }\n return rv;\n function add(eventName, chainFunction, defaultFunction) {\n if (typeof eventName === 'object')\n return addConfiguredEvents(eventName);\n if (!chainFunction)\n chainFunction = reverseStoppableEventChain;\n if (!defaultFunction)\n defaultFunction = nop;\n var context = {\n subscribers: [],\n fire: defaultFunction,\n subscribe: function (cb) {\n if (context.subscribers.indexOf(cb) === -1) {\n context.subscribers.push(cb);\n context.fire = chainFunction(context.fire, cb);\n }\n },\n unsubscribe: function (cb) {\n context.subscribers = context.subscribers.filter(function (fn) { return fn !== cb; });\n context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n }\n };\n evs[eventName] = rv[eventName] = context;\n return context;\n }\n function addConfiguredEvents(cfg) {\n keys(cfg).forEach(function (eventName) {\n var args = cfg[eventName];\n if (isArray(args)) {\n add(eventName, cfg[eventName][0], cfg[eventName][1]);\n }\n else if (args === 'asap') {\n var context = add(eventName, mirror, function fire() {\n var i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n context.subscribers.forEach(function (fn) {\n asap(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n }\n else\n throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n}\n\nfunction makeClassConstructor(prototype, constructor) {\n derive(constructor).from({ prototype: prototype });\n return constructor;\n}\n\nfunction createTableConstructor(db) {\n return makeClassConstructor(Table.prototype, function Table$$1(name, tableSchema, trans) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n });\n });\n}\n\nfunction isPlainKeyRange(ctx, ignoreLimitFilter) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n}\nfunction addFilter(ctx, fn) {\n ctx.filter = combine(ctx.filter, fn);\n}\nfunction addReplayFilter(ctx, factory, isLimitFilter) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? function () { return combine(curr(), factory()); } : factory;\n ctx.justLimit = isLimitFilter && !curr;\n}\nfunction addMatchFilter(ctx, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n}\nfunction getIndexOrStore(ctx, coreSchema) {\n if (ctx.isPrimKey)\n return coreSchema.primaryKey;\n var index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index)\n throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n}\nfunction openCursor(ctx, coreTable, trans) {\n var index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans: trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index: index,\n range: ctx.range\n }\n });\n}\nfunction iter(ctx, fn, coreTrans, coreTable) {\n var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n }\n else {\n var set_1 = {};\n var union = function (item, cursor, advance) {\n if (!filter || filter(cursor, advance, function (result) { return cursor.stop(result); }, function (err) { return cursor.fail(err); })) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]')\n key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set_1, key)) {\n set_1[key] = true;\n fn(item, cursor, advance);\n }\n }\n };\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n}\nfunction iterate(cursorPromise, filter, fn, valueMapper) {\n var mappedFn = valueMapper ? function (x, c, a) { return fn(valueMapper(x), c, a); } : fn;\n var wrappedFn = wrap(mappedFn);\n return cursorPromise.then(function (cursor) {\n if (cursor) {\n return cursor.start(function () {\n var c = function () { return cursor.continue(); };\n if (!filter || filter(cursor, function (advancer) { return c = advancer; }, function (val) { cursor.stop(val); c = nop; }, function (e) { cursor.fail(e); c = nop; }))\n wrappedFn(cursor.value, cursor, function (advancer) { return c = advancer; });\n c();\n });\n }\n });\n}\n\nvar Collection = (function () {\n function Collection() {\n }\n Collection.prototype._read = function (fn, cb) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n };\n Collection.prototype._write = function (fn) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\");\n };\n Collection.prototype._addAlgorithm = function (fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n };\n Collection.prototype._iterate = function (fn, coreTrans) {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n };\n Collection.prototype.clone = function (props$$1) {\n var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n if (props$$1)\n extend(ctx, props$$1);\n rv._ctx = ctx;\n return rv;\n };\n Collection.prototype.raw = function () {\n this._ctx.valueMapper = null;\n return this;\n };\n Collection.prototype.each = function (fn) {\n var ctx = this._ctx;\n return this._read(function (trans) { return iter(ctx, fn, trans, ctx.table.core); });\n };\n Collection.prototype.count = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n var coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n return coreTable.count({\n trans: trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(function (count) { return Math.min(count, ctx.limit); });\n }\n else {\n var count = 0;\n return iter(ctx, function () { ++count; return false; }, trans, coreTable)\n .then(function () { return count; });\n }\n }).then(cb);\n };\n Collection.prototype.sortBy = function (keyPath, cb) {\n var parts = keyPath.split('.').reverse(), lastPart = parts[0], lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i)\n return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n function sorter(a, b) {\n var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex);\n return aVal < bVal ? -order : aVal > bVal ? order : 0;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n };\n Collection.prototype.toArray = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n var valueMapper_1 = ctx.valueMapper;\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n limit: ctx.limit,\n values: true,\n query: {\n index: index,\n range: ctx.range\n }\n }).then(function (_a) {\n var result = _a.result;\n return valueMapper_1 ? result.map(valueMapper_1) : result;\n });\n }\n else {\n var a_1 = [];\n return iter(ctx, function (item) { return a_1.push(item); }, trans, ctx.table.core).then(function () { return a_1; });\n }\n }, cb);\n };\n Collection.prototype.offset = function (offset) {\n var ctx = this._ctx;\n if (offset <= 0)\n return this;\n ctx.offset += offset;\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function (cursor, advance) {\n if (offsetLeft === 0)\n return true;\n if (offsetLeft === 1) {\n --offsetLeft;\n return false;\n }\n advance(function () {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n }\n else {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function () { return (--offsetLeft < 0); };\n });\n }\n return this;\n };\n Collection.prototype.limit = function (numRows) {\n this._ctx.limit = Math.min(this._ctx.limit, numRows);\n addReplayFilter(this._ctx, function () {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0)\n advance(resolve);\n return rowsLeft >= 0;\n };\n }, true);\n return this;\n };\n Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n }\n else {\n return true;\n }\n });\n return this;\n };\n Collection.prototype.first = function (cb) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.last = function (cb) {\n return this.reverse().first(cb);\n };\n Collection.prototype.filter = function (filterFunction) {\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n addMatchFilter(this._ctx, filterFunction);\n return this;\n };\n Collection.prototype.and = function (filter) {\n return this.filter(filter);\n };\n Collection.prototype.or = function (indexName) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n };\n Collection.prototype.reverse = function () {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange)\n this._ondirectionchange(this._ctx.dir);\n return this;\n };\n Collection.prototype.desc = function () {\n return this.reverse();\n };\n Collection.prototype.eachKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n };\n Collection.prototype.eachUniqueKey = function (cb) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n };\n Collection.prototype.eachPrimaryKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n };\n Collection.prototype.keys = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.primaryKeys = function (cb) {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n return this._read(function (trans) {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n values: false,\n limit: ctx.limit,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }).then(function (_a) {\n var result = _a.result;\n return result;\n }).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.uniqueKeys = function (cb) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n };\n Collection.prototype.firstKey = function (cb) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.lastKey = function (cb) {\n return this.reverse().firstKey(cb);\n };\n Collection.prototype.distinct = function () {\n var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi)\n return this;\n var set = {};\n addFilter(this._ctx, function (cursor) {\n var strKey = cursor.primaryKey.toString();\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n };\n Collection.prototype.modify = function (changes) {\n var _this = this;\n var ctx = this._ctx;\n return this._write(function (trans) {\n var modifyer;\n if (typeof changes === 'function') {\n modifyer = changes;\n }\n else {\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i], val = changes[keyPath];\n if (getByKeyPath(item, keyPath) !== val) {\n setByKeyPath(item, keyPath, val);\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n var coreTable = ctx.table.core;\n var _a = coreTable.schema.primaryKey, outbound = _a.outbound, extractKey = _a.extractKey;\n var limit = 'testmode' in Dexie ? 1 : 2000;\n var cmp = _this.db.core.cmp;\n var totalFailures = [];\n var successCount = 0;\n var failedKeys = [];\n var applyMutateResult = function (expectedCount, res) {\n var failures = res.failures, numFailures = res.numFailures;\n successCount += expectedCount - numFailures;\n for (var _i = 0, _a = keys(failures); _i < _a.length; _i++) {\n var pos = _a[_i];\n totalFailures.push(failures[pos]);\n }\n };\n return _this.clone().primaryKeys().then(function (keys$$1) {\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys$$1.length - offset);\n return coreTable.getMany({ trans: trans, keys: keys$$1.slice(offset, offset + count) }).then(function (values) {\n var addValues = [];\n var putValues = [];\n var putKeys = outbound ? [] : null;\n var deleteKeys = [];\n for (var i = 0; i < count; ++i) {\n var origValue = values[i];\n var ctx_1 = {\n value: deepClone(origValue),\n primKey: keys$$1[offset + i]\n };\n if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n if (ctx_1.value == null) {\n deleteKeys.push(keys$$1[offset + i]);\n }\n else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys$$1[offset + i]);\n addValues.push(ctx_1.value);\n }\n else {\n putValues.push(ctx_1.value);\n if (outbound)\n putKeys.push(keys$$1[offset + i]);\n }\n }\n }\n return Promise.resolve(addValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'add', values: addValues })\n .then(function (res) {\n for (var pos in res.failures) {\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })).then(function (res) { return putValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'put', keys: putKeys, values: putValues })\n .then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return deleteKeys.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'delete', keys: deleteKeys })\n .then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n return keys$$1.length > offset + count && nextChunk(offset + limit);\n });\n });\n };\n return nextChunk(0).then(function () {\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n return keys$$1.length;\n });\n });\n });\n };\n Collection.prototype.delete = function () {\n var ctx = this._ctx, range = ctx.range;\n if (isPlainKeyRange(ctx) &&\n ((ctx.isPrimKey && !hangsOnDeleteLargeKeyRange) || range.type === 3 ))\n {\n return this._write(function (trans) {\n var primaryKey = ctx.table.core.schema.primaryKey;\n var coreRange = range;\n return ctx.table.core.count({ trans: trans, query: { index: primaryKey, range: coreRange } }).then(function (count) {\n return ctx.table.core.mutate({ trans: trans, type: 'deleteRange', range: coreRange })\n .then(function (_a) {\n var failures = _a.failures, lastResult = _a.lastResult, results = _a.results, numFailures = _a.numFailures;\n if (numFailures)\n throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) { return failures[pos]; }), count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n return this.modify(function (value, ctx) { return ctx.value = null; });\n };\n return Collection;\n}());\n\nfunction createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection$$1(whereClause, keyRangeGenerator) {\n this.db = db;\n var keyRange = AnyRange, error = null;\n if (keyRangeGenerator)\n try {\n keyRange = keyRangeGenerator();\n }\n catch (ex) {\n error = ex;\n }\n var whereCtx = whereClause._ctx;\n var table = whereCtx.table;\n var readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true,\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error,\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n });\n}\n\nfunction simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n}\nfunction simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n}\n\nfunction fail(collectionOrWhereClause, err, T) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection(collectionOrWhereClause) :\n collectionOrWhereClause;\n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n}\nfunction emptyCollection(whereClause) {\n return new whereClause.Collection(whereClause, function () { return rangeEqual(\"\"); }).limit(0);\n}\nfunction upperFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toUpperCase(); } :\n function (s) { return s.toLowerCase(); };\n}\nfunction lowerFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toLowerCase(); } :\n function (s) { return s.toUpperCase(); };\n}\nfunction nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0)\n return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0)\n return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0)\n return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0)\n llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\")\n return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\")\n return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\nfunction addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;\n if (!needles.every(function (s) { return typeof s === 'string'; })) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle) {\n return { lower: lower(needle), upper: upper(needle) };\n }).sort(function (a, b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb) { return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb) { return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n var c = new whereClause.Collection(whereClause, function () { return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); });\n c._ondirectionchange = function (direction) {\n initDirection(direction);\n };\n var firstPossibleNeedle = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n if (typeof key !== 'string')\n return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n }\n else {\n var lowestPossibleCasing = null;\n for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n if (casing === null && lowestPossibleCasing === null)\n firstPossibleNeedle = i + 1;\n else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n }\n else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n}\nfunction createRange(lower, upper, lowerOpen, upperOpen) {\n return {\n type: 2 ,\n lower: lower,\n upper: upper,\n lowerOpen: lowerOpen,\n upperOpen: upperOpen\n };\n}\nfunction rangeEqual(value) {\n return {\n type: 1 ,\n lower: value,\n upper: value\n };\n}\n\nvar WhereClause = (function () {\n function WhereClause() {\n }\n Object.defineProperty(WhereClause.prototype, \"Collection\", {\n get: function () {\n return this._ctx.table.db.Collection;\n },\n enumerable: true,\n configurable: true\n });\n WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n includeLower = includeLower !== false;\n includeUpper = includeUpper === true;\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this);\n return new this.Collection(this, function () { return createRange(lower, upper, !includeLower, !includeUpper); });\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n };\n WhereClause.prototype.equals = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return rangeEqual(value); });\n };\n WhereClause.prototype.above = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, true); });\n };\n WhereClause.prototype.aboveOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, false); });\n };\n WhereClause.prototype.below = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value, false, true); });\n };\n WhereClause.prototype.belowOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value); });\n };\n WhereClause.prototype.startsWith = function (str) {\n if (typeof str !== 'string')\n return fail(this, STRING_EXPECTED);\n return this.between(str, str + maxString, true, true);\n };\n WhereClause.prototype.startsWithIgnoreCase = function (str) {\n if (str === \"\")\n return this.startsWith(str);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x.indexOf(a[0]) === 0; }, [str], maxString);\n };\n WhereClause.prototype.equalsIgnoreCase = function (str) {\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x === a[0]; }, [str], \"\");\n };\n WhereClause.prototype.anyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.indexOf(x) !== -1; }, set, \"\");\n };\n WhereClause.prototype.startsWithAnyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.some(function (n) { return x.indexOf(n) === 0; }); }, set, maxString);\n };\n WhereClause.prototype.anyOf = function () {\n var _this = this;\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n var compare = this._cmp;\n try {\n set.sort(compare);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n if (set.length === 0)\n return emptyCollection(this);\n var c = new this.Collection(this, function () { return createRange(set[0], set[set.length - 1]); });\n c._ondirectionchange = function (direction) {\n compare = (direction === \"next\" ?\n _this._ascending :\n _this._descending);\n set.sort(compare);\n };\n var i = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (compare(key, set[i]) > 0) {\n ++i;\n if (i === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (compare(key, set[i]) === 0) {\n return true;\n }\n else {\n advance(function () { cursor.continue(set[i]); });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.notEqual = function (value) {\n return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.noneOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return new this.Collection(this);\n try {\n set.sort(this._ascending);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var ranges = set.reduce(function (res, val) { return res ?\n res.concat([[res[res.length - 1][1], val]]) :\n [[minKey, val]]; }, null);\n ranges.push([set[set.length - 1], this.db._maxKey]);\n return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.inAnyRange = function (ranges, options) {\n var _this = this;\n var cmp = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max;\n if (ranges.length === 0)\n return emptyCollection(this);\n if (!ranges.every(function (range) {\n return range[0] !== undefined &&\n range[1] !== undefined &&\n ascending(range[0], range[1]) <= 0;\n })) {\n return fail(this, \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\", exceptions.InvalidArgument);\n }\n var includeLowers = !options || options.includeLowers !== false;\n var includeUppers = options && options.includeUppers === true;\n function addRange(ranges, newRange) {\n var i = 0, l = ranges.length;\n for (; i < l; ++i) {\n var range = ranges[i];\n if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n range[0] = min(range[0], newRange[0]);\n range[1] = max(range[1], newRange[1]);\n break;\n }\n }\n if (i === l)\n ranges.push(newRange);\n return ranges;\n }\n var sortDirection = ascending;\n function rangeSorter(a, b) { return sortDirection(a[0], b[0]); }\n var set;\n try {\n set = ranges.reduce(addRange, []);\n set.sort(rangeSorter);\n }\n catch (ex) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var rangePos = 0;\n var keyIsBeyondCurrentEntry = includeUppers ?\n function (key) { return ascending(key, set[rangePos][1]) > 0; } :\n function (key) { return ascending(key, set[rangePos][1]) >= 0; };\n var keyIsBeforeCurrentEntry = includeLowers ?\n function (key) { return descending(key, set[rangePos][0]) > 0; } :\n function (key) { return descending(key, set[rangePos][0]) >= 0; };\n function keyWithinCurrentRange(key) {\n return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n }\n var checkKey = keyIsBeyondCurrentEntry;\n var c = new this.Collection(this, function () { return createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers); });\n c._ondirectionchange = function (direction) {\n if (direction === \"next\") {\n checkKey = keyIsBeyondCurrentEntry;\n sortDirection = ascending;\n }\n else {\n checkKey = keyIsBeforeCurrentEntry;\n sortDirection = descending;\n }\n set.sort(rangeSorter);\n };\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (checkKey(key)) {\n ++rangePos;\n if (rangePos === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (keyWithinCurrentRange(key)) {\n return true;\n }\n else if (_this._cmp(key, set[rangePos][1]) === 0 || _this._cmp(key, set[rangePos][0]) === 0) {\n return false;\n }\n else {\n advance(function () {\n if (sortDirection === ascending)\n cursor.continue(set[rangePos][0]);\n else\n cursor.continue(set[rangePos][1]);\n });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.startsWithAnyOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (!set.every(function (s) { return typeof s === 'string'; })) {\n return fail(this, \"startsWithAnyOf() only works with strings\");\n }\n if (set.length === 0)\n return emptyCollection(this);\n return this.inAnyRange(set.map(function (str) { return [str, str + maxString]; }));\n };\n return WhereClause;\n}());\n\nfunction createWhereClauseConstructor(db) {\n return makeClassConstructor(WhereClause.prototype, function WhereClause$$1(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n var indexedDB = db._deps.indexedDB;\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API missing\");\n this._cmp = this._ascending = indexedDB.cmp.bind(indexedDB);\n this._descending = function (a, b) { return indexedDB.cmp(b, a); };\n this._max = function (a, b) { return indexedDB.cmp(a, b) > 0 ? a : b; };\n this._min = function (a, b) { return indexedDB.cmp(a, b) < 0 ? a : b; };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n });\n}\n\nfunction safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\n\nfunction getMaxKey(IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n return [[]];\n }\n catch (e) {\n return maxString;\n }\n}\n\nfunction eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n}\n\n\n\nfunction preventDefault(event) {\n if (event.stopPropagation)\n event.stopPropagation();\n if (event.preventDefault)\n event.preventDefault();\n}\n\nvar Transaction = (function () {\n function Transaction() {\n }\n Transaction.prototype._lock = function () {\n assert(!PSD.global);\n ++this._reculock;\n if (this._reculock === 1 && !PSD.global)\n PSD.lockOwnerFor = this;\n return this;\n };\n Transaction.prototype._unlock = function () {\n assert(!PSD.global);\n if (--this._reculock === 0) {\n if (!PSD.global)\n PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try {\n usePSD(fnAndPSD[1], fnAndPSD[0]);\n }\n catch (e) { }\n }\n }\n return this;\n };\n Transaction.prototype._locked = function () {\n return this._reculock && PSD.lockOwnerFor !== this;\n };\n Transaction.prototype.create = function (idbtrans) {\n var _this = this;\n if (!this.mode)\n return this;\n var idbdb = this.db.idbdb;\n var dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active)\n throw new exceptions.TransactionInactive();\n assert(this._completion._state === null);\n idbtrans = this.idbtrans = idbtrans || idbdb.transaction(safariMultiStoreFix(this.storeNames), this.mode);\n idbtrans.onerror = wrap(function (ev) {\n preventDefault(ev);\n _this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(function (ev) {\n preventDefault(ev);\n _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n _this.active = false;\n _this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(function () {\n _this.active = false;\n _this._resolve();\n });\n return this;\n };\n Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n var _this = this;\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n if (this._locked()) {\n return new DexiePromise(function (resolve, reject) {\n _this._blockedFuncs.push([function () {\n _this._promise(mode, fn, bWriteLock).then(resolve, reject);\n }, PSD]);\n });\n }\n else if (bWriteLock) {\n return newScope(function () {\n var p = new DexiePromise(function (resolve, reject) {\n _this._lock();\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p.finally(function () { return _this._unlock(); });\n p._lib = true;\n return p;\n });\n }\n else {\n var p = new DexiePromise(function (resolve, reject) {\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p._lib = true;\n return p;\n }\n };\n Transaction.prototype._root = function () {\n return this.parent ? this.parent._root() : this;\n };\n Transaction.prototype.waitFor = function (promiseLike) {\n var root = this._root();\n var promise = DexiePromise.resolve(promiseLike);\n if (root._waitingFor) {\n root._waitingFor = root._waitingFor.then(function () { return promise; });\n }\n else {\n root._waitingFor = promise;\n root._waitingQueue = [];\n var store = root.idbtrans.objectStore(root.storeNames[0]);\n (function spin() {\n ++root._spinCount;\n while (root._waitingQueue.length)\n (root._waitingQueue.shift())();\n if (root._waitingFor)\n store.get(-Infinity).onsuccess = spin;\n }());\n }\n var currentWaitPromise = root._waitingFor;\n return new DexiePromise(function (resolve, reject) {\n promise.then(function (res) { return root._waitingQueue.push(wrap(resolve.bind(null, res))); }, function (err) { return root._waitingQueue.push(wrap(reject.bind(null, err))); }).finally(function () {\n if (root._waitingFor === currentWaitPromise) {\n root._waitingFor = null;\n }\n });\n });\n };\n Transaction.prototype.abort = function () {\n this.active && this._reject(new exceptions.Abort());\n this.active = false;\n };\n Transaction.prototype.table = function (tableName) {\n var memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n var tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n }\n var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n };\n return Transaction;\n}());\n\nfunction createTransactionConstructor(db) {\n return makeClassConstructor(Transaction.prototype, function Transaction$$1(mode, storeNames, dbschema, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0;\n this._completion = new DexiePromise(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n });\n this._completion.then(function () {\n _this.active = false;\n _this.on.complete.fire();\n }, function (e) {\n var wasActive = _this.active;\n _this.active = false;\n _this.on.error.fire(e);\n _this.parent ?\n _this.parent._reject(e) :\n wasActive && _this.idbtrans && _this.idbtrans.abort();\n return rejection(e);\n });\n });\n}\n\nfunction createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) {\n return {\n name: name,\n keyPath: keyPath,\n unique: unique,\n multi: multi,\n auto: auto,\n compound: compound,\n src: (unique && !isPrimKey ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n };\n}\nfunction nameFromKeyPath(keyPath) {\n return typeof keyPath === 'string' ?\n keyPath :\n keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : \"\";\n}\n\nfunction createTableSchema(name, primKey, indexes) {\n return {\n name: name,\n primKey: primKey,\n indexes: indexes,\n mappedClass: null,\n idxByName: arrayToObject(indexes, function (index) { return [index.name, index]; })\n };\n}\n\nfunction getKeyExtractor(keyPath) {\n if (keyPath == null) {\n return function () { return undefined; };\n }\n else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\nfunction getSinglePathKeyExtractor(keyPath) {\n var split = keyPath.split('.');\n if (split.length === 1) {\n return function (obj) { return obj[keyPath]; };\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\n\nfunction getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete')\n return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n}\nfunction getExistingValues(table, req, effectiveKeys) {\n return req.type === 'add' ? Promise.resolve(new Array(req.values.length)) :\n table.getMany({ trans: req.trans, keys: effectiveKeys });\n}\n\nfunction arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n}\n\nvar _id_counter = 0;\nfunction getKeyPathAlias(keyPath) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n \"[\" + keyPath.join('+') + \"]\";\n}\nfunction createDBCore(db, indexedDB, IdbKeyRange, tmpTrans) {\n var cmp = indexedDB.cmp.bind(indexedDB);\n function extractSchema(db, trans) {\n var tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(function (table) { return trans.objectStore(table); }).map(function (store) {\n var keyPath = store.keyPath, autoIncrement = store.autoIncrement;\n var compound = isArray(keyPath);\n var outbound = keyPath == null;\n var indexByKeyPath = {};\n var result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound: outbound,\n compound: compound,\n keyPath: keyPath,\n autoIncrement: autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n },\n indexes: arrayify(store.indexNames).map(function (indexName) { return store.index(indexName); })\n .map(function (index) {\n var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath = index.keyPath;\n var compound = isArray(keyPath);\n var result = {\n name: name,\n compound: compound,\n keyPath: keyPath,\n unique: unique,\n multiEntry: multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: function (keyPath) { return indexByKeyPath[getKeyPathAlias(keyPath)]; }\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n };\n }\n function makeIDBKeyRange(range) {\n if (range.type === 3 )\n return null;\n if (range.type === 4 )\n throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen;\n var idbRange = lower === undefined ?\n upper === undefined ?\n null :\n IdbKeyRange.upperBound(upper, !!upperOpen) :\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) :\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n function createDbCoreTable(tableSchema) {\n var tableName = tableSchema.name;\n function mutate(_a) {\n var trans = _a.trans, type = _a.type, keys$$1 = _a.keys, values = _a.values, range = _a.range, wantResults = _a.wantResults;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var outbound = store.keyPath == null;\n var isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error(\"Invalid operation type: \" + type);\n var length = (keys$$1 || values || { length: 1 }).length;\n if (keys$$1 && values && keys$$1.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n return resolve({ numFailures: 0, failures: {}, results: [], lastResult: undefined });\n var results = wantResults && __spreadArrays((keys$$1 ?\n keys$$1 :\n getEffectiveKeys(tableSchema.primaryKey, { type: type, keys: keys$$1, values: values })));\n var req;\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n if (results)\n results[event.target._reqno] = undefined;\n failures[event.target._reqno] = event.target.error;\n };\n var setResult = function (_a) {\n var target = _a.target;\n results[target._reqno] = target.result;\n };\n if (type === 'deleteRange') {\n if (range.type === 4 )\n return resolve({ numFailures: numFailures, failures: failures, results: results, lastResult: undefined });\n if (range.type === 3 )\n req = store.clear();\n else\n req = store.delete(makeIDBKeyRange(range));\n }\n else {\n var _a = isAddOrPut ?\n outbound ?\n [values, keys$$1] :\n [values, null] :\n [keys$$1, null], args1 = _a[0], args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n req = (args2 && args2[i] !== undefined ?\n store[type](args1[i], args2[i]) :\n store[type](args1[i]));\n req._reqno = i;\n if (results && results[i] === undefined) {\n req.onsuccess = setResult;\n }\n req.onerror = errorHandler;\n }\n }\n else {\n for (var i = 0; i < length; ++i) {\n req = store[type](args1[i]);\n req._reqno = i;\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n if (results)\n results[length - 1] = lastResult;\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: results,\n lastResult: lastResult\n });\n };\n req.onerror = function (event) {\n errorHandler(event);\n done(event);\n };\n req.onsuccess = done;\n });\n }\n function openCursor(_a) {\n var trans = _a.trans, values = _a.values, query = _a.query, reverse = _a.reverse, unique = _a.unique;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n var direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n var req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(function (ev) {\n var cursor = req.result;\n if (!cursor) {\n resolve(null);\n return;\n }\n cursor.___id = ++_id_counter;\n cursor.done = false;\n var _cursorContinue = cursor.continue.bind(cursor);\n var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey)\n _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n var _cursorAdvance = cursor.advance.bind(cursor);\n var doThrowCursorIsNotStarted = function () { throw new Error(\"Cursor not started\"); };\n var doThrowCursorIsStopped = function () { throw new Error(\"Cursor not stopped\"); };\n cursor.trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function () {\n var _this = this;\n var gotOne = 1;\n return this.start(function () { return gotOne-- ? _this.continue() : _this.stop(); }).then(function () { return _this; });\n };\n cursor.start = function (callback) {\n var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = function (value) {\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n var guardedCallback = function () {\n if (req.result) {\n try {\n callback();\n }\n catch (err) {\n cursor.fail(err);\n }\n }\n else {\n cursor.done = true;\n cursor.start = function () { throw new Error(\"Cursor behind last entry\"); };\n cursor.stop();\n }\n };\n req.onsuccess = wrap(function (ev) {\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject);\n });\n }\n function query(hasGetAll) {\n return function (request) {\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var trans = request.trans, values = request.values, limit = request.limit, query = request.query;\n var nonInfinitLimit = limit === Infinity ? undefined : limit;\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0)\n return resolve({ result: [] });\n if (hasGetAll) {\n var req = values ?\n source.getAll(idbKeyRange, nonInfinitLimit) :\n source.getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = function (event) { return resolve({ result: event.target.result }); };\n req.onerror = eventRejectHandler(reject);\n }\n else {\n var count_1 = 0;\n var req_1 = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange);\n var result_1 = [];\n req_1.onsuccess = function (event) {\n var cursor = req_1.result;\n if (!cursor)\n return resolve({ result: result_1 });\n result_1.push(values ? cursor.value : cursor.primaryKey);\n if (++count_1 === limit)\n return resolve({ result: result_1 });\n cursor.continue();\n };\n req_1.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n return {\n name: tableName,\n schema: tableSchema,\n mutate: mutate,\n getMany: function (_a) {\n var trans = _a.trans, keys$$1 = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys$$1.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var valueCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null)\n ++valueCount;\n if (++callbackCount === keyCount)\n resolve(result);\n };\n var errorHandler = eventRejectHandler(reject);\n for (var i = 0; i < length; ++i) {\n var key = keys$$1[i];\n if (key != null) {\n req = store.get(keys$$1[i]);\n req._pos = i;\n req.onsuccess = successHandler;\n req.onerror = errorHandler;\n ++keyCount;\n }\n }\n if (keyCount === 0)\n resolve(result);\n });\n },\n get: function (_a) {\n var trans = _a.trans, key = _a.key;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var req = store.get(key);\n req.onsuccess = function (event) { return resolve(event.target.result); };\n req.onerror = eventRejectHandler(reject);\n });\n },\n query: query(hasGetAll),\n openCursor: openCursor,\n count: function (_a) {\n var query = _a.query, trans = _a.trans;\n var index = query.index, range = query.range;\n return new Promise(function (resolve, reject) {\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(function (ev) { return resolve(ev.target.result); });\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n var _a = extractSchema(db, tmpTrans), schema = _a.schema, hasGetAll = _a.hasGetAll;\n var tables = schema.tables.map(function (tableSchema) { return createDbCoreTable(tableSchema); });\n var tableMap = {};\n tables.forEach(function (table) { return tableMap[table.name] = table; });\n return {\n stack: \"dbcore\",\n transaction: db.transaction.bind(db),\n table: function (name) {\n var result = tableMap[name];\n if (!result)\n throw new Error(\"Table '\" + name + \"' not found\");\n return tableMap[name];\n },\n cmp: cmp,\n MIN_KEY: -Infinity,\n MAX_KEY: getMaxKey(IdbKeyRange),\n schema: schema\n };\n}\n\nfunction createMiddlewareStack(stackImpl, middlewares) {\n return middlewares.reduce(function (down, _a) {\n var create = _a.create;\n return (__assign(__assign({}, down), create(down)));\n }, stackImpl);\n}\nfunction createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange, indexedDB = _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, indexedDB, IDBKeyRange, tmpTrans), middlewares.dbcore);\n return {\n dbcore: dbcore\n };\n}\nfunction generateMiddlewareStacks(db, tmpTrans) {\n var idbdb = tmpTrans.db;\n var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore;\n db.tables.forEach(function (table) {\n var tableName = table.name;\n if (db.core.schema.tables.some(function (tbl) { return tbl.name === tableName; })) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n}\n\nfunction setApiOnPlace(db, objs, tableNames, dbschema) {\n tableNames.forEach(function (tableName) {\n var schema = dbschema[tableName];\n objs.forEach(function (obj) {\n var propDesc = getPropertyDescriptor(obj, tableName);\n if (!propDesc || (\"value\" in propDesc && propDesc.value === undefined)) {\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n setProp(obj, tableName, {\n get: function () { return this.table(tableName); },\n set: function (value) {\n defineProperty(this, tableName, { value: value, writable: true, configurable: true, enumerable: true });\n }\n });\n }\n else {\n obj[tableName] = new db.Table(tableName, schema);\n }\n }\n });\n });\n}\nfunction removeTablesApi(db, objs) {\n objs.forEach(function (obj) {\n for (var key in obj) {\n if (obj[key] instanceof db.Table)\n delete obj[key];\n }\n });\n}\nfunction lowerVersionFirst(a, b) {\n return a._cfg.version - b._cfg.version;\n}\nfunction runUpgraders(db, oldVersion, idbUpgradeTrans, reject) {\n var globalSchema = db._dbSchema;\n var trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n trans.create(idbUpgradeTrans);\n trans._completion.catch(reject);\n var rejectTransaction = trans._reject.bind(trans);\n var transless = PSD.transless || PSD;\n newScope(function () {\n PSD.trans = trans;\n PSD.transless = transless;\n if (oldVersion === 0) {\n keys(globalSchema).forEach(function (tableName) {\n createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n });\n generateMiddlewareStacks(db, idbUpgradeTrans);\n DexiePromise.follow(function () { return db.on.populate.fire(trans); }).catch(rejectTransaction);\n }\n else\n updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);\n });\n}\nfunction updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) {\n var queue = [];\n var versions = db._versions;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n var anyContentUpgraderHasRun = false;\n var versToRun = versions.filter(function (v) { return v._cfg.version >= oldVersion; });\n versToRun.forEach(function (version) {\n queue.push(function () {\n var oldSchema = globalSchema;\n var newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n globalSchema = db._dbSchema = newSchema;\n var diff = getSchemaDiff(oldSchema, newSchema);\n diff.add.forEach(function (tuple) {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n diff.change.forEach(function (change) {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n }\n else {\n var store_1 = idbUpgradeTrans.objectStore(change.name);\n change.add.forEach(function (idx) { return addIndex(store_1, idx); });\n change.change.forEach(function (idx) {\n store_1.deleteIndex(idx.name);\n addIndex(store_1, idx);\n });\n change.del.forEach(function (idxName) { return store_1.deleteIndex(idxName); });\n }\n });\n var contentUpgrade = version._cfg.contentUpgrade;\n if (contentUpgrade && version._cfg.version > oldVersion) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {};\n anyContentUpgraderHasRun = true;\n var upgradeSchema_1 = shallowClone(newSchema);\n diff.del.forEach(function (table) {\n upgradeSchema_1[table] = oldSchema[table];\n });\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n trans.schema = upgradeSchema_1;\n var contentUpgradeIsAsync_1 = isAsyncFunction(contentUpgrade);\n if (contentUpgradeIsAsync_1) {\n incrementExpectedAwaits();\n }\n var returnValue_1;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue_1 = contentUpgrade(trans);\n if (returnValue_1) {\n if (contentUpgradeIsAsync_1) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue_1.then(decrementor, decrementor);\n }\n }\n });\n return (returnValue_1 && typeof returnValue_1.then === 'function' ?\n DexiePromise.resolve(returnValue_1) : promiseFollowed.then(function () { return returnValue_1; }));\n }\n });\n queue.push(function (idbtrans) {\n if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n }\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n });\n function runQueue() {\n return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n DexiePromise.resolve();\n }\n return runQueue().then(function () {\n createMissingTables(globalSchema, idbUpgradeTrans);\n });\n}\nfunction getSchemaDiff(oldSchema, newSchema) {\n var diff = {\n del: [],\n add: [],\n change: []\n };\n var table;\n for (table in oldSchema) {\n if (!newSchema[table])\n diff.del.push(table);\n }\n for (table in newSchema) {\n var oldDef = oldSchema[table], newDef = newSchema[table];\n if (!oldDef) {\n diff.add.push([table, newDef]);\n }\n else {\n var change = {\n name: table,\n def: newDef,\n recreate: false,\n del: [],\n add: [],\n change: []\n };\n if ((\n '' + (oldDef.primKey.keyPath || '')) !== ('' + (newDef.primKey.keyPath || '')) ||\n (oldDef.primKey.auto !== newDef.primKey.auto && !isIEOrEdge))\n {\n change.recreate = true;\n diff.change.push(change);\n }\n else {\n var oldIndexes = oldDef.idxByName;\n var newIndexes = newDef.idxByName;\n var idxName = void 0;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName])\n change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];\n if (!oldIdx)\n change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src)\n change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n}\nfunction createTable(idbtrans, tableName, primKey, indexes) {\n var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto });\n indexes.forEach(function (idx) { return addIndex(store, idx); });\n return store;\n}\nfunction createMissingTables(newSchema, idbtrans) {\n keys(newSchema).forEach(function (tableName) {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\nfunction deleteRemovedTables(newSchema, idbtrans) {\n for (var i = 0; i < idbtrans.db.objectStoreNames.length; ++i) {\n var storeName = idbtrans.db.objectStoreNames[i];\n if (newSchema[storeName] == null) {\n idbtrans.db.deleteObjectStore(storeName);\n }\n }\n}\nfunction addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\nfunction buildGlobalSchema(db, idbdb, tmpTrans) {\n var globalSchema = {};\n var dbStoreNames = slice(idbdb.objectStoreNames, 0);\n dbStoreNames.forEach(function (storeName) {\n var store = tmpTrans.objectStore(storeName);\n var keyPath = store.keyPath;\n var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || \"\", false, false, !!store.autoIncrement, keyPath && typeof keyPath !== \"string\", true);\n var indexes = [];\n for (var j = 0; j < store.indexNames.length; ++j) {\n var idbindex = store.index(store.indexNames[j]);\n keyPath = idbindex.keyPath;\n var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== \"string\", false);\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n return globalSchema;\n}\nfunction readGlobalSchema(db, idbdb, tmpTrans) {\n db.verno = idbdb.version / 10;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n db._storeNames = slice(idbdb.objectStoreNames, 0);\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n}\nfunction verifyInstalledSchema(db, tmpTrans) {\n var installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n var diff = getSchemaDiff(installedSchema, db._dbSchema);\n return !(diff.add.length || diff.change.some(function (ch) { return ch.add.length || ch.change.length; }));\n}\nfunction adjustToExistingIndexNames(db, schema, idbtrans) {\n var storeNames = idbtrans.db.objectStoreNames;\n for (var i = 0; i < storeNames.length; ++i) {\n var storeName = storeNames[i];\n var store = idbtrans.objectStore(storeName);\n db._hasGetAll = 'getAll' in store;\n for (var j = 0; j < store.indexNames.length; ++j) {\n var indexName = store.indexNames[j];\n var keyPath = store.index(indexName).keyPath;\n var dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n if (schema[storeName]) {\n var indexSpec = schema[storeName].idxByName[dexieName];\n if (indexSpec) {\n indexSpec.name = indexName;\n delete schema[storeName].idxByName[dexieName];\n schema[storeName].idxByName[indexName] = indexSpec;\n }\n }\n }\n }\n if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) {\n db._hasGetAll = false;\n }\n}\nfunction parseIndexSyntax(primKeyAndIndexes) {\n return primKeyAndIndexes.split(',').map(function (index, indexNum) {\n index = index.trim();\n var name = index.replace(/([&*]|\\+\\+)/g, \"\");\n var keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n return createIndexSpec(name, keyPath || null, /\\&/.test(index), /\\*/.test(index), /\\+\\+/.test(index), isArray(keyPath), indexNum === 0);\n });\n}\n\nvar Version = (function () {\n function Version() {\n }\n Version.prototype._parseStoresSpec = function (stores, outSchema) {\n keys(stores).forEach(function (tableName) {\n if (stores[tableName] !== null) {\n var indexes = parseIndexSyntax(stores[tableName]);\n var primKey = indexes.shift();\n if (primKey.multi)\n throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n indexes.forEach(function (idx) {\n if (idx.auto)\n throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!idx.keyPath)\n throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n });\n outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n }\n });\n };\n Version.prototype.stores = function (stores) {\n var db = this.db;\n this._cfg.storesSource = this._cfg.storesSource ?\n extend(this._cfg.storesSource, stores) :\n stores;\n var versions = db._versions;\n var storesSpec = {};\n var dbschema = {};\n versions.forEach(function (version) {\n extend(storesSpec, version._cfg.storesSource);\n dbschema = (version._cfg.dbschema = {});\n version._parseStoresSpec(storesSpec, dbschema);\n });\n db._dbSchema = dbschema;\n removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n db._storeNames = keys(dbschema);\n return this;\n };\n Version.prototype.upgrade = function (upgradeFunction) {\n this._cfg.contentUpgrade = upgradeFunction;\n return this;\n };\n return Version;\n}());\n\nfunction createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version$$1(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n}\n\nvar databaseEnumerator;\nfunction DatabaseEnumerator(indexedDB) {\n var hasDatabasesNative = indexedDB && typeof indexedDB.databases === 'function';\n var dbNamesTable;\n if (!hasDatabasesNative) {\n var db = new Dexie(DBNAMES_DB, { addons: [] });\n db.version(1).stores({ dbnames: 'name' });\n dbNamesTable = db.table('dbnames');\n }\n return {\n getDatabaseNames: function () {\n return hasDatabasesNative\n ?\n DexiePromise.resolve(indexedDB.databases()).then(function (infos) { return infos\n .map(function (info) { return info.name; })\n .filter(function (name) { return name !== DBNAMES_DB; }); })\n :\n dbNamesTable.toCollection().primaryKeys();\n },\n add: function (name) {\n return !hasDatabasesNative && name !== DBNAMES_DB && dbNamesTable.put({ name: name }).catch(nop);\n },\n remove: function (name) {\n return !hasDatabasesNative && name !== DBNAMES_DB && dbNamesTable.delete(name).catch(nop);\n }\n };\n}\nfunction initDatabaseEnumerator(indexedDB) {\n try {\n databaseEnumerator = DatabaseEnumerator(indexedDB);\n }\n catch (e) { }\n}\n\nfunction vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n}\n\nfunction dexieOpen(db) {\n var state = db._state;\n var indexedDB = db._deps.indexedDB;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(function () { return state.dbOpenError ?\n rejection(state.dbOpenError) :\n db; });\n debug && (state.openCanceller._stackHolder = getErrorWithStack());\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null;\n return DexiePromise.race([state.openCanceller, new DexiePromise(function (resolve, reject) {\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API not found. If using IE10+, make sure to run your code on a server URL \" +\n \"(not locally). If using old Safari versions, make sure to include indexedDB polyfill.\");\n var dbName = db.name;\n var req = state.autoSchema ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, Math.round(db.verno * 10));\n if (!req)\n throw new exceptions.MissingAPI(\"IndexedDB API not available\");\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap(function (e) {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) {\n req.onerror = preventDefault;\n upgradeTransaction.abort();\n req.result.close();\n var delreq = indexedDB.deleteDatabase(dbName);\n delreq.onsuccess = delreq.onerror = wrap(function () {\n reject(new exceptions.NoSuchDatabase(\"Database \" + dbName + \" doesnt exist\"));\n });\n }\n else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n db.idbdb = req.result;\n runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n }\n }, reject);\n req.onsuccess = wrap(function () {\n upgradeTransaction = null;\n var idbdb = db.idbdb = req.result;\n var objectStoreNames = slice(idbdb.objectStoreNames);\n if (objectStoreNames.length > 0)\n try {\n var tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n if (state.autoSchema)\n readGlobalSchema(db, idbdb, tmpTrans);\n else {\n adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n if (!verifyInstalledSchema(db, tmpTrans)) {\n console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.\");\n }\n }\n generateMiddlewareStacks(db, tmpTrans);\n }\n catch (e) {\n }\n connections.push(db);\n idbdb.onversionchange = wrap(function (ev) {\n state.vcFired = true;\n db.on(\"versionchange\").fire(ev);\n });\n databaseEnumerator.add(dbName);\n resolve();\n }, reject);\n })]).then(function () {\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(db.on.ready.fire)).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(remainders)).then(fireRemainders);\n }\n });\n }).finally(function () {\n state.onReadyBeingFired = null;\n }).then(function () {\n state.isBeingOpened = false;\n return db;\n }).catch(function (err) {\n try {\n upgradeTransaction && upgradeTransaction.abort();\n }\n catch (e) { }\n state.isBeingOpened = false;\n db.close();\n state.dbOpenError = err;\n return rejection(state.dbOpenError);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n });\n}\n\nfunction awaitIterator(iterator) {\n var callNext = function (result) { return iterator.next(result); }, doThrow = function (error) { return iterator.throw(error); }, onSuccess = step(callNext), onError = step(doThrow);\n function step(getNext) {\n return function (val) {\n var next = getNext(val), value = next.value;\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n return step(callNext)();\n}\n\nfunction extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n var i = arguments.length;\n if (i < 2)\n throw new exceptions.InvalidArgument(\"Too few arguments\");\n var args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n scopeFunc = args.pop();\n var tables = flatten(args);\n return [mode, tables, scopeFunc];\n}\nfunction enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n return DexiePromise.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n }\n else {\n trans.create();\n }\n var scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var returnValue;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (scopeFuncIsAsync) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n }\n else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n returnValue = awaitIterator(returnValue);\n }\n }\n }, zoneProps);\n return (returnValue && typeof returnValue.then === 'function' ?\n DexiePromise.resolve(returnValue).then(function (x) { return trans.active ?\n x\n : rejection(new exceptions.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\")); })\n : promiseFollowed.then(function () { return returnValue; })).then(function (x) {\n if (parentTransaction)\n trans._resolve();\n return trans._completion.then(function () { return x; });\n }).catch(function (e) {\n trans._reject(e);\n return rejection(e);\n });\n });\n}\n\nfunction pad(a, value, count) {\n var result = isArray(a) ? a.slice() : [a];\n for (var i = 0; i < count; ++i)\n result.push(value);\n return result;\n}\nfunction createVirtualIndexMiddleware(down) {\n return __assign(__assign({}, down), { table: function (tableName) {\n var table = down.table(tableName);\n var schema = table.schema;\n var indexLookup = {};\n var allVirtualIndexes = [];\n function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) {\n var keyPathAlias = getKeyPathAlias(keyPath);\n var indexList = (indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || []);\n var keyLength = keyPath == null ? 0 : typeof keyPath === 'string' ? 1 : keyPath.length;\n var isVirtual = keyTail > 0;\n var virtualIndex = __assign(__assign({}, lowLevelIndex), { isVirtual: isVirtual, isPrimaryKey: !isVirtual && lowLevelIndex.isPrimaryKey, keyTail: keyTail,\n keyLength: keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique });\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n var virtualKeyPath = keyLength === 2 ?\n keyPath[0] :\n keyPath.slice(0, keyLength - 1);\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort(function (a, b) { return a.keyTail - b.keyTail; });\n return virtualIndex;\n }\n var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n var index = _a[_i];\n addVirtualIndexes(index.keyPath, 0, index);\n }\n function findBestIndex(keyPath) {\n var result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n function translateRange(range, keyTail) {\n return {\n type: range.type === 1 ?\n 2 :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true,\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true\n };\n }\n function translateRequest(req) {\n var index = req.query.index;\n return index.isVirtual ? __assign(__assign({}, req), { query: {\n index: index,\n range: translateRange(req.query.range, index.keyTail)\n } }) : req;\n }\n var result = __assign(__assign({}, table), { schema: __assign(__assign({}, schema), { primaryKey: primaryKey, indexes: allVirtualIndexes, getIndexByKeyPath: findBestIndex }), count: function (req) {\n return table.count(translateRequest(req));\n },\n query: function (req) {\n return table.query(translateRequest(req));\n },\n openCursor: function (req) {\n var _a = req.query.index, keyTail = _a.keyTail, isVirtual = _a.isVirtual, keyLength = _a.keyLength;\n if (!isVirtual)\n return table.openCursor(req);\n function createVirtualCursor(cursor) {\n function _continue(key) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(pad(cursor.key, req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) :\n cursor.continue();\n }\n var virtualCursor = Object.create(cursor, {\n continue: { value: _continue },\n continuePrimaryKey: {\n value: function (key, primaryKey) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }\n },\n key: {\n get: function () {\n var key = cursor.key;\n return keyLength === 1 ?\n key[0] :\n key.slice(0, keyLength);\n }\n },\n value: {\n get: function () {\n return cursor.value;\n }\n }\n });\n return virtualCursor;\n }\n return table.openCursor(translateRequest(req))\n .then(function (cursor) { return cursor && createVirtualCursor(cursor); });\n } });\n return result;\n } });\n}\nvar virtualIndexMiddleware = {\n stack: \"dbcore\",\n name: \"VirtualIndexMiddleware\",\n level: 1,\n create: createVirtualIndexMiddleware\n};\n\nvar hooksMiddleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: function (downCore) { return (__assign(__assign({}, downCore), { table: function (tableName) {\n var downTable = downCore.table(tableName);\n var primaryKey = downTable.schema.primaryKey;\n var tableMiddleware = __assign(__assign({}, downTable), { mutate: function (req) {\n var dxTrans = PSD.trans;\n var _a = dxTrans.table(tableName).hook, deleting = _a.deleting, creating = _a.creating, updating = _a.updating;\n switch (req.type) {\n case 'add':\n if (creating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'put':\n if (creating.fire === nop && updating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'delete':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'deleteRange':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return deleteRange(req); }, true);\n }\n return downTable.mutate(req);\n function addPutOrDelete(req) {\n var dxTrans = PSD.trans;\n var keys$$1 = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys$$1)\n throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), { keys: keys$$1, wantResults: true }) :\n __assign({}, req);\n if (req.type !== 'delete')\n req.values = __spreadArrays(req.values);\n if (req.keys)\n req.keys = __spreadArrays(req.keys);\n return getExistingValues(downTable, req, keys$$1).then(function (existingValues) {\n var contexts = keys$$1.map(function (key, i) {\n var existingValue = existingValues[i];\n var ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n }\n else if (req.type === 'add' || existingValue === undefined) {\n var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n }\n else {\n var objectDiff = getObjectDiff(existingValue, req.values[i]);\n var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges_1) {\n var requestedValue_1 = req.values[i];\n Object.keys(additionalChanges_1).forEach(function (keyPath) {\n if (hasOwn(requestedValue_1, keyPath)) {\n requestedValue_1[keyPath] = additionalChanges_1[keyPath];\n }\n else {\n setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]);\n }\n });\n }\n }\n return ctx;\n });\n return downTable.mutate(req).then(function (_a) {\n var failures = _a.failures, results = _a.results, numFailures = _a.numFailures, lastResult = _a.lastResult;\n for (var i = 0; i < keys$$1.length; ++i) {\n var primKey = results ? results[i] : keys$$1[i];\n var ctx = contexts[i];\n if (primKey == null) {\n ctx.onerror && ctx.onerror(failures[i]);\n }\n else {\n ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ?\n req.values[i] :\n primKey\n );\n }\n }\n return { failures: failures, results: results, numFailures: numFailures, lastResult: lastResult };\n }).catch(function (error) {\n contexts.forEach(function (ctx) { return ctx.onerror && ctx.onerror(error); });\n return Promise.reject(error);\n });\n });\n }\n function deleteRange(req) {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n function deleteNextChunk(trans, range, limit) {\n return downTable.query({ trans: trans, values: false, query: { index: primaryKey, range: range }, limit: limit })\n .then(function (_a) {\n var result = _a.result;\n return addPutOrDelete({ type: 'delete', keys: result, trans: trans }).then(function (res) {\n if (res.numFailures > 0)\n return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return { failures: [], numFailures: 0, lastResult: undefined };\n }\n else {\n return deleteNextChunk(trans, __assign(__assign({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit);\n }\n });\n });\n }\n } });\n return tableMiddleware;\n } })); }\n};\n\nvar Dexie = (function () {\n function Dexie(name, options) {\n var _this = this;\n this._middlewares = {};\n this.verno = 0;\n var deps = Dexie.dependencies;\n this._options = options = __assign({\n addons: Dexie.addons, autoOpen: true,\n indexedDB: deps.indexedDB, IDBKeyRange: deps.IDBKeyRange }, options);\n this._deps = {\n indexedDB: options.indexedDB,\n IDBKeyRange: options.IDBKeyRange\n };\n var addons = options.addons;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n var state = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null,\n cancelOpen: nop,\n openCanceller: null,\n autoSchema: true\n };\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", { ready: [promisableChain, nop] });\n this.on.ready.subscribe = override(this.on.ready.subscribe, function (subscribe) {\n return function (subscriber, bSticky) {\n Dexie.vip(function () {\n var state = _this._state;\n if (state.openComplete) {\n if (!state.dbOpenError)\n DexiePromise.resolve().then(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else if (state.onReadyBeingFired) {\n state.onReadyBeingFired.push(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else {\n subscribe(subscriber);\n var db_1 = _this;\n if (!bSticky)\n subscribe(function unsubscribe() {\n db_1.on.ready.unsubscribe(subscriber);\n db_1.on.ready.unsubscribe(unsubscribe);\n });\n }\n });\n };\n });\n this.Collection = createCollectionConstructor(this);\n this.Table = createTableConstructor(this);\n this.Transaction = createTransactionConstructor(this);\n this.Version = createVersionConstructor(this);\n this.WhereClause = createWhereClauseConstructor(this);\n this.on(\"versionchange\", function (ev) {\n if (ev.newVersion > 0)\n console.warn(\"Another connection wants to upgrade database '\" + _this.name + \"'. Closing db now to resume the upgrade.\");\n else\n console.warn(\"Another connection wants to delete database '\" + _this.name + \"'. Closing db now to resume the delete request.\");\n _this.close();\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(\"Dexie.delete('\" + _this.name + \"') was blocked\");\n else\n console.warn(\"Upgrade '\" + _this.name + \"' blocked by other connection holding version \" + ev.oldVersion / 10);\n });\n this._maxKey = getMaxKey(options.IDBKeyRange);\n this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { return new _this.Transaction(mode, storeNames, dbschema, parentTransaction); };\n this._fireOnBlocked = function (ev) {\n _this.on(\"blocked\").fire(ev);\n connections\n .filter(function (c) { return c.name === _this.name && c !== _this && !c._state.vcFired; })\n .map(function (c) { return c.on(\"versionchange\").fire(ev); });\n };\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n addons.forEach(function (addon) { return addon(_this); });\n }\n Dexie.prototype.version = function (versionNumber) {\n if (isNaN(versionNumber) || versionNumber < 0.1)\n throw new exceptions.Type(\"Given version is not a positive number\");\n versionNumber = Math.round(versionNumber * 10) / 10;\n if (this.idbdb || this._state.isBeingOpened)\n throw new exceptions.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, versionNumber);\n var versions = this._versions;\n var versionInstance = versions.filter(function (v) { return v._cfg.version === versionNumber; })[0];\n if (versionInstance)\n return versionInstance;\n versionInstance = new this.Version(versionNumber);\n versions.push(versionInstance);\n versions.sort(lowerVersionFirst);\n versionInstance.stores({});\n this._state.autoSchema = false;\n return versionInstance;\n };\n Dexie.prototype._whenReady = function (fn) {\n var _this = this;\n return this._state.openComplete || PSD.letThrough ? fn() : new DexiePromise(function (resolve, reject) {\n if (!_this._state.isBeingOpened) {\n if (!_this._options.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n _this.open().catch(nop);\n }\n _this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n };\n Dexie.prototype.use = function (_a) {\n var stack = _a.stack, create = _a.create, level = _a.level, name = _a.name;\n if (name)\n this.unuse({ stack: stack, name: name });\n var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({ stack: stack, create: create, level: level == null ? 10 : level, name: name });\n middlewares.sort(function (a, b) { return a.level - b.level; });\n return this;\n };\n Dexie.prototype.unuse = function (_a) {\n var stack = _a.stack, name = _a.name, create = _a.create;\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n return create ? mw.create !== create :\n name ? mw.name !== name :\n false;\n });\n }\n return this;\n };\n Dexie.prototype.open = function () {\n return dexieOpen(this);\n };\n Dexie.prototype.close = function () {\n var idx = connections.indexOf(this), state = this._state;\n if (idx >= 0)\n connections.splice(idx, 1);\n if (this.idbdb) {\n try {\n this.idbdb.close();\n }\n catch (e) { }\n this.idbdb = null;\n }\n this._options.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n if (state.isBeingOpened)\n state.cancelOpen(state.dbOpenError);\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n };\n Dexie.prototype.delete = function () {\n var _this = this;\n var hasArguments = arguments.length > 0;\n var state = this._state;\n return new DexiePromise(function (resolve, reject) {\n var doDelete = function () {\n _this.close();\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n databaseEnumerator.remove(_this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasArguments)\n throw new exceptions.InvalidArgument(\"Arguments not allowed in db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n }\n else {\n doDelete();\n }\n });\n };\n Dexie.prototype.backendDB = function () {\n return this.idbdb;\n };\n Dexie.prototype.isOpen = function () {\n return this.idbdb !== null;\n };\n Dexie.prototype.hasBeenClosed = function () {\n var dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n };\n Dexie.prototype.hasFailed = function () {\n return this._state.dbOpenError !== null;\n };\n Dexie.prototype.dynamicallyOpened = function () {\n return this._state.autoSchema;\n };\n Object.defineProperty(Dexie.prototype, \"tables\", {\n get: function () {\n var _this = this;\n return keys(this._allTables).map(function (name) { return _this._allTables[name]; });\n },\n enumerable: true,\n configurable: true\n });\n Dexie.prototype.transaction = function () {\n var args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n };\n Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n var _this = this;\n var parentTransaction = PSD.trans;\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1)\n parentTransaction = null;\n var onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '');\n var idbMode, storeNames;\n try {\n storeNames = tables.map(function (table) {\n var storeName = table instanceof _this.Table ? table.name : table;\n if (typeof storeName !== 'string')\n throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n if (parentTransaction) {\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(function (storeName) {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n parentTransaction = null;\n }\n }\n }\n catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, function (_, reject) { reject(e); }) :\n rejection(e);\n }\n var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n usePSD(PSD.transless, function () { return _this._whenReady(enterTransaction); }) :\n this._whenReady(enterTransaction));\n };\n Dexie.prototype.table = function (tableName) {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(\"Table \" + tableName + \" does not exist\");\n }\n return this._allTables[tableName];\n };\n return Dexie;\n}());\n\nvar Dexie$1 = Dexie;\nprops(Dexie$1, __assign(__assign({}, fullNameExceptions), {\n delete: function (databaseName) {\n var db = new Dexie$1(databaseName);\n return db.delete();\n },\n exists: function (name) {\n return new Dexie$1(name, { addons: [] }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () { return false; });\n },\n getDatabaseNames: function (cb) {\n return databaseEnumerator ?\n databaseEnumerator.getDatabaseNames().then(cb) :\n DexiePromise.resolve([]);\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n },\n ignoreTransaction: function (scopeFunc) {\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) :\n scopeFunc();\n },\n vip: vip, async: function (generatorFn) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return DexiePromise.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n };\n }, spawn: function (generatorFn, args, thiz) {\n try {\n var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n if (!rv || typeof rv.then !== 'function')\n return DexiePromise.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n },\n currentTransaction: {\n get: function () { return PSD.trans || null; }\n }, waitFor: function (promiseOrFunction, optionalTimeout) {\n var promise = DexiePromise.resolve(typeof promiseOrFunction === 'function' ?\n Dexie$1.ignoreTransaction(promiseOrFunction) :\n promiseOrFunction)\n .timeout(optionalTimeout || 60000);\n return PSD.trans ?\n PSD.trans.waitFor(promise) :\n promise;\n },\n Promise: DexiePromise,\n debug: {\n get: function () { return debug; },\n set: function (value) {\n setDebug(value, value === 'dexie' ? function () { return true; } : dexieStackFrameFilter);\n }\n },\n derive: derive, extend: extend, props: props, override: override,\n Events: Events,\n getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, asap: asap,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: (function () {\n try {\n return {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n }\n catch (e) {\n return { indexedDB: null, IDBKeyRange: null };\n }\n })(),\n semVer: DEXIE_VERSION, version: DEXIE_VERSION.split('.')\n .map(function (n) { return parseInt(n); })\n .reduce(function (p, c, i) { return p + (c / Math.pow(10, i * 2)); }),\n default: Dexie$1,\n Dexie: Dexie$1 }));\nDexie$1.maxKey = getMaxKey(Dexie$1.dependencies.IDBKeyRange);\n\ninitDatabaseEnumerator(Dexie.dependencies.indexedDB);\nDexiePromise.rejectionMapper = mapError;\nsetDebug(debug, dexieStackFrameFilter);\n\nexport default Dexie;\nexport { Dexie };\n//# sourceMappingURL=dexie.mjs.map\n","import Dexie from 'dexie';\r\n// import 'dexie-observable';\r\nexport const db = new Dexie(\"LMVDatabase\");\r\ndb.version(1).stores(\r\n {\r\n serverSyncReceived: \"date\",\r\n // we only indicate searchable fields, you can add whatevery you want to these objects, but can only search below fields\r\n // DONT PUT THESE IN DEXIE< Just use the json from cache response countries: \"&uuid, name\", //description / general help // these only get update from server... stale while revalidate.. only revalidate if serversynddatereceived older than 1 day (during test 5 minutes)\r\n // DONT PUT THESE IN DEXIE< Just use the json from cache response calculatorVersions: \"&uuid, countryId, mainversion,subversion\", //help text about changes from previous versions, allvars and formulas, pervar if ischangedfrom previous version // these only get update from server... stale while revalidate.. only revalidate if serversynddatereceived older than 1 day (during test 5 minutes)\r\n users: \"&uuid, &email, lastSyncDate, userId\", //passwordhash, logindate, loggedinonline or not you can login online, but if last loggedin offline, then before syncing you must relogin... but just remaining logged in forever is allowed. \r\n factories: \"&uuid, name, countryId, userId, changeDate\",//\r\n // factoriesHistory : \"&uuid, factoryId, changeDate\",//all from factories\r\n factorySettings: \"&uuid, factoryId, name, year, month, calculatorVersionId, userId, changeDate\",// [calculatorVersionId, {varname,changedate,value}]all the var values, per value the date it was set...\r\n // factorySettingHistory: \"&uuid, factorySettingId, changeDate\", //all from factorySettings\r\n //keep a change date on the deep variables also, and only sync the changed variables.,\r\n //when chaning a variable, change the vardate, but also the factorysettinchangedate, or rpdocutchangedate\r\n products: \"&uuid, countryId, calculatorVersionId, factorySettingId, factoryId, brand, stylenumber, name, userId, changeDate\", // all the var values, per value the date it was set \r\n //calculator versionId must be same between factory and product calculation!\r\n // productCalculationHistory: \"&uuid, productCalculationId, changeDate\", // all productCalculation\r\n // unSyncedInputs: \"&uuid, tableName, tableId, fieldName, date, userId\", //these are used for updates to deeper info factory or product input fields... the maintable fields are updated as a whole, but inputs are updated only piece by piece allowing simultaneous editing\r\n savedProducts: \"&uuid, productCalculationId, date, userId\", // a completely filled in non editable calculation with all factory and product info in it.. this one never changes!... permalink\r\n }\r\n);\r\ndb.version(2).stores(\r\n {\r\n // we only indicate searchable fields, you can add whatevery you want to these objects, but can only search below fields\r\n // DONT PUT THESE IN DEXIE< Just use the json from cache response countries: \"&uuid, name\", //description / general help // these only get update from server... stale while revalidate.. only revalidate if serversynddatereceived older than 1 day (during test 5 minutes)\r\n // DONT PUT THESE IN DEXIE< Just use the json from cache response calculatorVersions: \"&uuid, countryId, mainversion,subversion\", //help text about changes from previous versions, allvars and formulas, pervar if ischangedfrom previous version // these only get update from server... stale while revalidate.. only revalidate if serversynddatereceived older than 1 day (during test 5 minutes)\r\n users: \"&uuid, email, lastSyncDate, userId\", //passwordhash, logindate, loggedinonline or not you can login online, but if last loggedin offline, then before syncing you must relogin... but just remaining logged in forever is allowed. \r\n }\r\n);\r\ndb.version(3).stores(\r\n {\r\n factories: \"&uuid, name, countryId, userId, changeDate, isSynced\",//\r\n // factoriesHistory : \"&uuid, factoryId, changeDate\",//all from factories\r\n factorySettings: \"&uuid, factoryId, name, year, month, calculatorVersionId, userId, changeDate, isSynced\",// [calculatorVersionId, {varname,changedate,value}]all the var values, per value the date it was set...\r\n // factorySettingHistory: \"&uuid, factorySettingId, changeDate\", //all from factorySettings\r\n //keep a change date on the deep variables also, and only sync the changed variables.,\r\n //when chaning a variable, change the vardate, but also the factorysettinchangedate, or rpdocutchangedate\r\n products: \"&uuid, countryId, calculatorVersionId, factorySettingId, factoryId, brand, stylenumber, name, userId, changeDate, isSynced\", // all the var values, per value the date it was set \r\n }\r\n);\r\n\r\n\r\n// db.on('changes', function (changes) {\r\n// changes.forEach(function (change) {\r\n// switch (change.type) {\r\n// case 1: // CREATED\r\n// console.log('An object was created: ' + JSON.stringify(change.obj));\r\n// break;\r\n// case 2: // UPDATED\r\n// console.log('An object with key ' + change.key + ' was updated with modifications: ' + JSON.stringify(change.mods));\r\n// break;\r\n// case 3: // DELETED\r\n// console.log('An object was deleted: ' + JSON.stringify(change.oldObj));\r\n// break;\r\n// }\r\n// });\r\n// });","import { writable, get } from 'svelte/store';\r\nimport * as util from '../js/util.js';\r\n\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable({});\r\n var gettingTexts = false;\r\n var timeOut = null;\r\n var getKeys = [];\r\n return {\r\n subscribe, update,\r\n setLang: async (lang) => {\r\n if (lang) {\r\n update(n => Object.assign(n, { langName: lang.langName, langisRtl: lang.isRtl, locale:lang.locale }))\r\n await langTextStore.getAllTexts(lang)\r\n if (lang.isRtl) {\r\n document.getElementsByTagName('html')[0].setAttribute('dir', 'rtl')\r\n document.getElementsByTagName('html')[0].classList.add(\"rtl\")\r\n } else {\r\n document.getElementsByTagName('html')[0].setAttribute('dir', 'ltr')\r\n document.getElementsByTagName('html')[0].classList.remove(\"rtl\")\r\n }\r\n }\r\n \r\n },\r\n getAllTexts: async (lang) => {\r\n if (lang == null) return;\r\n if (!gettingTexts) {\r\n gettingTexts = true;\r\n\r\n const json = await util.fetchJson('api/Lang/getalltexts?lang=' + lang.langName);\r\n var itemToAdd = {};\r\n itemToAdd[lang.langName.toLowerCase()] = json;\r\n update(n => Object.assign(n, itemToAdd))\r\n gettingTexts = false;\r\n }\r\n },\r\n getText: (langKey) => {\r\n if (gettingTexts) {\r\n window.setTimeout(() => { langTextStore.getText(langKey) }, 500);\r\n return '';\r\n } else {\r\n return langTextStore.getTextInternal(langKey)\r\n\r\n }\r\n },\r\n getTextInternal: (langKey, langName) => {\r\n langKey = langKey.toLowerCase()\r\n var store = get(langTextStore);\r\n var langName = store.langName;\r\n if (langName == null) return ''\r\n langName = langName.toLowerCase()\r\n var store = get(langTextStore);\r\n if (store[langName] && store[langName][langKey]) {\r\n return store[langName][langKey];\r\n }\r\n if (!getKeys.some(k => k == langKey)) {\r\n getKeys.push(langKey)\r\n }\r\n clearTimeout(timeOut);\r\n timeOut = window.setTimeout(() => {\r\n\r\n util.fetchJsonWithMethod('POST', 'api/Lang/GetTextsMultiple', { langName: langName, keys: getKeys }).then((items) => {\r\n getKeys = []\r\n var existing = {}\r\n if (store[langName] != null) {\r\n existing = store[langName]\r\n }\r\n store[langName] = { ...existing, ...items }\r\n var itemToAdd = {};\r\n itemToAdd[langName] = store[langName];\r\n itemToAdd.getText = store.getText;\r\n update(n => Object.assign(n, itemToAdd))\r\n });\r\n }, 300);\r\n return ' '\r\n // util.fetchPlain('api/Lang/gettext?langName=' + langName + '&langKey=' + langKey).then((txt) => {\r\n // store[langName][langKey] = txt;\r\n // var itemToAdd = {};\r\n // itemToAdd[langName] = store[langName];\r\n // itemToAdd.getText = store.getText;\r\n // update(n => Object.assign(n, itemToAdd))\r\n // });\r\n }\r\n\r\n };\r\n}\r\nexport const langTextStore = createMyStore();\r\nutil.fetchJson('api/lang/getlangs').then(async (allLangs) => {\r\n langTextStore.update(n => Object.assign(n, { allLangs: allLangs }))\r\n var store = get(langTextStore)\r\n if (store && store.langName == null && allLangs && allLangs.length >0 ) {\r\n await langTextStore.setLang(allLangs.find(l => l.isDefault))\r\n }\r\n})\r\nlangTextStore.update(n => Object.assign(n, { getText: langTextStore.getText, allLangs: [], langName: null }))","import { writable, get } from 'svelte/store';\r\nimport * as util from '../js/util.js';\r\nimport { db } from \"./db.js\";\r\nimport { langTextStore } from \"../store/langtexts.js\";\r\nimport { validate_each_keys } from 'svelte/internal';\r\n\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable({ email: null, uuid: null, name: null, seenTour: false, langName: null, loginDetermined: false });\r\n\r\n return {\r\n subscribe, update, get,\r\n loginOffline: async (serveruser, create) => {\r\n if (!serveruser.userId)\r\n serveruser = { userId: serveruser };\r\n var userList = await db.users\r\n .where(\"uuid\")\r\n .equals(serveruser.userId)\r\n .first(async (user) => {\r\n if (user == undefined) {\r\n if (create == false) {\r\n localStorage.setItem('loggedInUser', null);\r\n return;\r\n }\r\n user = { email: serveruser.email, uuid: serveruser.userId, seenTour: false };\r\n await db.users.add(user);\r\n update(n => { return user })\r\n update(n => Object.assign(n, { loginDetermined: true }));\r\n\r\n localStorage.setItem('loggedInUser', JSON.stringify(user));\r\n\r\n } else {\r\n update(n => { return user })\r\n update(n => Object.assign(n, { loginDetermined: true }));\r\n\r\n\r\n if (user.langName) {\r\n langTextStore.setLang(user.lang)\r\n }\r\n localStorage.setItem('loggedInUser', JSON.stringify(user));\r\n }\r\n })\r\n },\r\n login: async (email, password) => {\r\n try {\r\n var response = await fetch('/api/auth/login', {\r\n method: 'POST',\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ email: email, password: password })\r\n });\r\n if (response.ok) {\r\n var user = await response.json();\r\n if (user && user.email.length > 0) {\r\n update(n => Object.assign(n, { loginDetermined: true }));\r\n loggedInUserStore.loginOffline(user, true)\r\n\r\n return { success: true, errormessage: '' };\r\n }\r\n else {\r\n update(n => Object.assign(n, { loginDetermined: false }));\r\n return { success: false, errormessage: 'general-error-invalid-username-password' };\r\n\r\n }\r\n }\r\n else {\r\n alert('error3 ')\r\n debugger;\r\n }\r\n }\r\n catch (e) {\r\n alert('Cant access server, but allowing you to access local data')\r\n //check localk\r\n }\r\n //if offline and local allow to enter with only email?\r\n alert('cant login offline')\r\n //loggedInUserStore.loginOffline(email, false)\r\n\r\n },\r\n registerstep1: async (userDetails) => {\r\n try {\r\n var langName = get(langTextStore).langName\r\n var response = await fetch('/api/auth/registerstep1', {\r\n method: 'POST',\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ email: userDetails.email, lang: langName, userId: util.generateUUID(), functionName: userDetails.functionName, country: userDetails.country, organizationType: userDetails.organizationType })\r\n });\r\n if (response.ok) {\r\n var result = await response.json()\r\n return { success: result.success, errormessage: result.errormessage }\r\n }\r\n else {\r\n return { success: false, errormessage: 'bad http status' }\r\n }\r\n }\r\n catch (e) {\r\n return { success: false, errormessage: 'error in register' }\r\n alert('error ' + e)\r\n debugger;\r\n //check localk\r\n }\r\n },\r\n registerstep2: async (email, password, token) => {\r\n\r\n try {\r\n var response = await fetch('/api/auth/registerstep2', {\r\n method: 'POST',\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ email: email, password: password, token: token })\r\n });\r\n if (response.ok) {\r\n var result = await response.json()\r\n if (result.success) {\r\n await loggedInUserStore.login(email, password)\r\n return { success: true, errormessage: '' };\r\n }\r\n return { success: result.success, errormessage: result.errormessage }\r\n }\r\n else {\r\n return { success: false, errormessage: 'bad http status' }\r\n }\r\n }\r\n catch (e) {\r\n debugger;\r\n return { success: false, errormessage: 'error in register' }\r\n alert('error ' + e)\r\n //check localk\r\n }\r\n },\r\n forgotpasswordstep1: async (email) => {\r\n try {\r\n var langName = get(langTextStore).langName\r\n var response = await fetch('/api/auth/forgotpasswordstep1', {\r\n method: 'POST',\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ email: email, lang: langName })\r\n });\r\n if (response.ok) {\r\n var result = await response.json()\r\n return { success: result.success, errormessage: result.errormessage }\r\n }\r\n else {\r\n return { success: false, errormessage: 'bad http status' }\r\n }\r\n }\r\n catch (e) {\r\n return { success: false, errormessage: 'error in register' }\r\n alert('error ' + e)\r\n debugger;\r\n //check localk\r\n }\r\n },\r\n forgotpasswordstep2: async (email, password, token) => {\r\n\r\n try {\r\n var response = await fetch('/api/auth/forgotpasswordstep2', {\r\n method: 'POST',\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ email: email, password: password, token: token })\r\n });\r\n\r\n if (response.ok) {\r\n var result = await response.json()\r\n if (result.success) {\r\n loggedInUserStore.loginOffline(email, true)\r\n return { success: true, errormessage: '' };\r\n }\r\n return { success: result.success, errormessage: result.errormessage }\r\n }\r\n else {\r\n return { success: false, errormessage: 'bad http status' }\r\n }\r\n }\r\n catch (e) {\r\n return { success: false, errormessage: 'error in register' }\r\n alert('error ' + e)\r\n debugger;\r\n //check localk\r\n }\r\n },\r\n logout: () => {\r\n localStorage.removeItem('loggedInUser');\r\n window.setTimeout(() => {\r\n\r\n window.open(\"/\", \"_self\");\r\n }, 500);\r\n update(n => { return { uuid: null, name: null, seenTour: false, loggedinOnline: false, loginDetermined: false, email: '' } });\r\n },\r\n seenTour: async () => {\r\n var user = get(loggedInUserStore)\r\n await db.users.update(user.uuid, { seenTour: true })\r\n update(n => Object.assign(n, { seenTour: true }));\r\n }\r\n ,\r\n seenTourNo: async () => {\r\n var user = get(loggedInUserStore)\r\n await db.users.update(user.uuid, { seenTour: false })\r\n update(n => Object.assign(n, { seenTour: false }));\r\n }\r\n ,\r\n setLang: async (lang) => {\r\n var user = get(loggedInUserStore)\r\n if (user && user.email && user.email.length > 0) {\r\n await db.users.update(user.uuid, { lang: lang })\r\n }\r\n },\r\n hideTour: async () => {\r\n update(n => Object.assign(n, { seenTour: true }));\r\n },\r\n setLoginNeeded: () => {\r\n update(n => Object.assign(n, { loginDetermined: false }));\r\n\r\n }\r\n\r\n\r\n };\r\n}\r\nexport const loggedInUserStore = createMyStore();","import { writable } from 'svelte/store';\r\nimport * as util from '../js/util.js';\r\n\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable({ subSections: new Array(), variables: new Array(), availableLangs: [] });\r\n\r\n return {\r\n subscribe, update,\r\n getCalculator: async (countryVersionId) => {\r\n const json = await util.fetchJson('api/Country/getcalculatorconfig?countryVersionId=' + countryVersionId);\r\n update(n => json)\r\n return json\r\n },\r\n };\r\n}\r\nexport const calculatorStore = createMyStore(); ","import { writable, get } from 'svelte/store';\r\nimport * as util from '../js/util.js';\r\nfunction sleep(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable([]);\r\n var gettingCountries = false;\r\n return {\r\n subscribe, update,\r\n getCountries: async () => {\r\n var url = 'api/Country/getcountries'\r\n if (window.location.href.includes('test=true')) {\r\n url += '?istest=true';\r\n }\r\n const json = await util.fetchJson(url);\r\n update(n => json)\r\n },\r\n\r\n getCountry: async (countryId) => {\r\n var countries = get(countryStore);\r\n if (countries.length == 0) {\r\n if (!gettingCountries) {\r\n gettingCountries = true;\r\n await countryStore.getCountries();\r\n countries = get(countryStore);\r\n gettingCountries = false;\r\n }\r\n else {\r\n await sleep(300);\r\n countries = get(countryStore);\r\n gettingCountries = false;\r\n }\r\n }\r\n\r\n var ret = countries.find(c => c.id == countryId);\r\n return ret;\r\n },\r\n };\r\n}\r\nexport const countryStore = createMyStore();","import { dataset_dev } from \"svelte/internal\";\r\nimport { writable, get } from \"svelte/store\";\r\nimport * as util from \"../js/util.js\";\r\nimport { calculatorStore } from \"./calculators.js\";\r\nimport { countryStore } from \"./countries.js\";\r\nimport { db } from \"./db.js\";\r\nimport { loggedInUserStore } from \"./loggedInUser.js\";\r\n\r\nif (1 == 0) {\r\n // save this for multi tab syncing of the data... but not really needed\r\n db.on(\"changes\", function (changes) {\r\n changes.forEach(function (change) {\r\n if (\r\n change.table == \"factories\" &&\r\n change.obj.userId == get(loggedInUserStore).uuid\r\n ) {\r\n factoryStore.getFactories();\r\n }\r\n });\r\n });\r\n}\r\nlet isBusySync = false;\r\nfunction sortByChangeDate(a, b) {\r\n return a.changeDate < b.changeDate ? 1 : -1;\r\n return 0;\r\n}\r\nlet syncTimeout;\r\n\r\nfunction createMyStore() {\r\n var onlinemode = localStorage.getItem(\"onlinemode\") + \"\";\r\n if (onlinemode != \"offline\") {\r\n onlinemode = \"online\";\r\n }\r\n const { subscribe, set, update } = writable({\r\n isBusySync,\r\n currencies: [],\r\n factories: new Array(),\r\n products: new Array(),\r\n currentCalculator: {},\r\n currentFactory: {},\r\n showSuperHelp: false,\r\n lastSyncDate: 0,\r\n onlinemode: onlinemode,\r\n });\r\n\r\n return {\r\n subscribe,\r\n update,\r\n set,\r\n update,\r\n getFactories: async () => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n update((n) => Object.assign(n, { factories: [] }));\r\n } else {\r\n const all = await db.factories.where(\"userId\").equals(userId).toArray();\r\n update((n) => Object.assign(n, { factories: all }));\r\n }\r\n },\r\n\r\n getFactory: async (factoryId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var ret = await db.factories.get(factoryId);\r\n if (ret.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n return ret;\r\n }\r\n },\r\n showSuperHelp: (isShow, title, longtext) => {\r\n update((n) =>\r\n Object.assign(n, {\r\n showSuperHelp: isShow,\r\n superHelpTitle: title,\r\n superHelpLongText: longtext,\r\n })\r\n );\r\n },\r\n setLocked: (isLocked) => {\r\n update((n) =>\r\n Object.assign(n, {\r\n currentCalculator: Object.assign(n.currentCalculator, { isLocked }),\r\n })\r\n );\r\n },\r\n downloadFactory: async (factorySettingId) => {\r\n var factorySetting = await factoryStore.getFactorySettings(\r\n factorySettingId\r\n );\r\n var json = JSON.stringify(factorySetting);\r\n util.saveAsFile(json, `factorysetting-${factorySetting.name}.json`);\r\n var factory = await factoryStore.getFactory(factorySetting.factoryId);\r\n var json2 = JSON.stringify(factory);\r\n util.saveAsFile(json2, `factory-${factory.name}.json`);\r\n },\r\n downloadProduct: async (productId) => {\r\n var product = await factoryStore.getProduct(productId);\r\n var json = JSON.stringify(product);\r\n util.saveAsFile(json, `product-${product.name}.json`);\r\n },\r\n generatePdf: async (product) => {\r\n product.productName = product.name;\r\n product.factorySettingName = await factoryStore.getFactorySettingName(\r\n product.factorySettingId\r\n );\r\n product.factoryName = await factoryStore.getFactoryName(\r\n product.factorySettingId\r\n );\r\n product.targetWage =\r\n product.scenarioConfiguration.scenarioVarValues[\"target-wage\"][\"Wage\"];\r\n await util.fetchFileWithMethod(\r\n \"POST\",\r\n \"api/Country/generatepdf\",\r\n product,\r\n \"ProductStyleCosting\" +\r\n \"_\" +\r\n product.name.replace(\" \", \"\") +\r\n \"_\" +\r\n product.brand.replace(\" \", \"\") +\r\n \"_\" +\r\n product.style.replace(\" \", \"\") +\r\n \".pdf\"\r\n );\r\n },\r\n generateExcel: async (product) => {\r\n product.productName = product.name;\r\n product.factorySettingName = await factoryStore.getFactorySettingName(\r\n product.factorySettingId\r\n );\r\n product.factoryName =\r\n (await factoryStore.getFactoryName(product.factorySettingId)) + \"\";\r\n product.FactoryName = product.factoryName;\r\n product.targetWage =\r\n product.scenarioConfiguration.scenarioVarValues[\"target-wage\"][\"Wage\"];\r\n await util.fetchFileWithMethod(\r\n \"POST\",\r\n \"api/Country/generateexcel\",\r\n product,\r\n \"ProductStyleCosting\" +\r\n \"_\" +\r\n product.name.replace(\" \", \"\") +\r\n \"_\" +\r\n product.brand.replace(\" \", \"\") +\r\n \"_\" +\r\n product.style.replace(\" \", \"\") +\r\n \".xlsx\"\r\n );\r\n },\r\n getCurrencies: async () => {\r\n const json = await util.fetchJson(\"api/Country/getallcurrencies\");\r\n update((n) => Object.assign(n, { currencies: json }));\r\n return json;\r\n },\r\n getFactoryAndVersionName: async (factorySettingId) => {\r\n if (!factorySettingId) {\r\n //weird bug that the currentCalculator is not a calculator\r\n return;\r\n }\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var factorySettings = await db.factorySettings.get(factorySettingId);\r\n if (!factorySettings) return \"\"; // factory might be deleted\r\n if (factorySettings.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n var factory = await db.factories.get(factorySettings.factoryId);\r\n if (!factory) return \"\"; //factory might be deleted\r\n return factory.name + \" - \" + factorySettings.name;\r\n }\r\n },\r\n getFactoryName: async (factorySettingId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var factorySettings = await db.factorySettings.get(factorySettingId);\r\n if (!factorySettings) return \"\"; // factory might be deleted\r\n if (factorySettings.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n var factory = await db.factories.get(factorySettings.factoryId);\r\n if (!factory) return \"\"; //factory might be deleted\r\n return factory.name;\r\n }\r\n },\r\n getFactorySettingName: async (factorySettingId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var factorySettings = await db.factorySettings.get(factorySettingId);\r\n if (!factorySettings) return \"\"; // factory might be deleted\r\n if (factorySettings.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n return factorySettings.name;\r\n }\r\n },\r\n getFactorySettingsForFactory: async (factoryId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var ret = await db.factorySettings\r\n .where(\"factoryId\")\r\n .equals(factoryId)\r\n .toArray();\r\n return ret.filter((i) => i.userId == userId);\r\n }\r\n },\r\n getFactorySettingsChangeDate: async (factorySettingsId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var ret = await db.factorySettings.get(factorySettingsId);\r\n if (ret.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n return ret.changeDate;\r\n }\r\n },\r\n getFactorySettings: async (factorySettingsId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var ret = await db.factorySettings.get(factorySettingsId);\r\n if (ret.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n\r\n update((n) => Object.assign(n, { currentCalculator: ret }));\r\n var factory = await db.factories.get(ret.factoryId);\r\n update((n) => Object.assign(n, { currentFactory: factory }));\r\n\r\n return ret;\r\n }\r\n },\r\n getProduct: async (productId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var ret = await db.products.get(productId);\r\n if (ret.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n\r\n update((n) => Object.assign(n, { currentCalculator: ret }));\r\n var factory = await db.factories.get(ret.factoryId);\r\n update((n) => Object.assign(n, { currentFactory: factory }));\r\n\r\n return ret;\r\n }\r\n },\r\n copyFactorySettings: async (factorySettingsId, copyLabelText) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var ret = await db.factorySettings.get(factorySettingsId);\r\n if (ret.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n ret.uuid = null;\r\n ret.name = copyLabelText;\r\n await countryStore.getCountries();\r\n var countryStoreVal = get(countryStore);\r\n\r\n var factoryStoreVal = get(factoryStore);\r\n if (factoryStoreVal.onlinemode != \"offline\") {\r\n var oldCalculator = await calculatorStore.getCalculator(\r\n ret.countryVersionId\r\n );\r\n var country = countryStoreVal.find(\r\n (c) => c.id == oldCalculator.countryId\r\n );\r\n var calculator = await calculatorStore.getCalculator(\r\n country.version.id\r\n );\r\n var wageVarServer = calculator.variables.find((v) => {\r\n return v.varNameKey == \"Wage\";\r\n });\r\n var wageVarSetting = ret.variables.find((v) => {\r\n return v.varNameKey == \"Wage\";\r\n });\r\n if (wageVarServer != undefined && wageVarSetting != undefined) {\r\n wageVarSetting.value = wageVarServer.formula;\r\n wageVarSetting.formula = wageVarServer.formula;\r\n wageVarSetting.minValue = wageVarServer.minValue;\r\n wageVarSetting.maxValue = wageVarServer.maxValue;\r\n }\r\n wageVarServer = calculator.variables.find((v) => {\r\n return v.varNameKey == \"TargetWage\";\r\n });\r\n wageVarSetting = ret.variables.find((v) => {\r\n return v.varNameKey == \"TargetWage\";\r\n });\r\n if (wageVarServer != undefined && wageVarSetting != undefined) {\r\n wageVarSetting.value = wageVarServer.formula;\r\n wageVarSetting.formula = wageVarServer.formula;\r\n wageVarSetting.minValue = wageVarServer.minValue;\r\n wageVarSetting.maxValue = wageVarServer.maxValue;\r\n }\r\n }\r\n ret.changeDate = Date.now();\r\n return await factoryStore.saveFactoryOrProductSettings(ret);\r\n }\r\n },\r\n copyProduct: async (productId, copyLabelText) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (userId == null || userId.length == 0) {\r\n return [];\r\n } else {\r\n var ret = await db.products.get(productId);\r\n if (ret.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n ret.uuid = null;\r\n ret.name = copyLabelText;\r\n return await factoryStore.saveFactoryOrProductSettings(ret, true);\r\n }\r\n },\r\n hasFactories: async () => {\r\n var userId = get(loggedInUserStore).uuid;\r\n if (!userId || userId.length == 0) return;\r\n return (await db.factories.where(\"userId\").equals(userId).count()) > 0;\r\n },\r\n deleteFactorySetting: async (setting) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n\r\n var ret = await util.fetchJsonWithMethod(\r\n \"POST\",\r\n \"api/Sync/syncdatadelete\",\r\n { userId: userId, tableName: \"factorySettings\", tableId: setting.uuid }\r\n );\r\n if (!ret.success) {\r\n alert(\"failed delete, please make sure you are online to delete\");\r\n return;\r\n }\r\n var ret2 = await util.fetchJsonWithMethod(\r\n \"POST\",\r\n \"api/Sync/syncdatadelete\",\r\n { userId: userId, tableName: \"factories\", tableId: setting.factoryId }\r\n );\r\n if (!ret2.success) {\r\n alert(\"failed delete, please make sure you are online to delete\");\r\n return;\r\n }\r\n\r\n db.factorySettings.delete(setting.uuid).then(async () => {\r\n var ret = await db.factorySettings\r\n .where(\"factoryId\")\r\n .equals(setting.factoryId)\r\n .toArray();\r\n if (ret.length == 0) {\r\n db.factories.delete(setting.factoryId);\r\n }\r\n });\r\n },\r\n deleteProduct: async (product) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n var ret = await util.fetchJsonWithMethod(\r\n \"POST\",\r\n \"api/Sync/syncdatadelete\",\r\n { userId: userId, tableName: \"products\", tableId: product.uuid }\r\n );\r\n if (!ret.success) {\r\n alert(\"failed delete, please make sure you are online to delete\");\r\n return;\r\n }\r\n db.products.delete(product.uuid).then(async () => {});\r\n },\r\n saveFactory: async (factory) => {\r\n return await factoryStore.createOrUpdate(factory, db.factories);\r\n },\r\n setFactorySettingToCurrentProduct: async (factorySettingId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n var newFactorySetting = await db.factorySettings.get(factorySettingId);\r\n if (newFactorySetting.userId != userId) {\r\n alert(\"invalid user\");\r\n return;\r\n }\r\n var currentProduct = get(factoryStore).currentCalculator;\r\n var inputSections = currentProduct.subSections.filter(\r\n (ss) => !ss.isSummarySection && !ss.isFactorySection\r\n );\r\n for (var subSection in inputSections) {\r\n for (var sectionVar in inputSections[subSection].variables) {\r\n var foundVar = currentProduct.variables.find(\r\n (v) =>\r\n v.varNameKey ==\r\n inputSections[subSection].variables[sectionVar].nameKey\r\n );\r\n if (!foundVar.readOnly && !foundVar.isFunction) {\r\n var overWriteVar = newFactorySetting.variables.find(\r\n (v) => v.varNameKey == foundVar.varNameKey\r\n );\r\n if (overWriteVar != undefined) {\r\n overWriteVar.value = foundVar.value;\r\n }\r\n }\r\n }\r\n }\r\n currentProduct.excelSheetNames = newFactorySetting.excelSheetNames;\r\n\r\n currentProduct.factorySettingChangeDate = newFactorySetting.changeDate;\r\n currentProduct.countryVersionId = newFactorySetting.countryVersionId;\r\n currentProduct.variables = newFactorySetting.variables;\r\n currentProduct.subSections = newFactorySetting.subSections;\r\n currentProduct.availableLangs = newFactorySetting.availableLangs;\r\n currentProduct.calculatorVersionNumber =\r\n newFactorySetting.calculatorVersionNumber;\r\n factoryStore.saveFactoryOrProductSettings(currentProduct, true);\r\n },\r\n saveFactoryOrProductSettings: async (factoryOrProductSettings) => {\r\n var isProductMode = factoryOrProductSettings.factorySettingId\r\n ? true\r\n : false;\r\n if (isProductMode) {\r\n var ret = await factoryStore.createOrUpdate(\r\n factoryOrProductSettings,\r\n db.products\r\n );\r\n //await factoryStore.getProduct(factoryOrProductSettings.uuid);\r\n return ret;\r\n }\r\n var ret = await factoryStore.createOrUpdate(\r\n factoryOrProductSettings,\r\n db.factorySettings\r\n );\r\n // await factoryStore.getFactorySettings(factoryOrProductSettings.uuid);\r\n return ret;\r\n },\r\n saveProduct: async (product) => {\r\n var factorySetting = await factoryStore.getFactorySettings(\r\n product.factorySettingId\r\n );\r\n product.factoryId = factorySetting.factoryId;\r\n product.factorySettingChangeDate = factorySetting.changeDate;\r\n product = { ...factorySetting, ...product };\r\n return await factoryStore.createOrUpdate(product, db.products);\r\n },\r\n findProducts: async (\r\n filter,\r\n numRecords,\r\n sortElement,\r\n sortDirection,\r\n factorySettingId\r\n ) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n filter = filter.toLowerCase();\r\n var filterWords = filter.split(\" \");\r\n var ret = await db.products.where(\"userId\").equals(userId).toArray();\r\n ret = ret.filter(\r\n (p) =>\r\n filterWords.every(\r\n (fw) =>\r\n !p.style ||\r\n p.style.includes(fw) ||\r\n p.name.includes(fw) ||\r\n p.brand.includes(fw)\r\n ) &&\r\n (factorySettingId == null || factorySettingId == p.factorySettingId)\r\n );\r\n let totalFilteredProducts = ret.length;\r\n ret = ret.sort((f, g) =>\r\n f[sortElement] > g[sortElement] ? 1 * sortDirection : -1 * sortDirection\r\n );\r\n ret = ret.slice(0, numRecords);\r\n\r\n update((n) => Object.assign(n, { products: ret }));\r\n\r\n return { filteredProducts: ret, totalFilteredProducts };\r\n },\r\n getProductsForFactorySetting: async (factorySettingId) => {\r\n var userId = get(loggedInUserStore).uuid;\r\n var sortElement = \"name\";\r\n var sortDirection = 1;\r\n var ret = await db.products.where(\"userId\").equals(userId).toArray();\r\n ret = ret.filter((p) => p.factorySettingId == factorySettingId);\r\n let totalFilteredProducts = ret.length;\r\n ret = ret.sort((f, g) =>\r\n f[sortElement] > g[sortElement] ? 1 * sortDirection : -1 * sortDirection\r\n );\r\n\r\n return { filteredProducts: ret, totalFilteredProducts };\r\n },\r\n makeInMemoryCopyOfFactorySetting: (settings) => {\r\n var x = JSON.safeStringify(settings);\r\n var y = JSON.parse(x);\r\n y.uuid = util.generateUUID();\r\n y.name = new Date().toLocaleDateString(\"en\", {});\r\n return y;\r\n },\r\n findFactories: async (filter, numRecords) => {\r\n filter = filter.toLowerCase();\r\n var filterWords = filter.split(\" \");\r\n var userId = get(loggedInUserStore).uuid;\r\n var userFactories = await db.factories\r\n .where(\"userId\")\r\n .equals(userId)\r\n .toArray();\r\n var userVersions = await db.factorySettings\r\n .where(\"userId\")\r\n .equals(userId)\r\n .toArray();\r\n\r\n var filteredVersionsEvery = userVersions.filter((fs) => {\r\n return (\r\n fs.name &&\r\n filterWords.every((fw) => fs.name.toLowerCase().includes(fw))\r\n );\r\n });\r\n var filteredVersionsSome = userVersions.filter((fs) => {\r\n return (\r\n fs.name &&\r\n filterWords.some((fw) => fs.name.toLowerCase().includes(fw))\r\n );\r\n });\r\n var filteredUserFactories = userFactories.filter(\r\n (uf) =>\r\n (uf &&\r\n filterWords.some(\r\n (fw) => uf.name && uf.name.toLowerCase().includes(fw)\r\n )) ||\r\n filteredVersionsSome.some((v) => v.factoryId == uf.uuid)\r\n );\r\n filteredUserFactories.map((f) => {\r\n if (filterWords.every((fw) => f.name.toLowerCase().includes(fw))) {\r\n // if the factory name matches search then we return all the versions for that one\r\n f.factorySettings = userVersions\r\n .filter((fv) => {\r\n return fv.factoryId == f.uuid;\r\n })\r\n .sort(sortByChangeDate);\r\n } else {\r\n if (filterWords.some((fw) => f.name.toLowerCase().includes(fw))) {\r\n f.factorySettings = filteredVersionsSome\r\n .filter((fv) => {\r\n return fv.factoryId == f.uuid;\r\n })\r\n .sort(sortByChangeDate);\r\n } else {\r\n f.factorySettings = filteredVersionsEvery\r\n .filter((fv) => {\r\n return fv.factoryId == f.uuid;\r\n })\r\n .sort(sortByChangeDate);\r\n }\r\n }\r\n f.lastSettingChangeDate =\r\n f.factorySettings.length > 0 && f.factorySettings[0].changeDate;\r\n return f;\r\n });\r\n filteredUserFactories = filteredUserFactories.filter(\r\n (uf) => uf.factorySettings.length > 0\r\n );\r\n return filteredUserFactories.slice(0, numRecords);\r\n },\r\n findFactorySettings: async (filter, numRecords) => {\r\n var allFactoriesWithSettings = await factoryStore.findFactories(\r\n filter,\r\n numRecords\r\n );\r\n let flat = allFactoriesWithSettings.flatMap((f) => {\r\n return (\r\n f.factorySettings &&\r\n f.factorySettings.map((v) => {\r\n return { version: v.name, factory: f.name, uuid: v.uuid };\r\n })\r\n );\r\n });\r\n return flat;\r\n },\r\n syncget: async () => {\r\n let factoryStoreVal = get(factoryStore);\r\n if (factoryStoreVal.onlinemode == \"offline\") {\r\n return;\r\n }\r\n if (isBusySync) {\r\n try {\r\n window.clearTimeout(syncTimeout);\r\n } catch (s) {}\r\n syncTimeout = window.setTimeout(factoryStore.syncget, 100);\r\n return;\r\n }\r\n isBusySync = true;\r\n update((n) => Object.assign(n, { isBusySync: true }));\r\n\r\n try {\r\n var userId = get(loggedInUserStore).uuid;\r\n var users = await db.users.where(\"uuid\").equals(userId).toArray();\r\n var user = users[0];\r\n if (!user.lastSyncDateGet) {\r\n user.lastSyncDateGet = Date.parse(\"2000/1/1\");\r\n }\r\n var ret = await util.fetchJsonWithMethod(\r\n \"POST\",\r\n \"api/Sync/syncdataget\",\r\n { userId: userId, fromDate: new Date(user.lastSyncDateGet) }\r\n );\r\n var shouldUpdate = false;\r\n for (var itemIndex in ret) {\r\n shouldUpdate = true;\r\n var item = ret[itemIndex];\r\n var itemObject = JSON.parse(item.json);\r\n var itemTable =\r\n db[item.tableName.replace(\"factorysettings\", \"factorySettings\")];\r\n factoryStore.createOrUpdate(itemObject, itemTable, true, true);\r\n }\r\n if (shouldUpdate) {\r\n update((n) => Object.assign(n, { lastSyncDate: Date.now() }));\r\n }\r\n user.lastSyncDateGet = Date.now();\r\n await db.users.put(user, user.uuid);\r\n } catch (s) {\r\n alert(\"error sync \" + s);\r\n }\r\n isBusySync = false;\r\n update((n) => Object.assign(n, { isBusySync: false }));\r\n },\r\n syncall: async () => {\r\n var factoryStoreVal = get(factoryStore);\r\n\r\n if (factoryStoreVal.onlinemode == \"offline\") {\r\n return \"offline\";\r\n }\r\n if (isBusySync) {\r\n try {\r\n window.clearTimeout(syncTimeout);\r\n } catch (s) {}\r\n\r\n syncTimeout = window.setTimeout(factoryStore.syncall, 400);\r\n return false;\r\n }\r\n isBusySync = true;\r\n\r\n try {\r\n var userId = get(loggedInUserStore).uuid;\r\n var users = await db.users.where(\"uuid\").equals(userId).toArray();\r\n var user = users[0];\r\n if (!user.lastSyncDate) {\r\n user.lastSyncDate = Date.parse(\"2000/1/1\");\r\n }\r\n var itemsToSync = [];\r\n\r\n var factoriesToSync = await db.factories\r\n .where(\"userId\")\r\n .equals(userId)\r\n .and(function (item) {\r\n return !item.isSynced;\r\n })\r\n .toArray();\r\n\r\n itemsToSync = itemsToSync.concat(\r\n factoriesToSync.map((i) => {\r\n return {\r\n userId: userId,\r\n tableName: \"factories\",\r\n tableId: i.uuid,\r\n json: JSON.stringify(i),\r\n changeDate: i.changeDate,\r\n varValues: [],\r\n };\r\n })\r\n );\r\n var factorySettingsToSync = await db.factorySettings\r\n .where(\"userId\")\r\n .equals(userId)\r\n .and(function (item) {\r\n return !item.isSynced;\r\n })\r\n .toArray();\r\n itemsToSync = itemsToSync.concat(\r\n factorySettingsToSync.map((i) => {\r\n return {\r\n userId: userId,\r\n tableName: \"factorySettings\",\r\n tableId: i.uuid,\r\n json: JSON.stringify(i),\r\n changeDate: i.changeDate,\r\n varValues: [],\r\n };\r\n })\r\n );\r\n\r\n var productsToSync = await db.products\r\n .where(\"userId\")\r\n .equals(userId)\r\n .and(function (item) {\r\n return !item.isSynced;\r\n })\r\n .toArray();\r\n itemsToSync = itemsToSync.concat(\r\n productsToSync.map((i) => {\r\n return {\r\n userId: userId,\r\n tableName: \"products\",\r\n tableId: i.uuid,\r\n json: JSON.stringify(i),\r\n changeDate: i.changeDate,\r\n varValues: [],\r\n };\r\n })\r\n );\r\n\r\n var ret = await util.fetchJsonWithMethod(\r\n \"POST\",\r\n \"api/Sync/syncdatasave\",\r\n itemsToSync\r\n );\r\n user.lastSyncDatePush = Date.now();\r\n if (ret.success) {\r\n for (var item of factoriesToSync) {\r\n factoryStore.createOrUpdate(item, db.factories, true, true);\r\n }\r\n for (var item of factorySettingsToSync) {\r\n factoryStore.createOrUpdate(item, db.factorySettings, true, true);\r\n }\r\n for (var item of productsToSync) {\r\n factoryStore.createOrUpdate(item, db.products, true, true);\r\n }\r\n }\r\n await db.users.put(user, user.uuid);\r\n } catch (s) {\r\n alert(\"error sync \" + s);\r\n }\r\n isBusySync = false;\r\n return true;\r\n },\r\n getCurrencySign: () => {\r\n var storeValue = get(factoryStore);\r\n var currencyNameObj = storeValue.currencies.find(\r\n (c) => c.id == storeValue.currentCalculator.alternateCurrencyId\r\n );\r\n var currencySign = \"\";\r\n if (currencyNameObj != null) {\r\n currencySign = currencyNameObj.htmlCode;\r\n // '';\r\n }\r\n return currencySign;\r\n },\r\n setMode: async (mode) => {\r\n update((n) => Object.assign(n, { onlinemode: mode }));\r\n localStorage.setItem(\"onlinemode\", mode);\r\n if (mode == \"online\") {\r\n var ret = await factoryStore.syncall();\r\n if (ret == true) {\r\n await factoryStore.syncget();\r\n return \"all data uploaded and up to date\";\r\n } else {\r\n alert(\"something went wrong \" + ret.message);\r\n }\r\n }\r\n },\r\n createOrUpdate: async (item, table, isSynced = false, keepDate = false) => {\r\n item.isSynced = isSynced;\r\n if (item.uuid == undefined || item.uuid == null) {\r\n item.uuid = util.generateUUID();\r\n if (!keepDate) item.changeDate = new Date().toJSON();\r\n var x = new Date().toISOString();\r\n item.userId = get(loggedInUserStore).uuid;\r\n await table.add(item);\r\n } else {\r\n var x = JSON.safeStringify(item);\r\n var y = JSON.parse(x);\r\n if (\r\n y.scenarioConfiguration &&\r\n y.scenarioConfiguration.calculatedScenarios\r\n )\r\n y.scenarioConfiguration.calculatedScenarios = [];\r\n var existingDBItem = await table.get(item.uuid);\r\n if (JSON.safeStringify(existingDBItem) != JSON.safeStringify(y)) {\r\n if (!keepDate) y.changeDate = new Date().toJSON();\r\n await table.put(y, item.uuid);\r\n }\r\n }\r\n return item.uuid;\r\n },\r\n };\r\n}\r\n\r\nexport const factoryStore = createMyStore();\r\n\r\n// we use this function to remove the circular references from the object structure before saving to Dexie / IndexedDB\r\nJSON.safeStringify = (obj, indent = 2) => {\r\n let cache = [];\r\n const retVal = JSON.stringify(\r\n obj,\r\n (key, value) =>\r\n typeof value === \"object\" && value !== null\r\n ? cache.includes(value)\r\n ? undefined // Duplicate reference found, discard key\r\n : cache.push(value) && value // Store value in our collection\r\n : value,\r\n indent\r\n );\r\n cache = null;\r\n return retVal;\r\n};\r\n","\r\n\r\n{#if countryId && countryId > 0}\r\n {#await countryStore.getCountry(countryId) then country}\r\n {country && country.nameKey}\r\n {/await}\r\n{/if}\r\n","\r\n\r\n{actualDate.toLocaleTimeString($langTextStore.locale, options)}\r\n","\r\n\r\n
\r\n\t{#if !transitioning}\r\n\t\t
\r\n\t\t\t{@html display}\r\n\t\t
\r\n\t{/if}\r\n
\r\n\r\n\r\n","\n\n\n\n\n\n
\n {@html getOptionLabel(item, filterText)}\n
\n","\n\n\n\n\n\t\n\t\t{#each visible as row (row.index)}\n\t\t\t\n\t\t\t\tMissing template\n\t\t\t\n\t\t{/each}\n\t\n\n","\n\n\n\n{#if isVirtualList}\n
\n\n \n\n
handleHover(i)}\" on:click=\"{event => handleClick({item, i, event})}\"\n class=\"listItem\">\n \n
\n\n
\n
\n{/if}\n\n{#if !isVirtualList}\n
\n {#each items as item, i}\n {#if item.isGroupHeader && !item.isSelectable}\n
{getGroupHeaderLabel(item)}
\n { :else }\n handleHover(i)}\"\n on:click=\"{event => handleClick({item, i, event})}\"\n class=\"listItem\"\n >\n \n
\n {/if}\n {:else}\n {#if !hideEmptyState}\n
{noOptionsMessage}
\n {/if}\n {/each}\n\n{/if}\n\n\n","\n\n\n\n
\n {@html getSelectionLabel(item)}\n
\n","\n\n{#each selectedValue as value, i}\n
\n
\n {@html getSelectionLabel(value)}\n
\n {#if !isDisabled}\n
handleClear(i, event)}\">\n \n \n \n
\n {/if}\n
\n{/each}\n\n\n\n\n","\n\n\n\n\n\n\n\n {#if Icon}\n \n {/if}\n\n {#if isMulti && selectedValue && selectedValue.length > 0}\n \n {/if}\n\n {#if isDisabled}\n \n {:else}\n \n {/if}\n\n {#if !isMulti && showSelectedItem}\n
\n \n
\n {/if}\n\n {#if showSelectedItem && isClearable && !isDisabled && !isWaiting}\n
\n \n \n \n
\n {/if}\n\n {#if showIndicator || (showChevron && !selectedValue || (!isSearchable && !isDisabled && !isWaiting && ((showSelectedItem && !isClearable) || !showSelectedItem)))}\n
\n {#if indicatorSvg}\n {@html indicatorSvg}\n {:else}\n \n \n \n {/if}\n
\n {/if}\n\n {#if isWaiting}\n
\n \n \n \n
\n {/if}\n\n","export default function debounce(func, wait, immediate) {\n let timeout;\n\n return function executedFunction() {\n let context = this;\n let args = arguments;\n\n let later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n let callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait);\n\n if (callNow) func.apply(context, args);\n };\n};\n","export default function(elem) {\n const bounding = elem.getBoundingClientRect();\n const out = {};\n\n out.top = bounding.top < 0;\n out.left = bounding.left < 0;\n out.bottom = bounding.bottom > (window.innerHeight || document.documentElement.clientHeight);\n out.right = bounding.right > (window.innerWidth || document.documentElement.clientWidth);\n out.any = out.top || out.left || out.bottom || out.right;\n\n return out;\n};\n","\r\n\r\n {\r\n return filterText\r\n .toLowerCase()\r\n .split(\" \")\r\n .every((word) => label.toLowerCase().includes(word));\r\n }}\r\n/>\r\n\r\n\r\n","\r\n\r\n
\r\n \r\n {$langTextStore.getText(\"general-label-current-lang\")}\r\n {$langTextStore.langName}\r\n \r\n \r\n \r\n \r\n {#if showChoice}\r\n {#if langs}\r\n
\r\n {#each langs as lang}\r\n setLang(lang)}\r\n class=\"d-block mb-1 choice c-pointer\"\r\n >\r\n {#if $langTextStore.langName === lang.langName}\r\n \r\n {:else}\r\n \r\n \r\n \r\n {/if}\r\n {lang.langName}\r\n \r\n {/each}\r\n
\r\n {/if}\r\n {:else}\r\n \r\n \r\n {/if}\r\n
\r\n","\r\n\r\n{icontitle}\r\n \r\n \r\n","\r\n\r\n{icontitle}</title\r\n>\r\n<path\r\n d=\"M1.5 0A1.5 1.5 0 0 0 0 1.5V13a1 1 0 0 0 1 1V1.5a.5.5 0 0 1 .5-.5H14a1 1 0 0 0-1-1H1.5z\"\r\n/>\r\n<path\r\n d=\"M3.5 2A1.5 1.5 0 0 0 2 3.5v11A1.5 1.5 0 0 0 3.5 16h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 16 9.586V3.5A1.5 1.5 0 0 0 14.5 2h-11zM3 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5V9h-4.5A1.5 1.5 0 0 0 9 10.5V15H3.5a.5.5 0 0 1-.5-.5v-11zm7 11.293V10.5a.5.5 0 0 1 .5-.5h4.293L10 14.793z\"\r\n/>\r\n</svg>\r\n","<script>\r\n import { createEventDispatcher } from \"svelte\";\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n const dispatch = createEventDispatcher();\r\n export let icontitle;\r\n function bubbleClick(e) {\r\n dispatch(\"click\", e);\r\n }\r\n</script>\r\n<svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n fill=\"currentColor\"\r\n on:click={bubbleClick}\r\n class=\"c-pointer hover me-1 bi bi-download\"\r\n viewBox=\"0 0 16 16\"\r\n>\r\n<title>{icontitle}</title\r\n >\r\n <path\r\n d=\"M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z\"\r\n />\r\n <path\r\n d=\"M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z\"\r\n />\r\n</svg>","<script>\r\n import { createEventDispatcher } from \"svelte\";\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n const dispatch = createEventDispatcher();\r\n export let icontitle; \r\n function bubbleClick(e) {\r\n dispatch(\"click\", e);\r\n }\r\n</script>\r\n\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" \r\non:click={bubbleClick}\r\nwidth=\"16\" height=\"16\" fill=\"currentColor\" class=\"c-pointer hover me-1 bi bi-patch-plus\" viewBox=\"0 0 16 16\">\r\n<title>{icontitle}\r\n \r\n \r\n","\r\n\r\n{icontitle}\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n

{$langTextStore && titleText}

\r\n
\r\n
\r\n {$langTextStore && contentText}\r\n
\r\n\r\n\r\n\r\n \r\n\r\n","\r\n\r\n
\r\n

{$langTextStore && titleText}

\r\n
\r\n
\r\n {$langTextStore && contentText}
\r\n \r\n
\r\n\r\n\r\n\r\n \r\n\r\n","\r\n\r\n
\r\n
\r\n

\r\n {@html $langTextStore.getText(\r\n \"general-text-create-or-edit-factory-settings\"\r\n )}\r\n

\r\n {@html $langTextStore.getText(\r\n \"general-text-create-or-edit-factory-settings-intro\"\r\n )}\r\n
\r\n
\r\n push(\"/createfactory/\")}\r\n >{$langTextStore.getText(\"general-labels-add-factory\")}\r\n \r\n
\r\n
\r\n \r\n
\r\n {#if !loading}\r\n
\r\n {#each sortedFactories as factory}\r\n
\r\n
\r\n {factory.name} ( )\r\n
\r\n \r\n {$langTextStore.getText(\r\n \"general-labels-date-last-edit\"\r\n )}\r\n
\r\n\r\n
\r\n {#each factory.factorySettings as factorySetting}\r\n \r\n
\r\n {factorySetting.name} (\r\n {$langTextStore.getText(\r\n \"general-labels-calculator-version\"\r\n )}\r\n {factorySetting.calculatorVersionNumber})\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {/each}\r\n
\r\n \r\n {/each}\r\n
\r\n \r\n {/if}\r\n\r\n \r\n\r\n
\r\n {$langTextStore.getText(\"general-footer-text\")}\r\n
\r\n \r\n\r\n\r\n\r\n","\r\n\r\n{#if sortElement == selectedSortElement}\r\n {#if selectedSortDirection == 1}\r\n \r\n {:else}\r\n \r\n {/if}\r\n{/if}\r\n","import { writable } from \"svelte/store\";\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable({\r\n variables: [],\r\n scenarios: [],\r\n scenarioVars: [],\r\n saveStatus: \"\",\r\n safeToNavigate: true,\r\n });\r\n\r\n return {\r\n subscribe,\r\n update,\r\n set,\r\n clear: () => {\r\n set(\r\n (n) =>\r\n new {\r\n variables: [],\r\n scenarios: [],\r\n scenarioVars: [],\r\n saveStatus: \"\",\r\n safeToNavigate: true,\r\n }()\r\n );\r\n },\r\n setSaveStatus: (saveStatus) => {\r\n update((n) => Object.assign(n, { saveStatus: saveStatus }));\r\n if (\r\n saveStatus != \"\" &&\r\n saveStatus != \"savedlocal\" &&\r\n saveStatus != \"saved\"\r\n ) {\r\n update((n) => Object.assign(n, { safeToNavigate: false }));\r\n } else {\r\n update((n) => Object.assign(n, { safeToNavigate: true }));\r\n }\r\n },\r\n };\r\n}\r\nexport const inputVariableStore = createMyStore();\r\n","\r\n\r\n{#if !(window.location.href.indexOf(\"factorysettings\") > 0) || $inputVariableStore.safeToNavigate}\r\n
\r\n {#if factorySettingId == null}\r\n
\r\n

\r\n {@html $langTextStore.getText(\"general-text-create-or-edit-products\")}\r\n

\r\n {@html $langTextStore.getText(\r\n \"general-text-create-or-edit-products-intro\"\r\n )}\r\n
\r\n {/if}\r\n
\r\n {$langTextStore.getText(\"general-labels-add-product\")}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {\r\n setSorting(\"name\");\r\n }}\r\n >\r\n {$langTextStore.getText(\"general-label-name\")}\r\n \r\n
\r\n {\r\n setSorting(\"brand\");\r\n }}\r\n >\r\n {$langTextStore.getText(\"general-label-brand\")}\r\n \r\n
\r\n {\r\n setSorting(\"style\");\r\n }}\r\n >\r\n {$langTextStore.getText(\"general-label-style\")}\r\n \r\n
\r\n {\r\n setSorting(\"factory\");\r\n }}\r\n >\r\n {$langTextStore.getText(\"general-label-factory\")}\r\n \r\n \r\n {\r\n setSorting(\"country\");\r\n }}\r\n >\r\n {$langTextStore.getText(\"general-label-country\")}\r\n \r\n \r\n {\r\n setSorting(\"changeDate\");\r\n }}\r\n >\r\n {$langTextStore.getText(\"general-label-date-created\")}\r\n \r\n \r\n {#if !loading}\r\n
\r\n {#each filteredProducts as product}\r\n \r\n
\r\n {product.name}\r\n
\r\n
\r\n {product.brand}\r\n
\r\n
\r\n {product.style}\r\n
\r\n
\r\n {product.factory}\r\n
\r\n
\r\n {product.country}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n {/each}\r\n {#if hasMoreProducts}\r\n \r\n {$langTextStore.getText(\"general-label-load-more\")}\r\n \r\n {/if}\r\n \r\n {/if}\r\n
\r\n \r\n \r\n
\r\n {$langTextStore.getText(\"general-footer-text\")}\r\n
\r\n
\r\n \r\n{:else}\r\n Please wait while saving\r\n{/if}\r\n","\r\n\r\n\r\n \r\n\r\n {}}\r\n/>\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {$langTextStore.getText(\"general-onlinemode-working-offline-mode\")}\r\n {@html modereturnText}\r\n \r\n {$langTextStore.getText(\"general-online\")}\r\n setMode()}\r\n id=\"switcher-1\"\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n  {$langTextStore.getText(\"general-label-view-tour\")}\r\n
\r\n

\r\n {loggedInEmail}\r\n
\r\n {$langTextStore.getText(\"general-label-logout\")}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {$langTextStore.getText(\"general-label-factory-settings\")}\r\n {$langTextStore.getText(\"general-label-product-calculations\")}\r\n
\r\n\r\n \r\n {#if !$factoryStore.isBusySync}\r\n {#if params.sectionName == \"factories\"}\r\n \r\n {:else}\r\n \r\n {/if}\r\n {/if}\r\n
\r\n
\r\n\r\n","\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n

\r\n {$langTextStore.getText(\"general-header-edit-basic-info\")}\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {$langTextStore.getText(\r\n \"general-label-cancel\"\r\n )}\r\n {$langTextStore.getText(\"general-label-save\")}\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { writable } from 'svelte/store';\r\nimport * as util from '../js/util.js';\r\n\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable({ subSections: new Array(), variables: new Array(), availableLangs: [] });\r\n\r\n return {\r\n subscribe, update,\r\n getCalculator: async (countryVersionId) => {\r\n const json = await util.fetchJson('api/Country/getcalculatorconfig?countryVersionId=' + countryVersionId);\r\n update(n => json)\r\n return json\r\n },\r\n };\r\n}\r\nexport const calculatorStore = createMyStore(); ","\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n {#if saving}\r\n

\r\n preparing calculator....\r\n

\r\n {:else if !showFactoryCreatedMessage}\r\n {#if virginUser}\r\n

\r\n {$langTextStore.getText(\r\n \"general-text-lets-get-started\"\r\n )}\r\n

\r\n {:else}\r\n

\r\n {$langTextStore.getText(\"general-text-lets-setup\")}\r\n

\r\n {/if}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {$langTextStore.getText(\r\n \"general-label-choose-a-country\"\r\n )}\r\n {#each $countryStore as country}\r\n \r\n {/each}\r\n \r\n
\r\n
\r\n {#if hasFactories}\r\n {$langTextStore.getText(\r\n \"general-label-cancel\"\r\n )}\r\n {/if}\r\n {$langTextStore.getText(\r\n \"general-label-next\"\r\n )}\r\n
\r\n {:else}\r\n

\r\n {$langTextStore.getText(\r\n \"general-text-congratulations\"\r\n )}\r\n {$langTextStore.getText(\r\n \"general-text-you-just-created-factory\"\r\n )}\r\n

\r\n

\r\n {$langTextStore.getText(\r\n \"general-text-you-can-keep-several-versions-lets-setup-first-one-now\"\r\n )}\r\n

\r\n

\r\n {$langTextStore.getText(\r\n \"general-label-get-started\"\r\n )}\r\n

\r\n {/if}\r\n
\r\n
\r\n
\r\n\r\n","import { writable, get } from 'svelte/store';\r\nimport * as util from '../js/util.js';\r\n\r\nvar defaultStyle = 'euro'\r\nvar n = 1.1;\r\nn = n.toLocaleString().substring(1, 2);\r\nif (n == '.') {\r\n defaultStyle = 'noneuro'\r\n}\r\n\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable({ style: defaultStyle, formatNumber: () => { } });\r\n var gettingTexts = false;\r\n var timeOut = null;\r\n var getKeys = [];\r\n return {\r\n subscribe, update,\r\n setEuroStyle: () => {\r\n numberFormatStore.update(n => Object.assign(n, { style: 'euro', formatNumber: n.formatNumber }))\r\n },\r\n setNonEuroStyle: () => {\r\n numberFormatStore.update(n => Object.assign(n, { style: 'noneuro', formatNumber: n.formatNumber }))\r\n },\r\n formatNumber: (amountIn,\r\n decimalCount = amountIn < 100 ? 6 : amountIn < 1000 ? 2 : 0,\r\n valueIf0 = '') => {\r\n let amount = amountIn\r\n var thousands = '.';\r\n var decimal = ',';\r\n if (!amount) return valueIf0;\r\n var store = get(numberFormatStore)\r\n if (store.style != 'euro') {\r\n thousands = \",\";\r\n decimal = '.'\r\n }\r\n // var formatter = new Intl.NumberFormat('en-IN')\r\n // if (store.style == 'euro')\r\n // formatter = new Intl.NumberFormat('nl-NL')\r\n //if(amount>1000000000) return formatNumber(amount/1000,0) + ' M'sync\r\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n // return formatter.format(amount)\r\n const negativeSign = amount < 0 ? \"-\" : \"\";\r\n let i = parseInt(\r\n (amount = Math.abs(Number(amount) || 0).toFixed(decimalCount))\r\n ).toString();\r\n let j = i.length > 3 ? i.length % 3 : 0;\r\n var extraSpace = decimalCount == 6 ? \"  \" : \"\"\r\n return (\r\n negativeSign +\r\n (j ? i.substr(0, j) + thousands : \"\") +\r\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands) +\r\n (decimalCount\r\n ? decimal +\r\n Math.abs(amount - i)\r\n .toFixed(decimalCount)\r\n .slice(2)\r\n : valueIf0)\r\n );\r\n }\r\n };\r\n}\r\nexport const numberFormatStore = createMyStore();\r\nnumberFormatStore.update(n => Object.assign(n, { formatNumber: numberFormatStore.formatNumber }))","\r\n\r\n%\r\n{#if readonly}\r\n \r\n{:else}\r\n {\r\n bubble(\"keyup\");\r\n }}\r\n on:keydown={() => {\r\n bubble(\"keydown\");\r\n }}\r\n on:change={() => {\r\n bubble(\"change\");\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n on:change={setValue(valueinternal)}\r\n bind:value={valueinternal}\r\n {readonly}\r\n class:alert={error}\r\n class:readonly\r\n />\r\n{/if}\r\n","\r\n\r\n{#if !alternateCurrencyId || alternateCurrencyId == 0 || alternateCurrencyId == mainCurrencyId || $factoryStore.currentCalculator.inputCurrency != \"alternate\"}\r\n {@html getCurrency(mainCurrencyId)}\r\n {#if readonly}\r\n \r\n {:else}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:keydown={() => {\r\n bubbleDebounced(\"keydown\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n bubble(\"change\");\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n step=\".000001\"\r\n bind:value\r\n {readonly}\r\n class:readonly\r\n />\r\n {/if}\r\n\r\n {@html getCurrency(alternateCurrencyId)}{$numberFormatStore.formatNumber(valueAlternate)}\r\n{/if}\r\n\r\n{#if alternateCurrencyId && alternateCurrencyId > 0 && $factoryStore.currencies.length > 0 && alternateCurrencyId != mainCurrencyId && $factoryStore.currentCalculator.inputCurrency == \"alternate\"}\r\n {@html getCurrency(alternateCurrencyId)}\r\n {#if readonly}\r\n \r\n {:else}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:keydown={() => {\r\n bubbleDebounced(\"keydown\");\r\n }}\r\n on:change={() => {\r\n bubble(\"change\");\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n step=\".000001\"\r\n bind:value={valueAlternateInternal}\r\n />\r\n {/if}\r\n {@html getCurrency(mainCurrencyId)}{$numberFormatStore.formatNumber(value)}\r\n{/if}\r\n\r\n\r\n\r\n","import { writable } from 'svelte/store';\r\n\r\nfunction createMyStore() {\r\n const { subscribe, set, update } = writable({});\r\n\r\n return {\r\n subscribe, update, set,\r\n clear: () => {\r\n set(n => new {})\r\n }\r\n };\r\n}\r\nexport const outputVariableStore = createMyStore();","\r\n\r\n{#if variable.dataType == \"int\" || variable.dataType == \"double\" || variable.dataType == null}\r\n {#if isEdit(variable)}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-\" +\r\n subSection.subSectionNameKey +\r\n variable.nameKey +\r\n Math.random()}\r\n bind:value={$inputVariableStore[variable.nameKey]}\r\n readonly={readonly || !isEdit(variable)}\r\n min={getRealVar(variable).minValue}\r\n max={getRealVar(variable).maxValue}\r\n />\r\n {:else}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-readonly-\" +\r\n subSection.subSectionNameKey +\r\n variable.nameKey +\r\n Math.random()}\r\n value={$numberFormatStore.formatNumber(\r\n $outputVariableStore[variable.nameKey],0\r\n )}\r\n readonly={readonly || !isEdit(variable)}\r\n class=\"readonly\"\r\n />\r\n {/if}\r\n{:else if variable.dataType == \"percent\"}\r\n {#if isEdit(variable)}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n id={\"inputfield-input-\" + subSection.subSectionNameKey + variable.nameKey}\r\n bind:value={$inputVariableStore[variable.nameKey]}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {:else}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n id={\"inputfield-input-\" + subSection.subSectionNameKey + variable.nameKey}\r\n value={$outputVariableStore[variable.nameKey]}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {/if}\r\n{:else if variable.dataType == \"currency\"}\r\n {#if isEdit(variable)}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n mainCurrencyId={$factoryStore.currentCalculator.currencyId}\r\n alternateCurrencyId={$factoryStore.currentCalculator.alternateCurrencyId}\r\n alternateCurrencyRate={$inputVariableStore.alternateCurrencyRate}\r\n id={\"inputfield-input-\" +\r\n subSection.subSectionNameKey.replace(\" \", \"\") +\r\n variable.nameKey.replace(\" \", \"\")}\r\n bind:value={$inputVariableStore[variable.nameKey]}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {:else}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n mainCurrencyId={$factoryStore.currentCalculator.currencyId}\r\n alternateCurrencyId={$factoryStore.currentCalculator.alternateCurrencyId}\r\n alternateCurrencyRate={$inputVariableStore.alternateCurrencyRate}\r\n id={\"inputfield-input-\" + subSection.subSectionNameKey + variable.nameKey}\r\n value={$outputVariableStore[variable.nameKey]}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {/if}\r\n{:else if variable.dataType == \"text\"}\r\n {#if isEdit(variable)}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-\" + subSection.subSectionNameKey + variable.nameKey}\r\n bind:value={$inputVariableStore[variable.nameKey]}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {:else}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-\" + subSection.subSectionNameKey + variable.nameKey}\r\n value={$numberFormatStore.formatNumber(\r\n $outputVariableStore[variable.nameKey]\r\n )}\r\n readonly={readonly || !isEdit(variable)}\r\n class=\"readonly\"\r\n />\r\n {/if}\r\n{:else if variable.dataType == \"date\"}\r\n {#if isEdit(variable)}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-\" + subSection.subSectionNameKey + variable.nameKey}\r\n bind:value={$inputVariableStore[variable.nameKey]}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {:else}\r\n {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:change={() => {\r\n checkAndBubble();\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-\" + subSection.subSectionNameKey + variable.nameKey}\r\n value={$numberFormatStore.formatNumber(\r\n $outputVariableStore[variable.nameKey]\r\n )}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {/if}\r\n{:else}\r\n NOT USED YET! For Text fields\r\n \r\n{/if}\r\n","\r\n\r\n {\r\n mousemove();\r\n }}\r\n on:mouseout={() => {\r\n mouseout();\r\n }}\r\n on:click={() => {\r\n showHelp = !showHelp;\r\n }}\r\n title={window.location.href.indexOf(\"test=true\") > -1\r\n ? variable.nameKey\r\n : $langTextStore.getText(crntHelpTextKeyBase + \"-help-title\")}\r\n class=\"ellipsis helpbox-cursor\"\r\n >\r\n \r\n \r\n \r\n {@html helpTitle}\r\n{#if showHelp}\r\n {\r\n mousemove();\r\n }}\r\n on:mouseout={() => {\r\n mouseout();\r\n }}\r\n >\r\n
\r\n
\r\n {helpShort}\r\n {#if showSuperHelpLink}\r\n {\r\n factoryStore.showSuperHelp(true, helpTitle, helpLong);\r\n }}\r\n class=\"mt-0\"\r\n style=\"text-decoration:underline;cursor:pointer\"\r\n onmousedown=\"return false\"\r\n >\r\n {$langTextStore.getText(\"general-show-more\")}\r\n
\r\n {/if}\r\n
\r\n \r\n{/if}\r\n","\r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n {$langTextStore.getText(\r\n \"general-wage-distribution-totals-must-add\"\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {#each levels as year, i}\r\n \r\n \r\n\r\n {#each grades as grade, i}\r\n \r\n {/each}\r\n \r\n {/each}\r\n \r\n \r\n {#each grades as grade, i}\r\n \r\n {/each}\r\n \r\n \r\n
\r\n {#each grades as grade, i}\r\n {$langTextStore.getText(\r\n \"general-wage-distribution-grade-\" + grade\r\n )}\r\n {/each}\r\n
\r\n \r\n \r\n {#if $factoryStore.currentCalculator.variables && $factoryStore.currentCalculator.variables.find((v) => v.varNameKey == grade + year) != null}\r\n {\r\n setVarAndBubble(grade + year);\r\n }}\r\n on:change={() => {\r\n setVarAndBubble(grade + year);\r\n }}\r\n bind:value={$inputVariableStore[\r\n grade + year\r\n ]}\r\n />\r\n {:else}\r\n missing variable {grade + year}\r\n {/if}\r\n \r\n
Totals\r\n {#if totals[i] != 100}\r\n {totals[i]}%\r\n {:else}\r\n {totals[i]} %\r\n {/if}\r\n
\r\n
\r\n
\r\n
\r\n dispatch(\"close\", {})}\r\n class=\"btn btn-secondary width-unset ms-2 mt-3 mb-0\"\r\n >\r\n {$langTextStore.getText(\"general-label-close\")}\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n","\r\n","\r\n\r\n
\r\n
    \r\n {\r\n currentSubSectionNameKey = \"basic-settings\";\r\n }}\r\n >\r\n {$langTextStore.getText(\"factory-settings-basic-settings\")}\r\n \r\n {#if $factoryStore.currentCalculator.subSections}\r\n {#each subSections as subSection}\r\n \r\n\r\n {\r\n currentSubSectionNameKey = subSection.subSectionNameKey;\r\n }}\r\n >\r\n {$langTextStore.getText(subSection.subSectionNameKey)}\r\n \r\n {/each}\r\n {/if}\r\n
\r\n
\r\n","\r\n\r\n{icontitle}</title\r\n >\r\n <path\r\n d=\"M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z\"\r\n />\r\n <path\r\n d=\"M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z\"\r\n />\r\n</svg>","<script>\r\n import { factoryStore } from \"./../store/factories.js\";\r\n import { fade } from \"svelte/transition\";\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n import { countryStore } from \"../store/countries.js\";\r\n import { calculatorStore } from \"../store/calculators.js\";\r\n import { inputVariableStore } from \"../store/inputVariables.js\";\r\n import { createEventDispatcher, tick } from \"svelte\";\r\n import { getContext } from \"svelte\";\r\n import InputVar from \"../SharedComponents/InputVar.svelte\";\r\n import InputMoney from \"../SharedComponents/InputMoney.svelte\";\r\n import TitleWithHelp from \"../SharedComponents/TitleWithHelp.svelte\";\r\n import { outputVariableStore } from \"../store/outputVariables.js\";\r\n import * as util from \"../js/util.js\";\r\n import { each } from \"svelte/internal\";\r\n import Cloud from \"../Vectors/Cloud.svelte\";\r\n import Download from \"../Vectors/Download.svelte\";\r\n\r\n const { snackbar } = getContext(\"app\");\r\n const dispatch = createEventDispatcher();\r\n export let isFactory;\r\n isFactory = isFactory;\r\n export let currentSubSectionNameKey;\r\n export let readonly = false;\r\n $: subSection =\r\n $calculatorStore.subSections &&\r\n currentSubSectionNameKey &&\r\n $calculatorStore.subSections.find(\r\n (ss) => ss.subSectionNameKey == currentSubSectionNameKey\r\n );\r\n\r\n function saveToCloud() {\r\n dispatch(\"saveToCloud\", null);\r\n }\r\n $: selectInitialField(currentSubSectionNameKey);\r\n let justForcedMinTargetWage = false;\r\n var minwageTimer = null;\r\n // function checkTargetWageAndBubble() {\r\n // if (false) {\r\n // var wageVar = $calculatorStore.variables.find(\r\n // (v) => v.varNameKey == \"Wage\"\r\n // );\r\n // if (\r\n // $inputVariableStore.scenarioConfiguration.scenarioVarValues[\r\n // \"target-wage\"\r\n // ][\"Wage\"] < wageVar.minValue\r\n // ) {\r\n // $inputVariableStore.scenarioConfiguration.scenarioVarValues[\r\n // \"target-wage\"\r\n // ][\"Wage\"] = wageVar.minValue;\r\n // justForcedMinTargetWage = true;\r\n // clearTimeout(minwageTimer);\r\n // minwageTimer = window.setTimeout(() => {\r\n // justForcedMinTargetWage = false;\r\n // }, 3000);\r\n // }\r\n // }\r\n // bubbleChange();\r\n // }\r\n async function selectInitialField(p) {\r\n await tick();\r\n var x = document.getElementsByTagName(\"input\");\r\n if (x.length > 0) {\r\n x[0].focus();\r\n }\r\n }\r\n\r\n function getCurrency(theCurrencyId) {\r\n var currencyNameObj = $factoryStore.currencies.find(\r\n (c) => c.id == theCurrencyId\r\n );\r\n if (currencyNameObj != null) {\r\n return currencyNameObj.nameKey;\r\n }\r\n return \"\";\r\n }\r\n\r\n async function changeFactorySetting(event) {\r\n factoryStore.setFactorySettingToCurrentProduct(\r\n event.detail.factorySettingId\r\n );\r\n }\r\n var loadingCurrency = false;\r\n async function setCurrency() {\r\n loadingCurrency = true;\r\n await tick();\r\n await tick();\r\n await tick();\r\n window.setTimeout(async () => {\r\n var mainCurrencyName = $factoryStore.currencies.find(\r\n (c) => c.id == $factoryStore.currentCalculator.currencyId\r\n ).nameKey;\r\n var alternateCurrencyName = $factoryStore.currencies.find(\r\n (c) => c.id == $factoryStore.currentCalculator.alternateCurrencyId\r\n ).nameKey;\r\n\r\n try {\r\n const res = await fetch(\r\n \"https://v6.exchangerate-api.com/v6/648985a865d16d229438af26/pair/\" +\r\n alternateCurrencyName +\r\n \"/\" +\r\n mainCurrencyName\r\n );\r\n const json = await res.json();\r\n var rate = json.conversion_rate;\r\n inputVariableStore.update((n) =>\r\n Object.assign(n, { alternateCurrencyRate: rate })\r\n );\r\n\r\n $factoryStore.currentCalculator.alternateCurrencyRate = rate;\r\n loadingCurrency = false;\r\n } catch (s) {\r\n loadingCurrency = false;\r\n snackbar(\"error\", \"failed to get exchange rate\");\r\n }\r\n factoryStore.update((n) => n);\r\n inputVariableStore.update((n) => n);\r\n factoryStore.update((n) => n);\r\n\r\n bubbleChange();\r\n }, 400);\r\n }\r\n\r\n async function updateStuff() {\r\n var y = factorySettingsSubSection;\r\n var checked = event.currentTarget.checked;\r\n factorySettingsSubSection.markAsComplete = checked;\r\n dispatch(\"change\", null);\r\n }\r\n async function selectLastField(p) {\r\n await tick();\r\n var x = document.getElementsByTagName(\"input\");\r\n if (x.length > 0) {\r\n x[x.length - 1].focus();\r\n }\r\n }\r\n\r\n var bubbletimeout;\r\n function bubbleChange(e) {\r\n try {\r\n window.clearTimeout(bubbletimeout);\r\n bubbletimeout = window.setTimeout(() => {\r\n dispatch(\"change\", null);\r\n }, 500);\r\n } catch (s) {}\r\n }\r\n\r\n async function checkNextOrPrevious(e) {\r\n if (e.key == \"Tab\" || e.code == \"Tab\") {\r\n var direction = e.shiftKey ? \"prev\" : \"next\";\r\n let varName = e.target.getAttribute(\"varname\");\r\n if (!subSection) {\r\n //alert(\"not tabbing on custom tabs yet\");\r\n return;\r\n }\r\n if (direction == \"next\") {\r\n var lastVar = subSection.variables[subSection.variables.length - 1];\r\n if (lastVar.nameKey == varName) {\r\n dispatch(\"next\", null);\r\n window.setTimeout(() => {\r\n selectInitialField();\r\n }, 100);\r\n }\r\n } else {\r\n var firstVar = subSection.variables[0];\r\n if (firstVar.nameKey == varName) {\r\n dispatch(\"previous\", null);\r\n window.setTimeout(() => {\r\n selectLastField();\r\n }, 100);\r\n }\r\n }\r\n }\r\n }\r\n\r\n $: factorySettingsSubSection =\r\n subSection &&\r\n $factoryStore.currentCalculator &&\r\n $factoryStore.currentCalculator.subSections &&\r\n $factoryStore.currentCalculator.subSections.find(\r\n (ss) => ss.subSectionNameKey == subSection.subSectionNameKey\r\n );\r\n\r\n checkWageVar($calculatorStore);\r\n function checkWageVar() {\r\n if ($calculatorStore.variables.length > 0) {\r\n var x = $calculatorStore.variables.find((v) => v.varNameKey == \"Wage\");\r\n if (x == null) {\r\n alert(\"error! missing Wage var\");\r\n }\r\n }\r\n }\r\n\r\n $: fillFactorySettingName($factoryStore.currentCalculator.factorySettingId);\r\n let factorySettingName = \"\";\r\n async function fillFactorySettingName(settingId) {\r\n if (!settingId) return;\r\n factorySettingName = await factoryStore.getFactorySettingName(\r\n $factoryStore.currentCalculator.factorySettingId\r\n );\r\n }\r\n\r\n $: currentCalculator = $factoryStore.currentCalculator;\r\n\r\n $: $inputVariableStore.scenarioConfiguration &&\r\n $inputVariableStore.scenarioConfiguration.scenarioVarValues[\r\n \"target-wage\"\r\n ] &&\r\n setTargetWageInBaseCalculation(\r\n $inputVariableStore.scenarioConfiguration.scenarioVarValues[\r\n \"target-wage\"\r\n ][\"Wage\"]\r\n );\r\n\r\n function setTargetWageInBaseCalculation(targetWage) {\r\n $inputVariableStore[\"TargetWage\"] = targetWage;\r\n }\r\n\r\n $: setRelevantCurrencies($factoryStore.currentCalculator.currencyId);\r\n\r\n let relevantCurrencies = [];\r\n function setRelevantCurrencies(crntId) {\r\n relevantCurrencies = $factoryStore.currencies.filter((c) => {\r\n return c.id == 1 || c.id == 2 || c.id == 3 || c.id == crntId;\r\n });\r\n }\r\n\r\n function sentenceCase(txt) {\r\n return util.sentenceCase(txt, false);\r\n }\r\n</script>\r\n\r\n<div class=\"xh-100 position-relative\">\r\n {#if subSection}\r\n <h2 class=\"highlight\" style=\"text-transform:none\">\r\n {sentenceCase($langTextStore.getText(subSection.subSectionNameKey))}\r\n </h2>\r\n <div class=\"w-100 mb-3 mt-2 mb-lg-0\"> </div>\r\n {#each subSection.variables as variable}\r\n {#if variable.nameKey == \"WageDistribution\"}\r\n <button\r\n class=\"btn btn-primary\"\r\n on:click={() => dispatch(\"showWageDistribution\", null)}\r\n >\r\n {$langTextStore.getText(\"general-wage-distribution\")}</button\r\n >\r\n {:else if variable.nameKey.toLowerCase() == \"productname\"}\r\n <label for={\"inputfield-input-basic-settings-product-name\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-product-name\",\r\n }}\r\n />\r\n </label>\r\n <input\r\n type=\"text\"\r\n {readonly}\r\n class:readonly\r\n disabled={readonly}\r\n on:change={bubbleChange}\r\n on:keydown={checkNextOrPrevious}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n id={\"inputfield-input-basic-settings-product-name\"}\r\n bind:value={$factoryStore.currentCalculator.name}\r\n />\r\n {:else if variable.nameKey.toLowerCase() == \"brand\"}\r\n <label for={\"inputfield-input-basic-settings-brand-name\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-brand-name\",\r\n }}\r\n />\r\n </label>\r\n <input\r\n type=\"text\"\r\n {readonly}\r\n class:readonly\r\n disabled={readonly}\r\n on:change={bubbleChange}\r\n on:keydown={checkNextOrPrevious}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n id={\"inputfield-input-basic-settings-brand-name\"}\r\n bind:value={$factoryStore.currentCalculator.brand}\r\n />\r\n {:else if variable.nameKey.toLowerCase() == \"style\"}\r\n <label for={\"inputfield-input-basic-settings-style-name\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-style-name\",\r\n }}\r\n />\r\n </label>\r\n <input\r\n type=\"text\"\r\n {readonly}\r\n class:readonly\r\n disabled={readonly}\r\n on:change={bubbleChange}\r\n on:keydown={checkNextOrPrevious}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n id={\"inputfield-input-basic-settings-style-name\"}\r\n bind:value={$factoryStore.currentCalculator.style}\r\n />\r\n {:else if variable.nameKey.toLowerCase() == \"wage\"}\r\n <label for={\"inputfield-input-base-wage\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-wage-base-wage\",\r\n }}\r\n />\r\n </label>\r\n {#if variable.readOnly}\r\n <input\r\n type=\"number\"\r\n on:change={bubbleChange}\r\n on:keydown={checkNextOrPrevious}\r\n id={\"inputfield-input-base-wage\"}\r\n readonly={variable.readOnly}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n class:readonly={variable.readOnly}\r\n bind:value={$outputVariableStore[\"Wage\"]}\r\n />{:else}\r\n <InputVar\r\n {readonly}\r\n on:keydown={checkNextOrPrevious}\r\n on:keyup={bubbleChange}\r\n on:change={bubbleChange}\r\n bind:subSection\r\n bind:variable\r\n />\r\n {/if}\r\n {#if $inputVariableStore.scenarioConfiguration && $inputVariableStore.scenarioConfiguration.scenarios}\r\n <!-- {#each $inputVariableStore.scenarioConfiguration.scenarios as scenario} -->\r\n <label for={\"inputfield-input-scenario-wage\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"factory-settings-scenario-target-wage\",\r\n }}\r\n />\r\n </label>\r\n <span id=\"fixmoney\">\r\n <InputMoney\r\n on:change={bubbleChange}\r\n min={$calculatorStore.variables.find(\r\n (v) => v.varNameKey == \"Wage\"\r\n ).minValue}\r\n max={$calculatorStore.variables.find(\r\n (v) => v.varNameKey == \"Wage\"\r\n ).maxValue}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n mainCurrencyId={$factoryStore.currentCalculator.currencyId}\r\n alternateCurrencyId={$factoryStore.currentCalculator\r\n .alternateCurrencyId}\r\n alternateCurrencyRate={$inputVariableStore.alternateCurrencyRate}\r\n on:change={() => bubbleChange()}\r\n bind:value={$inputVariableStore.scenarioConfiguration\r\n .scenarioVarValues[\"target-wage\"][\"Wage\"]}\r\n />\r\n </span>\r\n {#if $calculatorStore.variables.find((v) => v.varNameKey == \"Wage\").minValue > 0}\r\n <span class=\"input-help\" class:alert={justForcedMinTargetWage}\r\n >Minimum: {$calculatorStore.variables.find(\r\n (v) => v.varNameKey == \"Wage\"\r\n ).minValue}\r\n </span>\r\n {/if}\r\n {/if}\r\n {:else}\r\n <div in:fade={{ duration: 800 }}>\r\n <div class=\"row g-0 text-small mb-3 mb-lg-0\">\r\n <label\r\n for={\"inputfield-input-\" +\r\n subSection.subSectionNameKey +\r\n variable.nameKey}\r\n >\r\n <TitleWithHelp {variable} />\r\n </label>\r\n <InputVar\r\n {readonly}\r\n on:keydown={checkNextOrPrevious}\r\n on:keyup={bubbleChange}\r\n on:change={bubbleChange}\r\n bind:subSection\r\n bind:variable\r\n />\r\n </div>\r\n </div>\r\n {/if}\r\n {/each}\r\n {:else if currentSubSectionNameKey == \"basic-settings\"}\r\n <h2 class=\"highlight\">\r\n {$langTextStore.getText(\"factory-settings-basic-settings-header\")}\r\n </h2>\r\n <div class=\"w-100 mb-3 mt-2 mb-lg-0\"> </div>\r\n {#if !isFactory}\r\n <!-- svelte-ignore a11y-label-has-associated-control -->\r\n <label>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-factory-setting-based-on\",\r\n }}\r\n />\r\n </label>\r\n <a\r\n on:click={saveToCloud}\r\n href=\"#/calculator/factorysettings/{$factoryStore.currentCalculator\r\n .factorySettingId}?fromproduct={$factoryStore.currentCalculator.uuid}\"\r\n >\r\n {#await factoryStore.getFactoryAndVersionName(currentCalculator.factorySettingId) then name}\r\n {name}\r\n {/await}</a\r\n >\r\n <br />\r\n\r\n <br />\r\n {/if}\r\n <label for=\"country\">{$langTextStore.getText(\"country\")}</label>\r\n <input\r\n type=\"text\"\r\n id=\"country\"\r\n class=\"readonly\"\r\n readonly\r\n value={currentCalculator.country}\r\n />\r\n\r\n {#if isFactory}\r\n <label for={\"inputfield-input-basic-settings-name\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-name\",\r\n }}\r\n />\r\n </label>\r\n <input\r\n type=\"text\"\r\n {readonly}\r\n class:readonly\r\n disabled={readonly}\r\n on:keydown={checkNextOrPrevious}\r\n on:keyup={bubbleChange}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n id={\"inputfield-input-basic-settings-name\"}\r\n bind:value={$factoryStore.currentFactory.name}\r\n />\r\n <label for={\"inputfield-input-basic-settings-version-name\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-version-name\",\r\n }}\r\n />\r\n </label>\r\n {#if !readonly}\r\n <input\r\n type=\"text\"\r\n {readonly}\r\n class:readonly\r\n disabled={readonly}\r\n on:change={bubbleChange}\r\n on:keydown={checkNextOrPrevious}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n id={\"inputfield-input-basic-settings-version-name\"}\r\n bind:value={$factoryStore.currentCalculator.name}\r\n />\r\n {:else}\r\n <input\r\n type=\"text\"\r\n {readonly}\r\n class:readonly\r\n disabled={readonly}\r\n on:change={bubbleChange}\r\n on:keydown={checkNextOrPrevious}\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n id={\"inputfield-input-basic-settings-version-name\"}\r\n value={factorySettingName}\r\n />\r\n {/if}\r\n {/if}\r\n\r\n {#if !readonly}\r\n <label for=\"basecurrency\">\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"factory-settings-basic-settings-base-currency-name\",\r\n }}\r\n />\r\n </label>\r\n <input\r\n id=\"basecurrency\"\r\n type=\"text\"\r\n readonly=\"readonly\"\r\n disabled=\"true\"\r\n value={getCurrency($factoryStore.currentCalculator.currencyId)}\r\n />\r\n\r\n <label for={\"inputfield-input-basic-settings-alternate-currency-name\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-alternate-currency-name\",\r\n }}\r\n />\r\n </label>\r\n <select\r\n on:keydown={checkNextOrPrevious}\r\n on:change={async () => {\r\n bubbleChange();\r\n setCurrency();\r\n }}\r\n on:blur={() => {}}\r\n class:readonly\r\n disabled={readonly}\r\n bind:value={$factoryStore.currentCalculator.alternateCurrencyId}\r\n >\r\n {#each relevantCurrencies as currency}\r\n <option value={currency.id}>{currency.nameKey}</option>\r\n {/each}\r\n </select>\r\n\r\n <label for={\"inputfield-input-basic-settings-alternate-currency-rate\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-alternate-currency-rate\",\r\n }}\r\n />\r\n </label>\r\n <div style=\"display:flex\">\r\n <input\r\n type=\"number\"\r\n on:focus={(e) => {\r\n e.target.select();\r\n }}\r\n on:change={bubbleChange}\r\n on:keydown={checkNextOrPrevious}\r\n id={\"inputfield-input-basic-settings-alternate-currency-rate\"}\r\n bind:value={$inputVariableStore.alternateCurrencyRate}\r\n class:readonly\r\n disabled={readonly || loadingCurrency}\r\n />\r\n <div style=\"margin-top:5px;margin-left:5px\">\r\n <Download on:click={setCurrency} />\r\n </div>\r\n </div>\r\n <label for={\"inputfield-input-basic-settings-input-currency\"}>\r\n <TitleWithHelp\r\n variable={{\r\n nameKey: \"basic-settings-input-currency\",\r\n }}\r\n />\r\n </label>\r\n <select\r\n on:keydown={checkNextOrPrevious}\r\n on:change={async () => {\r\n bubbleChange();\r\n setCurrency();\r\n }}\r\n on:blur={() => {}}\r\n class:readonly\r\n disabled={readonly}\r\n bind:value={$factoryStore.currentCalculator.inputCurrency}\r\n >\r\n <option value={\"base\"}\r\n >{$langTextStore.getText(\"general-label-base-currency\")}</option\r\n >\r\n <option value={\"alternate\"}\r\n >{$langTextStore.getText(\"general-label-alternate-currency\")}</option\r\n >\r\n </select>\r\n {/if}\r\n {/if}\r\n</div>\r\n{#if factorySettingsSubSection}\r\n <p class=\"mt-1\">\r\n <label\r\n ><input\r\n type=\"checkbox\"\r\n checked={factorySettingsSubSection.markAsComplete}\r\n {readonly}\r\n class:readonly\r\n disabled={readonly}\r\n on:click={() => {\r\n updateStuff();\r\n snackbar(\r\n \"info\",\r\n langTextStore.getText(\"general-label-section-marked-complete-saved\")\r\n );\r\n }}\r\n />\r\n {$langTextStore.getText(\"general-label-section-marked-complete\")}</label\r\n >\r\n </p>\r\n{/if}\r\n\r\n<style>\r\n label {\r\n display: block;\r\n width: 100%;\r\n }\r\n .readonly {\r\n background: #ccc;\r\n }\r\n\r\n :global(#fixmoney > .prelabel) {\r\n margin-top: 5px;\r\n }\r\n</style>\r\n","<script>\r\n import { fade } from \"svelte/transition\";\r\n import { calculatorStore } from \"../store/calculators.js\";\r\n import { inputVariableStore } from \"../store/inputVariables.js\";\r\n import { outputVariableStore } from \"../store/outputVariables.js\";\r\n import { createEventDispatcher, getContext } from \"svelte\";\r\n import FadeIn from \"../SharedComponents/FadeIn.svelte\";\r\n import TitleWithHelp from \"../SharedComponents/TitleWithHelp.svelte\";\r\n import * as util from \"../js/util.js\";\r\n\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n import { factoryStore } from \"../store/factories.js\";\r\n import { numberFormatStore } from \"../store/numberFormat.js\";\r\n export let isFactory;\r\n export let activeSection = \"\";\r\n const { snackbar } = getContext(\"app\");\r\n const dispatch = createEventDispatcher();\r\n function formatNumberFromOutputStore(varname) {\r\n var theVal = $outputVariableStore[varname];\r\n return $numberFormatStore.formatNumber(theVal, $numberFormatStore.style);\r\n }\r\n\r\n function getLowestValue(subSection) {\r\n if (!subSection || !subSection.subSectionNameKey.length > 0) return 0;\r\n var lowestValue = 1000000000000;\r\n for (var subSectionVarIndex in subSection.variables) {\r\n var subSectionVar = subSection.variables[subSectionVarIndex];\r\n var baseVal =\r\n $outputVariableStore.scenarioConfiguration.calculatedScenarios[\"base\"][\r\n subSectionVar.nameKey\r\n ];\r\n if (subSectionVar.dataType == \"percent\") baseVal = baseVal * 100;\r\n if (subSectionVar.dataType == \"currency\")\r\n baseVal = baseVal / $inputVariableStore.alternateCurrencyRate;\r\n\r\n if (baseVal < lowestValue) lowestValue = baseVal;\r\n var targetVal =\r\n $outputVariableStore.scenarioConfiguration.calculatedScenarios[\r\n \"target-wage\"\r\n ][subSectionVar.nameKey];\r\n if (subSectionVar.dataType == \"percent\") targetVal = targetVal * 100;\r\n if (subSectionVar.dataType == \"currency\")\r\n targetVal = targetVal / $inputVariableStore.alternateCurrencyRate;\r\n if (targetVal < lowestValue) lowestValue = targetVal;\r\n }\r\n return lowestValue;\r\n }\r\n function formatNumberFromScenario(\r\n scenario,\r\n varname,\r\n thestore,\r\n whatisthis,\r\n whatisthis2,\r\n whatisthis3,\r\n style,\r\n subSection\r\n ) {\r\n var theScenario =\r\n $outputVariableStore.scenarioConfiguration.calculatedScenarios[scenario];\r\n var decimalCount = null;\r\n if (subSection != undefined) {\r\n var lowestValue = getLowestValue(subSection);\r\n decimalCount = lowestValue < 5 ? 4 : lowestValue < 1000 ? 2 : 0;\r\n }\r\n var theVal = theScenario[varname];\r\n var theVar = $calculatorStore.variables.find(\r\n (v) => v.varNameKey == varname\r\n );\r\n if (theVar.dataType == \"percent\") {\r\n return (\r\n \"% \" + $numberFormatStore.formatNumber(theVal * 100, decimalCount)\r\n );\r\n }\r\n if (theVar.dataType == \"currency\") {\r\n if (\r\n $factoryStore.currentCalculator.alternateCurrencyId &&\r\n $factoryStore.currentCalculator.alternateCurrencyId > 0 &&\r\n $inputVariableStore.alternateCurrencyRate > 0\r\n ) {\r\n var currencyNameObj = $factoryStore.currencies.find(\r\n (c) => c.id == $factoryStore.currentCalculator.alternateCurrencyId\r\n );\r\n var currencySign = \"\";\r\n if (currencyNameObj != null) {\r\n currencySign = currencyNameObj.htmlCode;\r\n // '<span class=\"prelabel prelabel-summary ' +\r\n // currencyNameObj.nameKey.toLowerCase() +\r\n // '\"></span>';\r\n }\r\n return (\r\n currencySign +\r\n \" \" +\r\n $numberFormatStore.formatNumber(\r\n theVal / $inputVariableStore.alternateCurrencyRate,\r\n decimalCount\r\n )\r\n );\r\n }\r\n var currencySign = \"\";\r\n var currencyNameObj = $factoryStore.currencies.find(\r\n (c) => c.id == $factoryStore.currentCalculator.currencyId\r\n );\r\n if (currencyNameObj != null) {\r\n currencySign = currencyNameObj.htmlCode;\r\n\r\n // '<span class=\"prelabel prelabel-summary ' +\r\n // currencyNameObj.nameKey.toLowerCase() +\r\n // '\"></span>';\r\n }\r\n return currencySign + \" \" + $numberFormatStore.formatNumber(theVal, 0);\r\n }\r\n return $numberFormatStore.formatNumber(theVal, 0);\r\n }\r\n\r\n function saveAsFactorySetting(scenarioName) {\r\n var fullTempName =\r\n $factoryStore.currentCalculator.name + \" - \" + scenarioName;\r\n var settingsCopy = factoryStore.makeInMemoryCopyOfFactorySetting(\r\n $factoryStore.currentCalculator\r\n );\r\n settingsCopy.name = fullTempName;\r\n for (var theVar in $inputVariableStore.scenarioConfiguration\r\n .scenarioVarValues[scenarioName]) {\r\n settingsCopy.variables.find((v) => v.varNameKey == theVar).value =\r\n $inputVariableStore.scenarioConfiguration.scenarioVarValues[\r\n scenarioName\r\n ][theVar];\r\n }\r\n factoryStore.saveFactoryOrProductSettings(settingsCopy);\r\n snackbar(\r\n \"info\",\r\n \"saved scenario as factory settings you can find it in the dashboard\"\r\n );\r\n }\r\n export let hideHeader = false;\r\n $: relevantSubSections = $calculatorStore.subSections.filter(\r\n (ss) => ss.isSummarySection && ss.isFactorySection == isFactory\r\n );\r\n</script>\r\n\r\n<div class=\"pl-3 summary\">\r\n {#if !hideHeader}\r\n <h2 class=\"highlight\">\r\n {$langTextStore.getText(\"general-header-summary\")}\r\n </h2>\r\n {/if}\r\n <div class=\"w-100\">\r\n <div class=\"row g-0 text-small mb-3 mb-lg-0\">\r\n <div class=\"col-12 col-lg-6\" />\r\n <div\r\n class=\"col-4 {activeSection == 'scenarios'\r\n ? 'col-lg-2'\r\n : 'col-lg-3'} text-right text-gray-6\"\r\n >\r\n {#if $inputVariableStore.scenarioConfiguration}\r\n {#if $inputVariableStore.scenarioConfiguration.scenarios.length > 0}\r\n {$langTextStore.getText(\"legal-min-wage\")}\r\n {/if}\r\n {/if}\r\n </div>\r\n {#if $inputVariableStore.scenarioConfiguration}\r\n <div\r\n class=\"col-4 {activeSection == 'scenarios'\r\n ? 'col-lg-2'\r\n : 'col-lg-3'} text-right text-gray-6\"\r\n >\r\n {$langTextStore.getText(\"target-wage\")}\r\n </div>\r\n {#if activeSection == \"scenarios\"}\r\n <div class=\"col-4 col-lg-2 text-right text-gray-6\">\r\n {$langTextStore.getText(\"alternate\")}\r\n </div>\r\n {/if}\r\n {/if}\r\n </div>\r\n </div>\r\n\r\n {#each relevantSubSections as subSection}\r\n <div in:fade={{ duration: 800 }} class=\"w-100\">\r\n <h3 class=\"mb-1\">\r\n {util.sentenceCase(\r\n $langTextStore.getText(\r\n \"general-section-\" + subSection.subSectionNameKey.replace(\" \", \"-\")\r\n ),\r\n false\r\n )}\r\n </h3>\r\n {#each subSection.variables as variable}\r\n <div class=\"row g-0 text-small mb-3 mb-lg-0\">\r\n <div class=\"col-12 col-lg-6 \">\r\n <TitleWithHelp {variable} />\r\n </div>\r\n {#if $outputVariableStore.scenarioConfiguration && $outputVariableStore.scenarioConfiguration.calculatedScenarios}\r\n <div\r\n class=\"font_mono col-4 {activeSection == 'scenarios'\r\n ? 'col-lg-2'\r\n : 'col-lg-3'} text-right\"\r\n >\r\n <FadeIn\r\n timeout={200}\r\n name={$outputVariableStore[variable.nameKey]}\r\n display={formatNumberFromScenario(\r\n \"base\",\r\n variable.nameKey,\r\n $outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios,\r\n $outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[\"base\"][variable.nameKey],\r\n $inputVariableStore.alternateCurrencyRate,\r\n $inputVariableStore.alternateCurrencyName,\r\n $numberFormatStore.style,\r\n subSection\r\n )}\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"font_mono col-4 {activeSection == 'scenarios'\r\n ? 'col-lg-2'\r\n : 'col-lg-3'} text-right\"\r\n >\r\n <FadeIn\r\n timeout={200}\r\n name={$outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[\"target-wage\"][variable.nameKey]}\r\n display={formatNumberFromScenario(\r\n \"target-wage\",\r\n variable.nameKey,\r\n $outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios,\r\n $outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[\"target-wage\"][variable.nameKey],\r\n $inputVariableStore.alternateCurrencyRate,\r\n $inputVariableStore.alternateCurrencyName,\r\n $numberFormatStore.style,\r\n subSection\r\n )}\r\n />\r\n </div>\r\n {#if activeSection == \"scenarios\"}\r\n <div class=\" font_mono col-4 col-lg-2 text-right\">\r\n <FadeIn\r\n timeout={200}\r\n name={$outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[\"alternate\"][variable.nameKey]}\r\n display={formatNumberFromScenario(\r\n \"alternate\",\r\n variable.nameKey,\r\n $outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios,\r\n $outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[\"alternate\"][variable.nameKey],\r\n $inputVariableStore.alternateCurrencyRate,\r\n $inputVariableStore.alternateCurrencyName,\r\n $numberFormatStore.style,\r\n subSection\r\n )}\r\n />\r\n </div>\r\n {/if}\r\n {/if}\r\n </div>\r\n {/each}\r\n </div>\r\n {/each}\r\n <!-- {#if activeSection == \"scenarios\"}\r\n <div in:fade={{ duration: 800 }} class=\"w-100\">\r\n <div class=\"row g-0 text-small mb-3 mb-lg-0\">\r\n <div class=\"col-12 col-lg-6 ellipsis\" title=\"\"> </div>\r\n <div class=\"col-4 col-lg-2 text-right\"> </div>\r\n <div\r\n class=\"col-4 col-lg-2 text-right c-pointer line\"\r\n on:click={() => {\r\n saveAsFactorySetting(\"target-wage\");\r\n }}\r\n >\r\n {$langTextStore.getText(\r\n \"general-label-save-as-factorysetting\"\r\n )}\r\n </div>\r\n <div\r\n class=\"col-4 col-lg-2 text-right c-pointer line\"\r\n on:click={() => {\r\n saveAsFactorySetting(\"alternate\");\r\n }}\r\n >\r\n {$langTextStore.getText(\r\n \"general-label-save-as-factorysetting\"\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n {/if} -->\r\n <br /><br />\r\n <!-- {#if $numberFormatStore.style == \"euro\"}\r\n <span\r\n style=\"cursor:pointer\"\r\n on:click={() => {\r\n numberFormatStore.setNonEuroStyle();\r\n }}\r\n >{$langTextStore.getText(\"general-click-to-change\")}: #<span\r\n style=\"font-size:2em\">.</span\r\n >###<span style=\"font-size:2em\">,</span>##</span\r\n >\r\n {:else}\r\n <span\r\n style=\"cursor:pointer\"\r\n on:click={() => {\r\n numberFormatStore.setEuroStyle();\r\n }}\r\n >{$langTextStore.getText(\"general-click-to-change\")}: #<span\r\n style=\"font-size:2em\">,</span\r\n >###<span style=\"font-size:2em\">.</span>##</span\r\n >\r\n {/if} -->\r\n</div>\r\n","<script>\r\n import { fade } from \"svelte/transition\";\r\n import { factoryStore } from \"../store/factories.js\";\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n\r\n export let crntHelpTextKeyBase;\r\n\r\n $: helpTitle = $langTextStore.getText(crntHelpTextKeyBase + \"-help-title\");\r\n $: helpLong = $langTextStore.getText(crntHelpTextKeyBase + \"-help-long\");\r\n</script>\r\n\r\n<div class=\"p-5 pl-3 text\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n on:click={() => factoryStore.showSuperHelp(false)}\r\n onmousedown=\"return false\"\r\n title=\"close\"\r\n width=\"16\"\r\n height=\"16\"\r\n fill=\"currentColor\"\r\n class=\"bi bi-x-square-fill float-end btn-icon\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm3.354 4.646L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708z\"\r\n />\r\n </svg>\r\n <div style=\"max-width:500px;\">\r\n <h2 class=\"highlight text-white\">{$factoryStore.superHelpTitle}</h2>\r\n <br />\r\n {@html $factoryStore.superHelpLongText}\r\n </div>\r\n</div>\r\n\r\n<style>\r\n div {\r\n color: #eee;\r\n }\r\n</style>\r\n","<script>\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n import LangSelector from \"./LangSelector.svelte\";\r\n import { getContext } from \"svelte\";\r\n import { push } from \"svelte-spa-router\";\r\n import IconChevronRight from \"../Vectors/chevronright.svelte\";\r\n\r\n const { close } = getContext(\"modal\");\r\n\r\n export let langs = [];\r\n export let showChoice = false;\r\n export let warningText = \"\";\r\n\r\n function setLang(lang) {\r\n langTextStore.setLang(lang);\r\n showChoice = false;\r\n }\r\n function showChoices() {\r\n showChoice = true;\r\n }\r\n</script>\r\n\r\n{#if warningText.length > 0}\r\n <h2 class=\"highlight\">{$langTextStore.langName} {warningText}</h2>\r\n <p>{$langTextStore.getText(\"general-text-choose-another-lang\")}</p>\r\n{/if}\r\n<LangSelector\r\n extraClass=\"lang-switcher-modal\"\r\n {langs}\r\n showChoice={true}\r\n on:langChosen={close}\r\n/>\r\n<p class=\"mt-4\">\r\n <span\r\n on:click={() => {\r\n push(\"#/dashboard/factories\");\r\n close();\r\n }}\r\n class=\"d-block mb-1 choice c-pointer underline link\"\r\n >\r\n {$langTextStore.getText(\"general-text-keep-language-return-dashboard\")}\r\n <IconChevronRight /></span\r\n >\r\n</p>\r\n","<script>\r\n import { createEventDispatcher } from \"svelte\";\r\n import { factoryStore } from \"../store/factories.js\";\r\n import { inputVariableStore } from \"../store/inputVariables.js\";\r\n import InputPercent from \"./InputPercent.svelte\";\r\n import InputMoney from \"./InputMoney.svelte\";\r\n import { outputVariableStore } from \"../store/outputVariables.js\";\r\n const dispatch = createEventDispatcher();\r\n export let variable;\r\n export let value;\r\n export let readonly;\r\n let timer;\r\n function bubbleDebounced(type) {\r\n clearTimeout(timer);\r\n timer = setTimeout(async () => {\r\n bubble(type);\r\n }, 50);\r\n }\r\n\r\n function bubble(type) {\r\n try {\r\n dispatch(type);\r\n } catch (s) {}\r\n }\r\n function isEdit(variable) {\r\n var theRealVar = $factoryStore.currentCalculator.variables.find(\r\n (v) => v.varNameKey == variable.nameKey\r\n );\r\n if (!theRealVar) return true;\r\n if (theRealVar.isFunction || theRealVar.readOnly) return false;\r\n return true;\r\n }\r\n</script>\r\n\r\n{#if variable}\r\n {#if variable.dataType == \"int\" || variable.dataType == \"double\" || variable.dataType == null || variable.varNameKey.toLowerCase() == \"wage\"}\r\n <input\r\n type=\"number\"\r\n on:keyup={() => {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:keydown={() => {\r\n bubbleDebounced(\"keydown\");\r\n }}\r\n on:change={() => {\r\n bubble(\"change\");\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-scenario-\" + variable.nameKey}\r\n bind:value\r\n class:readonly={readonly || !isEdit(variable)}\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {:else if variable && variable.dataType == \"percent\"}\r\n <InputPercent\r\n on:keyup={() => {\r\n bubble(\"keyup\");\r\n }}\r\n on:keydown={() => {\r\n bubble(\"keydown\");\r\n }}\r\n on:change={() => {\r\n bubble(\"change\");\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n id={\"inputfield-input-scenario\" + variable.nameKey}\r\n bind:value\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {:else if variable.dataType == \"currency\"}\r\n <InputMoney\r\n on:keyup={() => {\r\n bubble(\"keyup\");\r\n }}\r\n on:keydown={() => {\r\n bubble(\"keydown\");\r\n }}\r\n on:change={() => {\r\n bubble(\"change\");\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n alternateCurrencyId={$factoryStore.currentCalculator\r\n .alternateCurrencyId}\r\n alternateCurrencyRate={$inputVariableStore.alternateCurrencyRate}\r\n mainCurrencyId={$factoryStore.currentCalculator.currencyId}\r\n id={\"inputfield-input-scenario\" + variable.nameKey}\r\n bind:value\r\n readonly={readonly || !isEdit(variable)}\r\n />\r\n {:else}\r\n NOT USED YET! For Text fields\r\n <input\r\n type=\"text\"\r\n on:keyup={() => {\r\n bubbleDebounced(\"keyup\");\r\n }}\r\n on:keydown={() => {\r\n bubbleDebounced(\"keydown\");\r\n }}\r\n on:change={() => {\r\n bubble(\"change\");\r\n }}\r\n on:focusout={() => {\r\n bubble(\"focusout\");\r\n }}\r\n on:focusin={() => {\r\n bubble(\"focusin\");\r\n }}\r\n varname={variable.nameKey}\r\n id={\"inputfield-input-scenario\" + variable.nameKey}\r\n bind:value\r\n class:readonly={readonly || !isEdit(variable)}\r\n disabled={readonly || !isEdit(variable)}\r\n />\r\n {/if}\r\n{/if}\r\n","<script>\r\n import { langTextStore } from \"../store/langtexts\";\r\n\r\n import { inputVariableStore } from \"../store/inputVariables.js\";\r\n import { outputVariableStore } from \"../store/outputVariables.js\";\r\n import IconDelete from \"../Vectors/delete.svelte\";\r\n import IconPlus from \"../Vectors/pluscirkel.svelte\";\r\n import { factoryStore } from \"../store/factories\";\r\n import { createEventDispatcher, tick } from \"svelte\";\r\n\r\n import InputVarScenario from \"../SharedComponents/InputVarScenario.svelte\";\r\n\r\n let showScenarioTool = false;\r\n let showAddTool = false;\r\n const dispatch = createEventDispatcher();\r\n\r\n function addScenarioVar(scenarioVarName) {\r\n $inputVariableStore.scenarioConfiguration.scenarioVars = [\r\n ...$inputVariableStore.scenarioConfiguration.scenarioVars,\r\n scenarioVarName,\r\n ];\r\n window.setTimeout(() => bubbleChange(), 100);\r\n }\r\n function removeScenarioVar(scenarioVarName) {\r\n $inputVariableStore.scenarioConfiguration.scenarioVars =\r\n $inputVariableStore.scenarioConfiguration.scenarioVars.filter(\r\n (s) => {\r\n return s != scenarioVarName;\r\n }\r\n );\r\n\r\n $inputVariableStore.scenarioConfiguration.scenarios.forEach((s) => {\r\n delete $outputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[s][scenarioVarName];\r\n\r\n delete $inputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[s][scenarioVarName];\r\n });\r\n bubbleChange();\r\n }\r\n\r\n let selectedScenarioVar = \"\";\r\n function addSelectedScenarioVar() {\r\n if (selectedScenarioVar == \"\") {\r\n snackbar(\r\n \"error\",\r\n $langTextStore.getText(\"general-label-error-choose-a-var\")\r\n );\r\n return;\r\n }\r\n addScenarioVar(selectedScenarioVar);\r\n selectedScenarioVar = \"\";\r\n showAddTool = false;\r\n bubbleChange();\r\n }\r\n\r\n function bubbleChange() {\r\n try {\r\n dispatch(\"change\", null);\r\n } catch (e) {}\r\n }\r\n\r\n var prevScenarioList = [\r\n ...$inputVariableStore.scenarioConfiguration.scenarios,\r\n ];\r\n\r\n let timer;\r\n\r\n function showHelp() {\r\n showScenarioHelp = true;\r\n }\r\n var cnt = 0;\r\n\r\n function compareVariable(a, b) {\r\n return a.name > b.name ? 1 : -1;\r\n }\r\n export let showScenarioHelp = false;\r\n let sort = true;\r\n $: addableVariables = $factoryStore.currentCalculator.variables.filter(\r\n (v) => {\r\n return (\r\n !v.readOnly &&\r\n !v.isFunction &&\r\n !(v.varNameKey.toLowerCase().indexOf(\"grade\") == 0) &&\r\n !$inputVariableStore.scenarioConfiguration.scenarioVars.some(\r\n (sv) => sv == v.varNameKey\r\n )\r\n );\r\n }\r\n );\r\n $: filteredTranslatedAddableVariables = addableVariables\r\n .filter((v) => !v.isWageDistributionVar && v.includeInScenarioManager)\r\n .map((v) => {\r\n return {\r\n varNameKey: v.varNameKey,\r\n name: $langTextStore\r\n .getText(\"variable-\" + v.varNameKey + \"-help-title\")\r\n .trim(),\r\n };\r\n });\r\n $: getTexts(addableVariables);\r\n function getTexts(addableVariables) {\r\n for (var v in addableVariables) {\r\n var variable = addableVariables[v];\r\n $langTextStore.getText(\r\n \"variable-\" + variable.varNameKey + \"-help-title\"\r\n );\r\n }\r\n }\r\n</script>\r\n\r\n<div class=\"col-5 section vh-90\">\r\n <div id=\"scenario-variables\" class=\"section__container bg-gray-8 h-100 pane\">\r\n <h2 class=\"highlight\">\r\n {$langTextStore.getText(\"general-header-edit-your-scenarios\")}\r\n </h2>\r\n\r\n <div class=\"w-100 mb-3 mt-2 mb-lg-0\"> </div>\r\n <!-- <h3 class=\"font-primary font-weight-normal\">\r\n {$langTextStore.getText(\"general-header-variables\")}\r\n </h3> -->\r\n\r\n <div class=\"row g-2 mt-1 pb-0 variable\">\r\n <h4 class=\"col-4 mb-0 mt-0 text-gray-6 \">\r\n {$langTextStore.getText(\"legal-min-wage\")}\r\n </h4>\r\n <h4 class=\"col-4 mb-0 mt-0 text-gray-6 \">\r\n {$langTextStore.getText(\"target-wage\")}\r\n </h4>\r\n <h4 class=\"col-4 mb-0 mt-0 text-gray-6 \">\r\n {$langTextStore.getText(\"alternate\")}\r\n </h4>\r\n </div>\r\n <hr class=\"mb-3 mt-3\" />\r\n {#each $inputVariableStore.scenarioConfiguration.scenarioVars as scenarioVar}\r\n <div class=\"row g-2 mt-0 pb-0 variable\">\r\n <div class=\"col-8 text-gray-6 mb-2 text-small\">\r\n {$langTextStore.getText(\r\n \"variable-\" + scenarioVar + \"-help-title\"\r\n )}\r\n </div>\r\n <div\r\n class=\"col-4 text-right c-pointer\"\r\n on:click={removeScenarioVar(scenarioVar)}\r\n >\r\n <IconDelete\r\n icontitle={$langTextStore.getText(\r\n \"general-label-delete-variable\"\r\n )}\r\n />\r\n </div>\r\n <div class=\"col-4 mt-0\">\r\n <InputVarScenario\r\n variable={$factoryStore.currentCalculator.variables.find(\r\n (v) => v.varNameKey == scenarioVar\r\n )}\r\n bind:value={$inputVariableStore.scenarioConfiguration\r\n .calculatedScenarios[\"base\"][scenarioVar]}\r\n readonly={true}\r\n />\r\n </div>\r\n {#each $inputVariableStore.scenarioConfiguration.scenarios as scenario}\r\n <div class=\"col-4 mt-0\">\r\n <InputVarScenario\r\n readonly={false}\r\n on:keyup={bubbleChange}\r\n on:change={bubbleChange}\r\n variable={$factoryStore.currentCalculator.variables.find(\r\n (v) => v.varNameKey == scenarioVar\r\n )}\r\n bind:value={$inputVariableStore\r\n .scenarioConfiguration.scenarioVarValues[\r\n scenario\r\n ][scenarioVar]}\r\n />\r\n </div>\r\n {/each}\r\n </div>\r\n {/each}\r\n <hr class=\"mb-3 mt-3\" />\r\n <div class=\"row g-1 mt-4\">\r\n {#if showAddTool == true}\r\n <hr />\r\n <select\r\n class=\"col-12 col-md-7 col-lg-8\"\r\n bind:value={selectedScenarioVar}\r\n >\r\n <option value=\"\"\r\n >{$langTextStore.getText(\r\n \"general-label-choose\"\r\n )}</option\r\n >\r\n {#each filteredTranslatedAddableVariables.sort(compareVariable) as variable}\r\n <option value={variable.varNameKey}\r\n >{variable.name}</option\r\n >\r\n {/each}\r\n </select>\r\n <div class=\"col-12 offset-md-1 col-md-4 col-lg-3\">\r\n <span class=\"btn\" on:click={addSelectedScenarioVar}>\r\n {$langTextStore.getText(\"general-label-add\")}\r\n </span>\r\n </div>\r\n {:else}\r\n <div\r\n class=\"text-gray-6 c-pointer \"\r\n on:click={() => {\r\n showAddTool = true;\r\n }}\r\n >\r\n <span class=\"text-primary me-3 ms-3\"\r\n ><IconPlus\r\n icontitle={$langTextStore.getText(\r\n \"general-label-add-variable\"\r\n )}\r\n /></span\r\n ><span class=\"d-inline-block\"\r\n >{$langTextStore.getText(\r\n \"general-label-add-variable\"\r\n )}</span\r\n >\r\n </div>\r\n {/if}\r\n </div>\r\n </div>\r\n</div>\r\n","<script>\r\n import { fade, fly } from \"svelte/transition\";\r\n import { cubicOut, cubicIn, sineOut } from \"svelte/easing\";\r\n import { factoryStore } from \"../store/factories.js\";\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n import { getContext } from \"svelte\";\r\n import TitleWithHelp from \"../SharedComponents/TitleWithHelp.svelte\";\r\n const { snackbar } = getContext(\"app\");\r\n const { close } = getContext(\"modal\");\r\n\r\n $factoryStore.currentCalculator.sheetNums = [];\r\n let isPdfOrExcel = \"pdfwith\";\r\n\r\n var sheets = [];\r\n function getSheetNames() {\r\n var sheetList = \"Sheet 1,Sheet 2,Sheet 3\";\r\n if (\r\n $factoryStore.currentCalculator.excelSheetNames &&\r\n $factoryStore.currentCalculator.excelSheetNames.length > 0\r\n ) {\r\n sheetList = $factoryStore.currentCalculator.excelSheetNames;\r\n }\r\n var sheetNames = sheetList.split(\",\");\r\n for (var sheetNum in sheetNames) {\r\n sheets.push({\r\n id: parseInt(sheetNum) + 1,\r\n name: sheetNames[sheetNum],\r\n cleanName: sheetNames[sheetNum].replace(\"pdfonly \", \"\"),\r\n // .replace(\"notargetwage\", \"\")\r\n // .replace(\"targetwage\", \"\"),\r\n });\r\n }\r\n }\r\n $: includeTargetWage = isPdfOrExcel == \"pdfwith\" ? true : false;\r\n\r\n $: filteredSheets = sheets.filter(\r\n (s) =>\r\n (includeTargetWage && !s.name.includes(\"notargetwage\")) ||\r\n (!includeTargetWage && !s.name.includes(\" targetwage\"))\r\n );\r\n getSheetNames();\r\n let loading = false;\r\n $langTextStore.getText(\"general-label-generating\");\r\n</script>\r\n\r\n{#if loading}\r\n <h1>{$langTextStore.getText(\"general-label-generating\")}</h1>\r\n{:else}\r\n <h1>{$langTextStore.getText(\"general-label-choose-pdf-or-excel\")}</h1>\r\n <input\r\n type=\"radio\"\r\n value=\"pdfwithout\"\r\n id=\"pdfwithout\"\r\n on:change={() => {\r\n $factoryStore.currentCalculator.sheetNum = null;\r\n }}\r\n bind:group={isPdfOrExcel}\r\n /><label for=\"pdfwithout\"\r\n ><TitleWithHelp\r\n variable={{\r\n nameKey: \"pdf_without_target_wage\",\r\n }}\r\n /></label\r\n ><br />\r\n <input\r\n type=\"radio\"\r\n value=\"pdfwith\"\r\n id=\"pdfwith\"\r\n on:change={() => {\r\n $factoryStore.currentCalculator.sheetNum = null;\r\n }}\r\n bind:group={isPdfOrExcel}\r\n /><label for=\"pdfwith\"\r\n ><TitleWithHelp\r\n variable={{\r\n nameKey: \"pdf_with_target_wage\",\r\n }}\r\n /></label\r\n ><br />\r\n <input\r\n type=\"radio\"\r\n value=\"excel\"\r\n id=\"excel\"\r\n bind:group={isPdfOrExcel}\r\n /><label for=\"excel\"\r\n ><TitleWithHelp\r\n variable={{\r\n nameKey: \"excel\",\r\n }}\r\n /></label\r\n >\r\n {#if isPdfOrExcel == \"excel\"}\r\n <br /><button\r\n class=\"btn btn-primary mt-4 mb-4 px-4 w-auto float-start\"\r\n on:click={async () => {\r\n loading = true;\r\n await factoryStore.generateExcel(\r\n $factoryStore.currentCalculator\r\n );\r\n close();\r\n loading = false;\r\n }}\r\n >{$langTextStore.getText(\"general-label-create-report\")}\r\n </button>\r\n {/if}\r\n\r\n <div id=\"pdf_fields\" class:vis-hidden={isPdfOrExcel == \"excel\"}>\r\n <h2>{$langTextStore.getText(\"general-label-choose-sheets\")}</h2>\r\n <!-- <select bind:value={$factoryStore.currentCalculator.sheetNum}>\r\n <option id=\"empty\" value={null}\r\n >{$langTextStore.getText(\"choose\")}</option\r\n > -->\r\n {#each filteredSheets as sheet}\r\n <input\r\n type=\"radio\"\r\n bind:group={$factoryStore.currentCalculator.sheetNum}\r\n id=\"sheet{sheet.id}\"\r\n value={sheet.id}\r\n /><label for=\"sheet{sheet.id}\"\r\n ><TitleWithHelp\r\n variable={{\r\n nameKey: sheet.cleanName.replace(\" \", \"_\"),\r\n }}\r\n /></label\r\n ><br />\r\n {/each}\r\n <!-- </select> -->\r\n <button\r\n class=\"btn btn-primary mt-4 mb-4 px-4 w-auto float-start\"\r\n on:click={async () => {\r\n if ($factoryStore.currentCalculator.sheetNum == null) {\r\n snackbar(\r\n \"info\",\r\n $langTextStore.getText(\"general-warning-choose-report\")\r\n );\r\n return false;\r\n }\r\n $factoryStore.currentCalculator.sheetNums = [\r\n $factoryStore.currentCalculator.sheetNum,\r\n ];\r\n loading = true;\r\n await factoryStore.generatePdf($factoryStore.currentCalculator);\r\n close();\r\n loading = false;\r\n }}\r\n >Create Report\r\n </button>\r\n </div>\r\n{/if}\r\n\r\n<style>\r\n .vis-hidden {\r\n visibility: hidden;\r\n }\r\n label {\r\n display: inline;\r\n }\r\n</style>\r\n","import canBeZero from './canBeZero.js';\n\nexport default function makeAccessor (acc) {\n\tif (!canBeZero(acc)) return null;\n\tif (Array.isArray(acc)) {\n\t\treturn d => acc.map(k => {\n\t\t\treturn typeof k !== 'function' ? d[k] : k(d);\n\t\t});\n\t} else if (typeof acc !== 'function') { // eslint-disable-line no-else-return\n\t\treturn d => d[acc];\n\t}\n\treturn acc;\n}\n","/* --------------------------------------------\n *\n * Return a truthy value if is zero\n *\n * --------------------------------------------\n */\nexport default function canBeZero (val) {\n\tif (val === 0) {\n\t\treturn true;\n\t}\n\treturn val;\n}\n","/* --------------------------------------------\n *\n * Remove undefined fields from an object\n *\n * --------------------------------------------\n */\n\n// From Object.fromEntries polyfill https://github.com/tc39/proposal-object-from-entries/blob/master/polyfill.js#L1\nfunction fromEntries(iter) {\n\tconst obj = {};\n\n\tfor (const pair of iter) {\n\t\tif (Object(pair) !== pair) {\n\t\t\tthrow new TypeError(\"iterable for fromEntries should yield objects\");\n\t\t}\n\n\t\t// Consistency with Map: contract is that entry has \"0\" and \"1\" keys, not\n\t\t// that it is an array or iterable.\n\n\t\tconst { \"0\": key, \"1\": val } = pair;\n\n\t\tObject.defineProperty(obj, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\twritable: true,\n\t\t\tvalue: val,\n\t\t});\n\t}\n\n\treturn obj;\n}\n\nexport default function filterObject (obj, comparisonObj = {}) {\n\treturn fromEntries(Object.entries(obj).filter(([key, value]) => {\n\t\treturn value !== undefined\n\t\t\t&& comparisonObj[key] === undefined;\n\t}));\n}\n","/* --------------------------------------------\n *\n * Calculate the extents of desired fields\n * For example, a fields object like this:\n * `{'x': d => d.x, 'y': d => d.y}`\n * For data like this:\n * [{ x: 0, y: -10 }, { x: 10, y: 0 }, { x: 5, y: 10 }]\n * Returns an object like:\n * `{ x: [0, 10], y: [-10, 10] }`\n *\n * --------------------------------------------\n */\nexport default function calcExtents (data, fields) {\n\tif (!Array.isArray(data)) {\n\t\tthrow new TypeError('The first argument of calcExtents() must be an array.');\n\t}\n\n\tif (\n\t\tArray.isArray(fields)\n\t\t|| fields === undefined\n\t\t|| fields === null\n\t) {\n\t\tthrow new TypeError('The second argument of calcExtents() must be an '\n\t\t+ 'object with field names as keys as accessor functions as values.');\n\t}\n\n\tconst extents = {};\n\n\tconst keys = Object.keys(fields);\n\tconst kl = keys.length;\n\tlet i;\n\tlet j;\n\tlet k;\n\tlet s;\n\tlet min;\n\tlet max;\n\tlet acc;\n\tlet val;\n\n\tconst dl = data.length;\n\tfor (i = 0; i < kl; i += 1) {\n\t\ts = keys[i];\n\t\tacc = fields[s];\n\t\tmin = null;\n\t\tmax = null;\n\t\tfor (j = 0; j < dl; j += 1) {\n\t\t\tval = acc(data[j]);\n\t\t\tif (Array.isArray(val)) {\n\t\t\t\tconst vl = val.length;\n\t\t\t\tfor (k = 0; k < vl; k += 1) {\n\t\t\t\t\tif (val[k] !== undefined && val[k] !== null && Number.isNaN(val[k]) === false) {\n\t\t\t\t\t\tif (min === null || val[k] < min) {\n\t\t\t\t\t\t\tmin = val[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (max === null || val[k] > max) {\n\t\t\t\t\t\t\tmax = val[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (val !== undefined && val !== null && Number.isNaN(val) === false) {\n\t\t\t\tif (min === null || val < min) {\n\t\t\t\t\tmin = val;\n\t\t\t\t}\n\t\t\t\tif (max === null || val > max) {\n\t\t\t\t\tmax = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\textents[s] = [min, max];\n\t}\n\n\treturn extents;\n}\n","/* --------------------------------------------\n * If we have a domain from settings, fill in\n * any null values with ones from our measured extents\n * otherwise, return the measured extent\n */\nexport default function partialDomain (domain = [], directive) {\n\tif (Array.isArray(directive) === true) {\n\t\treturn directive.map((d, i) => {\n\t\t\tif (d === null) {\n\t\t\t\treturn domain[i];\n\t\t\t}\n\t\t\treturn d;\n\t\t});\n\t}\n\treturn domain;\n}\n","import partialDomain from '../utils/partialDomain.js';\n\nexport default\tfunction calcDomain (s) {\n\treturn function domainCalc ([$extents, $domain]) {\n\t\treturn $extents ? partialDomain($extents[s], $domain) : $domain;\n\t};\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(value);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import { scaleLinear, scaleSqrt } from 'd3-scale';\n\nexport default {\n\tx: scaleLinear,\n\ty: scaleLinear,\n\tz: scaleLinear,\n\tr: scaleSqrt\n};\n","export default function identity (d) {\n\treturn d;\n}\n","import findScaleType from './findScaleType.js';\nimport identity from '../utils/identity.js';\n\nfunction log(sign) {\n\treturn x => Math.log(sign * x);\n}\n\nfunction exp(sign) {\n\treturn x => sign * Math.exp(x);\n}\n\nfunction symlog(c) {\n\treturn x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n}\n\nfunction symexp(c) {\n\treturn x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n}\n\nfunction pow(exponent) {\n\treturn function powFn(x) {\n\t\treturn x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\t};\n}\n\nexport default function getPadFunctions(scale) {\n\tconst scaleType = findScaleType(scale);\n\n\tif (scaleType === 'log') {\n\t\tconst sign = Math.sign(scale.domain()[0]);\n\t\treturn { lift: log(sign), ground: exp(sign), scaleType };\n\t}\n\tif (scaleType === 'pow') {\n\t\tconst exponent = 1;\n\t\treturn { lift: pow(exponent), ground: pow(1 / exponent), scaleType };\n\t}\n\tif (scaleType === 'sqrt') {\n\t\tconst exponent = 0.5;\n\t\treturn { lift: pow(exponent), ground: pow(1 / exponent), scaleType };\n\t}\n\tif (scaleType === 'symlog') {\n\t\tconst constant = 1;\n\t\treturn { lift: symlog(constant), ground: symexp(constant), scaleType };\n\t}\n\n\treturn { lift: identity, ground: identity, scaleType };\n}\n","/* --------------------------------------------\n *\n * Returns a modified scale domain by in/decreasing\n * the min/max by taking the desired difference\n * in pixels and converting it to units of data.\n * Returns an array that you can set as the new domain.\n * Padding contributed by @veltman.\n * See here for discussion of transforms: https://github.com/d3/d3-scale/issues/150\n *\n * --------------------------------------------\n */\nimport getPadFunctions from '../helpers/getPadFunctions.js';\n\nexport default function padScale (scale, padding) {\n\tif (typeof scale.range !== 'function') {\n\t\tthrow new Error('Scale method `range` must be a function');\n\t}\n\tif (typeof scale.domain !== 'function') {\n\t\tthrow new Error('Scale method `domain` must be a function');\n\t}\n\tif (!Array.isArray(padding)) {\n\t\treturn scale.domain();\n\t}\n\n\tif (scale.domain().length !== 2) {\n\t\tconsole.warn('[LayerCake] The scale is expected to have a domain of length 2 to use padding. Are you sure you want to use padding? Your scale\\'s domain is:', scale.domain());\n\t}\n\tif (scale.range().length !== 2) {\n\t\tconsole.warn('[LayerCake] The scale is expected to have a range of length 2 to use padding. Are you sure you want to use padding? Your scale\\'s range is:', scale.range());\n\t}\n\n\tconst { lift, ground } = getPadFunctions(scale);\n\n\tconst d0 = scale.domain()[0];\n\n\tconst isTime = Object.prototype.toString.call(d0) === '[object Date]';\n\n\tconst [d1, d2] = scale.domain().map(d => {\n\t\treturn isTime ? lift(d.getTime()) : lift(d);\n\t});\n\tconst [r1, r2] = scale.range();\n\tconst paddingLeft = padding[0] || 0;\n\tconst paddingRight = padding[1] || 0;\n\n\tconst step = (d2 - d1) / (Math.abs(r2 - r1) - paddingLeft - paddingRight); // Math.abs() to properly handle reversed scales\n\n\treturn [d1 - paddingLeft * step, paddingRight * step + d2].map(d => {\n\t\treturn isTime ? ground(new Date(d)) : ground(d);\n\t});\n}\n","/* --------------------------------------------\n *\n * Determine whether a scale is a log, symlog, power or other\n * This is not meant to be exhaustive of all the different types of\n * scales in d3-scale and focuses on continuous scales\n *\n * --------------------------------------------\n */\nexport default function findScaleType(scale) {\n\tif (scale.constant) {\n\t\treturn 'symlog';\n\t}\n\tif (scale.base) {\n\t\treturn 'log';\n\t}\n\tif (scale.exponent) {\n\t\tif (scale.exponent() === 0.5) {\n\t\t\treturn 'sqrt';\n\t\t}\n\t\treturn 'pow';\n\t}\n\treturn 'other';\n}\n","import defaultScales from '../settings/defaultScales.js';\nimport partialDomain from '../utils/partialDomain.js';\nimport padScale from '../utils/padScale.js';\nimport getDefaultRange from '../settings/getDefaultRange.js';\n\nexport default function createScale (s) {\n\treturn function scaleCreator ([$scale, $extents, $domain, $padding, $nice, $reverse, $width, $height, $range, $percentScale]) {\n\t\tif ($extents === null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst defaultRange = getDefaultRange(s, $width, $height, $reverse, $range, $percentScale);\n\n\t\tconst scale = $scale === defaultScales[s] ? $scale() : $scale.copy();\n\n\t\t/* --------------------------------------------\n\t\t * On creation, `$domain` will already have any nulls filled in\n\t\t * But if we set it via the context it might not, so rerun it through partialDomain\n\t\t */\n\t\tscale\n\t\t\t.domain(partialDomain($extents[s], $domain))\n\t\t\t.range(defaultRange);\n\n\t\tif ($padding) {\n\t\t\tscale.domain(padScale(scale, $padding));\n\t\t}\n\n\t\tif ($nice === true) {\n\t\t\tif (typeof scale.nice === 'function') {\n\t\t\t\tscale.nice();\n\t\t\t} else {\n\t\t\t\tconsole.error(`[Layer Cake] You set \\`${s}Nice: true\\` but the ${s}Scale does not have a \\`.nice\\` method. Ignoring...`);\n\t\t\t}\n\t\t}\n\n\t\treturn scale;\n\t};\n}\n","/* eslint-disable no-nested-ternary */\nfunction calcBaseRange(s, width, height, reverse, percentRange) {\n\tlet min;\n\tlet max;\n\tif (percentRange === true) {\n\t\tmin = 0;\n\t\tmax = 100;\n\t} else {\n\t\tmin = s === 'r' ? 1 : 0;\n\t\tmax = s === 'y' ? height : s === 'r' ? 25 : width;\n\t}\n\treturn reverse === true ? [max, min] : [min, max];\n}\n\nexport default function getDefaultRange(s, width, height, reverse, range, percentRange) {\n\treturn !range\n\t\t? calcBaseRange(s, width, height, reverse, percentRange)\n\t\t: typeof range === 'function'\n\t\t\t? range({ width, height })\n\t\t\t: range;\n}\n","export default function createGetter ([$acc, $scale]) {\n\treturn d => {\n\t\tconst val = $acc(d);\n\t\tif (Array.isArray(val)) {\n\t\t\treturn val.map(v => $scale(v));\n\t\t}\n\t\treturn $scale(val);\n\t};\n}\n","export default function getRange([$scale]) {\n\tif (typeof $scale === 'function') {\n\t\tif (typeof $scale.range === 'function') {\n\t\t\treturn $scale.range();\n\t\t}\n\t\tconsole.error('[LayerCake] Your scale doesn\\'t have a `.range` method?');\n\t}\n\treturn null;\n}\n","export default {\n\tx: false,\n\ty: true,\n\tz: false,\n\tr: false\n};\n","<script>\n\timport { setContext } from 'svelte';\n\timport { writable, derived } from 'svelte/store';\n\n\timport makeAccessor from './utils/makeAccessor.js';\n\timport filterObject from './utils/filterObject.js';\n\timport calcExtents from './lib/calcExtents.js';\n\timport calcDomain from './helpers/calcDomain.js';\n\timport createScale from './helpers/createScale.js';\n\timport createGetter from './helpers/createGetter.js';\n\timport getRange from './helpers/getRange.js';\n\timport defaultScales from './settings/defaultScales.js';\n\timport defaultReverses from './settings/defaultReverses.js';\n\n\texport let ssr = false;\n\texport let pointerEvents = true;\n\texport let position = 'relative';\n\texport let percentRange = false;\n\n\texport let width = undefined;\n\texport let height = undefined;\n\n\texport let containerWidth = width || 100;\n\texport let containerHeight = height || 100;\n\n\texport let element = undefined;\n\n\t/* --------------------------------------------\n\t * Parameters\n\t * Values that computed properties are based on and that\n\t * can be easily extended from config values\n\t *\n\t */\n\texport let x = undefined;\n\texport let y = undefined;\n\texport let z = undefined;\n\texport let r = undefined;\n\texport let custom = {};\n\texport let data = [];\n\texport let xDomain = undefined;\n\texport let yDomain = undefined;\n\texport let zDomain = undefined;\n\texport let rDomain = undefined;\n\texport let xNice = false;\n\texport let yNice = false;\n\texport let zNice = false;\n\texport let rNice = false;\n\texport let xReverse = defaultReverses.x;\n\texport let yReverse = defaultReverses.y;\n\texport let zReverse = defaultReverses.z;\n\texport let rReverse = defaultReverses.r;\n\texport let xPadding = undefined;\n\texport let yPadding = undefined;\n\texport let zPadding = undefined;\n\texport let rPadding = undefined;\n\texport let xScale = defaultScales.x;\n\texport let yScale = defaultScales.y;\n\texport let zScale = defaultScales.y;\n\texport let rScale = defaultScales.r;\n\texport let xRange = undefined;\n\texport let yRange = undefined;\n\texport let zRange = undefined;\n\texport let rRange = undefined;\n\texport let padding = {};\n\texport let extents = {};\n\texport let flatData = undefined;\n\n\t/* --------------------------------------------\n\t * Preserve a copy of our passed in settings before we modify them\n\t * Return this to the user's context so they can reference things if need be\n\t * Add the active keys since those aren't on our settings object.\n\t * This is mostly an escape-hatch\n\t */\n\tconst config = {};\n\t$: if (x) config.x = x;\n\t$: if (y) config.y = y;\n\t$: if (z) config.z = z;\n\t$: if (r) config.r = r;\n\t$: if (xDomain) config.xDomain = xDomain;\n\t$: if (yDomain) config.yDomain = yDomain;\n\t$: if (zDomain) config.zDomain = zDomain;\n\t$: if (rDomain) config.rDomain = rDomain;\n\t$: if (xRange) config.xRange = xRange;\n\t$: if (yRange) config.yRange = yRange;\n\t$: if (zRange) config.zRange = zRange;\n\t$: if (rRange) config.rRange = rRange;\n\n\t/* --------------------------------------------\n\t * Make store versions of each parameter\n\t * Prefix these with `_` to keep things organized\n\t */\n\tconst _percentRange = writable();\n\tconst _containerWidth = writable();\n\tconst _containerHeight = writable();\n\tconst _x = writable();\n\tconst _y = writable();\n\tconst _z = writable();\n\tconst _r = writable();\n\tconst _custom = writable();\n\tconst _data = writable();\n\tconst _xDomain = writable();\n\tconst _yDomain = writable();\n\tconst _zDomain = writable();\n\tconst _rDomain = writable();\n\tconst _xNice = writable();\n\tconst _yNice = writable();\n\tconst _zNice = writable();\n\tconst _rNice = writable();\n\tconst _xReverse = writable();\n\tconst _yReverse = writable();\n\tconst _zReverse = writable();\n\tconst _rReverse = writable();\n\tconst _xPadding = writable();\n\tconst _yPadding = writable();\n\tconst _zPadding = writable();\n\tconst _rPadding = writable();\n\tconst _xScale = writable();\n\tconst _yScale = writable();\n\tconst _zScale = writable();\n\tconst _rScale = writable();\n\tconst _xRange = writable();\n\tconst _yRange = writable();\n\tconst _zRange = writable();\n\tconst _rRange = writable();\n\tconst _padding = writable();\n\tconst _flatData = writable();\n\tconst _extents = writable();\n\tconst _config = writable(config);\n\n\t$: _percentRange.set(percentRange);\n\t$: _containerWidth.set(containerWidth);\n\t$: _containerHeight.set(containerHeight);\n\t$: _x.set(makeAccessor(x));\n\t$: _y.set(makeAccessor(y));\n\t$: _z.set(makeAccessor(z));\n\t$: _r.set(makeAccessor(r));\n\t$: _xDomain.set(xDomain);\n\t$: _yDomain.set(yDomain);\n\t$: _zDomain.set(zDomain);\n\t$: _rDomain.set(rDomain);\n\t$: _custom.set(custom);\n\t$: _data.set(data);\n\t$: _xNice.set(xNice);\n\t$: _yNice.set(yNice);\n\t$: _zNice.set(zNice);\n\t$: _rNice.set(rNice);\n\t$: _xReverse.set(xReverse);\n\t$: _yReverse.set(yReverse);\n\t$: _zReverse.set(zReverse);\n\t$: _rReverse.set(rReverse);\n\t$: _xPadding.set(xPadding);\n\t$: _yPadding.set(yPadding);\n\t$: _zPadding.set(zPadding);\n\t$: _rPadding.set(rPadding);\n\t$: _xScale.set(xScale);\n\t$: _yScale.set(yScale);\n\t$: _zScale.set(zScale);\n\t$: _rScale.set(rScale);\n\t$: _xRange.set(xRange);\n\t$: _yRange.set(yRange);\n\t$: _zRange.set(zRange);\n\t$: _rRange.set(rRange);\n\t$: _padding.set(padding);\n\t$: _extents.set(filterObject(extents));\n\t$: _flatData.set(flatData || data);\n\n\t/* --------------------------------------------\n\t * Create derived values\n\t * Suffix these with `_d`\n\t */\n\tconst activeGetters_d = derived([_x, _y, _z, _r], ([$x, $y, $z, $r]) => {\n\t\tconst obj = {};\n\t\tif ($x) {\n\t\t\tobj.x = $x;\n\t\t}\n\t\tif ($y) {\n\t\t\tobj.y = $y;\n\t\t}\n\t\tif ($z) {\n\t\t\tobj.z = $z;\n\t\t}\n\t\tif ($r) {\n\t\t\tobj.r = $r;\n\t\t}\n\t\treturn obj;\n\t});\n\n\tconst padding_d = derived([_padding, _containerWidth, _containerHeight], ([$padding]) => {\n\t\tconst defaultPadding = { top: 0, right: 0, bottom: 0, left: 0 };\n\t\treturn Object.assign(defaultPadding, $padding);\n\t});\n\n\tconst box_d = derived([_containerWidth, _containerHeight, padding_d], ([$containerWidth, $containerHeight, $padding]) => {\n\t\tconst b = {};\n\t\tb.top = $padding.top;\n\t\tb.right = $containerWidth - $padding.right;\n\t\tb.bottom = $containerHeight - $padding.bottom;\n\t\tb.left = $padding.left;\n\t\tb.width = b.right - b.left;\n\t\tb.height = b.bottom - b.top;\n\t\tif (b.width <= 0) {\n\t\t\tconsole.error('[LayerCake] Target div has zero or negative width. Did you forget to set an explicit width in CSS on the container?');\n\t\t}\n\t\tif (b.height <= 0) {\n\t\t\tconsole.error('[LayerCake] Target div has zero or negative height. Did you forget to set an explicit height in CSS on the container?');\n\t\t}\n\t\treturn b;\n\t});\n\n\tconst width_d = derived([box_d], ([$box]) => {\n\t\treturn $box.width;\n\t});\n\n\tconst height_d = derived([box_d], ([$box]) => {\n\t\treturn $box.height;\n\t});\n\n\t/* --------------------------------------------\n\t * Calculate extents by taking the extent of the data\n\t * and filling that in with anything set by the user\n\t */\n\tconst extents_d = derived([_flatData, activeGetters_d, _extents], ([$flatData, $activeGetters, $extents]) => {\n\t\tconst getters = filterObject($activeGetters, $extents);\n\t\tif (Object.keys(getters).length > 0) {\n\t\t\treturn { ...calcExtents($flatData, getters), ...$extents };\n\t\t} else {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tconst xDomain_d = derived([extents_d, _xDomain], calcDomain('x'));\n\tconst yDomain_d = derived([extents_d, _yDomain], calcDomain('y'));\n\tconst zDomain_d = derived([extents_d, _zDomain], calcDomain('z'));\n\tconst rDomain_d = derived([extents_d, _rDomain], calcDomain('r'));\n\n\tconst xScale_d = derived([_xScale, extents_d, xDomain_d, _xPadding, _xNice, _xReverse, width_d, height_d, _xRange, _percentRange], createScale('x'));\n\tconst xGet_d = derived([_x, xScale_d], createGetter);\n\n\tconst yScale_d = derived([_yScale, extents_d, yDomain_d, _yPadding, _yNice, _yReverse, width_d, height_d, _yRange, _percentRange], createScale('y'));\n\tconst yGet_d = derived([_y, yScale_d], createGetter);\n\n\tconst zScale_d = derived([_zScale, extents_d, zDomain_d, _zPadding, _zNice, _zReverse, width_d, height_d, _zRange, _percentRange], createScale('z'));\n\tconst zGet_d = derived([_z, zScale_d], createGetter);\n\n\tconst rScale_d = derived([_rScale, extents_d, rDomain_d, _rPadding, _rNice, _rReverse, width_d, height_d, _rRange, _percentRange], createScale('r'));\n\tconst rGet_d = derived([_r, rScale_d], createGetter);\n\n\tconst xRange_d = derived([xScale_d], getRange);\n\tconst yRange_d = derived([yScale_d], getRange);\n\tconst zRange_d = derived([zScale_d], getRange);\n\tconst rRange_d = derived([rScale_d], getRange);\n\n\tconst aspectRatio_d = derived([width_d, height_d], ([$aspectRatio, $width, $height]) => {\n\t\treturn $width / $height;\n\t});\n\n\t$: context = {\n\t\tactiveGetters: activeGetters_d,\n\t\twidth: width_d,\n\t\theight: height_d,\n\t\tpercentRange: _percentRange,\n\t\taspectRatio: aspectRatio_d,\n\t\tcontainerWidth: _containerWidth,\n\t\tcontainerHeight: _containerHeight,\n\t\tx: _x,\n\t\ty: _y,\n\t\tz: _z,\n\t\tr: _r,\n\t\tcustom: _custom,\n\t\tdata: _data,\n\t\txNice: _xNice,\n\t\tyNice: _yNice,\n\t\tzNice: _zNice,\n\t\trNice: _rNice,\n\t\txReverse: _xReverse,\n\t\tyReverse: _yReverse,\n\t\tzReverse: _zReverse,\n\t\trReverse: _rReverse,\n\t\txPadding: _xPadding,\n\t\tyPadding: _yPadding,\n\t\tzPadding: _zPadding,\n\t\trPadding: _rPadding,\n\t\tpadding: padding_d,\n\t\tflatData: _flatData,\n\t\textents: extents_d,\n\t\txDomain: xDomain_d,\n\t\tyDomain: yDomain_d,\n\t\tzDomain: zDomain_d,\n\t\trDomain: rDomain_d,\n\t\txRange: xRange_d,\n\t\tyRange: yRange_d,\n\t\tzRange: zRange_d,\n\t\trRange: rRange_d,\n\t\tconfig: _config,\n\t\txScale: xScale_d,\n\t\txGet: xGet_d,\n\t\tyScale: yScale_d,\n\t\tyGet: yGet_d,\n\t\tzScale: zScale_d,\n\t\tzGet: zGet_d,\n\t\trScale: rScale_d,\n\t\trGet: rGet_d\n\t};\n\n\t$: setContext('LayerCake', context);\n</script>\n\n{#if (ssr === true || typeof window !== 'undefined')}\n\t<div\n\t\tbind:this={element}\n\t\tclass=\"layercake-container\"\n\t\tstyle=\"\n\t\t\tposition:{position};\n\t\t\t{position === 'absolute' ? 'top:0;right:0;bottom:0;left:0;' : ''}\n\t\t\t{pointerEvents === false ? 'pointer-events:none;' : ''}\n\t\t\"\n\t\tbind:clientWidth={containerWidth}\n\t\tbind:clientHeight={containerHeight}\n\t>\n\t\t<slot\n\t\t\t{element}\n\t\t\twidth={$width_d}\n\t\t\theight={$height_d}\n\t\t\taspectRatio={$aspectRatio_d}\n\t\t\tcontainerWidth={$_containerWidth}\n\t\t\tcontainerHeight={$_containerHeight}\n\t\t></slot>\n\t</div>\n{/if}\n\n<style>\n\t.layercake-container,\n\t.layercake-container :global(*) {\n\t\tbox-sizing: border-box;\n\t}\n\t.layercake-container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n</style>\n","<script>\n\timport { getContext } from 'svelte';\n\n\texport let element = undefined;\n\texport let viewBox = undefined;\n\texport let zIndex = undefined;\n\texport let pointerEvents = undefined;\n\n\tlet zIndexStyle = '';\n\t$: zIndexStyle = typeof zIndex !== 'undefined' ? `z-index:${zIndex};` : '';\n\n\tlet pointerEventsStyle = '';\n\t$: pointerEventsStyle = pointerEvents === false ? 'pointer-events:none;' : '';\n\n\tconst { containerWidth, containerHeight, padding } = getContext('LayerCake');\n</script>\n<svg\n\tbind:this={element}\n\tclass=\"layercake-layout-svg\"\n\t{viewBox}\n\twidth={$containerWidth}\n\theight={$containerHeight}\n\tstyle=\"{zIndexStyle}{pointerEventsStyle}\"\n>\n\t<defs>\n\t\t<slot name=\"defs\"></slot>\n\t</defs>\n\t<g class=\"layercake-layout-svg_g\" transform=\"translate({$padding.left}, {$padding.top})\">\n\t\t<slot {element}></slot>\n\t</g>\n</svg>\n\n<style>\n\tsvg {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\toverflow: visible;\n\t}\n</style>\n","/* --------------------------------------------\n *\n * Flatten arrays of arrays one level deep\n *\n * --------------------------------------------\n */\nexport default function flatten (arr) {\n\tif (Array.isArray(arr) && Array.isArray(arr[0])) {\n\t\tlet flat = [];\n\t\tconst l = arr.length;\n\t\tfor (let i = 0; i < l; i += 1) {\n\t\t\tflat = flat.concat(arr[i]);\n\t\t}\n\t\treturn flat;\n\t}\n\treturn arr;\n}\n","/* --------------------------------------------\n *\n * Calculate uniqe values from a list with an optional iterator string or function\n * By default return the transformed value if iteratee exists\n *\n * --------------------------------------------\n */\nexport default function uniques (list, iteratee, transform = true) {\n\tif (!Array.isArray(list)) {\n\t\tconsole.error('LayerCake error: Input value to `uniques` must be a list.');\n\t\treturn null;\n\t}\n\tconst ll = list.length;\n\tconst iterater = typeof iteratee === 'function';\n\tconst key = typeof iteratee !== 'undefined';\n\tconst seen = new Set();\n\tconst result = [];\n\tfor (let i = 0; i < ll; i += 1) {\n\t\tconst d = list[i];\n\t\tconst computed = iterater ? iteratee(d) : key === true ? d[iteratee] : d;\n\t\tif (!seen.has(computed)) {\n\t\t\tseen.add(computed);\n\t\t\tresult.push(transform ? computed : d);\n\t\t}\n\t}\n\treturn result;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","<script>\r\n /**\r\n Generates an SVG column chart. It uses the z-scale for color assignments and aassumes both `xScale` and `zScale` are ordinal scales. It assumes your data is in a [D3 stack format](https://github.com/d3/d3-shape#stack\r\n */\r\n import { getContext } from \"svelte\";\r\n export let currentItem;\r\n\r\n const { data, xGet, yGet, zGet, xScale } = getContext(\"LayerCake\");\r\n\r\n $: columnHeight = (d) => {\r\n const yVals = $yGet(d);\r\n return yVals[0] - yVals[1];\r\n };\r\n</script>\r\n\r\n<g class=\"column-group\">\r\n {#each $data as series, i}\r\n {#each series as d, j}\r\n <rect\r\n class=\"group-rect\"\r\n data-id={i}\r\n on:mousemove={(e) => {\r\n currentItem = {\r\n i,\r\n j,\r\n x: $xGet(d) + $xScale.bandwidth() / 4,\r\n y: e.pageY - 50,\r\n };\r\n }}\r\n x={$xGet(d) + $xScale.bandwidth() / 4}\r\n y={$yGet(d)[1]}\r\n width={$xScale.bandwidth() / 2}\r\n height={columnHeight(d)}\r\n fill={$zGet(series)}\r\n />\r\n {/each}\r\n {/each}\r\n</g>\r\n","<script>\r\n /**\r\n Generates an SVG x-axis. This component is also configured to detect if your x-scale is an ordinal scale. If so, it will place the markers in the middle of the bandwidth.\r\n @param {Boolean} [gridlines=true] \u0013�Extend lines from the ticks into the chart space\r\n @param {Boolean} [tickMarks=false] \u0013�Show a vertical mark for each tick.\r\n @param {Boolean} [baseline=false] \u0013 Show a solid line at the bottom.\r\n @param {Boolean} [snapTicks=false] \u0013�Instead of centering the text on the first and the last items, align them to the edges of the chart.\r\n @param {Function} [formatTick=d => d] \u0013�A function that passes the current tick value and expects a nicely formatted value in return.\r\n @param {Number|Array|Function} [ticks] \u0013�If this is a number, it passes that along to the [d3Scale.ticks](https://github.com/d3/d3-scale) function. If this is an array, hardcodes the ticks to those values. If it's a function, passes along the default tick values and expects an array of tick values in return. If nothing, it uses the default ticks supplied by the D3 function.\r\n @param {Number} [xTick=0] \u0013�TK\r\n @param {Number} [yTick=16] \u0013�The distance from the baseline to place each tick value.\r\n */\r\n import { getContext } from \"svelte\";\r\n import { langTextStore } from \"../../store/langtexts.js\";\r\n const { width, height, xScale, yRange } = getContext(\"LayerCake\");\r\n\r\n export let gridlines = true;\r\n export let tickMarks = false;\r\n export let baseline = false;\r\n export let snapTicks = false;\r\n export let formatTick = (d) => d;\r\n export let ticks = undefined;\r\n export let xTick = 0;\r\n export let yTick = 16;\r\n\r\n $: isBandwidth = typeof $xScale.bandwidth === \"function\";\r\n\r\n $: tickVals = Array.isArray(ticks)\r\n ? ticks\r\n : isBandwidth\r\n ? $xScale.domain()\r\n : typeof ticks === \"function\"\r\n ? ticks($xScale.ticks())\r\n : $xScale.ticks(ticks);\r\n\r\n function textAnchor(i) {\r\n if (snapTicks === true) {\r\n if (i === 0) {\r\n return \"start\";\r\n }\r\n if (i === tickVals.length - 1) {\r\n return \"end\";\r\n }\r\n }\r\n return \"middle\";\r\n }\r\n</script>\r\n\r\n<g class=\"axis x-axis\" class:snapTicks>\r\n {#each tickVals as tick, i}\r\n <g\r\n class=\"tick tick-{i}\"\r\n transform=\"translate({$xScale(tick)},{$yRange[0]})\"\r\n >\r\n {#if gridlines !== false}\r\n <line class=\"gridline\" y1={$height * -1} y2=\"0\" x1=\"0\" x2=\"0\" />\r\n {/if}\r\n {#if tickMarks === true}\r\n <line\r\n class=\"tick-mark\"\r\n y1={0}\r\n y2={6}\r\n x1={xTick || isBandwidth ? $xScale.bandwidth() / 2 : 0}\r\n x2={xTick || isBandwidth ? $xScale.bandwidth() / 2 : 0}\r\n />\r\n {/if}\r\n <text\r\n x={xTick || isBandwidth ? $xScale.bandwidth() / 2 : 0}\r\n y={yTick}\r\n dx=\"\"\r\n dy=\"\"\r\n text-anchor={textAnchor(i)}\r\n >{formatTick($langTextStore.getText(tick))}</text\r\n >\r\n </g>\r\n {/each}\r\n {#if baseline === true}\r\n <line\r\n class=\"baseline\"\r\n y1={$height + 0.5}\r\n y2={$height + 0.5}\r\n x1=\"0\"\r\n x2={$width}\r\n />\r\n {/if}\r\n</g>\r\n\r\n<style>\r\n .tick {\r\n font-size: 0.725em;\r\n font-weight: 200;\r\n }\r\n\r\n line,\r\n .tick line {\r\n stroke: #aaa;\r\n stroke-dasharray: 2;\r\n }\r\n\r\n .tick text {\r\n fill: #666;\r\n }\r\n\r\n .tick .tick-mark,\r\n .baseline {\r\n stroke-dasharray: 0;\r\n }\r\n /* This looks slightly better */\r\n .axis.snapTicks .tick:last-child text {\r\n transform: translateX(3px);\r\n }\r\n .axis.snapTicks .tick.tick-0 text {\r\n transform: translateX(-3px);\r\n }\r\n</style>\r\n","<script>\r\n /**\r\n Generates an HTML y-axis.\r\n @param {Boolean} [gridlines=true] \u0013�Extend lines from the ticks into the chart space\r\n @param {Boolean} [tickMarks=false] \u0013�Show a vertical mark for each tick.\r\n @param {Function} [formatTick=d => d] \u0013�A function that passes the current tick value and expects a nicely formatted value in return.\r\n @param {Number|Array|Function} [ticks=4] \u0013�If this is a number, it passes that along to the [d3Scale.ticks](https://github.com/d3/d3-scale) function. If this is an array, hardcodes the ticks to those values. If it's a function, passes along the default tick values and expects an array of tick values in return.\r\n @param {Number} [xTick=0] \u0013�How far over to position the text marker.\r\n @param {Number} [dxTick=0] \u0013�Any optional value passed to the `dx` attribute on the text marker and tick mark (if visible). This is ignored on the text marker if your scale is ordinal.\r\n @param {Number} [yTick=0] \u0013�How far up and down to position the text marker.\r\n @param {Number} [dyTick=0] \u0013�Any optional value passed to the `dy` attribute on the text marker and tick mark (if visible). This is ignored on the text marker if your scale is ordinal.\r\n */\r\n import { getContext } from \"svelte\";\r\n\r\n const { padding, xRange, yScale } = getContext(\"LayerCake\");\r\n\r\n export let gridlines = true;\r\n export let tickMarks = false;\r\n export let formatTick = (d) => d;\r\n export let ticks = 4;\r\n export let xTick = 0;\r\n export let yTick = 0;\r\n export let dxTick = 0;\r\n export let dyTick = -4;\r\n export let textAnchor = \"start\";\r\n export let currencySign = \"\";\r\n\r\n $: isBandwidth = typeof $yScale.bandwidth === \"function\";\r\n\r\n $: tickVals = Array.isArray(ticks)\r\n ? ticks\r\n : isBandwidth\r\n ? $yScale.domain()\r\n : typeof ticks === \"function\"\r\n ? ticks($yScale.ticks())\r\n : $yScale.ticks(ticks);\r\n</script>\r\n\r\n<g class=\"axis y-axis\" transform=\"translate({-$padding.left}, 0)\">\r\n {#each tickVals as tick}\r\n <g\r\n class=\"tick tick-{tick}\"\r\n transform=\"translate({$xRange[0] +\r\n (isBandwidth ? $padding.left : 0)}, {$yScale(tick)})\"\r\n >\r\n {#if gridlines !== false}\r\n <line\r\n class=\"gridline\"\r\n x2=\"100%\"\r\n y1={yTick + (isBandwidth ? $yScale.bandwidth() / 2 : 0)}\r\n y2={yTick + (isBandwidth ? $yScale.bandwidth() / 2 : 0)}\r\n />\r\n {/if}\r\n {#if tickMarks === true}\r\n <line\r\n class=\"tick-mark\"\r\n x1=\"0\"\r\n x2={isBandwidth ? -6 : 6}\r\n y1={yTick + (isBandwidth ? $yScale.bandwidth() / 2 : 0)}\r\n y2={yTick + (isBandwidth ? $yScale.bandwidth() / 2 : 0)}\r\n />\r\n {/if}\r\n <text\r\n x={xTick}\r\n y={yTick + (isBandwidth ? $yScale.bandwidth() / 2 : 0)}\r\n dx={isBandwidth ? -9 : dxTick}\r\n dy={isBandwidth ? 4 : dyTick}\r\n style=\"text-anchor:{isBandwidth ? 'end' : textAnchor};\"\r\n >{@html currencySign} {tick}</text\r\n >\r\n </g>\r\n {/each}\r\n</g>\r\n\r\n<style>\r\n .tick {\r\n font-size: 0.725em;\r\n font-weight: 200;\r\n }\r\n\r\n .tick line {\r\n stroke: #aaa;\r\n }\r\n .tick .gridline {\r\n stroke-dasharray: 2;\r\n }\r\n\r\n .tick text {\r\n fill: #666;\r\n font-size: 18px;\r\n }\r\n\r\n .tick.tick-0 line {\r\n stroke-dasharray: 0;\r\n }\r\n</style>\r\n","<script>\r\n import { LayerCake, Svg, flatten, uniques } from \"layercake\";\r\n import { stack } from \"d3-shape\";\r\n import { scaleBand, scaleOrdinal } from \"d3-scale\";\r\n import { format, precisionFixed } from \"d3-format\";\r\n import { numberFormatStore } from \"../../store/numberFormat.js\";\r\n import ColumnStacked from \"./ColumnStacked.svelte\";\r\n import AxisX from \"./AxisX.svelte\";\r\n import AxisY from \"./AxisY.svelte\";\r\n import { factoryStore } from \"../../store/factories.js\";\r\n\r\n // This example loads csv data as json using @rollup/plugin-dsv\r\n export let percentages = [[], []];\r\n export let labelsForParts = [];\r\n export let data = [\r\n { wage: \"LMV\", total: 0 },\r\n { wage: \"Targe-wage\", total: 0 },\r\n ];\r\n // {\r\n // wage: \"2019\",\r\n // apples: \"3840\",\r\n // bananas: \"1920\",\r\n // cherries: \"960\",\r\n // dates: \"400\",\r\n // },\r\n // {\r\n // wage: \"2018\",\r\n // apples: \"1600\",\r\n // bananas: \"1440\",\r\n // cherries: \"960\",\r\n // dates: \"400\",\r\n // },\r\n // ];\r\n\r\n const xKey = \"wage\";\r\n const yKey = [0, 1];\r\n const zKey = \"key\";\r\n\r\n const seriesNames = Object.keys(data[0]).filter((d) => d !== xKey);\r\n let seriesColors = [\r\n \"#F69A81\",\r\n \"#BC1A0D\",\r\n \"#771212\",\r\n \"#F67338\",\r\n \"#ED003C\",\r\n \"#3F5E63\",\r\n \"#628482\",\r\n \"#9BACAB\",\r\n \"#9FCFD6\",\r\n ]; //\r\n\r\n data.forEach((d) => {\r\n seriesNames.forEach((name) => {\r\n d[name] = +d[name];\r\n });\r\n });\r\n\r\n const stackData = stack().keys(seriesNames);\r\n\r\n const series = stackData(data);\r\n\r\n const formatTickY = (d) => format(`.${precisionFixed(d)}s`)(d);\r\n let currentItem = {};\r\n let overlayVisible = false;\r\n function getPercentage(item) {\r\n if (!item || item.i == undefined || !percentages || !percentages[0]) {\r\n return \"\";\r\n }\r\n var relevantArray = percentages[item.j];\r\n var relevantItem = relevantArray[item.i];\r\n return relevantItem;\r\n }\r\n $: overlayVisible = currentItem.x > 0;\r\n</script>\r\n\r\n{#if overlayVisible}\r\n <div\r\n style=\"position:absolute; left:{currentItem.x}px; top:{currentItem.y}px; background-color:white;opacity:0.95;border:2px solid #ed003b;width:50px, height:50px;z-index:100;padding:5px\"\r\n >\r\n {labelsForParts[currentItem.i]}\r\n {$numberFormatStore.formatNumber(getPercentage(currentItem), 0)} %\r\n </div>\r\n{/if}\r\n<div class=\"chart-container\">\r\n <LayerCake\r\n padding={{ top: 10, right: 10, bottom: 20, left: 20 }}\r\n x={(d) => d.data[xKey]}\r\n y={yKey}\r\n z={zKey}\r\n xScale={scaleBand().paddingInner([0.02]).round(true)}\r\n xDomain={uniques(data, xKey)}\r\n zScale={scaleOrdinal()}\r\n zDomain={seriesNames}\r\n zRange={seriesColors}\r\n flatData={flatten(series)}\r\n data={series}\r\n {percentages}\r\n >\r\n <Svg>\r\n <AxisX gridlines={false} />\r\n <AxisY\r\n ticks={6}\r\n gridlines={true}\r\n formatTick={formatTickY}\r\n currencySign={factoryStore.getCurrencySign()}\r\n />\r\n <ColumnStacked bind:currentItem />\r\n </Svg>\r\n </LayerCake>\r\n</div>\r\n\r\n<style>\r\n /*\r\n The wrapper div needs to have an explicit width and height in CSS.\r\n It can also be a flexbox child or CSS grid element.\r\n The point being it needs dimensions since the <LayerCake> element will\r\n expand to fill it.\r\n*/\r\n .chart-container {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n</style>\r\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","<script>\r\n import { langTextStore } from \"../store/langtexts\";\r\n import { fade } from \"svelte/transition\";\r\n import { outputVariableStore } from \"../store/outputVariables.js\";\r\n import WizardSummarySection from \"./WizardSummarySection.svelte\";\r\n import { factoryStore } from \"../store/factories\";\r\n import { createEventDispatcher, tick } from \"svelte\";\r\n import GenerateReport from \"./GenerateReport.svelte\";\r\n import { getContext } from \"svelte\";\r\n import DownloadIcon from \"../Vectors/document.svelte\";\r\n import Graph from \"../SharedComponents/Graph/Graph.svelte\";\r\n const dispatch = createEventDispatcher();\r\n const { open } = getContext(\"modal\");\r\n\r\n let indexes = [0, 1, 2, 3, 4, 5, 6, 7];\r\n let labels = [\r\n $langTextStore.getText(\"legal-min-wage\"),\r\n $langTextStore.getText(\"target-wage\"),\r\n ];\r\n\r\n let colors = [\r\n \"#F69A81\",\r\n \"#BC1A0D\",\r\n \"#771212\",\r\n \"#F67338\",\r\n \"#ED003C\",\r\n \"#3F5E63\",\r\n \"#628482\",\r\n \"#9BACAB\",\r\n \"#9FCFD6\",\r\n ]; // same amount needed as labelsforparts\r\n\r\n let labelsForParts = [\r\n $langTextStore.getText(\"breakdown-material\"),\r\n $langTextStore.getText(\"breakdown-polybag\"),\r\n $langTextStore.getText(\"breakdown-labour\"),\r\n $langTextStore.getText(\"breakdown-outsourced\"),\r\n $langTextStore.getText(\"breakdown-logistics\"),\r\n $langTextStore.getText(\"breakdown-tax-and-duties\"),\r\n $langTextStore.getText(\"breakdown-overhead\"),\r\n $langTextStore.getText(\"breakdown-margin-and-comission\"),\r\n ];\r\n\r\n let percentages = [];\r\n percentages.push([]);\r\n percentages.push([]);\r\n let totals = [];\r\n totals.push(0);\r\n totals.push(0);\r\n let data2 = [\r\n { wage: \"LMV\", total: 0 },\r\n { wage: \"target-wage\", total: 0 },\r\n ];\r\n\r\n for (var i in indexes) {\r\n data2[0][i] = getValue(i, \"base\");\r\n totals[0] = totals[0] + getValue(i, \"base\");\r\n data2[1][i] = getValue(i, \"target-wage\");\r\n totals[1] = totals[1] + getValue(i, \"target-wage\");\r\n }\r\n for (var i in indexes) {\r\n percentages[0][i] = (getValue(i, \"base\") * 100) / totals[0];\r\n percentages[1][i] = (getValue(i, \"target-wage\") * 100) / totals[1];\r\n }\r\n\r\n function getValue(part, scenario) {\r\n var scenarioVars =\r\n $outputVariableStore.scenarioConfiguration.calculatedScenarios[\r\n scenario\r\n ];\r\n var ret = 0;\r\n switch (part + \"\") {\r\n case \"0\":\r\n ret =\r\n scenarioVars[\"ProductFabricDisplay\"] +\r\n scenarioVars[\"ProductAccessoriesDisplay\"];\r\n break;\r\n case \"1\":\r\n ret = scenarioVars[\"ProductPolybagDisplay\"];\r\n break;\r\n\r\n case \"2\":\r\n ret = scenarioVars[\"ProductTotalLabourMinWageDisplay\"];\r\n break;\r\n\r\n case \"3\":\r\n ret = scenarioVars[\"ProductOutsourcedDisplay\"];\r\n break;\r\n\r\n case \"4\":\r\n ret = scenarioVars[\"ProductLogisticsDisplay\"];\r\n break;\r\n\r\n case \"5\":\r\n ret = scenarioVars[\"ProductTaxDisplay\"];\r\n break;\r\n\r\n case \"6\":\r\n ret = scenarioVars[\"ProductOverheadDisplay\"];\r\n break;\r\n\r\n case \"7\":\r\n ret = scenarioVars[\"ProductMarkupMinWageDisplay\"];\r\n break;\r\n\r\n default:\r\n throw \"unknown part\";\r\n }\r\n\r\n if (ret == undefined || ret == null || isNaN(ret)) ret = 0;\r\n return ret;\r\n }\r\n\r\n function lockCalculation() {\r\n factoryStore.setLocked(true);\r\n dispatch(\"change\", null);\r\n }\r\n function unLockCalculation() {\r\n factoryStore.setLocked(false);\r\n dispatch(\"change\", null);\r\n }\r\n\r\n function showReportModal() {\r\n open(\r\n GenerateReport,\r\n\r\n { closeButton: false }\r\n );\r\n }\r\n\r\n let pdfSheetNum = 1;\r\n</script>\r\n\r\n<div class=\" col-6 section vh-90\">\r\n <div class=\"section__container h-100 pane position-relative\">\r\n <div class=\"row g-0\">\r\n <!-- <div id=\"chart\" bind:this={chartItem} /> -->\r\n <div class=\"col-12 position-relative\">\r\n <h2 class=\"highlight\">\r\n {$langTextStore.getText(\"general-header-summary-report\")}\r\n </h2>\r\n\r\n <WizardSummarySection hideHeader={true} isFactory={false} />\r\n\r\n <hr class=\"mb-3 mt-5\" />\r\n {$langTextStore.getText(\"general-footer-text\")}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"bg-white col-3 section reports\" style=\"max-height:100%\">\r\n <Graph bind:data={data2} bind:percentages bind:labelsForParts />\r\n</div>\r\n<div class=\"col-3 section reports\">\r\n <div class=\"section__container pane h-100\">\r\n <div class=\"mb-5\">\r\n <h2 class=\"highlight pb-4\">Legends</h2>\r\n\r\n {#each indexes as theindex}\r\n <div class=\"pb-4\">\r\n <span\r\n class=\"reports-legend-item me-2\"\r\n style=\"background-color:{colors[theindex]}\"> </span\r\n >\r\n {labelsForParts[theindex]}<br />\r\n </div>\r\n {/each}\r\n </div>\r\n <div\r\n class=\"btn btn--open mt-3 mb-4 font-weight-bold c-pointer \"\r\n on:click={showReportModal}\r\n >\r\n <DownloadIcon /> {$langTextStore.getText(\r\n \"general-label-generate-report\"\r\n )}\r\n </div>\r\n {#if !$factoryStore.currentCalculator.isLocked}\r\n <button class=\"btn btn-black w-100\" on:click={lockCalculation}\r\n >{$langTextStore.getText(\r\n \"general-label-lock-calculation\"\r\n )}</button\r\n >\r\n {:else}\r\n <button class=\"btn btn-gray w-100\" on:click={unLockCalculation}\r\n >{$langTextStore.getText(\r\n \"general-label-unlock-calculation\"\r\n )}</button\r\n >\r\n {/if}\r\n </div>\r\n</div>\r\n\r\n<!-- <style>\r\n :global(.chart-legend) {\r\n display: none;\r\n }\r\n .flexmiddle {\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n :global(.bi-file-earmark-text-fill) {\r\n margin-bottom: -3px;\r\n margin-right: 5px;\r\n }\r\n</style> -->\r\n","<script>\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n import { getContext } from \"svelte\";\r\n const { close } = getContext(\"modal\");\r\n\r\n export let newVersion;\r\n export let oldVersion;\r\n export let doUpdate;\r\n //var diffs =\r\n // \"<table><thead><tr><th>var</th><th>old</th><th>new</th></tr></thead><tbody>\";\r\n\r\n var diffs = \"\";\r\n for (var theVar in newVersion.variables) {\r\n var actualVar = newVersion.variables[theVar];\r\n var oldVar =\r\n oldVersion.variables.find(\r\n (v) => v.varNameKey == actualVar.varNameKey\r\n ) || {};\r\n\r\n if (actualVar.formula + \"\" != oldVar.formula + \"\") {\r\n diffs +=\r\n \"<div class='col-12'><strong>\" +\r\n actualVar.varNameKey +\r\n \"</strong></div><div class='col-1 text-gray-5 font-weight-bold'>v\" +\r\n oldVersion.calculatorVersionNumber +\r\n \"</div><div class='col-11 text-gray-5 '>\" +\r\n oldVar.formula +\r\n \"</div><div class='col-1 mb-3 text-gray-5 font-weight-bold'>v\" +\r\n newVersion.calculatorVersionNumber +\r\n \"</div><div class='col-11 mb-3 text-gray-5'>\" +\r\n actualVar.formula +\r\n \"</div>\";\r\n }\r\n }\r\n //diffs += \"</tbody></table>\";\r\n</script>\r\n\r\n<div class=\"modal-header-xx\">\r\n <h3 class=\"text-gray-6\" id=\"exampleModalLabel\">\r\n {$langTextStore.getText(\"general-major-update-title\")}\r\n </h3>\r\n</div>\r\n<div class=\"modal-body\">\r\n <p class=\"text-small \">\r\n {$langTextStore.getText(\"general-major-update-explanation\")}\r\n </p>\r\n <p class=\"text-small font-weight-bold\">\r\n Old version: {oldVersion.calculatorVersionNumber}<br />\r\n New version: {newVersion.calculatorVersionNumber}\r\n </p>\r\n <hr class=\"mt-4 mb-4\" />\r\n <div class=\"row g-0 text-small \">\r\n {@html diffs}\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal-footer-xx text-center mb-5 \">\r\n <hr class=\"mt-4 mb-4\" />\r\n <button\r\n class=\"btn btn-primary width-unset\"\r\n on:click={() => {\r\n doUpdate();\r\n close();\r\n }}>{$langTextStore.getText(\"general-major-update-update-now\")}</button\r\n >\r\n <button class=\"btn btn-gray width-unset ms-2 me-2\" on:click={close}\r\n >{$langTextStore.getText(\"general-major-update-ignore-for-now\")}</button\r\n >\r\n</div>\r\n","<script>\r\n import { langTextStore } from \"../store/langtexts\";\r\n import { factoryStore } from \"../store/factories\";\r\n import ProductList from \"../Dashboard/ProductList.svelte\";\r\n import { link, push } from \"svelte-spa-router\";\r\n\r\n export let factorySettingId = null;\r\n</script>\r\n\r\n<div class=\"col-12 section vh-90\">\r\n <div class=\"section__container h-100 pane\">\r\n <h2 class=\"highlight\">\r\n {$langTextStore.getText(\"general-header-product-list-for-factory\")}\r\n </h2>\r\n <div class=\"w-100 mb-3 mt-2 mb-lg-0\"> </div>\r\n\r\n <ProductList {factorySettingId} />\r\n <!-- {#await factoryStore.getProductsForFactorySetting(factorySettingId)}\r\n loading\r\n {:then data}\r\n {#if data.filteredProducts && data.filteredProducts.length > 0}\r\n {#each data.filteredProducts as product}\r\n <a href=\"/calculator/product/{product.uuid}\" use:link\r\n >{product.name} -- {product.uuid}</a\r\n ><br />\r\n {/each}\r\n {/if}\r\n {/await} -->\r\n </div>\r\n</div>\r\n","<script>\r\n import { factoryStore } from \"../store/factories\";\r\n import { link, push } from \"svelte-spa-router\";\r\n\r\n import { calculatorStore } from \"../store/calculators.js\";\r\n import WizardCalculation from \"./WizardCalculation.svelte\";\r\n import WizardSectionSelector from \"./WizardSectionSelector.svelte\";\r\n import WizardInputSection from \"./WizardInputSection.svelte\";\r\n import WizardSummarySection from \"./WizardSummarySection.svelte\";\r\n import WizardHelpSection from \"./WizardHelpSection.svelte\";\r\n import GoTo from \"../Vectors/goto.svelte\";\r\n import Recycle from \"../Vectors/recycle.svelte\";\r\n import IconCopy from \"../Vectors/copy.svelte\";\r\n import IconDownload from \"../Vectors/download.svelte\";\r\n import IconPlus from \"../Vectors/plus.svelte\";\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n import WizardSuperHelpSection from \"./WizardSuperHelpSection.svelte\";\r\n import IconChevronRight from \"../Vectors/chevronright.svelte\";\r\n import { getContext } from \"svelte\";\r\n import LangSelectorRestricted from \"../SharedComponents/LangSelectorRestricted.svelte\";\r\n import { tick } from \"svelte\";\r\n import { fade } from \"svelte/transition\";\r\n import { inputVariableStore } from \"../store/inputVariables\";\r\n import ScenarioTool from \"./ScenarioTool.svelte\";\r\n import IconBack from \"../Vectors/back.svelte\";\r\n import * as util from \"../js/util.js\";\r\n\r\n import BreakDownSummary from \"./BreakDownSummary.svelte\";\r\n import MajorUpgrade from \"./MajorUpgrade.svelte\";\r\n import Pluscirkel from \"../Vectors/pluscirkel.svelte\";\r\n import Wagedistribution from \"./WageDistribution.svelte\";\r\n import ProductListForFactory from \"./ProductListForFactory.svelte\";\r\n import Confirm from \"../SharedComponents/Confirm.svelte\";\r\n import Prompt from \"../SharedComponents/Prompt.svelte\";\r\n\r\n import IconRecycle from \"../Vectors/recycle.svelte\";\r\n import IconCloud from \"../Vectors/cloud.svelte\";\r\n import Logo from \"../Vectors/logotransparent.svelte\";\r\n import { outputVariableStore } from \"../store/outputVariables\";\r\n\r\n const { snackbar } = getContext(\"app\");\r\n const { open } = getContext(\"modal\");\r\n\r\n export let params = {};\r\n $: isProductMode =\r\n params.productId && params.productId.length > 0 ? true : false;\r\n $: showLangChooserIfNeeded(\r\n $langTextStore.langName,\r\n $calculatorStore.availableLangs\r\n );\r\n let activeSection = window.location.href.includes(\"activesection\")\r\n ? \"productlist\"\r\n : params.productId && params.productId.length > 0\r\n ? \"product\"\r\n : \"settings\";\r\n\r\n $: save(activeSection);\r\n function showLangChooserIfNeeded(langName, availableLangs) {\r\n if (!availableLangs || availableLangs.length == 0) {\r\n return;\r\n }\r\n if (availableLangs.find((al) => al.langName == langName) == null) {\r\n open(\r\n LangSelectorRestricted,\r\n {\r\n showChoice: true,\r\n langs: availableLangs,\r\n warningText: $langTextStore.getText(\r\n \"general-labels-selected-lang-not-available-for-calculator\"\r\n ),\r\n },\r\n { closeButton: false }\r\n );\r\n }\r\n }\r\n\r\n inputVariableStore.clear();\r\n outputVariableStore.clear();\r\n let currentSubSectionNameKey = null;\r\n\r\n let doCalculations; // filled by wizardCalculation component\r\n $: maybeSaveToCloud(activeSection);\r\n function maybeSaveToCloud(s) {\r\n if (s == \"productlist\") {\r\n saveToCloud();\r\n }\r\n }\r\n\r\n $: savestatus = $inputVariableStore.saveStatus;\r\n let timersaved = null;\r\n var timersaving = null;\r\n async function busySaving() {\r\n clearTimeout(timersaving);\r\n clearTimeout(timersaved);\r\n inputVariableStore.setSaveStatus(\"saving\");\r\n }\r\n async function showSaved() {\r\n clearTimeout(timersaving);\r\n timersaving = window.setTimeout(() => {\r\n inputVariableStore.setSaveStatus(\"saved\");\r\n timersaved = window.setTimeout(() => {\r\n inputVariableStore.setSaveStatus(\"\");\r\n }, 2000);\r\n }, 1000);\r\n }\r\n var saveDebounceTimer = null;\r\n let firstTime = true;\r\n async function save() {\r\n if (firstTime) {\r\n firstTime = false;\r\n return;\r\n }\r\n inputVariableStore.setSaveStatus(\"dirty\");\r\n\r\n await tick();\r\n clearTimeout(saveDebounceTimer);\r\n saveDebounceTimer = setTimeout(() => {\r\n saveDebounced();\r\n }, 3000);\r\n }\r\n async function saveDebounced() {\r\n console.log(\"saving\", $inputVariableStore);\r\n if (!$factoryStore.currentCalculator.variables) {\r\n return;\r\n }\r\n busySaving();\r\n var settingsToSave = $factoryStore.currentCalculator;\r\n\r\n for (var theVar in $inputVariableStore) {\r\n if (\r\n theVar == \"variables\" ||\r\n theVar == \"scenarioConfiguration\" ||\r\n theVar == \"excelSheetNames\"\r\n ) {\r\n continue;\r\n }\r\n\r\n var theRealVar = settingsToSave.variables.find(\r\n (v) => v.varNameKey == theVar\r\n );\r\n if (theRealVar != null) {\r\n theRealVar.value = $inputVariableStore[theVar];\r\n } else {\r\n settingsToSave[theVar] = $inputVariableStore[theVar]; //all the scenario shit...\r\n }\r\n }\r\n settingsToSave.alternateCurrencyRate =\r\n $inputVariableStore.alternateCurrencyRate;\r\n settingsToSave.scenarioConfiguration =\r\n $inputVariableStore.scenarioConfiguration;\r\n\r\n await factoryStore.saveFactory($factoryStore.currentFactory);\r\n await factoryStore.saveFactoryOrProductSettings(settingsToSave);\r\n inputVariableStore.setSaveStatus(\"savedlocal\");\r\n }\r\n async function saveToCloud(force = false) {\r\n if ($factoryStore.onlinemode == \"offline\") return;\r\n //if (workOffline && !force) return;\r\n inputVariableStore.setSaveStatus(\"savingtocloud\");\r\n try {\r\n await factoryStore.syncall();\r\n showSaved();\r\n } catch (s) {\r\n snackbar(\"error\", \"could not sync to cloud :\" + s);\r\n }\r\n }\r\n\r\n async function cancel() {\r\n await saveToCloud();\r\n // snackbar(\"info\", langTextStore.getText(\"general-all-saved\"));\r\n window.setTimeout(() => {\r\n hideCalc = true;\r\n if (fromProductId != null) {\r\n push(\"#/calculator/product/\" + fromProductId);\r\n return;\r\n }\r\n if (isProductMode) push(\"#/dashboard/products\");\r\n else push(\"#/dashboard/factories\");\r\n }, 340);\r\n }\r\n $: getInputSections(factoryorProductSettings);\r\n let calculatorInputSections = [];\r\n function getInputSections() {\r\n calculatorInputSections =\r\n factoryorProductSettings.subSections &&\r\n factoryorProductSettings.subSections.length > 0 &&\r\n factoryorProductSettings.subSections.filter((ss) => {\r\n return ss.isFactorySection != isProductMode && !ss.isSummarySection;\r\n });\r\n }\r\n\r\n function previous() {\r\n var newIndex = getSubSectionIndex(currentSubSectionNameKey) - 1;\r\n currentSubSectionNameKey =\r\n calculatorInputSections[newIndex].subSectionNameKey;\r\n }\r\n\r\n function next() {\r\n var newIndex = getSubSectionIndex(currentSubSectionNameKey) + 1;\r\n currentSubSectionNameKey =\r\n calculatorInputSections[newIndex].subSectionNameKey;\r\n }\r\n function getSubSectionIndex(subSectionNameKey) {\r\n var foundItem = calculatorInputSections.find(\r\n (s) => s.subSectionNameKey == subSectionNameKey\r\n );\r\n var index = calculatorInputSections.indexOf(foundItem);\r\n return index;\r\n }\r\n\r\n $: isLocked = $factoryStore.currentCalculator.isLocked;\r\n let hideCalc = false;\r\n let bShowWageDistribution = false;\r\n let factoryorProductSettings = { subSections: [] };\r\n let factory = {};\r\n $: getFactorySettingsOrProduct(params);\r\n let calculator = {};\r\n\r\n async function getFactorySettingsOrProduct(params) {\r\n if (\r\n (!params.factorySettingsId || params.factorySettingsId.length == 0) &&\r\n (!params.productId || params.productId.length == 0)\r\n )\r\n return;\r\n\r\n if (params.factorySettingsId && params.factorySettingsId.length > 0) {\r\n factoryorProductSettings = await factoryStore.getFactorySettings(\r\n params.factorySettingsId\r\n );\r\n }\r\n if (params.productId && params.productId.length > 0) {\r\n factoryorProductSettings = await factoryStore.getProduct(\r\n params.productId\r\n );\r\n }\r\n\r\n factory = await factoryStore.getFactory(factoryorProductSettings.factoryId);\r\n if ($factoryStore.onlinemode != \"offline\") {\r\n if (\r\n true ||\r\n !factoryorProductSettings.variables ||\r\n factoryorProductSettings.variables.length == 0\r\n ) {\r\n calculator = await calculatorStore.getCalculator(\r\n factoryorProductSettings.countryVersionId\r\n );\r\n factoryorProductSettings = {\r\n ...calculator,\r\n ...factoryorProductSettings,\r\n };\r\n factoryStore.saveFactoryOrProductSettings(factoryorProductSettings);\r\n\r\n //Todo check calculator version update!\r\n }\r\n }\r\n calculatorStore.update((n) => factoryorProductSettings);\r\n calculatorStore.update((n) =>\r\n Object.assign(n, {\r\n availableLangs: factoryorProductSettings.availableLangs,\r\n })\r\n );\r\n\r\n inputVariableStore.update((n) =>\r\n Object.assign(n, {\r\n scenarioConfiguration: factoryorProductSettings.scenarioConfiguration,\r\n })\r\n );\r\n await tick();\r\n currentSubSectionNameKey = \"basic-settings\";\r\n doCalculations($inputVariableStore);\r\n if(factoryorProductSettings.scenarioConfiguration==null){\r\n factoryorProductSettings.scenarioConfiguration = {\r\n \"scenarios\": [\r\n \"target-wage\",\r\n \"alternate\"\r\n ],\r\n \"scenarioVars\": [\r\n \"Wage\"\r\n ],\r\n \"scenarioVarValues\": {\r\n \"target-wage\": {\r\n \"Wage\": factoryorProductSettings.targetWage || 1\r\n },\r\n \"alternate\": {}\r\n },\r\n \"calculatedScenarios\": []\r\n }\r\n\r\n await factoryStore.saveFactoryOrProductSettings(factoryorProductSettings);\r\n window.location.reload();\r\n return\r\n }\r\n if (!isProductMode) {\r\n doUpgrades(); //dont wait for it\r\n }\r\n if (isProductMode) {\r\n checkFactorySettingVersion();\r\n }\r\n }\r\n\r\n async function doUpgrades() {\r\n await doMinorUpgrade();\r\n await doMajorUpgrade();\r\n await tick();\r\n if (hasPendingMajorUpgrade) {\r\n initiateMajorUpgrade();\r\n }\r\n }\r\n async function doMinorUpgrade() {\r\n\r\n \r\n if ($factoryStore.onlinemode == \"offline\") {\r\n return;\r\n }\r\n\r\n //get new calculator version if found\r\n var url =\r\n \"api/country/getMinorCalculatorVersionUpgrade?countryVersionId=\" +\r\n factoryorProductSettings.countryVersionId;\r\n if (window.location.href.includes(\"test=true\")) {\r\n url += \"&istest=true\";\r\n }\r\n var newMinorCalculatorVersionUpgrade = await util.fetchJson(url);\r\n if (\r\n newMinorCalculatorVersionUpgrade != null &&\r\n newMinorCalculatorVersionUpgrade.variables != null\r\n ) {\r\n var updateText =\r\n \"applied minor update from version \" +\r\n factoryorProductSettings.calculatorVersionNumber +\r\n \" to \" +\r\n newMinorCalculatorVersionUpgrade.calculatorVersionNumber;\r\n await doUpgrade(newMinorCalculatorVersionUpgrade);\r\n snackbar(\"info\", updateText);\r\n }\r\n }\r\n\r\n async function doUpgrade(upgradeVersion) {\r\n clearTimeout(saveDebounceTimer);\r\n var inputSections = factoryorProductSettings.subSections.filter((s) => {\r\n return !s.isSummarySection;\r\n });\r\n var inputVars = [];\r\n for (var inputSection in inputSections) {\r\n for (var thevar in inputSections[inputSection].variables) {\r\n var theActualVar = factoryorProductSettings.variables.find(\r\n (v) =>\r\n v.varNameKey ==\r\n inputSections[inputSection].variables[thevar].nameKey\r\n );\r\n if (!theActualVar.isFunction && !theActualVar.readonly) {\r\n inputVars.push(theActualVar);\r\n }\r\n }\r\n }\r\n\r\n var alternateCurrencyRate = factoryorProductSettings.alternateCurrencyRate;\r\n var alternateCurrencyId = factoryorProductSettings.alternateCurrencyId;\r\n\r\n factoryorProductSettings = Object.assign(\r\n factoryorProductSettings,\r\n upgradeVersion,\r\n { alternateCurrencyId, alternateCurrencyRate }\r\n );\r\n for (var thevar in inputVars) {\r\n var theUpdateVar = factoryorProductSettings.variables.find(\r\n (v) => v.varNameKey == inputVars[thevar].varNameKey\r\n );\r\n {\r\n theUpdateVar.value = inputVars[thevar].value;\r\n }\r\n }\r\n factoryorProductSettings.excelSheetNames = upgradeVersion.excelSheetNames;\r\n factoryorProductSettings.countryVersionId = upgradeVersion.countryVersionId;\r\n factoryorProductSettings.calculatorVersionNumber =\r\n upgradeVersion.calculatorVersionNumber;\r\n factoryStore.update((n) => ({\r\n ...n,\r\n currentCalculator: {\r\n ...n.currentCalculator,\r\n countryVersionId: upgradeVersion.countryVersionId,\r\n currencyId: upgradeVersion.currencyId,\r\n excelSheetNames: upgradeVersion.excelSheetNames,\r\n calculatorVersionNumber: upgradeVersion.calculatorVersionNumber,\r\n },\r\n }));\r\n\r\n console.log($factoryStore.currentCalculator);\r\n await factoryStore.saveFactoryOrProductSettings(factoryorProductSettings);\r\n calculatorStore.update((n) => factoryorProductSettings);\r\n calculatorStore.update((n) =>\r\n Object.assign(n, {\r\n availableLangs: factoryorProductSettings.availableLangs,\r\n })\r\n );\r\n console.log($inputVariableStore);\r\n\r\n inputVariableStore.update((n) =>\r\n Object.assign(n, {\r\n scenarioConfiguration: factoryorProductSettings.scenarioConfiguration,\r\n })\r\n );\r\n doCalculations($inputVariableStore);\r\n await factoryStore.saveFactoryOrProductSettings(factoryorProductSettings);\r\n currentSubSectionNameKey = \"basic-settings\";\r\n }\r\n\r\n $: setWageDistributionVars(factoryorProductSettings);\r\n function setWageDistributionVars(settings) {\r\n if (!settings.variables) return;\r\n const levels = [\r\n \"lessthan1\",\r\n \"between1and2\",\r\n \"between2and3\",\r\n \"between3and4\",\r\n \"morethan4\",\r\n ];\r\n const grades = [\r\n \"Grade1\",\r\n \"Grade2\",\r\n \"Grade3\",\r\n \"Grade4\",\r\n \"Grade5\",\r\n \"Grade6\",\r\n \"Grade7\",\r\n ];\r\n for (var level in levels) {\r\n for (var grade in grades) {\r\n var theActualVar = factoryorProductSettings.variables.find(\r\n (v) =>\r\n v.varNameKey.toLowerCase() ==\r\n (grades[grade] + levels[level]).toLowerCase()\r\n );\r\n if (theActualVar != null) {\r\n //ad to input vars?\r\n }\r\n }\r\n }\r\n }\r\n\r\n var newMajorCalculatorVersionUpgrade = {};\r\n\r\n let hasPendingFactorySettingUpgrade = false;\r\n $: hasPendingMajorUpgrade =\r\n newMajorCalculatorVersionUpgrade != null &&\r\n newMajorCalculatorVersionUpgrade.variables != undefined &&\r\n newMajorCalculatorVersionUpgrade.variables != null &&\r\n newMajorCalculatorVersionUpgrade.variables.length > 0;\r\n async function doMajorUpgrade() {\r\n if ($factoryStore.onlinemode == \"offline\") return;\r\n //get new calculator version if found\r\n var url =\r\n \"api/country/getMajorCalculatorVersionUpgrade?countryVersionId=\" +\r\n factoryorProductSettings.countryVersionId;\r\n if (window.location.href.includes(\"test=true\")) {\r\n url += \"&istest=true\";\r\n }\r\n newMajorCalculatorVersionUpgrade = await util.fetchJson(url);\r\n }\r\n\r\n async function checkFactorySettingVersion() {\r\n if (factoryorProductSettings.isLocked) {\r\n return;\r\n }\r\n var factorySettingChangeDate =\r\n await factoryStore.getFactorySettingsChangeDate(\r\n factoryorProductSettings.factorySettingId\r\n );\r\n if (\r\n factorySettingChangeDate !=\r\n factoryorProductSettings.factorySettingChangeDate\r\n ) {\r\n hasPendingFactorySettingUpgrade = true;\r\n } else {\r\n hasPendingFactorySettingUpgrade = false;\r\n }\r\n if (hasPendingFactorySettingUpgrade) {\r\n await factoryStore.setFactorySettingToCurrentProduct(\r\n factoryorProductSettings.factorySettingId\r\n );\r\n hasPendingFactorySettingUpgrade = false;\r\n snackbar(\"info\", \"factory settings applied\");\r\n }\r\n }\r\n async function initiateFactorySettingUpgrade() {\r\n alert(\"old function\");\r\n // open(Confirm, {\r\n // confirmAction: async () => {\r\n // await factoryStore.setFactorySettingToCurrentProduct(\r\n // factoryorProductSettings.factorySettingId\r\n // );\r\n // hasPendingFactorySettingUpgrade = false;\r\n // snackbar(\"info\", \"factory settings applied\");\r\n // },\r\n // actionButtonTextOverrideLangKey: \"general-label-update-now\",\r\n // cancelButtonTextOverrideLangKey: \"general-label-cancel\",\r\n // titleLangKey: \"general-update-from-changed-factory-setting-title\",\r\n // contentLangKey: \"general-update-from-changed-factory-content\",\r\n // });\r\n }\r\n function initiateMajorUpgrade() {\r\n open(MajorUpgrade, {\r\n newVersion: newMajorCalculatorVersionUpgrade,\r\n oldVersion: factoryorProductSettings,\r\n doUpdate: () => {\r\n doUpgrade(newMajorCalculatorVersionUpgrade);\r\n snackbar(\"info\", \"version updated\");\r\n newMajorCalculatorVersionUpgrade = {};\r\n },\r\n });\r\n }\r\n $: showSuperHelp = $factoryStore.showSuperHelp;\r\n var internalShowSummary = true;\r\n var internalshowSuperHelp = false;\r\n $: toggleSuperHelpDisplay(showSuperHelp);\r\n\r\n function toggleSuperHelpDisplay(bShowSuperHelp) {\r\n if (bShowSuperHelp) {\r\n internalShowSummary = false;\r\n window.setTimeout(() => {\r\n internalshowSuperHelp = true;\r\n }, 400);\r\n } else {\r\n internalshowSuperHelp = false;\r\n window.setTimeout(() => {\r\n internalShowSummary = true;\r\n }, 400);\r\n }\r\n }\r\n\r\n $: summaryOrHelpBackgroundClass = showSuperHelp ? \"bg-primary\" : \"bg-gray-1\";\r\n\r\n function showWageDistribution() {\r\n hideCalc = true;\r\n bShowWageDistribution = true;\r\n }\r\n\r\n function hideWageDistribution() {\r\n var prevSection = currentSubSectionNameKey;\r\n window.setTimeout(() => {\r\n currentSubSectionNameKey = prevSection;\r\n }, 100);\r\n hideCalc = false;\r\n bShowWageDistribution = false;\r\n }\r\n function copyProduct() {\r\n open(Prompt, {\r\n confirmAction: async (name) => {\r\n var newId = await factoryStore.copyProduct(params.productId, name);\r\n snackbar(\"info\", \"product copied\");\r\n push(\"/calculator/product/\" + newId);\r\n },\r\n inputVal:\r\n factoryorProductSettings.name +\r\n \" (\" +\r\n $langTextStore.getText(\"general-label-copy\") +\r\n \" )\",\r\n actionButtonTextOverrideLangKey: \"general-label-copy\",\r\n cancelButtonTextOverrideLangKey: \"general-label-cancel\",\r\n titleLangKey: \"general-copy-product-name\",\r\n contentLangKey: \"general-enter-name-for-new-product\",\r\n });\r\n }\r\n var x = $langTextStore.getText(\"general-label-copy\");\r\n function copyFactory() {\r\n open(Prompt, {\r\n confirmAction: async (name) => {\r\n var newId = await factoryStore.copyFactorySettings(\r\n params.factorySettingsId,\r\n name\r\n );\r\n snackbar(\"info\", \"factory settings copied\");\r\n push(\"/calculator/factorysettings/\" + newId);\r\n },\r\n inputVal:\r\n factoryorProductSettings.name +\r\n \" (\" +\r\n $langTextStore.getText(\"general-label-copy\") +\r\n \" )\",\r\n actionButtonTextOverrideLangKey: \"general-label-copy\",\r\n cancelButtonTextOverrideLangKey: \"general-label-cancel\",\r\n titleLangKey: \"general-copy-factory-setting-name\",\r\n contentLangKey: \"general-enter-name-for-new-version\",\r\n });\r\n }\r\n function createProductFromFactorySetting() {\r\n push(\"/createproduct/\" + params.factorySettingsId);\r\n }\r\n var x = $langTextStore.getText(\"general-label-copy\");\r\n\r\n var fromProductId = null;\r\n $: setProductId($factoryStore.currentCalculator);\r\n\r\n function setProductId(factorySettings) {\r\n if (window.location.href.includes(\"fromproduct\")) {\r\n fromProductId = window.location.href.split(\"fromproduct=\")[1];\r\n }\r\n }\r\n</script>\r\n\r\n<div class=\"container-fluid\" in:fade={{ duration: 1000 }}>\r\n {#if !hideCalc}\r\n <WizardCalculation bind:doCalculations />\r\n <div class=\"row thecalc navigator navigator--dark g-0 mb-0 mt-0\">\r\n <div class=\"col-9\">\r\n <Logo />\r\n {#if isProductMode}\r\n <h2 class=\"h2-border-left\">\r\n {$langTextStore.getText(\"general-product-calculator\")}\r\n </h2>\r\n <span\r\n on:click={() => {\r\n activeSection = \"product\";\r\n setTimeout(\r\n () => (currentSubSectionNameKey = \"basic-settings\"),\r\n 40\r\n );\r\n }}\r\n class:active={activeSection == \"product\"}\r\n class=\"navigator__item pt-4 c-pointer\"\r\n >{$langTextStore.getText(\"general-header-product\")}\r\n </span>\r\n\r\n {#if isLocked}\r\n <span\r\n on:click={() => {\r\n activeSection = \"review-factory\";\r\n setTimeout(\r\n () => (currentSubSectionNameKey = \"basic-settings\"),\r\n 40\r\n );\r\n }}\r\n class:active={activeSection == \"review-factory\"}\r\n class=\"navigator__item pt-4 c-pointer\"\r\n >{$langTextStore.getText(\r\n \"general-header-review-factory-settings\"\r\n )}\r\n </span>\r\n {/if}\r\n {:else}\r\n <h2 class=\"h2-border-left\">\r\n {$langTextStore.getText(\"general-factory-calculator\")}\r\n </h2>\r\n <span\r\n on:click={() => {\r\n activeSection = \"settings\";\r\n setTimeout(\r\n () => (currentSubSectionNameKey = \"basic-settings\"),\r\n 40\r\n );\r\n }}\r\n class:active={activeSection == \"settings\"}\r\n class=\"navigator__item pt-4 c-pointer\"\r\n >{$langTextStore.getText(\"general-header-factory-settings\")}\r\n </span>\r\n {/if}\r\n <span\r\n on:click={() => {\r\n activeSection = \"scenarios\";\r\n }}\r\n class:active={activeSection == \"scenarios\"}\r\n class=\"navigator__item pt-4 c-pointer\"\r\n >\r\n {$langTextStore.getText(\"general-header-scenarios\")}\r\n </span>\r\n {#if isProductMode}\r\n <span\r\n on:click={() => {\r\n activeSection = \"breakdown\";\r\n }}\r\n class:active={activeSection == \"breakdown\"}\r\n class=\"navigator__item pt-4 c-pointer\"\r\n >\r\n {$langTextStore.getText(\"general-header-reports\")}\r\n </span>\r\n {:else}\r\n <span\r\n on:click={() => {\r\n activeSection = \"productlist\";\r\n }}\r\n class:active={activeSection == \"productlist\"}\r\n class=\"navigator__item pt-4 c-pointer\"\r\n >\r\n {$langTextStore.getText(\"general-header-products\")}\r\n </span>\r\n {/if}\r\n <!-- <input\r\n name=\"workoffline\"\r\n type=\"checkbox\"\r\n bind:value={workOffline}\r\n /><label for=\"workoffline\">Work offline</label> -->\r\n\r\n <span id=\"save-status\">\r\n {#if savestatus == \"saving\"}\r\n <IconRecycle />\r\n {$langTextStore.getText(\"general-saving\")} ..\r\n {:else if savestatus == \"savedlocal\"}\r\n <IconCloud />\r\n {$langTextStore.getText(\"general-saved-local\")}\r\n {:else if savestatus == \"saved\"}\r\n <IconCloud />\r\n {$langTextStore.getText(\"general-saved-cloud\")}\r\n {:else if savestatus == \"savingtocloud\"}\r\n <IconCloud />\r\n {$langTextStore.getText(\"general-saving-to-cloud\")}\r\n {:else if savestatus == \"dirty\"}\r\n <IconCloud />\r\n {$langTextStore.getText(\"general-saved-not-saved-yet\")}\r\n {:else}\r\n <IconCloud />\r\n {/if}\r\n </span>\r\n </div>\r\n <div class=\"col-3 text-right \" style=\"white-space:nowrap\">\r\n onlinemode:{$factoryStore.onlinemode}\r\n {#if savestatus == \"savedlocal\" && $factoryStore.onlinemode != \"offline\"}\r\n <button\r\n class=\"btn px-4 py-3 mt-3 w-auto text-transform-upper\"\r\n on:click={saveToCloud}\r\n >{$langTextStore.getText(\"general-save-to-cloud\")}\r\n </button>\r\n {/if}\r\n <button\r\n class=\"btn btn-primary px-4 py-3 mt-3 w-auto text-transform-upper\"\r\n on:click={cancel}\r\n >\r\n {#if fromProductId != null}\r\n {$langTextStore.getText(\"general-label-back-to-product\")}\r\n {:else}\r\n {$langTextStore.getText(\"general-label-exit\")}\r\n {/if}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row detail g-2\">\r\n {#if activeSection == \"settings\" || activeSection == \"review-factory\" || activeSection == \"product\"}\r\n <div class=\"col-12 col-sm-6 col-lg-3 section vh-90\">\r\n <div class=\"section__container h-100 pane\">\r\n <h2 class=\"highlight\">\r\n {#if isProductMode}\r\n {#if activeSection == \"review-factory\"}\r\n {$langTextStore.getText(\"general-header-review-factory\")}\r\n {:else}\r\n {factoryorProductSettings.name}<br />\r\n <span\r\n >{factoryorProductSettings.brand}\r\n {factoryorProductSettings.style}</span\r\n >\r\n {/if}\r\n {:else}\r\n {$factoryStore.currentFactory.name}<br />\r\n <span>{factoryorProductSettings.name}</span>\r\n {/if}\r\n <!-- <span class=\"action-list\">\r\n {#if isProductMode}\r\n <IconCopy\r\n on:click={copyProduct}\r\n icontitle={$langTextStore.getText(\r\n \"general-label-make-a-copy-product\"\r\n )}\r\n />\r\n\r\n <IconDownload\r\n on:click={() => {\r\n alert(\"work in progress\");\r\n }}\r\n icontitle={$langTextStore.getText(\r\n \"general-label-download-product\"\r\n )}\r\n />\r\n {:else}\r\n <IconCopy\r\n on:click={copyFactory}\r\n icontitle={$langTextStore.getText(\r\n \"general-label-factory-setting-copy\"\r\n )}\r\n />\r\n\r\n <IconDownload\r\n on:click={() => {\r\n alert(\"work in progress\");\r\n }}\r\n icontitle={$langTextStore.getText(\r\n \"general-label-factory-setting-download\"\r\n )}\r\n />\r\n <IconPlus\r\n on:click={createProductFromFactorySetting}\r\n icontitle={$langTextStore.getText(\r\n \"general-label-factory-setting-make-product\"\r\n )}\r\n />\r\n {/if}\r\n </span> -->\r\n </h2>\r\n\r\n <WizardSectionSelector\r\n isFactory={!isProductMode || activeSection == \"review-factory\"}\r\n bind:currentSubSectionNameKey\r\n />\r\n\r\n <div class=\"position-absolute bottom-0 pb-3 text-small prop-list\">\r\n <!-- {#if isProductMode}\r\n \r\n {#if factoryorProductSettings.factorySettingId && factoryorProductSettings.factorySettingId.length > 0}\r\n <p class=\"prop-list__item\">\r\n <span>Factory Setting</span><br />\r\n\r\n {#await factoryStore.getFactoryAndVersionName(factoryorProductSettings.factorySettingId) then factoryinfo}\r\n {factoryinfo}\r\n  \r\n {#if !isLocked}\r\n <a\r\n class=\"col-1\"\r\n id=\"logo\"\r\n title=\"View {factoryinfo}\"\r\n alt=\"View {factoryinfo}\"\r\n href=\"/calculator/factorysettings/{$factoryStore\r\n .currentCalculator\r\n .factorySettingId}?fromproduct={$factoryStore\r\n .currentCalculator\r\n .uuid}\"\r\n use:link><GoTo /></a\r\n >\r\n {/if}\r\n {/await}\r\n </p>\r\n {/if}\r\n {:else} -->\r\n <p class=\"mb-0 font-weight-bold\">\r\n {#if hasPendingMajorUpgrade}\r\n <span\r\n class=\"text-primary ms-3 me-3 c-pointer\"\r\n title=\"Major update available!\"\r\n on:click={initiateMajorUpgrade}\r\n >\r\n <Pluscirkel />\r\n </span>\r\n {/if}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n {#if activeSection != \"breakdown\" && activeSection != \"scenarios\"}\r\n <div class=\"col-12 col-sm-6 col-lg-3 section vh-90\">\r\n <div class=\"section__container bg-gray-8 h-100 pane\">\r\n <WizardInputSection\r\n readonly={isLocked}\r\n on:change={save}\r\n on:next={next}\r\n on:saveToCloud={saveToCloud}\r\n on:showWageDistribution={showWageDistribution}\r\n on:previous={previous}\r\n isFactory={!isProductMode || activeSection == \"review-factory\"}\r\n bind:currentSubSectionNameKey\r\n />\r\n\r\n {#if currentSubSectionNameKey && calculatorInputSections && factoryorProductSettings.subSections && factoryorProductSettings.subSections.length > 1}\r\n {#if !(currentSubSectionNameKey == calculatorInputSections[calculatorInputSections.length - 1].subSectionNameKey)}\r\n <p class=\"mt-3 text-right\">\r\n <span class=\"link\" on:click={next}\r\n >{$langTextStore.getText(\r\n \"general-label-go-next-step\"\r\n )}</span\r\n >\r\n </p>\r\n {/if}\r\n {/if}\r\n </div>\r\n </div>\r\n {/if}\r\n {:else if activeSection == \"scenarios\"}\r\n <ScenarioTool\r\n on:change={() => {\r\n save();\r\n }}\r\n />\r\n {:else if activeSection == \"productlist\"}\r\n <ProductListForFactory\r\n factorySettingId={factoryorProductSettings.uuid}\r\n />\r\n {:else}\r\n <BreakDownSummary on:change={save} />\r\n {/if}\r\n {#if activeSection != \"breakdown\" && activeSection != \"productlist\"}\r\n <div\r\n class=\"col-12 {activeSection == 'scenarios'\r\n ? 'col-lg-7'\r\n : 'col-lg-6'} section vh-90 \"\r\n >\r\n <div\r\n class=\"section__container pane h-100 {internalshowSuperHelp\r\n ? 'bg-primary'\r\n : ''}\"\r\n >\r\n {#if internalShowSummary}\r\n <WizardSummarySection\r\n on:change={save}\r\n bind:activeSection\r\n isFactory={!isProductMode || activeSection == \"review-factory\"}\r\n />\r\n {/if}\r\n\r\n {#if internalshowSuperHelp}\r\n <WizardSuperHelpSection bind:showSuperHelp bind:activeSection />\r\n {/if}\r\n </div>\r\n </div>\r\n {/if}\r\n </div>\r\n {/if}\r\n {#if bShowWageDistribution}\r\n <Wagedistribution on:close={hideWageDistribution} on:change={save} />\r\n {/if}\r\n <div class=\"row mt-3 calc-version\">\r\n <div class=\"col-12\">\r\n <span>{$langTextStore.getText(\"general-label-calculator-version\")}:</span>\r\n {$calculatorStore.country}\r\n {$calculatorStore.calculatorVersionNumber}\r\n </div>\r\n </div>\r\n</div>\r\n","<script>\r\n import Router from \"svelte-spa-router\";\r\n import Calculator from \"./Calculator.svelte\";\r\n export let params='';\r\n params = params\r\n\r\n const routes = {\r\n \"/Product/:productId\": Calculator,\r\n \"/FactorySettings/:factorySettingsId\": Calculator,\r\n };\r\n</script>\r\n\r\n<Router {routes} prefix=\"/calculator\" />\r\n","<script>\r\n import { loggedInUserStore } from \"./../store/loggedInUser.js\";\r\n import { langTextStore } from \"./../store/langtexts.js\";\r\n import { countryStore } from \"./../store/countries.js\";\r\n import { factoryStore } from \"../store/factories.js\";\r\n let factory = {};\r\n\r\n let jsonString;\r\n async function createProduct() {\r\n let productSetting = JSON.parse(jsonString);\r\n productSetting.countryId = factory.countryId;\r\n productSetting.userId = $loggedInUserStore.uuid;\r\n productSetting.changeDate = new Date().toJSON();\r\n factory.name = productSetting.factoryName;\r\n factory.changeDate = new Date().toJSON();\r\n factory.userId = $loggedInUserStore.uuid;\r\n let factoryId = await factoryStore.saveFactory(factory);\r\n var factorySetting = { ...productSetting };\r\n factorySetting.changeDate = new Date().toJSON();\r\n factorySetting.factoryId = factoryId;\r\n factorySetting.uuid = null;\r\n factorySetting.factorySettingId = null;\r\n var factorySettingId = await factoryStore.saveFactoryOrProductSettings(\r\n factorySetting\r\n );\r\n productSetting.uuid = null;\r\n productSetting.factoryId = factoryId;\r\n productSetting.factorySettingId = factorySettingId;\r\n var factorySettingId = await factoryStore.saveFactoryOrProductSettings(\r\n productSetting\r\n );\r\n alert(\"done\");\r\n\r\n window.open(\"/\");\r\n }\r\n</script>\r\n\r\n<label for=\"fixedId\">{$langTextStore.getText(\"general-label-country\")} </label>\r\n<select\r\n bind:value={factory.countryId}\r\n class=\"form-control mb-3\"\r\n placeholder=\"asd\"\r\n>\r\n <option>{$langTextStore.getText(\"general-label-choose-a-country\")}</option>\r\n {#each $countryStore as country}\r\n <option value={country.id}>{country.nameKey} </option>\r\n {/each}\r\n</select>\r\n\r\n<label>JSON Content</label>\r\n<textarea bind:value={jsonString} />\r\n\r\n<button on:click={createProduct}>create product</button>\r\n","<script>\r\n import Modal from \"./Modal.svelte\";\r\n import Router from \"svelte-spa-router\";\r\n import { link, push } from \"svelte-spa-router\";\r\n import { slide, blur, fade, fly } from \"svelte/transition\";\r\n import Dashboard from \"./Dashboard/Dashboard.svelte\";\r\n import CreateProduct from \"./Dashboard/CreateProduct.svelte\";\r\n import CreateFactory from \"./Dashboard/CreateFactory.svelte\";\r\n import WageDistribution from \"./Calculator/WageDistribution.svelte\";\r\n import { setContext } from \"svelte\";\r\n import { loggedInUserStore } from \"./store/loggedInUser.js\";\r\n import { factoryStore } from \"./store/factories.js\";\r\n import { langTextStore } from \"./store/langtexts.js\";\r\n import CalculatorRoot from \"./Calculator/CalculatorRoot.svelte\";\r\n import ProductUpload from \"./Dashboard/ProductUpload.svelte\";\r\n //export let params\r\n let showInfoMessage = false;\r\n export let params = \"\";\r\n params = params;\r\n let msgIsSuccess = false;\r\n let infoMessage;\r\n $: loggedInEmail = $loggedInUserStore.email;\r\n factoryStore.getCurrencies();\r\n const snackbar = (type, message) => {\r\n infoMessage = message;\r\n if (type == \"error\") {\r\n msgIsSuccess = false;\r\n } else {\r\n msgIsSuccess = true;\r\n }\r\n showInfoMessage = true;\r\n window.setTimeout(() => {\r\n showInfoMessage = false;\r\n }, 2500);\r\n };\r\n\r\n setContext(\"app\", { snackbar });\r\n\r\n $: redirectToStartPageIfNeeded($loggedInUserStore);\r\n\r\n async function redirectToStartPageIfNeeded(theuser) {\r\n if (theuser && theuser.uuid && theuser.uuid.length > 0) {\r\n if (!theuser.seenTour) {\r\n if (window.location.href.includes(\"settings\")) {\r\n window.setTimeout(() => {\r\n window.open(\"/fullscreen/tour\", \"_self\");\r\n }, 50);\r\n } else {\r\n push(\"/fullscreen/tour\");\r\n }\r\n return;\r\n }\r\n // var hasFactories = await factoryStore.hasFactories();\r\n\r\n // if (!hasFactories) {\r\n // push(\"/createfactory\");\r\n // return;\r\n // }\r\n }\r\n }\r\n\r\n function logout() {\r\n if (showInfoMessage) {\r\n window.setTimeout(() => {\r\n loggedInUserStore.logout();\r\n window.setTimeout(() => {\r\n window.open(\"/\", \"_self\");\r\n }, 500);\r\n }, 500);\r\n } else {\r\n loggedInUserStore.logout();\r\n window.setTimeout(() => {\r\n window.open(\"/\", \"_self\");\r\n }, 500);\r\n }\r\n }\r\n\r\n const routes = {\r\n \"/\": Dashboard,\r\n \"/Dashboard\": Dashboard,\r\n \"/Dashboard/:sectionName\": Dashboard,\r\n \"/wagedistribution/:factorySettingsId\": WageDistribution,\r\n \"/CreateFactory\": CreateFactory,\r\n \"/createproduct/\": CreateProduct,\r\n \"/createproduct/:factorySettingsId\": CreateProduct,\r\n \"/Calculator/*\": CalculatorRoot,\r\n \"/ProductUpload/\": ProductUpload,\r\n };\r\n</script>\r\n\r\n<Modal closeOnOuterClick={false}>\r\n {#if showInfoMessage}\r\n {#if msgIsSuccess}\r\n <div\r\n class=\"snackbar snackbar-success\"\r\n role=\"alert\"\r\n transition:fly|local={{ y: 200, duration: 600 }}\r\n >\r\n <!-- <button aria-label=\"\" class=\"close\" data-dismiss=\"alert\" /> -->\r\n <!-- <strong>{$langTextStore.getText(\"general-labels-information\")}:</strong> -->\r\n {@html infoMessage}\r\n </div>\r\n {:else}\r\n <div\r\n class=\"snackbar snackbar-danger\"\r\n role=\"alert\"\r\n transition:fly|local={{ y: 200, duration: 100 }}\r\n >\r\n <!-- <button aria-label=\"\" class=\"close\" data-dismiss=\"alert\" />\r\n <strong>{$langTextStore.getText(\"general-labels-error\")}:</strong> -->\r\n {@html infoMessage}\r\n </div>\r\n {/if}\r\n {/if}\r\n\r\n <div\r\n class:hidden={!$factoryStore.isBusySync}\r\n class:flexcenter={$factoryStore.isBusySync}\r\n >\r\n Please wait while we sync your data from the server...\r\n </div>\r\n\r\n <div class:hidden={$factoryStore.isBusySync}>\r\n <Router {routes} />\r\n </div>\r\n</Modal>\r\n\r\n<style>\r\n :global(.fakelink) {\r\n cursor: pointer;\r\n display: block;\r\n pointer-events: fill;\r\n }\r\n .hidden {\r\n display: none;\r\n }\r\n .flexcenter {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 100vh;\r\n }\r\n</style>\r\n","<script>\r\n import { loggedInUserStore } from \"../store/loggedInUser.js\";\r\n import { langTextStore } from \"../store/langtexts.js\";\r\n import { push } from \"svelte-spa-router\";\r\n import { fade, fly } from \"svelte/transition\";\r\n import { tick } from \"svelte\";\r\n import LangSelector from \"../SharedComponents/LangSelector.svelte\";\r\n import { cubicOut, sineOut } from \"svelte/easing\";\r\n\r\n let transitionTime = 300;\r\n let transitionFactor = 3;\r\n async function seenTour() {\r\n await loggedInUserStore.seenTour();\r\n await tick();\r\n push(\"/\");\r\n }\r\n async function hideTour() {\r\n await loggedInUserStore.hideTour();\r\n push(\"/\");\r\n }\r\n let page = 1;\r\n\r\n function next() {\r\n let nextPage = page + 1;\r\n page = -1;\r\n setTimeout(() => (page = nextPage), transitionTime + 100);\r\n }\r\n\r\n function prev() {\r\n let nextPage = page - 1;\r\n page = -1;\r\n setTimeout(() => (page = nextPage), transitionTime + 100);\r\n }\r\n</script>\r\n\r\n<LangSelector\r\n extraClass=\"lang-switcher-dashboard\"\r\n langs={$langTextStore.allLangs}\r\n showChoice={false}\r\n on:langChosen={() => {}}\r\n/>\r\n<div\r\n class=\"container tour align-vertical-middle \"\r\n in:fly={{ delay: 200, y: 250, duration: 1600, easing: sineOut }}\r\n out:fade={{ duration: 200 }}\r\n>\r\n <div in:fade={{ delay: 800 }}>\r\n <div class=\"row g-2 \">\r\n <div\r\n class=\"col-6 offset-md-1 col-md-4 offset-lg-2 col-lg-3 position-relative tour__slide \"\r\n >\r\n <div class=\"h-100 pane bg-gray-8 p-4 text-center box-shadow\">\r\n <img\r\n src=\"/img/logo.svg\"\r\n class=\"w-75 mb-5 align-vertical-middle\"\r\n alt={$langTextStore.getText(\"general-label-app-title\")}\r\n title={$langTextStore.getText(\"general-label-app-title\")}\r\n />\r\n </div>\r\n <div class=\"position-absolute bottom-0 w-100 text-center\">\r\n <span\r\n on:click={hideTour}\r\n class=\"btn btn-white-outline width-unset mb-4\"\r\n >{$langTextStore.getText(\"general-label-skip-tour\")}</span\r\n >\r\n </div>\r\n </div>\r\n <div class=\"col-6 col-lg-5 position-relative\">\r\n <div class=\"h-100 bg-white p-4 pane \">\r\n {#if page == 1}\r\n <div\r\n in:fade={{ duration: transitionTime * transitionFactor }}\r\n out:fade|local={{ duration: transitionTime }}\r\n >\r\n <h2 class=\"intro mt-0\">\r\n {@html $langTextStore.getText(\"tour-page1-title\")}\r\n </h2>\r\n {@html $langTextStore.getText(\"tour-page1-content\")}\r\n </div>\r\n {/if}\r\n {#if page == 2}\r\n <div\r\n in:fade|local={{ duration: transitionTime * transitionFactor }}\r\n out:fade|local={{ duration: transitionTime }}\r\n >\r\n <h2 class=\"intro mt-0\">\r\n {@html $langTextStore.getText(\"tour-page2-title\")}\r\n </h2>\r\n {@html $langTextStore.getText(\"tour-page2-content\")}\r\n </div>\r\n {/if}\r\n {#if page == 3}\r\n <div\r\n in:fade|local={{ duration: transitionTime * transitionFactor }}\r\n out:fade|local={{ duration: transitionTime }}\r\n >\r\n <h2 class=\"intro mt-0\">\r\n {@html $langTextStore.getText(\"tour-page3-title\")}\r\n </h2>\r\n {@html $langTextStore.getText(\"tour-page3-content\")}\r\n </div>\r\n {/if}\r\n {#if page == 4}\r\n <div\r\n in:fade|local={{ duration: transitionTime * transitionFactor }}\r\n out:fade|local={{ duration: transitionTime }}\r\n >\r\n <h2 class=\"intro mt-0\">\r\n {@html $langTextStore.getText(\"tour-page4-title\")}\r\n </h2>\r\n {@html $langTextStore.getText(\"tour-page4-content\")}\r\n </div>\r\n {/if}\r\n {#if page == 5}\r\n <div\r\n in:fade|local={{ duration: transitionTime * transitionFactor }}\r\n out:fade|local={{ duration: transitionTime }}\r\n >\r\n <h2 class=\"intro mt-0\">\r\n {@html $langTextStore.getText(\"tour-pagethanks-title\")}\r\n </h2>\r\n\r\n {@html $langTextStore.getText(\"tour-pagethanks-content\")}\r\n </div>\r\n {/if}\r\n </div>\r\n <div class=\"position-absolute bottom-0 w-100 text-center\">\r\n {#if page != 1}\r\n <button class=\"btn btn-gray w-25 mb-4\" on:click={prev}>\r\n {$langTextStore.getText(\"general-label-prev\")}\r\n </button>\r\n {:else}\r\n <button class=\"btn btn-gray w-25 mb-4\" style=\"visibility:hidden\" />\r\n {/if}\r\n {#if page == 5}\r\n <button class=\"btn btn-secondary w-25 mb-4\" on:click={seenTour}\r\n >{$langTextStore.getText(\r\n \"general-label-never-show-again\"\r\n )}</button\r\n >\r\n {:else}\r\n <button class=\"btn btn-primary w-25 mb-4\" on:click={next}\r\n >{$langTextStore.getText(\"general-label-next\")}</button\r\n >\r\n {/if}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"col-12 text-center mt-5\"\r\n in:fade={{ delay: 1500, duration: 400 }}\r\n >\r\n <span\r\n class=\"dot\"\r\n class:active={page == 1}\r\n on:click={() => {\r\n page = 1;\r\n }}\r\n />\r\n <span\r\n class=\"dot\"\r\n class:active={page == 2}\r\n on:click={() => {\r\n page = 2;\r\n }}\r\n />\r\n <span\r\n class=\"dot\"\r\n class:active={page == 3}\r\n on:click={() => {\r\n page = 3;\r\n }}\r\n />\r\n <span\r\n class=\"dot\"\r\n class:active={page == 4}\r\n on:click={() => {\r\n page = 4;\r\n }}\r\n />\r\n <span\r\n class=\"dot\"\r\n class:active={page == 5}\r\n on:click={() => {\r\n page = 5;\r\n }}\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n<svelte:head>\r\n <style>\r\n .dot {\r\n cursor: pointer;\r\n }\r\n .lang-switcher-dashboard.lang-switcher .selector,\r\n .text-gray-5 {\r\n color: #fff;\r\n }\r\n </style>\r\n</svelte:head>\r\n","<script>\r\n import { push } from \"svelte-spa-router\";\r\n export let params;\r\n function Dashboard() {\r\n push(\"/dashboard/factories\");\r\n }\r\n\r\n function CreateProduct() {\r\n push(\"/createproduct/\" + params.factorySettingsId);\r\n }\r\n</script>\r\n\r\n<div style=\"width:400px; height:400px; background-color:#F00;color:white\">\r\n factory saved\r\n <btn class=\"btn btn-primary\" on:click={Dashboard}>Dashboard</btn>\r\n <btn class=\"btn btn-primary\" on:click={CreateProduct}>Create product</btn>\r\n</div>\r\n","<script>\r\n import { push } from \"svelte-spa-router\";\r\n //export let params;\r\n function Dashboard() {\r\n push(\"/dashboard/products\");\r\n }\r\n</script>\r\n\r\n<div style=\"width:400px; height:400px; background-color:#F00;color:white\">\r\n product saved\r\n <btn class=\"btn btn-primary\" on:click={Dashboard}>Dashboard</btn>\r\n</div>\r\n","<script>\r\nimport Router from 'svelte-spa-router'\r\nimport Tour from './Fullscreen/Tour.svelte'\r\nimport CreateFactory from './Dashboard/CreateFactory.svelte'\r\nimport FactorySaved from './Fullscreen/FactorySaved.svelte';\r\nimport ProductSaved from './Fullscreen/ProductSaved.svelte';\r\n\r\n// Routes for the \"inner router\"\r\n// Note that we have a \"prefix\" property for this nested router\r\nconst routes = {\r\n '/Tour': Tour,\r\n '/FactorySaved/:factorySettingsId':FactorySaved,\r\n '/ProductSaved':ProductSaved,\r\n}\r\n</script>\r\n<Router {routes} prefix=\"/fullscreen\" />","<script>\r\n import { loggedInUserStore } from \"./store/loggedInUser.js\";\r\n import { langTextStore } from \"./store/langtexts.js\";\r\n import LangSelector from \"./SharedComponents/LangSelector.svelte\";\r\n import { fade, fly } from \"svelte/transition\";\r\n import { cubicOut, cubicIn, sineOut } from \"svelte/easing\";\r\n\r\n let email = \"\";\r\n if (!(window.location.href.indexOf(\"resetpassword\") > 0)) {\r\n try {\r\n email =\r\n localStorage.getItem(\"loggedInUser\") &&\r\n JSON.parse(localStorage.getItem(\"loggedInUser\")).email;\r\n } catch (s) {}\r\n }\r\n let password = \"\";\r\n let mode = \"login\";\r\n let country = \"\";\r\n let functionName = \"\";\r\n let organizationType = \"\";\r\n var countries = [\r\n { name: \"Choose\" },\r\n { name: \"Afghanistan\" },\r\n { name: \"Åland Islands\" },\r\n { name: \"Albania\" },\r\n { name: \"Algeria\" },\r\n { name: \"American Samoa\" },\r\n { name: \"Andorra\" },\r\n { name: \"Angola\" },\r\n { name: \"Anguilla\" },\r\n { name: \"Antarctica\" },\r\n { name: \"Antigua and Barbuda\" },\r\n { name: \"Argentina\" },\r\n { name: \"Armenia\" },\r\n { name: \"Aruba\" },\r\n { name: \"Australia\" },\r\n { name: \"Austria\" },\r\n { name: \"Azerbaijan\" },\r\n { name: \"Bahamas\" },\r\n { name: \"Bahrain\" },\r\n { name: \"Bangladesh\" },\r\n { name: \"Barbados\" },\r\n { name: \"Belarus\" },\r\n { name: \"Belgium\" },\r\n { name: \"Belize\" },\r\n { name: \"Benin\" },\r\n { name: \"Bermuda\" },\r\n { name: \"Bhutan\" },\r\n { name: \"Bolivia (Plurinational State of)\" },\r\n { name: \"Bonaire, Sint Eustatius and Saba\" },\r\n { name: \"Bosnia and Herzegovina\" },\r\n { name: \"Botswana\" },\r\n { name: \"Bouvet Island\" },\r\n { name: \"Brazil\" },\r\n { name: \"British Indian Ocean Territory\" },\r\n { name: \"United States Minor Outlying Islands\" },\r\n { name: \"Virgin Islands (British)\" },\r\n { name: \"Virgin Islands (U.S.)\" },\r\n { name: \"Brunei Darussalam\" },\r\n { name: \"Bulgaria\" },\r\n { name: \"Burkina Faso\" },\r\n { name: \"Burundi\" },\r\n { name: \"Cambodia\" },\r\n { name: \"Cameroon\" },\r\n { name: \"Canada\" },\r\n { name: \"Cabo Verde\" },\r\n { name: \"Cayman Islands\" },\r\n { name: \"Central African Republic\" },\r\n { name: \"Chad\" },\r\n { name: \"Chile\" },\r\n { name: \"China\" },\r\n { name: \"Christmas Island\" },\r\n { name: \"Cocos (Keeling) Islands\" },\r\n { name: \"Colombia\" },\r\n { name: \"Comoros\" },\r\n { name: \"Congo\" },\r\n { name: \"Congo (Democratic Republic of the)\" },\r\n { name: \"Cook Islands\" },\r\n { name: \"Costa Rica\" },\r\n { name: \"Croatia\" },\r\n { name: \"Cuba\" },\r\n { name: \"Curaçao\" },\r\n { name: \"Cyprus\" },\r\n { name: \"Czech Republic\" },\r\n { name: \"Denmark\" },\r\n { name: \"Djibouti\" },\r\n { name: \"Dominica\" },\r\n { name: \"Dominican Republic\" },\r\n { name: \"Ecuador\" },\r\n { name: \"Egypt\" },\r\n { name: \"El Salvador\" },\r\n { name: \"Equatorial Guinea\" },\r\n { name: \"Eritrea\" },\r\n { name: \"Estonia\" },\r\n { name: \"Ethiopia\" },\r\n { name: \"Falkland Islands (Malvinas)\" },\r\n { name: \"Faroe Islands\" },\r\n { name: \"Fiji\" },\r\n { name: \"Finland\" },\r\n { name: \"France\" },\r\n { name: \"French Guiana\" },\r\n { name: \"French Polynesia\" },\r\n { name: \"French Southern Territories\" },\r\n { name: \"Gabon\" },\r\n { name: \"Gambia\" },\r\n { name: \"Georgia\" },\r\n { name: \"Germany\" },\r\n { name: \"Ghana\" },\r\n { name: \"Gibraltar\" },\r\n { name: \"Greece\" },\r\n { name: \"Greenland\" },\r\n { name: \"Grenada\" },\r\n { name: \"Guadeloupe\" },\r\n { name: \"Guam\" },\r\n { name: \"Guatemala\" },\r\n { name: \"Guernsey\" },\r\n { name: \"Guinea\" },\r\n { name: \"Guinea-Bissau\" },\r\n { name: \"Guyana\" },\r\n { name: \"Haiti\" },\r\n { name: \"Heard Island and McDonald Islands\" },\r\n { name: \"Holy See\" },\r\n { name: \"Honduras\" },\r\n { name: \"Hong Kong\" },\r\n { name: \"Hungary\" },\r\n { name: \"Iceland\" },\r\n { name: \"India\" },\r\n { name: \"Indonesia\" },\r\n { name: \"Côte d'Ivoire\" },\r\n { name: \"Iran (Islamic Republic of)\" },\r\n { name: \"Iraq\" },\r\n { name: \"Ireland\" },\r\n { name: \"Isle of Man\" },\r\n { name: \"Israel\" },\r\n { name: \"Italy\" },\r\n { name: \"Jamaica\" },\r\n { name: \"Japan\" },\r\n { name: \"Jersey\" },\r\n { name: \"Jordan\" },\r\n { name: \"Kazakhstan\" },\r\n { name: \"Kenya\" },\r\n { name: \"Kiribati\" },\r\n { name: \"Kuwait\" },\r\n { name: \"Kyrgyzstan\" },\r\n { name: \"Lao People's Democratic Republic\" },\r\n { name: \"Latvia\" },\r\n { name: \"Lebanon\" },\r\n { name: \"Lesotho\" },\r\n { name: \"Liberia\" },\r\n { name: \"Libya\" },\r\n { name: \"Liechtenstein\" },\r\n { name: \"Lithuania\" },\r\n { name: \"Luxembourg\" },\r\n { name: \"Macao\" },\r\n { name: \"Macedonia (the former Yugoslav Republic of)\" },\r\n { name: \"Madagascar\" },\r\n { name: \"Malawi\" },\r\n { name: \"Malaysia\" },\r\n { name: \"Maldives\" },\r\n { name: \"Mali\" },\r\n { name: \"Malta\" },\r\n { name: \"Marshall Islands\" },\r\n { name: \"Martinique\" },\r\n { name: \"Mauritania\" },\r\n { name: \"Mauritius\" },\r\n { name: \"Mayotte\" },\r\n { name: \"Mexico\" },\r\n { name: \"Micronesia (Federated States of)\" },\r\n { name: \"Moldova (Republic of)\" },\r\n { name: \"Monaco\" },\r\n { name: \"Mongolia\" },\r\n { name: \"Montenegro\" },\r\n { name: \"Montserrat\" },\r\n { name: \"Morocco\" },\r\n { name: \"Mozambique\" },\r\n { name: \"Myanmar\" },\r\n { name: \"Namibia\" },\r\n { name: \"Nauru\" },\r\n { name: \"Nepal\" },\r\n { name: \"Netherlands\" },\r\n { name: \"New Caledonia\" },\r\n { name: \"New Zealand\" },\r\n { name: \"Nicaragua\" },\r\n { name: \"Niger\" },\r\n { name: \"Nigeria\" },\r\n { name: \"Niue\" },\r\n { name: \"Norfolk Island\" },\r\n { name: \"Korea (Democratic People's Republic of)\" },\r\n { name: \"Northern Mariana Islands\" },\r\n { name: \"Norway\" },\r\n { name: \"Oman\" },\r\n { name: \"Pakistan\" },\r\n { name: \"Palau\" },\r\n { name: \"Palestine, State of\" },\r\n { name: \"Panama\" },\r\n { name: \"Papua New Guinea\" },\r\n { name: \"Paraguay\" },\r\n { name: \"Peru\" },\r\n { name: \"Philippines\" },\r\n { name: \"Pitcairn\" },\r\n { name: \"Poland\" },\r\n { name: \"Portugal\" },\r\n { name: \"Puerto Rico\" },\r\n { name: \"Qatar\" },\r\n { name: \"Republic of Kosovo\" },\r\n { name: \"Réunion\" },\r\n { name: \"Romania\" },\r\n { name: \"Russian Federation\" },\r\n { name: \"Rwanda\" },\r\n { name: \"Saint Barthélemy\" },\r\n { name: \"Saint Helena, Ascension and Tristan da Cunha\" },\r\n { name: \"Saint Kitts and Nevis\" },\r\n { name: \"Saint Lucia\" },\r\n { name: \"Saint Martin (French part)\" },\r\n { name: \"Saint Pierre and Miquelon\" },\r\n { name: \"Saint Vincent and the Grenadines\" },\r\n { name: \"Samoa\" },\r\n { name: \"San Marino\" },\r\n { name: \"Sao Tome and Principe\" },\r\n { name: \"Saudi Arabia\" },\r\n { name: \"Senegal\" },\r\n { name: \"Serbia\" },\r\n { name: \"Seychelles\" },\r\n { name: \"Sierra Leone\" },\r\n { name: \"Singapore\" },\r\n { name: \"Sint Maarten (Dutch part)\" },\r\n { name: \"Slovakia\" },\r\n { name: \"Slovenia\" },\r\n { name: \"Solomon Islands\" },\r\n { name: \"Somalia\" },\r\n { name: \"South Africa\" },\r\n { name: \"South Georgia and the South Sandwich Islands\" },\r\n { name: \"Korea (Republic of)\" },\r\n { name: \"South Sudan\" },\r\n { name: \"Spain\" },\r\n { name: \"Sri Lanka\" },\r\n { name: \"Sudan\" },\r\n { name: \"Suriname\" },\r\n { name: \"Svalbard and Jan Mayen\" },\r\n { name: \"Swaziland\" },\r\n { name: \"Sweden\" },\r\n { name: \"Switzerland\" },\r\n { name: \"Syrian Arab Republic\" },\r\n { name: \"Taiwan\" },\r\n { name: \"Tajikistan\" },\r\n { name: \"Tanzania, United Republic of\" },\r\n { name: \"Thailand\" },\r\n { name: \"Timor-Leste\" },\r\n { name: \"Togo\" },\r\n { name: \"Tokelau\" },\r\n { name: \"Tonga\" },\r\n { name: \"Trinidad and Tobago\" },\r\n { name: \"Tunisia\" },\r\n { name: \"Turkey\" },\r\n { name: \"Turkmenistan\" },\r\n { name: \"Turks and Caicos Islands\" },\r\n { name: \"Tuvalu\" },\r\n { name: \"Uganda\" },\r\n { name: \"Ukraine\" },\r\n { name: \"United Arab Emirates\" },\r\n { name: \"United Kingdom of Great Britain and Northern Ireland\" },\r\n { name: \"United States of America\" },\r\n { name: \"Uruguay\" },\r\n { name: \"Uzbekistan\" },\r\n { name: \"Vanuatu\" },\r\n { name: \"Venezuela (Bolivarian Republic of)\" },\r\n { name: \"Viet Nam\" },\r\n { name: \"Wallis and Futuna\" },\r\n { name: \"Western Sahara\" },\r\n { name: \"Yemen\" },\r\n { name: \"Zambia\" },\r\n { name: \"Zimbabwe\" },\r\n ];\r\n\r\n let step = \"step1\";\r\n let token = \"\";\r\n let acceptTerms = false;\r\n let errormessage = \"\";\r\n if (window.location.href.indexOf(\"resetpassword\") > 0) {\r\n mode = \"forgotpassword\";\r\n step = \"step2\";\r\n email = getParameterByName(\"email\");\r\n token = getParameterByName(\"token\");\r\n }\r\n if (window.location.href.indexOf(\"register\") > 0) {\r\n mode = \"register\";\r\n step = \"step2\";\r\n email = getParameterByName(\"email\");\r\n token = getParameterByName(\"token\");\r\n }\r\n var y = getParameterByName(\"email\");\r\n async function login() {\r\n errormessage = \"\";\r\n\r\n email = email.trim();\r\n if (email.length == 0) {\r\n alert($langTextStore.getText(\"general-warning-email-required\"));\r\n return;\r\n }\r\n var result = await loggedInUserStore.login(email, password);\r\n if (!result.success) {\r\n errormessage = $langTextStore.getText(result.errormessage);\r\n }\r\n }\r\n\r\n function getParameterByName(name, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return \"\";\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n }\r\n async function registerstep1() {\r\n if (!acceptTerms) {\r\n errormessage = $langTextStore.getText(\"please-accept-terms\");\r\n return;\r\n }\r\n errormessage = \"\";\r\n email = email.trim();\r\n if (email.length == 0) {\r\n alert($langTextStore.getText(\"general-warning-email-required\"));\r\n return;\r\n }\r\n var result = await loggedInUserStore.registerstep1({\r\n email: email,\r\n functionName,\r\n country,\r\n organizationType,\r\n });\r\n if (!result.success) {\r\n errormessage = $langTextStore.getText(result.errormessage);\r\n return;\r\n }\r\n mode = \"registersent\";\r\n }\r\n async function registerstep2() {\r\n errormessage = \"\";\r\n email = email.trim();\r\n if (email.length == 0) {\r\n alert($langTextStore.getText(\"general-warning-email-required\"));\r\n return;\r\n }\r\n var result = await loggedInUserStore.registerstep2(\r\n email,\r\n password,\r\n token\r\n );\r\n mode = \"login\";\r\n step = \"step1\";\r\n errormessage = $langTextStore.getText(\"general-label-account-created\");\r\n if (!result.success) {\r\n errormessage = $langTextStore.getText(result.errormessage);\r\n }\r\n }\r\n\r\n async function forgotpasswordstep1() {\r\n errormessage = \"\";\r\n email = email.trim();\r\n if (email.length == 0) {\r\n alert($langTextStore.getText(\"general-warning-email-required\"));\r\n return;\r\n }\r\n var result = await loggedInUserStore.forgotpasswordstep1(email);\r\n if (!result.success) {\r\n errormessage = $langTextStore.getText(result.errormessage);\r\n return;\r\n }\r\n mode = \"forgotpasswordsent\";\r\n }\r\n async function forgotpasswordstep2() {\r\n errormessage = \"\";\r\n email = email.trim();\r\n if (email.length == 0) {\r\n alert($langTextStore.getText(\"general-warning-email-required\"));\r\n return;\r\n }\r\n var result = await loggedInUserStore.forgotpasswordstep2(\r\n email,\r\n password,\r\n token\r\n );\r\n if (!result.success) {\r\n errormessage = $langTextStore.getText(result.errormessage);\r\n } else {\r\n mode = \"login\";\r\n step = \"step1\";\r\n login();\r\n }\r\n }\r\n function checkEnter(e) {\r\n if (e.code == \"Enter\" || e.key == \"Enter\") {\r\n if (mode == \"login\") login();\r\n else register();\r\n }\r\n }\r\n let visible = false;\r\n window.setTimeout(() => (visible = true), 100);\r\n</script>\r\n\r\n<LangSelector\r\n extraClass=\"lang-switcher-dashboard\"\r\n langs={$langTextStore.allLangs}\r\n showChoice={false}\r\n on:langChosen={() => {}}\r\n/>\r\n\r\n{#if visible}\r\n <div\r\n class=\"container align-vertical-middle\"\r\n in:fly={{ y: 250, duration: 1600, easing: sineOut }}\r\n out:fade={{ duration: 200 }}\r\n >\r\n <div class=\"row\" in:fade={{ delay: 800 }}>\r\n <div class=\"w-100 text-center\">\r\n <img\r\n src=\"/img/logo.svg\"\r\n id=\"logo\"\r\n style=\"max-width: 200px;\"\r\n class=\"w-md-100 w-100 \"\r\n alt={$langTextStore.getText(\"general-label-app-title\")}\r\n title={$langTextStore.getText(\"general-label-app-title\")}\r\n />\r\n </div>\r\n <div class=\"col-12 offset-md-3 col-md-6\">\r\n <div class=\"innner_modal box-shadow\">\r\n {#if mode == \"forgotpasswordsent\"}\r\n <h2\r\n class=\"gray-6 mb-3 pe-md-5 ps-md-5 mt-3 text-center\"\r\n in:fade\r\n >\r\n {@html $langTextStore.getText(\r\n \"general-label-reset-password-mail-sent-header\"\r\n )}\r\n </h2>\r\n <div class=\"mb-5 text-gray-6 text-center\">\r\n {$langTextStore.getText(\r\n \"general-label-reset-password-mail-sent-explanation\"\r\n )}\r\n </div>\r\n {/if}\r\n {#if mode == \"registersent\"}\r\n <h2\r\n class=\"gray-6 mb-3 pe-md-5 ps-md-5 mt-3 text-center\"\r\n in:fade\r\n >\r\n {@html $langTextStore.getText(\r\n \"general-label-register-mail-sent-header\"\r\n )}\r\n </h2>\r\n <div class=\"mb-5 text-gray-6 text-center\">\r\n {$langTextStore.getText(\r\n \"general-label-register-mail-sent-explanation\"\r\n )}\r\n </div>\r\n {/if}\r\n {#if mode == \"login\"}\r\n <h2\r\n class=\"gray-6 mb-3 pe-md-5 ps-md-5 mt-3 text-center\"\r\n in:fade\r\n >\r\n {@html $langTextStore.getText(\r\n \"general-label-welcome-product-calculator\"\r\n )}\r\n </h2>\r\n <div class=\"mb-5 text-gray-6 text-center\">\r\n {$langTextStore.getText(\r\n \"general-label-do-you-want-register\"\r\n )}\r\n <span\r\n class=\"c-pointer line inline-block font-primary\"\r\n in:fade\r\n on:click={() => {\r\n mode = \"register\";\r\n step = \"step1\";\r\n }}\r\n >\r\n {$langTextStore.getText(\r\n \"general-label-click-here\"\r\n )}</span\r\n >\r\n </div>\r\n {/if}\r\n {#if mode == \"register\"}\r\n <h2 class=\"gray-6 mt-3\" in:fade>\r\n {@html $langTextStore.getText(\r\n \"general-label-welcome-product-calculator-register\"\r\n )}\r\n </h2>\r\n {/if}\r\n {#if mode == \"forgotpassword\"}\r\n <h2 class=\"gray-6 mt-3\" in:fade>\r\n {@html $langTextStore.getText(\r\n \"general-label-welcome-product-calculator-forgot-password\"\r\n )}\r\n </h2>\r\n {/if}\r\n\r\n {#if mode == \"forgotpassword\" && step == \"step2\"}\r\n <p>\r\n {$langTextStore.getText(\r\n \"general-text-enter-token-and-password\"\r\n )}\r\n </p>\r\n {/if}\r\n {#if mode == \"register\" && step == \"step2\"}\r\n <p>\r\n {$langTextStore.getText(\r\n \"general-text-enter-token-and-password-to-register\"\r\n )}\r\n </p>\r\n {/if}\r\n {#if mode == \"register\" && step == \"step1\"}\r\n <label\r\n in:fade\r\n for=\"country\"\r\n style=\" text-transform: capitalize; \"\r\n >{$langTextStore.getText(\r\n \"general-label-country\"\r\n )}</label\r\n >\r\n <select\r\n in:fade\r\n name=\"country\"\r\n type=\"text\"\r\n bind:value={country}\r\n >\r\n {#each countries as countryOption}<option\r\n value={countryOption.name}\r\n >{countryOption.name}</option\r\n >\r\n {/each}\r\n </select>\r\n <label\r\n in:fade\r\n for=\"organizationType\"\r\n style=\" text-transform: capitalize; \"\r\n >{$langTextStore.getText(\r\n \"general-label-organization-type\"\r\n )}</label\r\n >\r\n <select\r\n in:fade\r\n name=\"organizationType\"\r\n type=\"text\"\r\n bind:value={organizationType}\r\n >\r\n <option value=\"\">choose</option>\r\n <option>brand</option>\r\n <option> factory</option>\r\n <option> NGO</option>\r\n <option> union</option>\r\n <option> academia/research</option>\r\n <option> employers’ association</option>\r\n <option> Multi Stakeholder Initiative</option>\r\n <option> other</option>\r\n </select>\r\n <label\r\n in:fade\r\n for=\"function\"\r\n style=\" text-transform: capitalize; \"\r\n >{$langTextStore.getText(\r\n \"general-label-function\"\r\n )}</label\r\n >\r\n <input\r\n in:fade\r\n name=\"function\"\r\n type=\"text\"\r\n bind:value={functionName}\r\n on:keypress={checkEnter}\r\n />\r\n {/if}\r\n {#if mode != \"forgotpasswordsent\" && mode != \"registersent\"}\r\n <label\r\n in:fade\r\n for=\"email\"\r\n style=\" text-transform: capitalize; \"\r\n >{$langTextStore.getText(\r\n \"general-label-email\"\r\n )}</label\r\n >\r\n <input\r\n in:fade\r\n name=\"email\"\r\n type=\"text\"\r\n bind:value={email}\r\n on:keypress={checkEnter}\r\n />\r\n {/if}\r\n {#if mode == \"login\"}\r\n <label\r\n in:fade\r\n for=\"password\"\r\n style=\" text-transform: capitalize; \"\r\n >{$langTextStore.getText(\r\n \"general-label-password\"\r\n )}</label\r\n >\r\n {/if}\r\n {#if step == \"step2\"}\r\n <label\r\n in:fade\r\n for=\"password\"\r\n style=\" text-transform: capitalize; \"\r\n >{$langTextStore.getText(\r\n \"general-label-new=password\"\r\n )}</label\r\n >\r\n <input\r\n name=\"disable-pwd-mgr-1\"\r\n type=\"password\"\r\n id=\"disable-pwd-mgr-1\"\r\n style=\"display: none;\"\r\n value=\"disable-pwd-mgr-1\"\r\n />\r\n <input\r\n name=\"disable-pwd-mgr-2\"\r\n type=\"password\"\r\n id=\"disable-pwd-mgr-2\"\r\n style=\"display: none;\"\r\n value=\"disable-pwd-mgr-2\"\r\n />\r\n <input\r\n name=\"disable-pwd-mgr-3\"\r\n type=\"password\"\r\n id=\"disable-pwd-mgr-3\"\r\n style=\"display: none;\"\r\n value=\"disable-pwd-mgr-3\"\r\n />\r\n {/if}\r\n {#if mode == \"login\" || step == \"step2\"}\r\n <input\r\n in:fade\r\n name=\"password\"\r\n type=\"password\"\r\n data-lpignore=\"true\"\r\n bind:value={password}\r\n on:keypress={checkEnter}\r\n />\r\n {/if}\r\n\r\n {#if false && step == \"step2\"}\r\n <label\r\n in:fade\r\n for=\"token\"\r\n style=\" text-transform: capitalize; \"\r\n >{$langTextStore.getText(\r\n \"general-label-token\"\r\n )}</label\r\n >\r\n <input\r\n in:fade\r\n name=\"token\"\r\n type=\"text\"\r\n bind:value={token}\r\n on:keypress={checkEnter}\r\n />\r\n {/if}\r\n {#if mode == \"register\" && step == \"step1\"}\r\n <label>\r\n <input type=\"checkbox\" bind:value={acceptTerms} />\r\n {@html $langTextStore.getText(\r\n \"general-label-acceptterms\"\r\n )}\r\n </label>\r\n {/if}\r\n <div class=\"float-end\">\r\n {#if mode == \"login\"}\r\n <button\r\n in:fade\r\n class=\"btn btn-primary width-unset mb-2 mt-4\"\r\n on:click={login}\r\n >{$langTextStore.getText(\r\n \"general-label-login\"\r\n )}</button\r\n >\r\n {/if}\r\n {#if mode == \"forgotpassword\" && step == \"step1\"}\r\n <button\r\n in:fade\r\n class=\"btn btn-primary width-unset mb-2 mt-4\"\r\n on:click={forgotpasswordstep1}\r\n >{$langTextStore.getText(\r\n \"general-label-forgot-send\"\r\n )}</button\r\n >\r\n {/if}\r\n {#if mode == \"forgotpassword\" && step == \"step2\"}\r\n <button\r\n in:fade\r\n class=\"btn btn-primary width-unset mb-2 mt-4\"\r\n on:click={forgotpasswordstep2}\r\n >{$langTextStore.getText(\r\n \"general-label-reset-password\"\r\n )}</button\r\n >\r\n {/if}\r\n {#if mode == \"register\" && step == \"step1\"}\r\n <button\r\n in:fade\r\n class=\"btn btn-primary width-unset mb-2 mt-4\"\r\n on:click={registerstep1}\r\n >{$langTextStore.getText(\r\n \"general-label-register\"\r\n )}</button\r\n >\r\n {/if}\r\n\r\n {#if mode == \"register\" && step == \"step2\"}\r\n <button\r\n in:fade\r\n class=\"btn btn-primary width-unset\"\r\n on:click={registerstep2}\r\n >{$langTextStore.getText(\r\n \"general-label-register-step2\"\r\n )}</button\r\n >\r\n {/if}\r\n </div>\r\n\r\n <div class=\"mt-4 mb-3\">\r\n {#if mode == \"login\"}\r\n <div class=\"text-small\">\r\n {$langTextStore.getText(\r\n \"general-label-forgot-password-question\"\r\n )}\r\n <span\r\n class=\"c-pointer line inline-block font-primary\"\r\n in:fade\r\n on:click={() => {\r\n (mode = \"forgotpassword\"),\r\n (errormessage = \"\");\r\n }}\r\n >\r\n {$langTextStore.getText(\r\n \"general-label-click-here\"\r\n )}\r\n </span>\r\n </div>\r\n {/if}\r\n\r\n {#if mode != \"login\"}\r\n <span\r\n class=\"c-pointer line p-2 inline-block font-primary text-small\"\r\n in:fade\r\n on:click={() => {\r\n (mode = \"login\"),\r\n (step = \"step1\"),\r\n (errormessage = \"\");\r\n }}\r\n >\r\n {$langTextStore.getText(\r\n \"general-label-back-to-login\"\r\n )}\r\n </span>\r\n {/if}\r\n </div>\r\n {#if errormessage.length > 0}\r\n <div class=\"error \" transition:fade>{errormessage}</div>\r\n {/if}\r\n\r\n <div\r\n style=\"position:relative;top:20px;width:100%;display:flex; justify-content: space-around;\"\r\n >\r\n <div>\r\n <a href=\"privacy.pdf\" style=\"font-size:1rem;\">\r\n {$langTextStore.getText(\r\n \"general-privacy-statement\"\r\n )}</a\r\n >\r\n -\r\n <a href=\"terms.pdf\" style=\"font-size:1rem;\">\r\n {$langTextStore.getText(\"general-terms\")}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n{/if}\r\n<svelte:head>\r\n <style>\r\n body {\r\n background: #ed003b;\r\n }\r\n .lang-switcher-dashboard.lang-switcher .selector,\r\n .text-gray-5 {\r\n color: #fff;\r\n }\r\n </style>\r\n</svelte:head>\r\n","<script>\r\n import Router from \"svelte-spa-router\";\r\n import { link } from \"svelte-spa-router\";\r\n import App from \"./App.svelte\";\r\n import FullScreen from \"./FullScreen.svelte\";\r\n import Login from \"./Login.svelte\";\r\n import { loggedInUserStore } from \"./store/loggedInUser.js\";\r\n\r\n // Routes for the \"outer router\"\r\n const routes = {\r\n \"/fullscreen/*\": FullScreen,\r\n \"/\": App,\r\n \"/*\": App,\r\n };\r\n\r\n $: loggedInEmail = $loggedInUserStore.email;\r\n let user;\r\n\r\n try {\r\n user = JSON.parse(localStorage.getItem(\"loggedInUser\"));\r\n user.userId = user.uuid;\r\n //console.log(user);\r\n } catch (s) {\r\n }\r\n\r\n if (user && user.uuid && user.uuid.length > 0) {\r\n loggedInUserStore.loginOffline(user, false);\r\n } else {\r\n loggedInUserStore.setLoginNeeded();\r\n }\r\n</script>\r\n\r\n{#if !loggedInEmail}\r\n <Login />\r\n{:else}\r\n <Router {routes} />\r\n{/if}\r\n","import Root from './Root.svelte';\r\nconst root = new Root({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\t\r\n\t}\r\n});\r\n\r\nexport default root;"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","subscribe","store","callbacks","unsub","unsubscribe","get_store_value","value","_","component_subscribe","component","callback","$$","on_destroy","push","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","slice","update_slot","slot","slot_definition","dirty","get_slot_changes_fn","get_slot_context_fn","slot_changes","lets","undefined","merged","len","Math","max","length","i","get_slot_changes","slot_context","p","set_store_value","ret","set","action_destroyer","action_result","destroy","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","Set","run_tasks","task","c","delete","f","size","loop","promise","Promise","fulfill","add","[object Object]","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","d","element","name","document","createElement","svg_element","createElementNS","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","prevent_default","preventDefault","call","this","stop_propagation","stopPropagation","attr","attribute","removeAttribute","getAttribute","setAttribute","set_attributes","attributes","descriptors","getOwnPropertyDescriptors","__proto__","key","style","cssText","set_custom_element_data","prop","to_number","set_data","wholeText","set_input_value","input","set_style","important","setProperty","select_option","select","option","__value","selected","select_value","selected_option","querySelector","crossorigin","is_crossorigin","parent","error","add_resize_listener","getComputedStyle","position","iframe","tabIndex","source","contentWindow","onload","toggle_class","toggle","classList","custom_event","type","detail","e","createEvent","initCustomEvent","HtmlTag","n","html","nodeName","t","h","innerHTML","Array","from","childNodes","active_docs","current_component","active","create_rule","duration","delay","ease","uid","step","keyframes","rule","str","hash","charCodeAt","doc","ownerDocument","stylesheet","__svelte_stylesheet","head","sheet","current_rules","__svelte_rules","insertRule","cssRules","animation","delete_rule","previous","split","next","filter","anim","indexOf","deleted","join","deleteRule","clear","set_current_component","get_current_component","Error","beforeUpdate","before_update","onMount","on_mount","onDestroy","createEventDispatcher","setContext","context","getContext","get","bubble","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","schedule_update","then","flush","tick","add_render_callback","add_flush_callback","flushing","seen_callbacks","update","pop","has","fragment","after_update","wait","dispatch","direction","kind","dispatchEvent","outroing","outros","group_outros","r","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","running","cleanup","go","easing","css","start_time","end_time","abort","started","create_out_transition","group","reset","create_bidirectional_transition","intro","running_program","pending_program","clear_animation","init","program","abs","start","end","handle_promise","info","token","index","resolved","child_ctx","current","needs_flush","blocks","m","mount","catch","hasCatch","pending","outro_and_destroy_block","lookup","get_spread_update","levels","updates","to_null_out","accounted_for","get_spread_object","spread_props","bind","props","bound","create_component","mount_component","new_on_destroy","map","destroy_component","instance","create_fragment","not_equal","parent_component","Map","skip_bound","ready","rest","fill","make_dirty","hydrate","nodes","children","l","SvelteComponent","$destroy","splice","$$props","obj","$$set","keys","subscriber_queue","readable","writable","stop","subscribers","new_value","run_queue","s","invalidate","subscriber","derived","stores","initial_value","single","isArray","stores_array","auto","inited","values","sync","result","unsubscribers","getLocation","hashPosition","location","href","substr","qsPosition","querystring","loc","charAt","history","replaceState","scrollX","scrollY","routes","prefix","restoreScrollState","RouteItem","path","_sveltesparouter","RegExp","pattern","loose","tmp","ext","arr","shift","substring","regexparam","conditions","userData","_pattern","_keys","startsWith","match","matches","exec","out","decodeURIComponent","routesList","route","componentParams","dispatchNextTick","previousScrollState","state","scrollTo","lastLoc","componentObj","newLoc","checkConditions","loading","loadingParams","loaded","default","scrollRestoration","$loc","cubicOut","sineOut","sin","PI","fade","linear","opacity","fly","y","target_opacity","transform","od","u","closeButton","transitionWindowProps","transitionBgProps","closeOnEsc","closeOnOuterClick","styleBg","top","left","styleWindow","styleContent","baseSetContext","transitionBg","transitionWindow","defaultState","background","wrap","Component","toCssString","reduce","replace","toLowerCase","camelCaseToDash","toVoid","onOpen","onClose","onOpened","onClosed","close","open","NewComponent","newProps","cssBg","cssWindow","cssContent","currentTransitionBg","currentTransitionWindow","constants","async","fetchJson","url","res","fetch","json","ok","alert","Message","JSON","stringify","reload","fetchJsonWithMethod","method","headers","Content-Type","body","saveAsFile","txt","filename","blob","Blob","url2","URL","createObjectURL","display","download","click","revokeObjectURL","fetchFileWithMethod","file","generateUUID","getTime","d2","random","floor","toString","sentenceCase","makerestlower","toUpperCase","__assign","arguments","prototype","hasOwnProperty","apply","__spreadArrays","il","j","jl","_global","self","global","extend","extension","getProto","getPrototypeOf","_hasOwn","hasOwn","proto","setProp","defineProperty","functionOrGetSet","configurable","derive","Child","Parent","getOwnPropertyDescriptor","getPropertyDescriptor","_slice","args","override","origFunc","overridedFactory","assert","asap","setImmediate","setTimeout","arrayToObject","array","extractor","item","nameAndValue","getByKeyPath","keyPath","rv","val","period","innerObj","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","delByKeyPath","kp","shallowClone","concat","flatten","intrinsicTypeNames","num","intrinsicTypes","intrinsicTypeNameSet","deepClone","any","constructor","toStringTag","getValueOf","v","Uint8Array","ArrayBuffer","isView","buffer","getObjectDiff","prfx","ap","bp","apTypeName","bpTypeName","iteratorSymbol","Symbol","iterator","getIteratorOf","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","done","isAsyncFunction","debug","test","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","stack","getErrorWithStack","prettyStack","exception","numIgnoredFrames","message","frame","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","DexieError","msg","_e","getMultiErrorMessage","failures","ModifyError","successCount","failedKeys","BulkError","_stack","errnames","BaseException","exceptions","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","TypeError","Range","RangeError","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","thiz","INTERNAL","_a","globalP","crypto","subtle","nativeP","digest","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","observe","asap$1","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","globalError","pgp","env","finalize","uh","PSD","numScheduledCalls","tickFinalizers","DexiePromise","_listeners","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","_this","possibleAwait","decrementExpectedAwaits","reject","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","zone","shouldExecuteTick","beginMicroTickScope","_then","propagateAllListeners","endMicroTickScope","ex","reason","_promise","tryCatch","origProp","some","addPossiblyUnhandledError","listeners","finalizePhysicalTick","listener","callListener","markErrorAsHandled","prev","numPrev","wasRootExec","unhandledErrs","finalizers","PromiseReject","errorCatcher","outerScope","switchToZone","err","finally","onFinally","getStack","stacks","limit","errorName","failure","timeout","ms","Infinity","handle","Timeout","clearTimeout","snapShot","all","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","run_at_end_of_this_or_next_physical_tick","allSettled","possiblePromises","results","status","AggregateError","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","props$$1","a1","a2","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","bEnteringZone","currentZone","enqueueNativeMicroTask","GlobalPromise_1","targetEnv","GlobalPromise","a3","job","outerZone","origThen","onResolved","eventData","initEvent","CustomEvent","PromiseRejectionEvent","onunhandledrejection","defaultPrevented","console","warn","maxString","String","fromCharCode","INVALID_KEY_ARGUMENT","connections","isIEOrEdge","navigator","userAgent","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","dexieStackFrameFilter","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","workaroundForUndefinedPrimKey","Table","_trans","mode","writeLocked","trans","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","db","transless","tempTransaction","storeNames","openComplete","letThrough","_createTransaction","_dbSchema","_completion","isBeingOpened","_options","autoOpen","dbReadyPromise","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","_maxKey","idxByName","idb","_deps","indexedDB","cmp","prevIndex","prevFilterFn","multi","idx","filterFunction","toCollection","and","count","thenShortcut","offset","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","readHook","defineClass","content","objToAdd","mutate","numFailures","lastResult","keyOrObject","InvalidArgument","modify","put","range","bulkGet","keys$$1","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","objectsToAdd","pos","bulkPut","objectsToPut","bulkDelete","numKeys","Events","evs","eventName","addEventType","chainFunction","defaultFunction","addConfiguredEvents","cfg","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","factory","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","primaryKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","dir","unique","query","iter","coreTrans","set_1","union","cursor","advance","fail","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","continue","advancer","_read","_ctx","table","_write","_addAlgorithm","clone","raw","min","sortBy","parts","lastPart","lastIndex","getval","order","sorter","aVal","bVal","sort","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","isMatch","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","changes","modifyer","anythingModified","outbound","extractKey","Dexie","totalFailures","applyMutateResult","expectedCount","_i","nextChunk","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","coreRange","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","whereClause","rangeEqual","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","needles","suffix","compare","upperNeedles","lowerNeedles","nextKeySuffix","needlesLen","initDirection","upperFactory","lowerFactory","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","enumerable","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","keyWithinCurrentRange","startsWithAnyOf","safariMultiStoreFix","getMaxKey","IdbKeyRange","only","eventRejectHandler","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","idbdb","dbOpenError","MissingAPI","OpenFailed","transaction","ev","_reject","onabort","on","oncomplete","_resolve","bWriteLock","ReadOnly","_root","waitFor","promiseLike","root","_waitingFor","_waitingQueue","objectStore","spin","_spinCount","currentWaitPromise","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","createIndexSpec","nameFromKeyPath","createTableSchema","getKeyExtractor","getSinglePathKeyExtractor","getEffectiveKeys","req","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","extractSchema","isAddOrPut","errorHandler","_reqno","setResult","args1","args2","keyCount","callbackCount","successHandler","_pos","request","nonInfinitLimit","idbKeyRange","getAll","getAllKeys","count_1","req_1","openKeyCursor","result_1","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","createDbCoreTable","tableMap","MIN_KEY","MAX_KEY","createMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","createMiddlewareStack","generateMiddlewareStacks","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","propDesc","removeTablesApi","lowerVersionFirst","_cfg","version","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","_storeNames","rejectTransaction","createTable","populate","queue","versions","_versions","buildGlobalSchema","anyContentUpgraderHasRun","runQueue","oldSchema","newSchema","adjustToExistingIndexNames","diff","getSchemaDiff","tuple","change","recreate","Upgrade","store_1","addIndex","deleteIndex","del","idxName","contentUpgrade","upgradeSchema_1","returnValue_1","contentUpgradeIsAsync_1","promiseFollowed","decrementor","storeName","deleteObjectStore","deleteRemovedTables","contains","updateTablesAndIndexes","oldDef","newDef","def","oldIndexes","newIndexes","oldIdx","newIdx","createObjectStore","createIndex","idbindex","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","databaseEnumerator","Version","_parseStoresSpec","outSchema","indexNum","trim","storesSource","storesSpec","_allTables","upgrade","upgradeFunction","vip","dexieOpen","openCanceller","resolveDbReady","dbReadyResolve","upgradeTransaction","dbName","autoSchema","round","verno","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","delreq","deleteDatabase","NoSuchDatabase","oldVer","pow","readGlobalSchema","ch","verifyInstalledSchema","onversionchange","vcFired","onReadyBeingFired","fireRemainders","remainders","awaitIterator","callNext","onSuccess","onError","throw","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","returnValue","scopeFuncIsAsync","PrematureCommit","pad","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","translateRequest","createVirtualCursor","hooksMiddleware","downCore","downTable","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","deleteRange","effectiveKeys","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","deps","dependencies","addons","cancelOpen","bSticky","db_1","keyRangeGenerator","keyRange","whereCtx","readingHook","createCollectionConstructor","createTableConstructor","complete","wasActive","createTransactionConstructor","versionNumber","createVersionConstructor","orCollection","_IDBKeyRange","createWhereClauseConstructor","newVersion","use","addon","versionInstance","_whenReady","unuse","mw","hasArguments","doDelete","remove","backendDB","isOpen","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","InvalidTable","Dexie$1","databaseName","exists","getDatabaseNames","ignoreTransaction","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","minKey","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","semVer","maxKey","dbNamesTable","hasDatabasesNative","databases","dbnames","infos","DatabaseEnumerator","initDatabaseEnumerator","domError","serverSyncReceived","users","factories","factorySettings","products","savedProducts","langTextStore","gettingTexts","timeOut","getKeys","setLang","lang","langName","langisRtl","isRtl","locale","getAllTexts","getElementsByTagName","util.fetchJson","itemToAdd","getText","langKey","getTextInternal","util.fetchJsonWithMethod","items","existing","createMyStore","allLangs","find","isDefault","loggedInUserStore","email","uuid","seenTour","loginDetermined","loginOffline","serveruser","userId","user","localStorage","setItem","login","password","response","success","errormessage","registerstep1","userDetails","util.generateUUID","functionName","country","organizationType","registerstep2","forgotpasswordstep1","forgotpasswordstep2","logout","removeItem","loggedinOnline","seenTourNo","hideTour","setLoginNeeded","calculatorStore","subSections","variables","availableLangs","getCalculator","countryVersionId","countryStore","gettingCountries","getCountries","includes","getCountry","countryId","countries","syncTimeout","isBusySync","sortByChangeDate","changeDate","factoryStore","onlinemode","getItem","currencies","currentCalculator","currentFactory","showSuperHelp","lastSyncDate","getFactories","getFactory","factoryId","isShow","title","longtext","superHelpTitle","superHelpLongText","setLocked","isLocked","downloadFactory","factorySettingId","factorySetting","getFactorySettings","util.saveAsFile","downloadProduct","productId","product","getProduct","generatePdf","productName","factorySettingName","getFactorySettingName","factoryName","getFactoryName","targetWage","scenarioConfiguration","scenarioVarValues","util.fetchFileWithMethod","brand","generateExcel","FactoryName","getCurrencies","getFactoryAndVersionName","getFactorySettingsForFactory","getFactorySettingsChangeDate","factorySettingsId","copyFactorySettings","copyLabelText","countryStoreVal","oldCalculator","calculator","wageVarServer","varNameKey","wageVarSetting","formula","minValue","maxValue","saveFactoryOrProductSettings","copyProduct","hasFactories","deleteFactorySetting","setting","tableId","deleteProduct","saveFactory","createOrUpdate","setFactorySettingToCurrentProduct","newFactorySetting","currentProduct","inputSections","ss","isSummarySection","isFactorySection","subSection","sectionVar","foundVar","nameKey","readOnly","isFunction","overWriteVar","excelSheetNames","factorySettingChangeDate","calculatorVersionNumber","factoryOrProductSettings","saveProduct","findProducts","numRecords","sortElement","filterWords","totalFilteredProducts","fw","g","filteredProducts","getProductsForFactorySetting","makeInMemoryCopyOfFactorySetting","settings","safeStringify","parse","toLocaleDateString","findFactories","userFactories","userVersions","filteredVersionsEvery","fs","filteredVersionsSome","filteredUserFactories","uf","fv","lastSettingChangeDate","findFactorySettings","flatMap","syncget","lastSyncDateGet","fromDate","shouldUpdate","itemIndex","itemObject","itemTable","syncall","itemsToSync","factoriesToSync","isSynced","varValues","factorySettingsToSync","productsToSync","lastSyncDatePush","getCurrencySign","storeValue","currencyNameObj","alternateCurrencyId","currencySign","htmlCode","setMode","keepDate","toJSON","toISOString","calculatedScenarios","existingDBItem","indent","cache","retVal","toLocaleTimeString","date","actualDate","weekday","year","month","day","transitioning","isActive","isFirst","isHover","getOptionLabel","filterText","itemClasses","classes","isGroupHeader","isGroupItem","old_blocks","get_key","dynamic","list","create_each_block","get_context","old_indexes","new_blocks","new_lookup","deltas","will_move","did_move","new_block","old_block","new_key","old_key","rows","viewport","contents","visible","mounted","average_height","height","itemHeight","hoverItemIndex","height_map","viewport_height","bottom","scrollTop","content_height","row","offsetHeight","refresh","old_start","row_height","expected_height","actual_height","isItemFirst","isItemActive","isItemHover","isSelectable","selectedValue","optionIdentifier","prev_items","container","Item","ItemComponent","isVirtualList","isCreator","label","getGroupHeaderLabel","hideEmptyState","noOptionsMessage","isMulti","activeItemIndex","isScrollingTimer","isScrolling","handleSelect","handleHover","handleClick","closeList","updateHoverItem","increment","isNonSelectableItem","scrollToActiveItem","className","offsetBounding","focusedElemBounding","getBoundingClientRect","_hoverItemIndex","findIndex","hoverItem","getSelectionLabel","activeSelectedValue","isDisabled","handleClear","originalItemsClone","prev_selectedValue","prev_listOpen","prev_filterText","prev_isFocused","prev_filteredItems","Selection","SelectionComponent","MultiSelection","MultiSelectionComponent","isCreatable","isFocused","placeholder","itemFilter","groupBy","groupFilter","groups","isGroupHeaderSelectable","loadOptions","hasError","containerStyles","createGroupHeaderItem","groupValue","createItem","isSearchable","inputStyles","isClearable","isWaiting","listPlacement","listOpen","loadOptionsInterval","filteredItems","inputAttributes","listAutoWidth","Icon","iconProps","showChevron","showIndicator","containerClasses","indicatorSvg","resetFilter","getItemsHasInvoked","getItems","func","immediate","later","callNow","debounce","details","_inputAttributes","checkSelectedValueForDuplicates","noDuplicates","ids","uniqueValues","setList","$set","loadList","handleMultiItemClear","itemToRemove","getPosition","width","elem","bounding","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","isOutOfViewport","visibility","handleFocus","focus","removeList","z-index","List","$on","blur","_filteredItems","itemToCreate","existingItemWithFilterValue","existingSelectionWithFilterValue","selection","showSelectedItem","placeholderText","autocomplete","autocorrect","spellcheck","readonly","_items","keepItem","groupValues","sortedGroupedItems","eventTarget","word","selectedItem","mappedItems","sortedItems","updateMappedItems","initialSet","setValue","bubbleChange","cid","extraClass","langs","showChoice","icontitle","confirmAction","titleLangKey","contentLangKey","cancelButtonTextOverrideLangKey","actionButtonTextOverrideLangKey","cancelButtontext","$langTextStore","actionButtontext","titleText","contentText","inputVal","snackbar","searchFilter","counter","filteredFactories","copycounter","firstTimeAround","timer","checkCreateFactory","debounceFindFactories","$factoryStore","sortedFactories","Prompt","Confirm","selectedSortDirection","selectedSortElement","inputVariableStore","scenarios","scenarioVars","saveStatus","safeToNavigate","setSaveStatus","lastChange","changedate","productIndex","setSorting","sortingType","lastChangeInternal","debounceFindProducts","hasMoreProducts","sectionName","modereturnText","alertWhenError","succeeded","loggedInEmail","$loggedInUserStore","onoffline","returnUrl","firstVersionName","virginUser","showFactoryCreatedMessage","saving","startPage","$countryStore","allVars","theVar","parseFloat","target-wage","alternate","currencyId","getFullYear","getMonth","defaultStyle","toLocaleString","numberFormatStore","formatNumber","setEuroStyle","setNonEuroStyle","amountIn","decimalCount","valueIf0","amount","thousands","decimal","negativeSign","Number","toFixed","roundToTwo","valueinternal","inputCurrency","valueAlternate","valueAlternateInternal","valueInternal","alternateCurrencyRate","mainCurrencyId","checkAndBubble","bubbleDebounced","changeValueAlternate","changeValue","theCurrencyId","outputVariableStore","subSectionNameKey","dataType","variable","theRealVar","actual","$inputVariableStore","getRealVar","showHelp","baseKey","mousemove","mouseout","crntHelpTextKeyBase","helpTitle","helpShort","helpLong","showSuperHelpLink","setVarAndBubble","settingsToSave","displayType","grades","totals","inputStore","grade","tot","recalcTotals","getTypedFormulaFromItem","calculationTimer","disabledCalculations","doCalculations","doCalculationsInternal","ExchangeRate","totalOutputList","$outputVariableStore","calculateScenario","scenario","scenarioVarList","myList","loopcnt","varsChanged","newVal","code","eval2","eval","isFactory","currentSubSectionNameKey","$calculatorStore","setSubSection","section","markAsComplete","justForcedMinTargetWage","selectInitialField","bubbletimeout","loadingCurrency","setCurrency","mainCurrencyName","alternateCurrencyName","rate","conversion_rate","updateStuff","checked","currentTarget","factorySettingsSubSection","checkWageVar","relevantCurrencies","crntId","settingId","fillFactorySettingName","shiftKey","varName","selectLastField","util.sentenceCase","activeSection","hideHeader","relevantSubSections","varname","thestore","whatisthis","whatisthis2","whatisthis3","theScenario","lowestValue","subSectionVarIndex","subSectionVar","baseVal","targetVal","getLowestValue","theVal","$numberFormatStore","warningText","compareVariable","showAddTool","selectedScenarioVar","showScenarioHelp","addableVariables","sv","filteredTranslatedAddableVariables","isWageDistributionVar","includeInScenarioManager","getTexts","scenarioVarName","scenarioVar","cleanName","sheetNum","sheetNums","isPdfOrExcel","sheets","sheetList","sheetNames","getSheetNames","includeTargetWage","filteredSheets","makeAccessor","acc","filterObject","comparisonObj","pair","0","1","fromEntries","entries","calcExtents","fields","extents","kl","dl","vl","partialDomain","domain","directive","calcDomain","$extents","$domain","NaN","delta","lo","hi","mid","ascendingComparator","center","bisectRight","bisector","InternMap","keyof","super","defineProperties","_intern","_key","intern_get","intern_set","intern_delete","valueOf","e10","sqrt","e5","e2","tickIncrement","power","log","LN10","ceil","initRange","Color","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","m1","m2","define","copy","channels","displayable","formatHsl","brighter","darker","gamma","nogamma","exponential","constant","rgbGamma","colorRgb","genericArray","na","setTime","reA","reB","am","bm","bs","bi","q","number","one","zero","string","DataView","object","numberArray","unit","normalize","bimap","interpolate","d0","d1","r0","r1","polymap","bisect","clamp","unknown","transformer","untransform","piecewise","output","interpolateValue","rescale","scale","invert","interpolateNumber","rangeRound","interpolateRound","continuous","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","align","sign","symbol","comma","precision","exponent","%","toPrecision","formatRounded","X","formatPrefix","prefixes","grouping","currencyPrefix","currency","currencySuffix","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","i1","i0","formatTrim","padding","tickFormat","step0","step1","tickStep","precisionPrefix","precisionRound","precisionFixed","linearish","ticks","isFinite","nice","prestep","maxIter","transformPow","transformSqrt","transformSquare","powish","formatLocale","scaleLinear","z","exp","symexp","expm1","padScale","lift","ground","scaleType","base","findScaleType","log1p","getPadFunctions","isTime","r2","paddingLeft","paddingRight","createScale","$scale","$padding","$nice","$reverse","$width","$height","$range","$percentScale","defaultRange","percentRange","calcBaseRange","getDefaultRange","defaultScales","createGetter","$acc","getRange","ssr","pointerEvents","containerWidth","containerHeight","custom","xDomain","yDomain","zDomain","rDomain","xNice","yNice","zNice","rNice","xReverse","defaultReverses","yReverse","zReverse","rReverse","xPadding","yPadding","zPadding","rPadding","xScale","yScale","zScale","rScale","xRange","yRange","zRange","rRange","flatData","_percentRange","_containerWidth","_containerHeight","_x","_y","_z","_r","_custom","_data","_xDomain","_yDomain","_zDomain","_rDomain","_xNice","_yNice","_zNice","_rNice","_xReverse","_yReverse","_zReverse","_rReverse","_xPadding","_yPadding","_zPadding","_rPadding","_xScale","_yScale","_zScale","_rScale","_xRange","_yRange","_zRange","_rRange","_padding","_flatData","_extents","_config","activeGetters_d","$x","$y","$z","$r","padding_d","box_d","$containerWidth","$containerHeight","width_d","$box","height_d","extents_d","$flatData","$activeGetters","getters","xDomain_d","yDomain_d","zDomain_d","rDomain_d","xScale_d","xGet_d","yScale_d","yGet_d","zScale_d","zGet_d","rScale_d","rGet_d","xRange_d","yRange_d","zRange_d","rRange_d","aspectRatio_d","$aspectRatio","activeGetters","aspectRatio","xGet","yGet","zGet","rGet","viewBox","zIndex","zIndexStyle","pointerEventsStyle","flat","uniques","iteratee","ll","iterater","seen","computed","series","s0","s1","stackValue","stackSeries","implicit","ordinal","band","bandwidth","ordinalRange","paddingInner","paddingOuter","sequence","currentItem","columnHeight","yVals","$yGet","$xGet","$xScale","pageY","gridlines","tickMarks","baseline","snapTicks","formatTick","xTick","yTick","isBandwidth","tickVals","dxTick","dyTick","textAnchor","$yScale","zKey","scaleBand","xKey","scaleOrdinal","percentages","labelsForParts","wage","total","seriesNames","orderNone","offsetNone","oz","sz","stackData","overlayVisible","data2","getValue","part","GenerateReport","doUpdate","diffs","actualVar","oldVar","timersaved","timersaving","saveDebounceTimer","firstTime","save","busySaving","saveDebounced","saveToCloud","force","showSaved","calculatorInputSections","getSubSectionIndex","foundItem","hideCalc","bShowWageDistribution","factoryorProductSettings","getFactorySettingsOrProduct","Wage","isProductMode","newMinorCalculatorVersionUpgrade","updateText","doUpgrade","doMinorUpgrade","newMajorCalculatorVersionUpgrade","doMajorUpgrade","hasPendingMajorUpgrade","initiateMajorUpgrade","doUpgrades","hasPendingFactorySettingUpgrade","checkFactorySettingVersion","upgradeVersion","inputVars","inputSection","thevar","theActualVar","MajorUpgrade","internalShowSummary","internalshowSuperHelp","fromProductId","al","LangSelectorRestricted","savestatus","setWageDistributionVars","newIndex","prevSection","/Product/:productId","Calculator","/FactorySettings/:factorySettingsId","jsonString","productSetting","showInfoMessage","infoMessage","msgIsSuccess","/","Dashboard","/Dashboard","/Dashboard/:sectionName","/wagedistribution/:factorySettingsId","WageDistribution","/CreateFactory","CreateFactory","/createproduct/","CreateProduct","/createproduct/:factorySettingsId","/Calculator/*","CalculatorRoot","/ProductUpload/","ProductUpload","theuser","redirectToStartPageIfNeeded","transitionTime","transitionFactor","page","nextPage","/Tour","Tour","/FactorySaved/:factorySettingsId","FactorySaved","/ProductSaved","ProductSaved","getParameterByName","acceptTerms","register","/fullscreen/*","FullScreen","App","/*"],"mappings":"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1J,MAAe24C,QAClB,sDAIH34C,MAAe24C,QACZ,iSANG34C,MAAe24C,QAClB,wFAIH34C,MAAe24C,QACZ,gLASG34C,MAAe24C,QAClB,gDAIH34C,MAAe24C,QACZ,2RANG34C,MAAe24C,QAClB,kFAIH34C,MAAe24C,QACZ,sLASG34C,MAAe24C,QAClB,iDAIH34C,MAAe24C,QACZ,2CAUC34C,MAAe24C,QACZ,4YAjBD34C,MAAe24C,QAClB,mFAIH34C,MAAe24C,QACZ,oEAUC34C,MAAe24C,QACZ,8LAOD34C,MAAe24C,QAClB,iKADG34C,MAAe24C,QAClB,kKAMG34C,MAAe24C,QAClB,wKADG34C,MAAe24C,QAClB,yKAOH34C,MAAe24C,QACZ,yHADH34C,MAAe24C,QACZ,8FAMH34C,MAAe24C,QACZ,qIADH34C,MAAe24C,QACZ,oKASF34C,MAAe24C,QACb,8BAmBF34C,MAAe24C,QACb,wCAuBF34C,MAAe24C,QACb,+BAnCG34C,2BAALkB,qrBAFUlB,khBAoBAA,wNApBAA,oHAoBAA,qDAwBAA,uFACCA,2CArDXA,MAAe24C,QACb,4DASG34C,cAALkB,+HAAAA,sBAFUlB,wBAYVA,MAAe24C,QACb,4DAOQ34C,wBAgBVA,MAAe24C,QACb,yDAOQ34C,UAAAA,wXAxCFA,MAAckE,kDADTlE,MAAckE,wGAkD3BlE,MAAe24C,QACb,uNAOQ34C,+CACCA,wCATXA,MAAe24C,QACb,qDAOQ34C,UAAAA,+JASVA,MAAe24C,QACb,uKADF34C,MAAe24C,QACb,4IASF34C,MAAe24C,QACb,+qBADF34C,MAAe24C,QACb,2SA+BQ34C,+CACCA,wCADDA,UAAAA,gHAyBLA,MAAe24C,QAClB,4IAF+B34C,4EAAAA,wBAC5BA,MAAe24C,QAClB,iGAUE34C,MAAe24C,QACb,yJAFM34C,uCACRA,MAAe24C,QACb,0IASF34C,MAAe24C,QACb,+JAFM34C,uCACRA,MAAe24C,QACb,gJASF34C,MAAe24C,QACb,kKAFM34C,uCACRA,MAAe24C,QACb,mJASF34C,MAAe24C,QACb,4J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"}