diff --git a/app/components/commander/action_modes.hbs b/app/components/commander/action_modes.hbs
index b4fd4527f6586aa8dd2528ff6ed0856149c67b79..72e1277cea25a4e1820ec08eaa33ba4cbc33e66c 100644
--- a/app/components/commander/action_modes.hbs
+++ b/app/components/commander/action_modes.hbs
@@ -1,7 +1,8 @@
<div class="d-flex">
<Commander::ViewMode
- @onViewModeChange={{@onViewModeChange}} />
+ @onViewModeChange={{@onViewModeChange}}
+ @viewMode={{@viewMode}} />
<PanelModes
@dualPanelMode={{@dualPanelMode}}
diff --git a/app/components/commander/index.hbs b/app/components/commander/index.hbs
index d7d38d0c842bd82f2efd602a14f6bf0aa1d1165c..5466867d533c031bcebe7db1ee60addcb310aebb 100644
--- a/app/components/commander/index.hbs
+++ b/app/components/commander/index.hbs
@@ -37,6 +37,7 @@
@onPanelToggle={{@onPanelToggle}}
@dualPanelMode={{@dualPanelMode}}
@onViewModeChange={{this.onViewModeChange}}
+ @viewMode={{this.view_mode}}
@hint={{@hint}}
@onSwapPanels={{@onSwapPanels}}
@onDuplicatePanel={{@onDuplicatePanel}} />
diff --git a/app/components/commander/index.js b/app/components/commander/index.js
index fe47e6df9faafb12feb86214c9006ff28690c2a5..426176741e5310cd37c10d7424c41cba7ed64afb 100644
--- a/app/components/commander/index.js
+++ b/app/components/commander/index.js
@@ -3,6 +3,7 @@ import { tracked } from '@glimmer/tracking';
import { A } from '@ember/array';
import { action } from '@ember/object';
import { service } from '@ember/service';
+import localStorage from 'papermerge/utils/localstorage';
export default class CommanderComponent extends Component {
@@ -33,8 +34,9 @@ export default class CommanderComponent extends Component {
@tracked show_confirm_deletion_modal = false;
- // nodes are displayed as list or as grid?
- @tracked view_mode = 'list';
+ // localStorage is tracked
+ @localStorage left_view_mode = 'list';
+ @localStorage right_view_mode = 'list';
@tracked selected_nodes = A([]);
@@ -147,7 +149,11 @@ export default class CommanderComponent extends Component {
@action
onViewModeChange(new_view_mode) {
- this.view_mode = new_view_mode;
+ if (this.args.hint == 'left') {
+ this.left_view_mode = new_view_mode;
+ } else {
+ this.right_view_mode = new_view_mode;
+ }
}
@action
@@ -355,6 +361,14 @@ export default class CommanderComponent extends Component {
this.selected_nodes = []; // reset currect selected nodes list
}
+ get view_mode() {
+ if (this.args.hint == 'left') {
+ return this.left_view_mode;
+ }
+
+ return this.right_view_mode;
+ }
+
get lang() {
let _lang = this.preferences.get_value({
key: 'ocr__language',
diff --git a/app/components/commander/view_mode.hbs b/app/components/commander/view_mode.hbs
index 0b6165196dd8ddb23615a87f2d79d18b0a67075a..42b59256efd6dec22164cc786d46020caccc400e 100644
--- a/app/components/commander/view_mode.hbs
+++ b/app/components/commander/view_mode.hbs
@@ -15,7 +15,7 @@
class="btn btn-link text-decoration-none"
{{on "click" (fn this.onItemClick item)}}>
<span class="px-2">{{ item.title }}</span>
- {{#if (is_equal this.current_item item.value) }}
+ {{#if (is_equal this.view_mode item.value) }}
<i class="bi-check-lg text-success"></i>
{{/if}}
</button>
diff --git a/app/components/commander/view_mode.js b/app/components/commander/view_mode.js
index 57d9b078a86a8564a170d0a5b4f4032520afd171..4f219b63a48823193ba122519208b2b9bbba60bf 100644
--- a/app/components/commander/view_mode.js
+++ b/app/components/commander/view_mode.js
@@ -4,6 +4,7 @@ import { A } from '@ember/array';
import { action } from '@ember/object';
+
export default class ViewModeComponent extends Component {
@tracked items = A([
@@ -19,12 +20,12 @@ export default class ViewModeComponent extends Component {
},
]);
- @tracked current_item = 'list';
-
+ get view_mode() {
+ return this.args.viewMode || 'list';
+ }
- @action onItemClick(item) {
- this.current_item = item.value;
+ @action
+ onItemClick(item) {
this.args.onViewModeChange(item.value);
}
-
}
diff --git a/app/controllers/authenticated.js b/app/controllers/authenticated.js
index 42440ec4f07ffd7018d4a3f8f932b13265f3c076..365bd9c4da772f3daf5abc01db4827a55ca367ef 100644
--- a/app/controllers/authenticated.js
+++ b/app/controllers/authenticated.js
@@ -1,13 +1,12 @@
import { action } from '@ember/object';
import Controller from '@ember/controller';
-import { tracked } from '@glimmer/tracking';
import { service } from '@ember/service';
+import localStorage from 'papermerge/utils/localstorage';
export default class AuthenticatedController extends Controller {
- // sidebar expanded ?
- @tracked expanded = true;
+ @localStorage expanded_sidebar = false;
@service ws_inbox_refresh;
@service ws_nodes_move;
@service router;
@@ -30,6 +29,6 @@ export default class AuthenticatedController extends Controller {
@action
onSidebarToggle() {
- this.expanded = !this.expanded;
+ this.expanded_sidebar = !this.expanded_sidebar;
}
}
diff --git a/app/controllers/authenticated/dualpanel_base.js b/app/controllers/authenticated/dualpanel_base.js
index 3d64b94fcd3839c27caec3764868d4a8db866b7a..01b751968a505044e1f1dcffbf97af77b6c533f7 100644
--- a/app/controllers/authenticated/dualpanel_base.js
+++ b/app/controllers/authenticated/dualpanel_base.js
@@ -1,6 +1,6 @@
import Controller from '@ember/controller';
import { tracked } from "@glimmer/tracking";
-import { inject as service } from '@ember/service';
+import { service } from '@ember/service';
export default class DualPanelBaseController extends Controller {
diff --git a/app/templates/authenticated.hbs b/app/templates/authenticated.hbs
index e34397cc89ccd574c584d87ee5e4fb05254831d5..56b274ac94251b0209ea59891ac0ccdead9420e7 100644
--- a/app/templates/authenticated.hbs
+++ b/app/templates/authenticated.hbs
@@ -4,7 +4,7 @@
@inbox_folder_id={{@model.inbox_folder_id}}
@inbox_count={{@model.inbox_count}}
@pinned_tags={{@model.pinned_tags}}
- @expanded={{this.expanded}} />
+ @expanded={{this.expanded_sidebar}} />
<div class="w-100 central-bar">
<Nav::Topbar
@onSidebarToggle={{this.onSidebarToggle}} />
diff --git a/app/utils/localstorage.js b/app/utils/localstorage.js
new file mode 100644
index 0000000000000000000000000000000000000000..cfa8cdf006970160081ca4c5efc82833c68c890b
--- /dev/null
+++ b/app/utils/localstorage.js
@@ -0,0 +1,56 @@
+import { TrackedMap } from 'tracked-built-ins';
+
+
+const storage = new TrackedMap();
+
+
+export default function decorator(...args) {
+ /*
+ Decorator for saving value of class property to local storage.
+
+ Learn more about Local Storage:
+ https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
+
+ Decorated class property will be tracked i.e. whenever their value
+ changes Ember will trigger rendering of components which make use
+ of that variable;
+
+ Example:
+
+ import localStorage from 'papermerge/utils/localStorage';
+
+ class SomeComponent {
+ @localStorage expanded_sidebar = false;
+
+ @action
+ onSidebarToggle() {
+ // this will trigger rerandering of component
+ this.expanded_sidebar = !this.expanded_sidebar;
+ }
+ }
+ */
+
+ function wrapper(target, key) {
+ initStorage(key);
+ return {
+ get() {
+ return storage.get(key);
+ },
+ set(value) {
+ let json = JSON.stringify(value)
+
+ storage.set(key, value);
+ window.localStorage.setItem(key, json);
+ }
+ }
+ }
+
+ return wrapper(...args);
+}
+
+function initStorage(key) {
+ let value;
+
+ value = JSON.parse(window.localStorage.getItem(key));
+ storage.set(key, value);
+}
diff --git a/package-lock.json b/package-lock.json
index a9e4ab5614a3b3c080744530fea01adadc1be2d5..b974f574fe7e2d23e97604fd6a6ed283edc69ffe 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16067,6 +16067,206 @@
}
}
},
+ "ember-tracked-storage-polyfill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ember-tracked-storage-polyfill/-/ember-tracked-storage-polyfill-1.0.0.tgz",
+ "integrity": "sha512-eL7lZat68E6P/D7b9UoTB5bB5Oh/0aju0Z7PCMi3aTwhaydRaxloE7TGrTRYU+NdJuyNVZXeGyxFxn2frvd3TA==",
+ "dev": true,
+ "requires": {
+ "ember-cli-babel": "^7.26.3",
+ "ember-cli-htmlbars": "^5.7.1"
+ },
+ "dependencies": {
+ "async-disk-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/async-disk-cache/-/async-disk-cache-2.1.0.tgz",
+ "integrity": "sha512-iH+boep2xivfD9wMaZWkywYIURSmsL96d6MoqrC94BnGSvXE4Quf8hnJiHGFYhw/nLeIa1XyRaf4vvcvkwAefg==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "heimdalljs": "^0.2.3",
+ "istextorbinary": "^2.5.1",
+ "mkdirp": "^0.5.0",
+ "rimraf": "^3.0.0",
+ "rsvp": "^4.8.5",
+ "username-sync": "^1.0.2"
+ }
+ },
+ "broccoli-persistent-filter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/broccoli-persistent-filter/-/broccoli-persistent-filter-3.1.2.tgz",
+ "integrity": "sha512-CbU95RXXVyy+eJV9XTiHUC7NnsY3EvdVrGzp3YgyvO2bzXZFE5/GzDp4X/VQqX+jsk4qyT1HvMOF0sD1DX68TQ==",
+ "dev": true,
+ "requires": {
+ "async-disk-cache": "^2.0.0",
+ "async-promise-queue": "^1.0.3",
+ "broccoli-plugin": "^4.0.3",
+ "fs-tree-diff": "^2.0.0",
+ "hash-for-dep": "^1.5.0",
+ "heimdalljs": "^0.2.1",
+ "heimdalljs-logger": "^0.1.7",
+ "promise-map-series": "^0.2.1",
+ "rimraf": "^3.0.0",
+ "symlink-or-copy": "^1.0.1",
+ "sync-disk-cache": "^2.0.0"
+ }
+ },
+ "broccoli-plugin": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz",
+ "integrity": "sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==",
+ "dev": true,
+ "requires": {
+ "broccoli-node-api": "^1.7.0",
+ "broccoli-output-wrapper": "^3.2.5",
+ "fs-merger": "^3.2.1",
+ "promise-map-series": "^0.3.0",
+ "quick-temp": "^0.1.8",
+ "rimraf": "^3.0.2",
+ "symlink-or-copy": "^1.3.1"
+ },
+ "dependencies": {
+ "promise-map-series": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/promise-map-series/-/promise-map-series-0.3.0.tgz",
+ "integrity": "sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==",
+ "dev": true
+ }
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "editions": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/editions/-/editions-2.3.1.tgz",
+ "integrity": "sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==",
+ "dev": true,
+ "requires": {
+ "errlop": "^2.0.0",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "ember-cli-htmlbars": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/ember-cli-htmlbars/-/ember-cli-htmlbars-5.7.2.tgz",
+ "integrity": "sha512-Uj6R+3TtBV5RZoJY14oZn/sNPnc+UgmC8nb5rI4P3fR/gYoyTFIZSXiIM7zl++IpMoIrocxOrgt+mhonKphgGg==",
+ "dev": true,
+ "requires": {
+ "@ember/edition-utils": "^1.2.0",
+ "babel-plugin-htmlbars-inline-precompile": "^5.0.0",
+ "broccoli-debug": "^0.6.5",
+ "broccoli-persistent-filter": "^3.1.2",
+ "broccoli-plugin": "^4.0.3",
+ "common-tags": "^1.8.0",
+ "ember-cli-babel-plugin-helpers": "^1.1.1",
+ "ember-cli-version-checker": "^5.1.2",
+ "fs-tree-diff": "^2.0.1",
+ "hash-for-dep": "^1.5.1",
+ "heimdalljs-logger": "^0.1.10",
+ "json-stable-stringify": "^1.0.1",
+ "semver": "^7.3.4",
+ "silent-error": "^1.1.1",
+ "strip-bom": "^4.0.0",
+ "walk-sync": "^2.2.0"
+ }
+ },
+ "fs-tree-diff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fs-tree-diff/-/fs-tree-diff-2.0.1.tgz",
+ "integrity": "sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==",
+ "dev": true,
+ "requires": {
+ "@types/symlink-or-copy": "^1.2.0",
+ "heimdalljs-logger": "^0.1.7",
+ "object-assign": "^4.1.0",
+ "path-posix": "^1.0.0",
+ "symlink-or-copy": "^1.1.8"
+ }
+ },
+ "istextorbinary": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.6.0.tgz",
+ "integrity": "sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==",
+ "dev": true,
+ "requires": {
+ "binaryextensions": "^2.1.2",
+ "editions": "^2.2.0",
+ "textextensions": "^2.5.0"
+ }
+ },
+ "matcher-collection": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+ "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "minimatch": "^3.0.2"
+ }
+ },
+ "minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "sync-disk-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sync-disk-cache/-/sync-disk-cache-2.1.0.tgz",
+ "integrity": "sha512-vngT2JmkSapgq0z7uIoYtB9kWOOzMihAAYq/D3Pjm/ODOGMgS4r++B+OZ09U4hWR6EaOdy9eqQ7/8ygbH3wehA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "heimdalljs": "^0.2.6",
+ "mkdirp": "^0.5.0",
+ "rimraf": "^3.0.0",
+ "username-sync": "^1.0.2"
+ }
+ },
+ "walk-sync": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+ "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "ensure-posix-path": "^1.1.0",
+ "matcher-collection": "^2.0.0",
+ "minimatch": "^3.0.4"
+ }
+ }
+ }
+ },
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -27297,6 +27497,264 @@
"punycode": "^2.1.1"
}
},
+ "tracked-built-ins": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/tracked-built-ins/-/tracked-built-ins-2.0.1.tgz",
+ "integrity": "sha512-v0DwPVNm3zA4cmJLpcBJxJfKefN6ldhkc8l5YA+cWHq7kI8WMUcXjIXgl/AIxmt1SoO1bwPdpikPRHHrIBDtFQ==",
+ "dev": true,
+ "requires": {
+ "ember-cli-babel": "^7.26.10",
+ "ember-cli-typescript": "^4.1.0",
+ "ember-tracked-storage-polyfill": "^1.0.0",
+ "tracked-maps-and-sets": "^3.0.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ember-cli-typescript": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-4.2.1.tgz",
+ "integrity": "sha512-0iKTZ+/wH6UB/VTWKvGuXlmwiE8HSIGcxHamwNhEC5x1mN3z8RfvsFZdQWYUzIWFN2Tek0gmepGRPTwWdBYl/A==",
+ "dev": true,
+ "requires": {
+ "ansi-to-html": "^0.6.15",
+ "broccoli-stew": "^3.0.0",
+ "debug": "^4.0.0",
+ "execa": "^4.0.0",
+ "fs-extra": "^9.0.1",
+ "resolve": "^1.5.0",
+ "rsvp": "^4.8.1",
+ "semver": "^7.3.2",
+ "stagehand": "^1.0.0",
+ "walk-sync": "^2.2.0"
+ }
+ },
+ "execa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "matcher-collection": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+ "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "minimatch": "^3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ },
+ "walk-sync": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+ "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "ensure-posix-path": "^1.1.0",
+ "matcher-collection": "^2.0.0",
+ "minimatch": "^3.0.4"
+ }
+ }
+ }
+ },
+ "tracked-maps-and-sets": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/tracked-maps-and-sets/-/tracked-maps-and-sets-3.0.2.tgz",
+ "integrity": "sha512-UIRcWsX1kDOcC/Q2R58weYWlw01EnmWWBwUv3okWS+zMBvsgIfYoO6veHhuNE3hgzWCEImNp46QS5CyKnw5QUA==",
+ "dev": true,
+ "requires": {
+ "@glimmer/tracking": "^1.0.0",
+ "ember-cli-babel": "^7.26.6",
+ "ember-cli-typescript": "^4.2.1",
+ "ember-tracked-storage-polyfill": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ember-cli-typescript": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-4.2.1.tgz",
+ "integrity": "sha512-0iKTZ+/wH6UB/VTWKvGuXlmwiE8HSIGcxHamwNhEC5x1mN3z8RfvsFZdQWYUzIWFN2Tek0gmepGRPTwWdBYl/A==",
+ "dev": true,
+ "requires": {
+ "ansi-to-html": "^0.6.15",
+ "broccoli-stew": "^3.0.0",
+ "debug": "^4.0.0",
+ "execa": "^4.0.0",
+ "fs-extra": "^9.0.1",
+ "resolve": "^1.5.0",
+ "rsvp": "^4.8.1",
+ "semver": "^7.3.2",
+ "stagehand": "^1.0.0",
+ "walk-sync": "^2.2.0"
+ }
+ },
+ "execa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "matcher-collection": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+ "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "minimatch": "^3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ },
+ "walk-sync": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+ "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "ensure-posix-path": "^1.1.0",
+ "matcher-collection": "^2.0.0",
+ "minimatch": "^3.0.4"
+ }
+ }
+ }
+ },
"tree-sync": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/tree-sync/-/tree-sync-1.4.0.tgz",
diff --git a/package.json b/package.json
index 5a6e8690dfa08b962207db38cf08287a21f0a431..f208e376e7f1da7925e8aebfca9e729139121789 100644
--- a/package.json
+++ b/package.json
@@ -78,6 +78,7 @@
"edition": "octane"
},
"devDependencies": {
+ "tracked-built-ins": "^2.0.1",
"webpack": "^5.65.0"
}
}