diff --git a/frontend/src/hex/MagnitudeView.svelte b/frontend/src/hex/MagnitudeView.svelte
index 73119056a..ccf322e61 100644
--- a/frontend/src/hex/MagnitudeView.svelte
+++ b/frontend/src/hex/MagnitudeView.svelte
@@ -28,11 +28,11 @@
import LoadingTextVertical from "../utils/LoadingTextVertical.svelte";
import { screenHeight } from "./stores.js";
import { hexToByteArray } from "../helpers.js";
- import { selectedResource, settings } from "../stores.js";
+ import { selectedResource, settings, dataLength } from "../stores.js";
import { onMount } from "svelte";
- export let dataLength, currentPosition;
+ export let currentPosition;
let data = undefined;
@@ -112,9 +112,9 @@
// Offset Y by 0.5 because of: https://stackoverflow.com/a/48970774
context.strokeRect(
0,
- Math.ceil((currentPosition / dataLength) * canvas.height) - 0.5,
+ Math.ceil((currentPosition / $dataLength) * canvas.height) - 0.5,
alignment,
- Math.ceil(($screenHeight / dataLength) * canvas.height)
+ Math.ceil(($screenHeight / $dataLength) * canvas.height)
);
}
@@ -131,7 +131,8 @@
on:mousedown="{(e) => {
currentPosition =
Math.floor(
- Math.floor(dataLength * (e.offsetY / canvas.offsetHeight)) / alignment
+ Math.floor($dataLength * (e.offsetY / canvas.offsetHeight)) /
+ alignment
) * alignment;
clicking = true;
}}"
@@ -145,7 +146,7 @@
if (clicking) {
currentPosition =
Math.floor(
- Math.floor(dataLength * (e.offsetY / canvas.offsetHeight)) /
+ Math.floor($dataLength * (e.offsetY / canvas.offsetHeight)) /
alignment
) * alignment;
clicking = true;
diff --git a/frontend/src/hex/MinimapView.svelte b/frontend/src/hex/MinimapView.svelte
index 6db16e5b3..c6d3c9d76 100644
--- a/frontend/src/hex/MinimapView.svelte
+++ b/frontend/src/hex/MinimapView.svelte
@@ -16,27 +16,18 @@
import ByteclassView from "./ByteclassView.svelte";
import MagnitudeView from "./MagnitudeView.svelte";
import CarouselSelector from "../utils/CarouselSelector.svelte";
- export let dataLength, currentPosition;
+ export let currentPosition;
let carouselSelection;
{#if carouselSelection === "Entropy"}
-
+
{:else if carouselSelection === "Byteclass"}
-
+
{:else if carouselSelection === "Magnitude"}
-
+
{/if}
{},
selectPreviousSibling = () => {},
collapsed = true,
@@ -131,31 +130,31 @@
kiddoChunksize = 512;
$: {
- if (resourceNodeDataMap[self_id] === undefined) {
- resourceNodeDataMap[self_id] = {};
+ if ($resourceNodeDataMap[self_id] === undefined) {
+ $resourceNodeDataMap[self_id] = {};
}
- if (resourceNodeDataMap[self_id].collapsed === undefined) {
- resourceNodeDataMap[self_id].collapsed = collapsed;
+ if ($resourceNodeDataMap[self_id].collapsed === undefined) {
+ $resourceNodeDataMap[self_id].collapsed = collapsed;
}
- if (resourceNodeDataMap[self_id].childrenPromise === undefined) {
- resourceNodeDataMap[self_id].childrenPromise =
+ if ($resourceNodeDataMap[self_id].childrenPromise === undefined) {
+ $resourceNodeDataMap[self_id].childrenPromise =
rootResource.get_children();
}
- if (resourceNodeDataMap[self_id].commentsPromise === undefined) {
- resourceNodeDataMap[self_id].commentsPromise =
+ if ($resourceNodeDataMap[self_id].commentsPromise === undefined) {
+ $resourceNodeDataMap[self_id].commentsPromise =
rootResource.get_comments();
}
- if (resourceNodeDataMap[self_id].lastModified === undefined) {
- resourceNodeDataMap[self_id].lastModified = false;
+ if ($resourceNodeDataMap[self_id].lastModified === undefined) {
+ $resourceNodeDataMap[self_id].lastModified = false;
}
- if (resourceNodeDataMap[self_id].allModified === undefined) {
- resourceNodeDataMap[self_id].allModified = false;
+ if ($resourceNodeDataMap[self_id].allModified === undefined) {
+ $resourceNodeDataMap[self_id].allModified = false;
}
- childrenPromise = resourceNodeDataMap[self_id].childrenPromise;
- commentsPromise = resourceNodeDataMap[self_id].commentsPromise;
- collapsed = resourceNodeDataMap[self_id].collapsed;
- lastModified = resourceNodeDataMap[self_id].lastModified;
- allModified = resourceNodeDataMap[self_id].allModified;
+ childrenPromise = $resourceNodeDataMap[self_id].childrenPromise;
+ commentsPromise = $resourceNodeDataMap[self_id].commentsPromise;
+ collapsed = $resourceNodeDataMap[self_id].collapsed;
+ lastModified = $resourceNodeDataMap[self_id].lastModified;
+ allModified = $resourceNodeDataMap[self_id].allModified;
}
function updateRootModel() {
rootResource.update();
@@ -171,10 +170,10 @@
$: if ($selected === self_id) {
shortcuts["h"] = () => {
- resourceNodeDataMap[self_id].collapsed = true;
+ $resourceNodeDataMap[self_id].collapsed = true;
};
shortcuts["l"] = () => {
- resourceNodeDataMap[self_id].collapsed = false;
+ $resourceNodeDataMap[self_id].collapsed = false;
};
shortcuts["j"] = () => {
if (!collapsed && firstChild) {
@@ -204,7 +203,7 @@
}
function onDoubleClick(e) {
- resourceNodeDataMap[self_id].collapsed = !collapsed;
+ $resourceNodeDataMap[self_id].collapsed = !collapsed;
// Expand children recursively on double click
if (!collapsed) {
childrenCollapsed = false;
@@ -217,15 +216,15 @@
// As a side effect, the corresponding resource gets selected.
$selected = self_id;
await rootResource.delete_comment(optional_range);
- resourceNodeDataMap[$selected].commentsPromise =
+ $resourceNodeDataMap[$selected].commentsPromise =
rootResource.get_comments();
}
// Swap "just modified" indication to "previously modified" indication
onDestroy(() => {
- if (resourceNodeDataMap[self_id].lastModified) {
- resourceNodeDataMap[self_id].allModified =
- resourceNodeDataMap[self_id].lastModified;
+ if ($resourceNodeDataMap[self_id].lastModified) {
+ $resourceNodeDataMap[self_id].allModified =
+ $resourceNodeDataMap[self_id].lastModified;
}
});
@@ -235,7 +234,7 @@
{#if children?.length > 0}
diff --git a/frontend/src/resource/ResourceTreeToolbar.svelte b/frontend/src/resource/ResourceTreeToolbar.svelte
index 4b4439fb0..16aef12f5 100644
--- a/frontend/src/resource/ResourceTreeToolbar.svelte
+++ b/frontend/src/resource/ResourceTreeToolbar.svelte
@@ -15,13 +15,10 @@
selected,
settings,
selectedProject,
+ resourceNodeDataMap,
} from "../stores.js";
- export let resourceNodeDataMap,
- modifierView,
- bottomLeftPane,
- showProjectManager,
- showRootResource;
+ export let modifierView, bottomLeftPane, showProjectManager, showRootResource;
$: rootResource = $selectedResource;
function refreshResource() {
@@ -80,12 +77,12 @@
shortcut: "i",
onclick: async (e) => {
await rootResource.identify();
- if (!resourceNodeDataMap[$selected]) {
- resourceNodeDataMap[$selected] = {};
+ if (!$resourceNodeDataMap[$selected]) {
+ $resourceNodeDataMap[$selected] = {};
}
- resourceNodeDataMap[$selected].collapsed =
- !!resourceNodeDataMap[$selected]?.collapsed;
- resourceNodeDataMap[$selected].childrenPromise =
+ $resourceNodeDataMap[$selected].collapsed =
+ !!$resourceNodeDataMap[$selected]?.collapsed;
+ $resourceNodeDataMap[$selected].childrenPromise =
rootResource.get_children();
refreshResource();
},
@@ -97,11 +94,11 @@
shortcut: "u",
onclick: async (e) => {
await rootResource.unpack();
- if (!resourceNodeDataMap[$selected]) {
- resourceNodeDataMap[$selected] = {};
+ if (!$resourceNodeDataMap[$selected]) {
+ $resourceNodeDataMap[$selected] = {};
}
- resourceNodeDataMap[$selected].collapsed = false;
- resourceNodeDataMap[$selected].childrenPromise =
+ $resourceNodeDataMap[$selected].collapsed = false;
+ $resourceNodeDataMap[$selected].childrenPromise =
rootResource.get_children();
refreshResource();
},
@@ -121,12 +118,12 @@
shortcut: "a",
onclick: async (e) => {
await rootResource.analyze();
- if (!resourceNodeDataMap[$selected]) {
- resourceNodeDataMap[$selected] = {};
+ if (!$resourceNodeDataMap[$selected]) {
+ $resourceNodeDataMap[$selected] = {};
}
- resourceNodeDataMap[$selected].collapsed =
- !!resourceNodeDataMap[$selected]?.collapsed;
- resourceNodeDataMap[$selected].childrenPromise =
+ $resourceNodeDataMap[$selected].collapsed =
+ !!$resourceNodeDataMap[$selected]?.collapsed;
+ $resourceNodeDataMap[$selected].childrenPromise =
rootResource.get_children();
refreshResource();
},
@@ -148,11 +145,11 @@
const descendants = await $selectedResource.get_descendants();
clearModified(descendants);
await rootResource.pack();
- if (!resourceNodeDataMap[$selected]) {
- resourceNodeDataMap[$selected] = {};
+ if (!$resourceNodeDataMap[$selected]) {
+ $resourceNodeDataMap[$selected] = {};
}
- resourceNodeDataMap[$selected].collapsed = false;
- resourceNodeDataMap[$selected].childrenPromise =
+ $resourceNodeDataMap[$selected].collapsed = false;
+ $resourceNodeDataMap[$selected].childrenPromise =
rootResource.get_children();
refreshResource();
},
@@ -244,11 +241,11 @@
shortcut: "u+Shift",
onclick: async (e) => {
await rootResource.unpack_recursively();
- if (!resourceNodeDataMap[$selected]) {
- resourceNodeDataMap[$selected] = {};
+ if (!$resourceNodeDataMap[$selected]) {
+ $resourceNodeDataMap[$selected] = {};
}
- resourceNodeDataMap[$selected].collapsed = false;
- resourceNodeDataMap[$selected].childrenPromise =
+ $resourceNodeDataMap[$selected].collapsed = false;
+ $resourceNodeDataMap[$selected].childrenPromise =
rootResource.get_children();
refreshResource();
},
@@ -262,11 +259,11 @@
const descendants = await $selectedResource.get_descendants();
clearModified(descendants);
await rootResource.pack_recursively();
- if (!resourceNodeDataMap[$selected]) {
- resourceNodeDataMap[$selected] = {};
+ if (!$resourceNodeDataMap[$selected]) {
+ $resourceNodeDataMap[$selected] = {};
}
- resourceNodeDataMap[$selected].collapsed = false;
- resourceNodeDataMap[$selected].childrenPromise =
+ $resourceNodeDataMap[$selected].collapsed = false;
+ $resourceNodeDataMap[$selected].childrenPromise =
rootResource.get_children();
refreshResource();
},
@@ -316,11 +313,11 @@
function clearModified(descendants) {
for (const descendant of descendants) {
- if (!resourceNodeDataMap[descendant["resource_id"]]) {
- resourceNodeDataMap[descendant["resource_id"]] = {};
+ if (!$resourceNodeDataMap[descendant["resource_id"]]) {
+ $resourceNodeDataMap[descendant["resource_id"]] = {};
}
- resourceNodeDataMap[descendant["resource_id"]].lastModified = undefined;
- resourceNodeDataMap[descendant["resource_id"]].allModified = undefined;
+ $resourceNodeDataMap[descendant["resource_id"]].lastModified = undefined;
+ $resourceNodeDataMap[descendant["resource_id"]].allModified = undefined;
}
}
diff --git a/frontend/src/resource/ResourceTreeView.svelte b/frontend/src/resource/ResourceTreeView.svelte
index def1d0b99..8c3416777 100644
--- a/frontend/src/resource/ResourceTreeView.svelte
+++ b/frontend/src/resource/ResourceTreeView.svelte
@@ -58,7 +58,6 @@
export let rootResource,
modifierView,
bottomLeftPane,
- resourceNodeDataMap = {},
showProjectManager,
showRootResource;
@@ -81,7 +80,6 @@
diff --git a/frontend/src/stores.js b/frontend/src/stores.js
index 0af6397d0..0cd75bc04 100644
--- a/frontend/src/stores.js
+++ b/frontend/src/stores.js
@@ -51,3 +51,5 @@ export function loadSettings(forceReset) {
export let settings = writable(loadSettings());
export let resourceNodeDataMap = writable({});
+
+export let dataLength = writable(undefined);
diff --git a/frontend/src/views/AddTagView.svelte b/frontend/src/views/AddTagView.svelte
index 9ec564cbd..51461472a 100644
--- a/frontend/src/views/AddTagView.svelte
+++ b/frontend/src/views/AddTagView.svelte
@@ -68,21 +68,26 @@