'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

const index = require('./index-fd2bbf0b.js');
const hardwareBackButton = require('./overlays-de05dc6a.js');
const index$1 = require('./index-30292d33.js');
const store = require('./store-953d336c.js');
const index$2 = require('./index-6307644b.js');
require('./ionic-global-1340f737.js');
require('./helpers-c2496722.js');
require('./_commonjsHelpers-a5111d61.js');
require('./index-81aa1bcb.js');
require('./getCache-c039a6ae.js');
require('./logic-d8c34975.js');

async function injectScript(src) {
  return new Promise((resolve, reject) => {
    const script = document.createElement("script");
    script.async = true;
    script.src = src;
    script.addEventListener("load", resolve);
    script.addEventListener("error", () => reject("Error loading script."));
    script.addEventListener("abort", () => reject("Script loading aborted."));
    document.head.appendChild(script);
  });
}

const appTotallerCss = "app-totaller .tabs-bar{background-color:var(--ion-background-color, #fff) !important}app-totaller floodteam-floating-button ion-fab{margin-top:20px}app-totaller ion-item-divider{background:rgba(var(--ion-background-color-rgb), 0.4) !important}app-totaller .tabs-content{padding:15px}";

let AppTotaller = class {
  constructor(hostRef) {
    index.registerInstance(this, hostRef);
    this.fireenjinFetch = index.createEvent(this, "fireenjinFetch", 7);
    this.fireenjinSubmit = index.createEvent(this, "fireenjinSubmit", 7);
    this.totaller = {};
    this.testTotals = {};
    this.totallerResults = {};
    this.totalsToView = {};
    this.totalsColor = {};
    this.totalsDocs = [];
    this.graphLabels = [];
    this.graphType = "line";
    this.graphDatasets = [];
  }
  async onSuccess(event) {
    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
    if (((_a = event === null || event === void 0 ? void 0 : event.detail) === null || _a === void 0 ? void 0 : _a.endpoint) === "addTotaller") {
      try {
        const routerEl = document.querySelector("ion-router");
        routerEl.push(`/totallers/${(_d = (_c = (_b = event === null || event === void 0 ? void 0 : event.detail) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.addTotaller) === null || _d === void 0 ? void 0 : _d.id}`);
      }
      catch (e) {
        console.log("error redirecting");
      }
    }
    else if (((_e = event === null || event === void 0 ? void 0 : event.detail) === null || _e === void 0 ? void 0 : _e.endpoint) === "editTotaller") {
      (await hardwareBackButton.toastController.create({
        message: "Totaller saved successfully!",
        duration: 2000,
      })).present();
    }
    else if (((_f = event === null || event === void 0 ? void 0 : event.detail) === null || _f === void 0 ? void 0 : _f.endpoint) === "calculateTotaller") {
      this.totallerResults =
        ((_j = (_h = (_g = event === null || event === void 0 ? void 0 : event.detail) === null || _g === void 0 ? void 0 : _g.data) === null || _h === void 0 ? void 0 : _h.calculateTotaller) === null || _j === void 0 ? void 0 : _j.results) || {};
    }
    else if (((_k = event === null || event === void 0 ? void 0 : event.detail) === null || _k === void 0 ? void 0 : _k.endpoint) === "findTotaller") {
      console.log(event);
      this.totaller = ((_m = (_l = event === null || event === void 0 ? void 0 : event.detail) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.totaller) || null;
      ((((_o = this.totaller) === null || _o === void 0 ? void 0 : _o.sums) && Object.keys((_p = this.totaller) === null || _p === void 0 ? void 0 : _p.sums)) || []).map((sumName) => {
        this.totalsToView[sumName] = true;
      });
      this.runTotaller();
    }
  }
  async onChange(event) {
    var _a, _b, _c, _d, _e, _f, _g, _h;
    if (["collection", "name", "sampleData"].includes(event.target.name)) {
      this.totaller[event.target.name] =
        ((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.name) === "sampleData" &&
          typeof ((_b = event === null || event === void 0 ? void 0 : event.target) === null || _b === void 0 ? void 0 : _b.value) === "string"
          ? JSON.parse(event.target.value)
          : ((_c = event === null || event === void 0 ? void 0 : event.target) === null || _c === void 0 ? void 0 : _c.value) || null;
    }
    else if (event.target.name.includes("color.")) {
      const fieldName = event.target.name.split(".")[1];
      this.totalsColor[fieldName] = event.target.value;
      this.setGraphData();
    }
    else if (event.target.name.includes("sums.")) {
      const fieldName = event.target.name.split(".")[1];
      this.totaller.sums[fieldName] =
        typeof ((_d = event === null || event === void 0 ? void 0 : event.target) === null || _d === void 0 ? void 0 : _d.value) === "string"
          ? JSON.parse(event.target.value)
          : ((_e = event === null || event === void 0 ? void 0 : event.target) === null || _e === void 0 ? void 0 : _e.value) || {};
      this.setGraphData();
    }
    else if (event.target.name.includes("toggle.")) {
      const fieldName = event.target.name.split(".")[1];
      this.totalsToView[fieldName] = !!(event === null || event === void 0 ? void 0 : event.target.checked);
      this.setGraphData();
    }
    else if (event.target.name === "graphType") {
      this.graphType = event.target.value;
    }
    else if (event.target.name === "graphPath") {
      if (!((_g = (_f = event.target) === null || _f === void 0 ? void 0 : _f.value) === null || _g === void 0 ? void 0 : _g.length))
        return;
      const collectionPath = index$1.lib.compile(event.target.value)({
        totaller: this.totaller,
        data: ((_h = this.totaller) === null || _h === void 0 ? void 0 : _h.sampleData) ? this.totaller.sampleData : {},
      });
      const pathParts = collectionPath.split("/");
      pathParts.pop();
      // const totalsQuery = await this.db.getCollection(pathParts.join("/"));
      const docs = [];
      const labels = [];
      const totalsDocs = [];
      for (const doc of docs) {
        labels.push(doc.id);
        totalsDocs.push({ ...doc.data(), id: doc.id });
      }
      this.totalsDocs = totalsDocs;
      this.graphLabels = labels;
      this.setGraphData();
    }
  }
  setGraphData() {
    this.graphDatasets = Object.keys(this.totalsToView)
      .filter((sumName) => !!this.totalsToView[sumName])
      .map((sumName) => ({
      label: sumName,
      data: this.totalsDocs.map((doc) => (doc[sumName] ? doc[sumName] : 0)),
      backgroundColor: this.totalsColor[sumName]
        ? this.totalsColor[sumName]
        : this.randomColor(),
      borderColor: this.totalsColor[sumName]
        ? this.totalsColor[sumName]
        : this.randomColor(),
    }));
  }
  randomColor() {
    return "#" + Math.floor(Math.random() * 16777215).toString(16);
  }
  removePath(event, removeIndex) {
    event.preventDefault();
    event.stopPropagation();
    if (!confirm("Are you sure you want to remove this path for totaller?"))
      return;
    this.totaller = {
      ...this.totaller,
      paths: this.totaller.paths
        .reverse()
        .filter((_path, index) => index !== removeIndex),
    };
  }
  removeSum(event, sumName) {
    var _a;
    event.preventDefault();
    event.stopPropagation();
    if (!confirm("Are you sure you want to remove this sum for totaller?"))
      return;
    const sums = ((_a = this.totaller) === null || _a === void 0 ? void 0 : _a.sums) ? this.totaller.sums : {};
    delete sums[sumName];
    this.totaller = {
      ...this.totaller,
      sums,
    };
  }
  addPath(event) {
    var _a;
    event.preventDefault();
    event.stopPropagation();
    this.totaller = {
      ...this.totaller,
      paths: [...(((_a = this.totaller) === null || _a === void 0 ? void 0 : _a.paths) || []), this.pathInputEl.value + ""],
    };
  }
  addSum(event) {
    event.preventDefault();
    event.stopPropagation();
    this.totaller = {
      ...this.totaller,
      sums: {
        ...(this.totaller.sums || {}),
        [this.sumInputEl.value]: {
          var: "data.amount",
        },
      },
    };
  }
  async fetchTotaller() {
    this.fireenjinFetch.emit({
      endpoint: "findTotaller",
      params: {
        id: this.totallerId,
      },
    });
  }
  testAdd() {
    this.runTotaller("add");
    this.testTotals = { ...this.testTotals };
  }
  testSubtract() {
    this.runTotaller("delete");
    this.testTotals = { ...this.testTotals };
  }
  testReset() {
    this.totaller = { ...this.totaller };
    this.testTotals = {};
    this.runTotaller();
  }
  runTotaller(action) {
    var _a;
    for (const path of ((_a = this.totaller) === null || _a === void 0 ? void 0 : _a.paths) || []) {
      this.runTotallerForPath(path, action);
    }
  }
  runTotallerForPath(path, action) {
    var _a;
    const totals = this.testTotals[path] ? this.testTotals[path] : {};
    for (const sumName of Object.keys(((_a = this.totaller) === null || _a === void 0 ? void 0 : _a.sums) || {})) {
      const calculation = this.totaller.sums[sumName];
      // Delete or Edit
      if (["delete", "edit"].includes(action)) {
        const calculatedSum = window.jsonLogic.apply(calculation, {
          totaller: this.totaller,
          data: this.totaller.sampleData,
          totals,
        });
        totals[sumName] =
          parseFloat(totals[sumName] ? totals[sumName] : 0) -
            parseFloat(calculatedSum ? calculatedSum : 0);
      }
      // Add or Edit
      if (["add", "edit"].includes(action)) {
        const calculatedSum = window.jsonLogic.apply(calculation, {
          totaller: this.totaller,
          data: this.totaller.sampleData,
          totals,
        });
        totals[sumName] =
          totals && totals[sumName]
            ? parseFloat(totals[sumName] ? totals[sumName] : 0) +
              parseFloat(calculatedSum ? calculatedSum : 0)
            : parseFloat(calculatedSum ? calculatedSum : 0);
      }
      if (!action) {
        totals[sumName] = 0;
      }
    }
    this.testTotals[path] = totals;
    return this.testTotals[path];
  }
  async save() {
    var _a, _b, _c, _d, _e;
    if (!confirm("Are you sure you are ready to save the totaller, this cannot be undone?"))
      return;
    const data = {
      collection: ((_a = this.totaller) === null || _a === void 0 ? void 0 : _a.collection) || null,
      name: ((_b = this.totaller) === null || _b === void 0 ? void 0 : _b.name) || null,
      paths: ((_c = this.totaller) === null || _c === void 0 ? void 0 : _c.paths) || [],
      sampleData: ((_d = this.totaller) === null || _d === void 0 ? void 0 : _d.sampleData) || {},
      sums: ((_e = this.totaller) === null || _e === void 0 ? void 0 : _e.sums) || {},
    };
    if (!this.totallerId || this.totallerId === "new") {
      this.fireenjinSubmit.emit({
        endpoint: "addTotaller",
        data,
      });
    }
    else {
      this.fireenjinSubmit.emit({
        endpoint: "editTotaller",
        id: this.totallerId,
        data,
      });
    }
  }
  async sync() {
    var _a, _b, _c, _d, _e, _f, _g;
    if (!((_a = this.totaller) === null || _a === void 0 ? void 0 : _a.id) ||
      !confirm("Are you sure you want to sync this to the live site, it cannot be undone?"))
      return;
    let response;
    const data = {
      collection: ((_b = this.totaller) === null || _b === void 0 ? void 0 : _b.collection) || null,
      name: ((_c = this.totaller) === null || _c === void 0 ? void 0 : _c.name) || null,
      paths: ((_d = this.totaller) === null || _d === void 0 ? void 0 : _d.paths) || [],
      sampleData: ((_e = this.totaller) === null || _e === void 0 ? void 0 : _e.sampleData) || {},
      sums: ((_f = this.totaller) === null || _f === void 0 ? void 0 : _f.sums) || {},
    };
    try {
      response = await fetch(`https://us-central1-${((_g = store.state === null || store.state === void 0 ? void 0 : store.state.config) === null || _g === void 0 ? void 0 : _g.env) === "live" ? "ftms-ca85b" : "floodteam-app"}.cloudfunctions.net/api/totaller/${this.totaller.id}`, {
        method: "POST",
        body: JSON.stringify(data),
      });
    }
    catch (e) {
      console.log("Error syncing totaller to live site!");
    }
    return (response === null || response === void 0 ? void 0 : response.json) ? response.json() : null;
  }
  async rerunTotals() {
    this.totallerResults = {};
    if (!confirm("This will recalculate all totals and cannot be undone, are you sure?"))
      return;
    this.fireenjinSubmit.emit({
      endpoint: "calculateTotaller",
      data: {
        id: this.totallerId,
        save: true,
      },
    });
  }
  async viewResults() {
    this.totallerResults = {};
    this.fireenjinSubmit.emit({
      endpoint: "calculateTotaller",
      data: { id: this.totallerId },
    });
  }
  componentWillLoad() {
    if (!(index.Build === null || index.Build === void 0 ? void 0 : index.Build.isBrowser))
      return;
    injectScript("https://cdn.jsdelivr.net/npm/json-logic-js@2.0.1/logic.js");
  }
  async componentDidLoad() {
    if (!(index.Build === null || index.Build === void 0 ? void 0 : index.Build.isBrowser))
      return;
    index$1.lib.registerHelper("formatUSD", (amount) => {
      const formatter = new Intl.NumberFormat("en-US", {
        style: "currency",
        currency: "USD",
        minimumFractionDigits: 2,
      });
      return formatter.format(amount ? amount : 0);
    });
    index$1.lib.registerHelper("date", (str, pattern = "MM/dd/yyyy", options = {}) => {
      try {
        return index$2.format(new Date(Date.parse(str)), pattern, options);
      }
      catch (e) {
        return "";
      }
    });
    if ((index.Build === null || index.Build === void 0 ? void 0 : index.Build.isBrowser) && this.totallerId && this.totallerId !== "new") {
      this.fetchTotaller();
    }
  }
  render() {
    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
    return [
      index.h("ion-content", { class: "ion-padding" }, index.h("floodteam-title-bar", null, index.h("ion-router-link", { href: "/totallers" }, "Totallers"), index.h("ion-button", { slot: "end", onClick: () => this.save() }, "Save")), index.h("fireenjin-tabs", { hash: false }, index.h("fireenjin-tab", { tab: "setup", selected: true }, index.h("ion-card", null, index.h("ion-card-content", null, index.h("fireenjin-form", { name: "totaller", disableEnterButton: true, hideControls: true }, index.h("fireenjin-input", { type: "text", name: "name", label: "Name", value: ((_a = this.totaller) === null || _a === void 0 ? void 0 : _a.name) ? this.totaller.name : "", required: true, silence: true }), index.h("fireenjin-input", { type: "text", name: "collection", label: "Source Collection", value: ((_b = this.totaller) === null || _b === void 0 ? void 0 : _b.collection) ? this.totaller.collection : "", required: true, silence: true })))), index.h("ion-card", { class: "ion-no-padding" }, index.h("ion-item-divider", null, "List of Paths"), index.h("fireenjin-form", { onSubmit: (event) => this.addPath(event), hideControls: true, disableLoader: true }, index.h("ion-grid", { class: "ion-no-padding" }, index.h("ion-row", { class: "ion-align-items-end ion-no-padding" }, index.h("ion-col", null, index.h("ion-item", { style: {
          width: "90%",
          margin: "0 auto",
          display: "block",
        } }, index.h("ion-input", { ref: (el) => (this.pathInputEl = el), placeholder: "/totals/{{totaller.id}}/newTotal", type: "text", required: true }))), index.h("ion-col", { size: "2", class: "ion-padding-horizontal" }, index.h("ion-button", { type: "submit", class: "ion-float-right" }, "Add"))), index.h("ion-row", { id: "paths" }, index.h("ion-col", { class: "ion-padding" }, ((_d = (_c = this.totaller) === null || _c === void 0 ? void 0 : _c.paths) === null || _d === void 0 ? void 0 : _d.length)
        ? this.totaller.paths.reverse().map((path, index$1) => (index.h("ion-item", null, index.h("ion-label", { "text-wrap": true }, path), index.h("ion-button", { fill: "clear", color: "danger", onClick: (event) => this.removePath(event, index$1) }, "Remove", index.h("ion-icon", { slot: "start", name: "trash" })))))
        : null))))), index.h("ion-card", { class: "ion-no-padding" }, index.h("ion-item-divider", null, "List of Sums"), index.h("fireenjin-form", { onSubmit: (event) => this.addSum(event), hideControls: true, disableLoader: true }, index.h("ion-grid", { class: "ion-no-padding" }, index.h("ion-row", { class: "ion-align-items-end ion-no-padding" }, index.h("ion-col", null, index.h("ion-item", { style: {
          width: "90%",
          margin: "0 auto",
          display: "block",
        } }, index.h("ion-input", { ref: (el) => (this.sumInputEl = el), placeholder: "Name of new Sum", type: "text", required: true }))), index.h("ion-col", { size: "2", class: "ion-padding-horizontal" }, index.h("ion-button", { type: "submit", class: "ion-float-right" }, "Add"))), index.h("ion-row", { id: "paths" }, index.h("ion-col", { class: "ion-padding" }, ((_e = this.totaller) === null || _e === void 0 ? void 0 : _e.sums)
        ? Object.keys(this.totaller.sums)
          .reverse()
          .map((sumName) => {
          var _a, _b, _c, _d, _e, _f;
          return (index.h("ion-item", null, index.h("ion-label", { "text-wrap": true }, index.h("h2", null, sumName), index.h("fireenjin-code-editor", { language: "json", name: `sums.${sumName}`, value: typeof ((_b = (_a = this.totaller) === null || _a === void 0 ? void 0 : _a.sums) === null || _b === void 0 ? void 0 : _b[sumName]) ===
              "object"
              ? JSON.stringify(this.totaller.sums[sumName])
              : typeof ((_d = (_c = this.totaller) === null || _c === void 0 ? void 0 : _c.sums) === null || _d === void 0 ? void 0 : _d[sumName]) === "string"
                ? ((_f = (_e = this.totaller) === null || _e === void 0 ? void 0 : _e.sums) === null || _f === void 0 ? void 0 : _f[sumName]) ===
                  "string"
                : "" })), index.h("div", { slot: "end" }, index.h("ion-button", { expand: "full", fill: "clear", color: "dark", onClick: () => {
              const newSumName = prompt("What woud you like the new sum name to be? (EX: myNewSumName)", sumName);
              if (!newSumName)
                return;
              this.totaller.sums[newSumName] =
                this.totaller.sums[sumName];
              delete this.totaller.sums[sumName];
              this.totaller = { ...this.totaller };
            } }, index.h("ion-icon", { slot: "start", name: "text" }), "Rename"), index.h("ion-button", { expand: "full", fill: "clear", color: "primary", onClick: () => {
              this.totaller.sums[`${sumName}Copy`] =
                this.totaller.sums[sumName];
              this.totaller = { ...this.totaller };
            } }, index.h("ion-icon", { slot: "start", name: "copy" }), "Duplicate"), index.h("ion-button", { expand: "full", fill: "clear", color: "danger", onClick: (event) => this.removeSum(event, sumName) }, "Remove", index.h("ion-icon", { slot: "start", name: "trash" })))));
        })
        : null)))))), index.h("fireenjin-tab", { tab: "test" }, index.h("ion-grid", null, index.h("ion-row", null, index.h("ion-col", { size: "12", sizeMd: "6" }, index.h("ion-card", { class: "ion-no-padding" }, index.h("ion-item-divider", null, "Test Data"), index.h("fireenjin-code-editor", { language: "json", name: "sampleData", value: JSON.stringify(((_f = this.totaller) === null || _f === void 0 ? void 0 : _f.sampleData)
          ? this.totaller.sampleData
          : {}) }), index.h("ion-item-divider", null, "Test Controls"), index.h("ion-grid", null, index.h("ion-row", null, index.h("ion-col", { size: "4" }, index.h("ion-button", { fill: "clear", expand: "block", onClick: () => this.testAdd() }, "Add ", index.h("ion-icon", { name: "add", slot: "end" }))), index.h("ion-col", { size: "4" }, index.h("ion-button", { fill: "clear", expand: "block", color: "danger", onClick: () => this.testSubtract() }, "Subtract ", index.h("ion-icon", { name: "remove", slot: "end" }))), index.h("ion-col", { size: "4" }, index.h("ion-button", { expand: "block", color: "medium", fill: "clear", onClick: () => this.testReset() }, "Reset ", index.h("ion-icon", { name: "refresh", slot: "end" }))))))), index.h("ion-col", { size: "12", sizeMd: "6" }, index.h("ion-card", { class: "ion-no-padding" }, index.h("ion-item-divider", null, "Results"), ((_h = (_g = this.totaller) === null || _g === void 0 ? void 0 : _g.paths) === null || _h === void 0 ? void 0 : _h.length) &&
        this.totaller.paths.reverse().map((path) => (index.h("ion-item", null, index.h("ion-label", null, index.h("ion-text", { "text-wrap": true }, path), index.h("fireenjin-json-viewer", { watcher: true, innerHTML: JSON.stringify(this.testTotals[path]
            ? this.testTotals[path]
            : {}) })))))))))), index.h("fireenjin-tab", { tab: "run" }, index.h("ion-grid", null, index.h("ion-row", null, index.h("ion-col", { size: "12", sizeMd: "5" }, index.h("ion-card", { class: "ion-no-padding" }, index.h("ion-item-divider", { color: "dark" }, "Controls"), index.h("ion-button", { expand: "block", fill: "clear", onClick: () => this.viewResults() }, "View Results on Collection"), index.h("ion-button", { expand: "block", fill: "clear", color: "secondary", onClick: () => this.sync() }, "Sync to Live Site"), index.h("ion-button", { expand: "block", fill: "clear", color: "danger", onClick: () => this.rerunTotals() }, "Rerun Totaller on Collection"))), index.h("ion-col", { size: "12", sizeMd: "7" }, index.h("ion-card", { class: "ion-no-padding" }, index.h("ion-item-divider", { class: "ion-padding-end", color: "dark" }, "Results", this.totallerResults &&
        Object.keys(this.totallerResults) && (index.h("ion-badge", { slot: "end" }, Object.keys(this.totallerResults).length))), this.totallerResults &&
        Object.keys(this.totallerResults).map((path) => (index.h("ion-item", null, index.h("ion-label", { class: "ion-text-wrap" }, index.h("h2", null, path), index.h("fireenjin-json-viewer", { openDepth: 0, innerHTML: JSON.stringify(this.totallerResults[path]
            ? this.totallerResults[path]
            : {}) })))))))))), index.h("fireenjin-tab", { tab: "graph" }, index.h("ion-card", { class: "ion-no-padding" }, index.h("ion-grid", null, index.h("ion-row", null, index.h("ion-col", { size: "5" }, index.h("ion-item-divider", null, "Graph Data"), index.h("fireenjin-select", { label: "Graph Type", name: "graphType", value: this.graphType, options: [
          {
            label: "line",
            value: "line",
          },
          {
            label: "bar",
            value: "bar",
          },
          {
            label: "pie",
            value: "pie",
          },
        ] }), index.h("fireenjin-select", { name: "graphPath", label: "Select a Path", interface: "action-sheet", interfaceOptions: {}, options: (((_j = this.totaller) === null || _j === void 0 ? void 0 : _j.paths)
          ? this.totaller.paths
          : []).map((path) => ({
          label: path,
          value: path,
        })) }), index.h("ion-item-divider", null, "Totals to View"), (((_k = this.totaller) === null || _k === void 0 ? void 0 : _k.sums)
        ? Object.keys(this.totaller.sums)
        : []).map((sumName) => {
        if (!this.totalsColor[sumName])
          this.totalsColor[sumName] = this.randomColor();
        return (index.h("ion-item", null, index.h("ion-toggle", { name: `toggle.${sumName}`, checked: true }), index.h("ion-label", { class: "ion-text-capitalize" }, sumName.replace(/([A-Z]+)*([A-Z][a-z])/g, "$1 $2")), index.h("input", { type: "color", name: `color.${sumName}`, slot: "end", value: this.totalsColor[sumName], onChange: (e) => this.onChange(e) })));
      })), index.h("ion-col", { size: "7" }, index.h("fireenjin-graph", { type: this.graphType, labels: this.graphLabels, datasets: this.graphDatasets })))))))),
      index.h("floodteam-navigation-footer", null),
    ];
  }
};
AppTotaller.style = appTotallerCss;

exports.app_totaller = AppTotaller;

//# sourceMappingURL=app-totaller.cjs.entry.js.map