This is an automated email from the ASF dual-hosted git repository.
rstrickland pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil-vscode.git
The following commit(s) were added to refs/heads/main by this push:
new 57d3be2 Cleaning Data Editor Legacy Code
57d3be2 is described below
commit 57d3be20353fb2e78157bcbd8f7500c6e744c413
Author: Robert Strickland <[email protected]>
AuthorDate: Thu Aug 10 15:19:25 2023 -0500
Cleaning Data Editor Legacy Code
- Removes lingering variables & functionality due to the rapid
development of the data editor.
- Fixes issue where the data view content control showed index of
viewport container instead of file offset.
Closes #771
Closes #773
---
.../DataDisplays/CustomByteDisplay/BinaryData.ts | 108 +-------------
.../CustomByteDisplay/DataLineFeed.svelte | 18 +--
.../FileTraversalIndicator.svelte | 2 +-
.../CustomByteDisplay/SelectedByteEdit.svelte | 67 +++++----
.../components/DataDisplays/DataViewports.svelte | 74 +---------
.../DataDisplays/Fieldsets/ContentControls.svelte | 2 +-
.../DataDisplays/Fieldsets/DataView.svelte | 4 +-
.../DataDisplays/Header/DisplayHeader.svelte | 7 +-
.../DataMetrics/ByteFrequencyGraph.svelte | 14 +-
src/svelte/src/components/Header/Header.svelte | 3 +-
.../components/Header/fieldsets/FileMetrics.svelte | 5 +-
.../src/components/Header/fieldsets/FileMetrics.ts | 4 +-
.../Header/fieldsets/SearchReplace.svelte | 14 +-
.../components/Header/fieldsets/SearchReplace.ts | 58 +-------
.../components/Header/fieldsets/Settings.svelte | 7 +-
.../src/components/Inputs/Buttons/Button.svelte | 8 +-
.../Inputs/Buttons/ToggleableButton.svelte | 4 +-
.../components/ServerMetrics/ServerMetrics.svelte | 4 +-
src/svelte/src/components/dataEditor.svelte | 73 ++--------
src/svelte/src/components/layouts/Tooltip.svelte | 2 +-
src/svelte/src/stores/configuration.ts | 4 -
src/svelte/src/stores/index.ts | 156 ++++++++++++---------
src/svelte/src/utilities/display.ts | 30 +---
src/svelte/src/utilities/highlights.ts | 2 +-
24 files changed, 186 insertions(+), 484 deletions(-)
diff --git
a/src/svelte/src/components/DataDisplays/CustomByteDisplay/BinaryData.ts
b/src/svelte/src/components/DataDisplays/CustomByteDisplay/BinaryData.ts
index 4aa9cc2..e3f9e31 100644
--- a/src/svelte/src/components/DataDisplays/CustomByteDisplay/BinaryData.ts
+++ b/src/svelte/src/components/DataDisplays/CustomByteDisplay/BinaryData.ts
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-import { writable, derived } from 'svelte/store'
import { SimpleWritable } from '../../../stores/localStore'
-import type { BytesPerRow, RadixValues } from '../../../stores/configuration'
+import type { RadixValues } from '../../../stores/configuration'
import { radixBytePad } from '../../../utilities/display'
export const BYTE_ACTION_DIV_OFFSET: number = 24
@@ -53,17 +52,6 @@ export interface EditByteEvent extends EditEvent {
targetByte: ByteValue
}
-export enum ViewportBoundaryTrigger {
- SCROLL_TOP,
- SCROLL_BOTTOM,
-}
-
-export const scroll_boundary_event = (top: boolean, end: boolean) => {
- return top
- ? ViewportBoundaryTrigger.SCROLL_TOP
- : ViewportBoundaryTrigger.SCROLL_BOTTOM
-}
-
export const byte_value_string = (value: number, radix: RadixValues) => {
if (value > 255)
throw `Value {${value}} is larger than an unsigned int (255).`
@@ -87,8 +75,6 @@ export const RADIX_REGEX_MATCH_STR = {
2: /[0-1]{8}/g,
}
-export const processingViewportRefresh = writable(false)
-
export class ViewportData_t {
data = new Uint8Array(0)
fileOffset = -1
@@ -160,98 +146,6 @@ export class ViewportDataStore_t extends
SimpleWritable<ViewportData_t> {
}
}
-export const viewport = new ViewportDataStore_t()
-
-export type ByteActionPxOffsets = {
- insertBefore: {
- left: number
- top: number
- }
- insertAfter: {
- left: number
- top: number
- }
- delete: {
- left: number
- top: number
- }
- input: {
- left: number
- top: number
- }
-}
-
export function latin1Undefined(charCode: number): boolean {
return charCode < 32 || (charCode > 126 && charCode < 160)
}
-
-export function update_byte_action_offsets(
- targetDiv: HTMLDivElement,
- offsetTopBy: number = 0,
- offsetLeftBy: number = 0
-) {
- const targetWidth = parseInt(targetDiv.style.width.replace('px', '')) + 4
- byteActionPxOffsets.update((currentOffsets) => {
- currentOffsets.delete = {
- left: targetDiv.offsetLeft + offsetLeftBy,
- top: targetDiv.offsetTop + BYTE_ACTION_DIV_OFFSET - offsetTopBy,
- }
- currentOffsets.input = {
- left: targetDiv.offsetLeft + offsetLeftBy,
- top: targetDiv.offsetTop - offsetTopBy,
- }
- currentOffsets.insertAfter = {
- left: targetDiv.offsetLeft + targetWidth + offsetLeftBy,
- top: targetDiv.offsetTop - offsetTopBy,
- }
- currentOffsets.insertBefore = {
- left: targetDiv.offsetLeft - targetWidth + offsetLeftBy,
- top: targetDiv.offsetTop - offsetTopBy,
- }
-
- return currentOffsets
- })
-}
-
-export enum ByteValuePxWidths {
- DISPLAY = 20,
- EDITING = 68,
-}
-
-export let ByteValueArray: Array<ByteValue> = []
-
-export const bytesPerRow = writable(16 as BytesPerRow)
-export const editingByte = writable(false)
-export const selectedByte = writable({
- text: '',
- offset: -1,
- value: -1,
-} as ByteValue)
-export const byteActionPxOffsets = writable({
- insertBefore: {
- left: 0,
- top: 0,
- },
- insertAfter: {
- left: 0,
- top: 0,
- },
- delete: {
- left: 0,
- top: 0,
- },
- input: {
- left: 0,
- top: 0,
- },
-} as ByteActionPxOffsets)
-export const mouseSelectionBytes = writable({ mousedown: -1, mouseup: -1 })
-
-// derived readable number whose value is the computed number of bytes in the
edited file
-export const offsetMax = derived(viewport, ($viewport) => {
- // this should be the same as the computed file size
- return $viewport.fileOffset + $viewport.length + $viewport.bytesLeft
-})
-export function focus_byte_input() {
- document.getElementById('byte-input').focus()
-}
diff --git
a/src/svelte/src/components/DataDisplays/CustomByteDisplay/DataLineFeed.svelte
b/src/svelte/src/components/DataDisplays/CustomByteDisplay/DataLineFeed.svelte
index 8d70148..ebfe8b7 100644
---
a/src/svelte/src/components/DataDisplays/CustomByteDisplay/DataLineFeed.svelte
+++
b/src/svelte/src/components/DataDisplays/CustomByteDisplay/DataLineFeed.svelte
@@ -15,7 +15,7 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
<script lang="ts">
- import { createEventDispatcher, onMount, tick } from 'svelte'
+ import { createEventDispatcher, onMount } from 'svelte'
import {
editedDataSegment,
editMode,
@@ -24,6 +24,10 @@ limitations under the License.
seekOffsetInput,
selectionDataStore,
selectionSize,
+ selectedByte,
+ fileMetrics,
+ searchQuery,
+ editorActionsAllowed,
} from '../../../stores'
import {
EditByteModes,
@@ -31,18 +35,15 @@ limitations under the License.
VIEWPORT_CAPACITY_MAX,
type BytesPerRow,
type RadixValues,
- editorActionsAllowed,
EditActionRestrictions,
} from '../../../stores/configuration'
import { MessageCommand } from '../../../utilities/message'
import { vscode } from '../../../utilities/vscode'
- import { fileMetrics } from '../../Header/fieldsets/FileMetrics'
import Button from '../../Inputs/Buttons/Button.svelte'
import FlexContainer from '../../layouts/FlexContainer.svelte'
import {
byte_value_string,
null_byte,
- selectedByte,
type ByteSelectionEvent,
type ByteValue,
type ViewportData_t,
@@ -63,7 +64,6 @@ limitations under the License.
searchResultsHighlights,
updateSearchResultsHighlights,
} from '../../../utilities/highlights'
- import { searchQuery } from '../../Header/fieldsets/SearchReplace'
export let lineTop: number
export let awaitViewportScroll: boolean
@@ -119,7 +119,6 @@ limitations under the License.
let totalLinesPerViewport = 0
let lineTopMaxViewport = 64
let lineTopMaxFile = 64
- let viewportFileSegment = 1
let atViewportHead = true
let atViewportTail = false
let atFileHead = true
@@ -168,7 +167,6 @@ limitations under the License.
totalLinesPerViewport - NUM_LINES_DISPLAYED,
0
)
- viewportFileSegment = viewportData.fileOffset / viewportData.length + 1
atViewportHead = lineTop === 0
atViewportTail = lineTop === lineTopMaxViewport
@@ -360,7 +358,6 @@ limitations under the License.
? selectionEvent.targetByte
: null_byte()
- // update_byte_action_offsets(selectionEvent.targetElement)
selectedByteElement = selectionEvent.targetElement
editedDataSegment.update(() => {
@@ -468,10 +465,7 @@ limitations under the License.
<div class="container" style:height id={CONTAINER_ID}>
{#each viewportLines as viewportLine, i}
- <div
- class={`line ${viewportLine.highlight} ${themeClass}`}
- title={`file line #${viewportLine.fileLine}`}
- >
+ <div class={`line ${viewportLine.highlight} ${themeClass}`}>
<div class="address" id="address">
<b>{viewportLine.offset}</b>
</div>
diff --git
a/src/svelte/src/components/DataDisplays/CustomByteDisplay/FileTraversalIndicator.svelte
b/src/svelte/src/components/DataDisplays/CustomByteDisplay/FileTraversalIndicator.svelte
index 56c9142..7c7b8f4 100644
---
a/src/svelte/src/components/DataDisplays/CustomByteDisplay/FileTraversalIndicator.svelte
+++
b/src/svelte/src/components/DataDisplays/CustomByteDisplay/FileTraversalIndicator.svelte
@@ -25,7 +25,7 @@ limitations under the License.
export let bytesPerRow = 16
export let percentageTraversed
export let maxDisplayLines = 20
- export let selectionActive
+ export let selectionActive: boolean
let indicatorContainer: HTMLElement
let indicatorClickDisabled: boolean = false
diff --git
a/src/svelte/src/components/DataDisplays/CustomByteDisplay/SelectedByteEdit.svelte
b/src/svelte/src/components/DataDisplays/CustomByteDisplay/SelectedByteEdit.svelte
index 3b75540..b46adb4 100644
---
a/src/svelte/src/components/DataDisplays/CustomByteDisplay/SelectedByteEdit.svelte
+++
b/src/svelte/src/components/DataDisplays/CustomByteDisplay/SelectedByteEdit.svelte
@@ -32,17 +32,16 @@ limitations under the License.
addressRadix,
rerenderActionElements,
focusedViewportId,
+ editorActionsAllowed,
+ bytesPerRow,
} from '../../../stores'
import { enterKeypressEvents } from '../../../utilities/enterKeypressEvents'
- import { bytesPerRow, type ByteValue, type EditAction } from './BinaryData'
+ import type { ByteValue, EditAction } from './BinaryData'
import {
UIThemeCSSClass,
type CSSThemeClass,
} from '../../../utilities/colorScheme'
- import {
- EditActionRestrictions,
- editorActionsAllowed,
- } from '../../../stores/configuration'
+ import { EditActionRestrictions } from '../../../stores/configuration'
const eventDispatcher = createEventDispatcher()
@@ -55,6 +54,7 @@ limitations under the License.
id: string
position: ActionElementPosition
HTMLRef: HTMLDivElement | HTMLInputElement
+ render: boolean
}
type ActionElements = {
[k in Actions]: ActionElement
@@ -63,21 +63,25 @@ limitations under the License.
input: {
id: 'binary-action-input',
HTMLRef: undefined as HTMLInputElement,
+ render: true,
position: { viewportLine: -1, viewportByteIndex: -1 },
},
'insert-before': {
id: 'binary-action-before',
HTMLRef: undefined,
+ render: true,
position: { viewportLine: -1, viewportByteIndex: -1 },
},
'insert-after': {
id: 'binary-action-after',
HTMLRef: undefined,
+ render: true,
position: { viewportLine: -1, viewportByteIndex: -1 },
},
delete: {
id: 'binary-action-delete',
HTMLRef: undefined,
+ render: true,
position: { viewportLine: -1, viewportByteIndex: -1 },
},
}
@@ -210,7 +214,10 @@ limitations under the License.
previousByteId
) as HTMLDivElement
- if (!elementToReplace) break
+ if (!elementToReplace) {
+ actionElements[element].render = false
+ break
+ }
targetParent.contains(elementToReplace)
? apply_element_replacements(
@@ -236,7 +243,10 @@ limitations under the License.
nextByteId
) as HTMLDivElement
- if (!elementToReplace) break
+ if (!elementToReplace) {
+ actionElements[element].render = false
+ break
+ }
targetParent.contains(elementToReplace)
? apply_element_replacements(
@@ -297,36 +307,33 @@ limitations under the License.
function byteOffsetToElementId(byteOffset: number): string {
return $focusedViewportId + '-' + byteOffset.toString()
}
- function element_byteline_position(
- targetElement: HTMLDivElement
- ): number | undefined {
- const index = parseInt(targetElement.id) + 1
- return index % BPR
- }
</script>
{#if $editorActionsAllowed == EditActionRestrictions.None}
<!-- svelte-ignore a11y-click-events-have-key-events -->
<!-- svelte-ignore a11y-no-static-element-interactions -->
- <div
- class="insert-before {themeClass}"
- id={actionElements['insert-before'].id}
- style:width={elementDivWidth}
- on:click={send_insert}
- >
- ⇤
- </div>
-
+ {#if actionElements['insert-before'].render}
+ <div
+ class="insert-before {themeClass}"
+ id={actionElements['insert-before'].id}
+ style:width={elementDivWidth}
+ on:click={send_insert}
+ >
+ ⇤
+ </div>
+ {/if}
<!-- svelte-ignore a11y-click-events-have-key-events -->
<!-- svelte-ignore a11y-no-static-element-interactions -->
- <div
- class="insert-after {themeClass}"
- id={actionElements['insert-after'].id}
- style:width={elementDivWidth}
- on:click={send_insert}
- >
- ⇥
- </div>
+ {#if actionElements['insert-after'].render}
+ <div
+ class="insert-after {themeClass}"
+ id={actionElements['insert-after'].id}
+ style:width={elementDivWidth}
+ on:click={send_insert}
+ >
+ ⇥
+ </div>
+ {/if}
<span>
<input
diff --git a/src/svelte/src/components/DataDisplays/DataViewports.svelte
b/src/svelte/src/components/DataDisplays/DataViewports.svelte
index 38ad6cc..b031f25 100644
--- a/src/svelte/src/components/DataDisplays/DataViewports.svelte
+++ b/src/svelte/src/components/DataDisplays/DataViewports.svelte
@@ -18,84 +18,12 @@ limitations under the License.
import {
addressRadix,
bytesPerRow,
- editMode,
- editedDataSegment,
- editorEncoding,
- selectionDataStore,
- selectionSize,
- viewportClientHeight,
- viewportLineHeight,
- viewportScrollHeight,
- viewportScrollTop,
- viewportLength,
displayRadix,
dataFeedLineTop,
dataFeedAwaitRefresh,
+ viewport,
} from '../../stores'
- import {
- viewport_references,
- type ViewportReferences,
- } from '../../utilities/display'
- import { MessageCommand } from '../../utilities/message'
- import { onMount, tick } from 'svelte'
- import { vscode } from '../../utilities/vscode'
- import { EditByteModes } from '../../stores/configuration'
- import { viewport } from './CustomByteDisplay/BinaryData'
import DataLineFeed from './CustomByteDisplay/DataLineFeed.svelte'
-
- const viewportRefs = viewport_references() as ViewportReferences
-
- //
- // reactive statements
- //
-
- $: {
- $editMode === EditByteModes.Single
- ? postEditorOnChangeMsg('hex')
- : postEditorOnChangeMsg($editorEncoding)
-
- // when the viewport length changes, update the viewport geometry
- if ($viewportLength >= 0) {
- // populateViewportGeometry()
- }
- }
-
- function populateViewportGeometry() {
- // event handlers expect synchronous functions, so wrap the async function
in a sync function
- async function populateViewportGeometryOps_() {
- if (viewportRefs.physical) {
- // wait for the DOM to be updated before getting the viewport geometry
- await tick()
- $viewportScrollTop = viewportRefs.physical.scrollTop
- $viewportScrollHeight = viewportRefs.physical.scrollHeight
- $viewportClientHeight = viewportRefs.physical.clientHeight
- $viewportLineHeight = parseFloat(
- getComputedStyle(viewportRefs.physical).lineHeight
- )
- }
- }
-
- populateViewportGeometryOps_()
- }
-
- function postEditorOnChangeMsg(forcedEncoding?: string) {
- vscode.postMessage({
- command: MessageCommand.editorOnChange,
- data: {
- fileOffset: $selectionDataStore.startOffset,
- selectionData: $editedDataSegment,
- encoding: forcedEncoding ? forcedEncoding : $editorEncoding,
- selectionSize: $selectionSize,
- editMode: $editMode,
- },
- })
- }
-
- onMount(() => {
- // populateViewportGeometry()
- // recalculate the viewport geometry when the window is resized
- // window.addEventListener('resize', populateViewportGeometry)
- })
</script>
<DataLineFeed
diff --git
a/src/svelte/src/components/DataDisplays/Fieldsets/ContentControls.svelte
b/src/svelte/src/components/DataDisplays/Fieldsets/ContentControls.svelte
index d22aa6b..16ceef9 100644
--- a/src/svelte/src/components/DataDisplays/Fieldsets/ContentControls.svelte
+++ b/src/svelte/src/components/DataDisplays/Fieldsets/ContentControls.svelte
@@ -20,7 +20,7 @@ limitations under the License.
import { createEventDispatcher } from 'svelte'
import FlexContainer from '../../layouts/FlexContainer.svelte'
import Button from '../../Inputs/Buttons/Button.svelte'
- import { type EditEvent } from '../CustomByteDisplay/BinaryData'
+ import type { EditEvent } from '../CustomByteDisplay/BinaryData'
const eventDispatcher = createEventDispatcher()
function applyChanges(event: Event) {
diff --git a/src/svelte/src/components/DataDisplays/Fieldsets/DataView.svelte
b/src/svelte/src/components/DataDisplays/Fieldsets/DataView.svelte
index dc75563..f648f20 100644
--- a/src/svelte/src/components/DataDisplays/Fieldsets/DataView.svelte
+++ b/src/svelte/src/components/DataDisplays/Fieldsets/DataView.svelte
@@ -30,12 +30,12 @@ limitations under the License.
dvUint8,
selectionDataStore,
editedDataSegment,
+ selectedByte,
} from '../../../stores'
import { ENDIANNESS_OPTIONS } from '../../../stores/configuration'
import { UIThemeCSSClass } from '../../../utilities/colorScheme'
- import Input from '../../Inputs/Input/Input.svelte'
import { createEventDispatcher } from 'svelte'
- import { selectedByte } from '../CustomByteDisplay/BinaryData'
+ import Input from '../../Inputs/Input/Input.svelte'
const eventDispatcher = createEventDispatcher()
const ERROR_MESSAGE_TIMEOUT = 5000
diff --git a/src/svelte/src/components/DataDisplays/Header/DisplayHeader.svelte
b/src/svelte/src/components/DataDisplays/Header/DisplayHeader.svelte
index 2350ef0..28450cd 100644
--- a/src/svelte/src/components/DataDisplays/Header/DisplayHeader.svelte
+++ b/src/svelte/src/components/DataDisplays/Header/DisplayHeader.svelte
@@ -23,6 +23,8 @@ limitations under the License.
seekOffsetInput,
selectionDataStore,
selectionSize,
+ bytesPerRow,
+ viewport,
} from '../../../stores'
import {
EditByteModes,
@@ -33,7 +35,6 @@ limitations under the License.
} from '../../../stores/configuration'
import { UIThemeCSSClass } from '../../../utilities/colorScheme'
import { createEventDispatcher } from 'svelte'
- import { bytesPerRow } from '../CustomByteDisplay/BinaryData'
type ViewportDivSpread = '24px' | '28px' | '68px'
@@ -60,8 +61,8 @@ limitations under the License.
$: selectionOffsetText = setSelectionOffsetInfo(
'Selection',
- $selectionDataStore.startOffset,
- $selectionDataStore.endOffset,
+ $viewport.fileOffset + $selectionDataStore.startOffset,
+ $viewport.fileOffset + $selectionDataStore.endOffset,
$selectionSize,
$addressRadix
)
diff --git a/src/svelte/src/components/DataMetrics/ByteFrequencyGraph.svelte
b/src/svelte/src/components/DataMetrics/ByteFrequencyGraph.svelte
index 2841ff4..cbbaa92 100644
--- a/src/svelte/src/components/DataMetrics/ByteFrequencyGraph.svelte
+++ b/src/svelte/src/components/DataMetrics/ByteFrequencyGraph.svelte
@@ -20,7 +20,7 @@ limitations under the License.
import { MessageCommand } from '../../utilities/message'
import { onMount } from 'svelte'
import Input from '../Inputs/Input/Input.svelte'
- import { offsetMax } from '../DataDisplays/CustomByteDisplay/BinaryData'
+ import { viewport } from '../../stores'
import { DATA_PROFILE_MAX_LENGTH } from '../../stores/configuration'
import { addressRadix } from '../../stores'
import { radixToString, regexEditDataTest } from '../../utilities/display'
@@ -179,9 +179,9 @@ limitations under the License.
} else if (endOffsetTemp <= startOffset) {
setErrorMessage('End offset must be greater than start offset')
return
- } else if (endOffsetTemp > $offsetMax) {
+ } else if (endOffsetTemp > viewport.offsetMax) {
setErrorMessage(
- `End offset must be less than or equal to ${$offsetMax}`
+ `End offset must be less than or equal to ${viewport.offsetMax}`
)
return
}
@@ -211,9 +211,11 @@ limitations under the License.
} else if (lengthTemp <= 0) {
setErrorMessage('Length must be greater than 0')
return
- } else if (lengthTemp > $offsetMax - startOffset) {
+ } else if (lengthTemp > viewport.offsetMax - startOffset) {
setErrorMessage(
- `Length must be less than or equal to ${$offsetMax -
startOffset}`
+ `Length must be less than or equal to ${
+ viewport.offsetMax - startOffset
+ }`
)
return
}
@@ -401,7 +403,7 @@ limitations under the License.
<div class="stats">
<label for="computed-size"
> Max Offset: <span id="computed-size" class="nowrap"
- >{$offsetMax}</span
+ >{viewport.offsetMax}</span
></label
>
<label for="min-frequency"
diff --git a/src/svelte/src/components/Header/Header.svelte
b/src/svelte/src/components/Header/Header.svelte
index 0a926ae..e04cbfd 100644
--- a/src/svelte/src/components/Header/Header.svelte
+++ b/src/svelte/src/components/Header/Header.svelte
@@ -16,11 +16,12 @@ limitations under the License.
-->
<script lang="ts">
import FileMetrics from './fieldsets/FileMetrics.svelte'
- import { fileMetrics } from './fieldsets/FileMetrics'
import SearchReplace from './fieldsets/SearchReplace.svelte'
import Settings from './fieldsets/Settings.svelte'
import FlexContainer from '../layouts/FlexContainer.svelte'
import { UIThemeCSSClass } from '../../utilities/colorScheme'
+ import { fileMetrics } from '../../stores'
+
let hideChildren = false
</script>
diff --git a/src/svelte/src/components/Header/fieldsets/FileMetrics.svelte
b/src/svelte/src/components/Header/fieldsets/FileMetrics.svelte
index 429478c..ca5a559 100644
--- a/src/svelte/src/components/Header/fieldsets/FileMetrics.svelte
+++ b/src/svelte/src/components/Header/fieldsets/FileMetrics.svelte
@@ -17,14 +17,13 @@ limitations under the License.
<script lang="ts">
import Button from '../../Inputs/Buttons/Button.svelte'
import FlexContainer from '../../layouts/FlexContainer.svelte'
- import { fileMetrics } from './FileMetrics'
import { MessageCommand } from '../../../utilities/message'
import { vscode } from '../../../utilities/vscode'
- import { saveable } from '../../../stores'
+ import { saveable, fileMetrics } from '../../../stores'
import { createEventDispatcher } from 'svelte'
import SidePanel from '../../layouts/SidePanel.svelte'
import ByteFrequencyGraph from '../../DataMetrics/ByteFrequencyGraph.svelte'
- import { viewport } from '../../DataDisplays/CustomByteDisplay/BinaryData'
+ import { viewport } from '../../../stores'
import { humanReadableByteLength } from '../../../utilities/display'
import { DATA_PROFILE_MAX_LENGTH } from '../../../stores/configuration'
import Tooltip from '../../layouts/Tooltip.svelte'
diff --git a/src/svelte/src/components/Header/fieldsets/FileMetrics.ts
b/src/svelte/src/components/Header/fieldsets/FileMetrics.ts
index 45e64de..053f915 100644
--- a/src/svelte/src/components/Header/fieldsets/FileMetrics.ts
+++ b/src/svelte/src/components/Header/fieldsets/FileMetrics.ts
@@ -24,10 +24,8 @@ class FileMetricsData {
undoCount: number = 0
}
-class FileMetrics extends SimpleWritable<FileMetricsData> {
+export class FileMetrics extends SimpleWritable<FileMetricsData> {
protected init(): FileMetricsData {
return new FileMetricsData()
}
}
-
-export const fileMetrics = new FileMetrics()
diff --git a/src/svelte/src/components/Header/fieldsets/SearchReplace.svelte
b/src/svelte/src/components/Header/fieldsets/SearchReplace.svelte
index 36251a7..7f32d7a 100644
--- a/src/svelte/src/components/Header/fieldsets/SearchReplace.svelte
+++ b/src/svelte/src/components/Header/fieldsets/SearchReplace.svelte
@@ -18,11 +18,10 @@ limitations under the License.
import {
addressRadix,
allowCaseInsensitiveSearch,
+ editorActionsAllowed,
editorEncoding,
seekable,
seekOffsetInput,
- } from '../../../stores'
- import {
replaceable,
replaceErr,
replaceQuery,
@@ -30,7 +29,7 @@ limitations under the License.
searchErr,
searchQuery,
seekErr,
- } from './SearchReplace'
+ } from '../../../stores'
import { vscode } from '../../../utilities/vscode'
import { MessageCommand } from '../../../utilities/message'
@@ -38,18 +37,15 @@ limitations under the License.
import Button from '../../Inputs/Buttons/Button.svelte'
import Input from '../../Inputs/Input/Input.svelte'
import FlexContainer from '../../layouts/FlexContainer.svelte'
- import { createEventDispatcher, tick } from 'svelte'
+ import { createEventDispatcher } from 'svelte'
import { UIThemeCSSClass } from '../../../utilities/colorScheme'
import ToggleableButton from '../../Inputs/Buttons/ToggleableButton.svelte'
import {
clearSearchResultsHighlights,
updateSearchResultsHighlights,
} from '../../../utilities/highlights'
- import { viewport } from '../../DataDisplays/CustomByteDisplay/BinaryData'
- import {
- EditActionRestrictions,
- editorActionsAllowed,
- } from '../../../stores/configuration'
+ import { viewport } from '../../../stores'
+ import { EditActionRestrictions } from '../../../stores/configuration'
const eventDispatcher = createEventDispatcher()
diff --git a/src/svelte/src/components/Header/fieldsets/SearchReplace.ts
b/src/svelte/src/components/Header/fieldsets/SearchReplace.ts
index 45bdd7f..089ec07 100644
--- a/src/svelte/src/components/Header/fieldsets/SearchReplace.ts
+++ b/src/svelte/src/components/Header/fieldsets/SearchReplace.ts
@@ -18,10 +18,6 @@
import { SimpleWritable } from '../../../stores/localStore'
import { addressRadix, seekOffsetInput } from '../../../stores'
import { get } from 'svelte/store'
-import { validateEncodingStr } from '../../../utilities/display'
-import { ErrorStore, ErrorComponentType } from '../../Error/Error'
-import { editorEncoding, selectionDataStore } from '../../../stores'
-import { derived } from 'svelte/store'
interface QueryableData {
input: string
@@ -37,7 +33,7 @@ class SearchData implements QueryableData {
overflow: boolean = false
byteLength: number = 0
}
-class SearchQuery extends SimpleWritable<SearchData> {
+export class SearchQuery extends SimpleWritable<SearchData> {
protected init(): SearchData {
return new SearchData()
}
@@ -80,55 +76,3 @@ export class ReplaceQuery extends
SimpleWritable<ReplaceData> {
return new ReplaceData()
}
}
-
-export const searchQuery = new SearchQuery()
-export const replaceQuery = new ReplaceQuery()
-
-export const searchErr = new ErrorStore(ErrorComponentType.SYMBOL)
-export const replaceErr = new ErrorStore(ErrorComponentType.SYMBOL)
-export const seekErr = new ErrorStore(ErrorComponentType.SYMBOL)
-
-export const searchable = derived(
- [searchQuery, editorEncoding],
- ([$searchQuery, $editorEncoding]) => {
- if ($searchQuery.input.length === 0 || $searchQuery.processing) {
- searchErr.update(() => {
- return ''
- })
- return false
- }
- const ret = validateEncodingStr($searchQuery.input, $editorEncoding,
'full')
- searchErr.update(() => {
- return ret.errMsg
- })
- return ret.valid
- }
-)
-
-export const replaceable = derived(
- [replaceQuery, editorEncoding, searchable, selectionDataStore],
- ([$replaceData, $editorEncoding, $searchable, $selectionData]) => {
- if (
- $replaceData.input.length < 0 ||
- !$searchable ||
- $replaceData.processing
- ) {
- replaceErr.update(() => {
- return ''
- })
- return false
- }
- if ($selectionData.active) {
- replaceErr.update(() => {
- return 'Cannot replace while viewport data is selected'
- })
- return false
- }
-
- const ret = validateEncodingStr($replaceData.input, $editorEncoding)
- replaceErr.update(() => {
- return ret.errMsg
- })
- return ret.valid
- }
-)
diff --git a/src/svelte/src/components/Header/fieldsets/Settings.svelte
b/src/svelte/src/components/Header/fieldsets/Settings.svelte
index 298388e..2605a7e 100644
--- a/src/svelte/src/components/Header/fieldsets/Settings.svelte
+++ b/src/svelte/src/components/Header/fieldsets/Settings.svelte
@@ -19,9 +19,12 @@ limitations under the License.
RADIX_OPTIONS,
ENCODING_GROUPS,
EDIT_ACTIONS,
- editorActionsAllowed,
} from '../../../stores/configuration'
- import { displayRadix, editorEncoding } from '../../../stores'
+ import {
+ displayRadix,
+ editorEncoding,
+ editorActionsAllowed,
+ } from '../../../stores'
import FlexContainer from '../../layouts/FlexContainer.svelte'
import { UIThemeCSSClass } from '../../../utilities/colorScheme'
</script>
diff --git a/src/svelte/src/components/Inputs/Buttons/Button.svelte
b/src/svelte/src/components/Inputs/Buttons/Button.svelte
index acad004..1b624d6 100644
--- a/src/svelte/src/components/Inputs/Buttons/Button.svelte
+++ b/src/svelte/src/components/Inputs/Buttons/Button.svelte
@@ -15,14 +15,14 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
<script lang="ts">
+ import Tooltip from '../../layouts/Tooltip.svelte'
+ import FlexContainer from '../../layouts/FlexContainer.svelte'
import { onMount } from 'svelte'
+ import { UIThemeCSSClass } from '../../../utilities/colorScheme'
+ import { tooltipsEnabled } from '../../../stores'
export let fn: (event?: Event) => void
export let disabledBy = false
export let width = ''
- import { UIThemeCSSClass } from '../../../utilities/colorScheme'
- import FlexContainer from '../../layouts/FlexContainer.svelte'
- import Tooltip from '../../layouts/Tooltip.svelte'
- import { tooltipsEnabled } from '../../../utilities/display'
onMount(() => {
collapseContent = document.body.clientWidth <= 1600
diff --git a/src/svelte/src/components/Inputs/Buttons/ToggleableButton.svelte
b/src/svelte/src/components/Inputs/Buttons/ToggleableButton.svelte
index dfd5079..388cccf 100644
--- a/src/svelte/src/components/Inputs/Buttons/ToggleableButton.svelte
+++ b/src/svelte/src/components/Inputs/Buttons/ToggleableButton.svelte
@@ -19,9 +19,9 @@ limitations under the License.
export let disabledBy = false
export let width = ''
export let active = false
- import { UIThemeCSSClass } from '../../../utilities/colorScheme'
- import FlexContainer from '../../layouts/FlexContainer.svelte'
import Tooltip from '../../layouts/Tooltip.svelte'
+ import FlexContainer from '../../layouts/FlexContainer.svelte'
+ import { UIThemeCSSClass } from '../../../utilities/colorScheme'
export let description: string
</script>
diff --git a/src/svelte/src/components/ServerMetrics/ServerMetrics.svelte
b/src/svelte/src/components/ServerMetrics/ServerMetrics.svelte
index a8b98a4..e18bfc3 100644
--- a/src/svelte/src/components/ServerMetrics/ServerMetrics.svelte
+++ b/src/svelte/src/components/ServerMetrics/ServerMetrics.svelte
@@ -15,8 +15,8 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
<script lang="ts">
- import { MessageCommand } from '../../utilities/message'
import FlexContainer from '../layouts/FlexContainer.svelte'
+ import { MessageCommand } from '../../utilities/message'
let heartbeat = {
latency: 0,
@@ -28,7 +28,7 @@ limitations under the License.
serverVersion: 'Unknown',
sessionCount: 0,
}
- let timerId: number = 0
+ let timerId: NodeJS.Timeout
function showHeartbeatInfo(show: boolean) {
const element = document.getElementsByClassName(
diff --git a/src/svelte/src/components/dataEditor.svelte
b/src/svelte/src/components/dataEditor.svelte
index 47c799c..4cb9c24 100644
--- a/src/svelte/src/components/dataEditor.svelte
+++ b/src/svelte/src/components/dataEditor.svelte
@@ -29,14 +29,13 @@ limitations under the License.
requestable,
selectionDataStore,
selectionSize,
- viewportCapacity,
- viewportEndOffset,
- viewportFollowingByteCount,
viewportNumLinesDisplayed,
- viewportStartOffset,
dataFeedLineTop,
SelectionData_t,
dataFeedAwaitRefresh,
+ fileMetrics,
+ viewport,
+ searchQuery,
} from '../stores'
import {
CSSThemeClass,
@@ -47,22 +46,18 @@ limitations under the License.
import { vscode } from '../utilities/vscode'
import Header from './Header/Header.svelte'
import Main from './Main.svelte'
- import { EditByteModes } from '../stores/configuration'
+ import { EditByteModes, NUM_LINES_DISPLAYED } from '../stores/configuration'
import ServerMetrics from './ServerMetrics/ServerMetrics.svelte'
import { enterKeypressEvents } from '../utilities/enterKeypressEvents'
- import {
- type EditEvent,
- viewport,
+ import type {
+ EditEvent,
ViewportData_t,
} from './DataDisplays/CustomByteDisplay/BinaryData'
- import { fileMetrics } from './Header/fieldsets/FileMetrics'
import {
- DISPLAYED_DATA_LINES,
byte_count_divisible_offset,
viewport_offset_to_line_num,
} from '../utilities/display'
import { clearSearchResultsHighlights } from '../utilities/highlights'
- import { searchQuery } from './Header/fieldsets/SearchReplace'
$: $UIThemeCSSClass = $darkUITheme ? CSSThemeClass.Dark : CSSThemeClass.Light
@@ -124,7 +119,7 @@ limitations under the License.
viewportStartOffset,
$bytesPerRow
) -
- (DISPLAYED_DATA_LINES - 1)
+ (NUM_LINES_DISPLAYED - 1)
: viewport_offset_to_line_num(offset, viewportStartOffset,
$bytesPerRow)
$dataFeedAwaitRefresh = true
@@ -144,47 +139,6 @@ limitations under the License.
clearDataDisplays()
}
- function scrolledToEnd(_: Event) {
- if ($viewportFollowingByteCount > 0) {
- // top the display must be the last page of the current viewport, plus
one line
- const topOfLastPagePlusOneLine =
- $viewportEndOffset +
- $bytesPerRow -
- $viewportNumLinesDisplayed * $bytesPerRow
-
- vscode.postMessage({
- command: MessageCommand.scrollViewport,
- data: {
- // scroll the viewport with the desired offset in the middle
- scrollOffset: $viewportEndOffset - Math.floor($viewportCapacity / 2),
- bytesPerRow: $bytesPerRow,
- numLinesDisplayed: $viewportNumLinesDisplayed,
- },
- })
- seek(topOfLastPagePlusOneLine)
- }
- }
-
- function scrolledToTop(_: Event) {
- if ($viewportStartOffset > 0) {
- // offset to scroll to after the viewport is scrolled, which should be
the previous line in the file
- const topOfFirstPageMinusOneLine = $viewportStartOffset - $bytesPerRow
- vscode.postMessage({
- command: MessageCommand.scrollViewport,
- data: {
- // scroll the viewport with the desired offset in the middle
- scrollOffset: Math.max(
- topOfFirstPageMinusOneLine - Math.floor($viewportCapacity / 2),
- 0
- ),
- bytesPerRow: $bytesPerRow,
- numLinesDisplayed: $viewportNumLinesDisplayed,
- },
- })
- seek(topOfFirstPageMinusOneLine)
- }
- }
-
function seekEventHandler(_: CustomEvent) {
seek($seekOffset)
}
@@ -278,6 +232,7 @@ limitations under the License.
searchQuery.clear()
clearSearchResultsHighlights()
}
+
function handleKeyBind(event: Event) {
const kbdEvent = event as KeyboardEvent
if (kbdEvent.key === 'Enter') {
@@ -325,15 +280,6 @@ limitations under the License.
break
}
})
-
- function scrollBoundaryEventHandler(e: CustomEvent) {
- if (e.detail.scrolledTop) {
- scrolledToTop(e)
- }
- if (e.detail.scrolledEnd) {
- scrolledToEnd(e)
- }
- }
</script>
<svelte:window on:keydown|nonpassive={handleKeyBind} />
@@ -350,9 +296,6 @@ limitations under the License.
on:clearDataDisplays={clearDataDisplays}
on:applyChanges={custom_apply_changes}
on:handleEditorEvent={handleEditorEvent}
- on:scrolledToTop={scrolledToTop}
- on:scrolledToEnd={scrolledToEnd}
- on:scrollBoundary={scrollBoundaryEventHandler}
on:traverse-file={traversalEventHandler}
on:seek={seekEventHandler}
/>
diff --git a/src/svelte/src/components/layouts/Tooltip.svelte
b/src/svelte/src/components/layouts/Tooltip.svelte
index c4220f0..dc54251 100644
--- a/src/svelte/src/components/layouts/Tooltip.svelte
+++ b/src/svelte/src/components/layouts/Tooltip.svelte
@@ -15,7 +15,7 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
<script lang="ts">
- import { tooltipsEnabled } from '../../utilities/display'
+ import { tooltipsEnabled } from '../../stores'
const NULL = () => {}
diff --git a/src/svelte/src/stores/configuration.ts
b/src/svelte/src/stores/configuration.ts
index dc17d57..8b681a1 100644
--- a/src/svelte/src/stores/configuration.ts
+++ b/src/svelte/src/stores/configuration.ts
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import { writable } from 'svelte/store'
-
export type Radixes = 'Hexadecimal' | 'Decimal' | 'Octal' | 'Binary'
export type RadixValues = 16 | 10 | 8 | 2
@@ -115,5 +113,3 @@ export const VIEWPORT_CAPACITY_MAX = 16 * 64 // 1024, Ωedit
maximum viewport si
export const NUM_LINES_DISPLAYED = 20
export const DATA_PROFILE_MAX_LENGTH = 10_000_000
-
-export const editorActionsAllowed = writable(EditActionRestrictions.None)
diff --git a/src/svelte/src/stores/index.ts b/src/svelte/src/stores/index.ts
index f817c04..6723b89 100644
--- a/src/svelte/src/stores/index.ts
+++ b/src/svelte/src/stores/index.ts
@@ -16,28 +16,32 @@
*/
import type { ValidationResponse } from '../utilities/display'
-import {
- EditByteModes,
- UNPRINTABLE_CHAR_STAND_IN,
- type RadixValues,
- type BytesPerRow,
- EditActionRestrictions,
- editorActionsAllowed,
-} from './configuration'
import { ThemeType } from '../utilities/colorScheme'
-import { fileMetrics } from '../components/Header/fieldsets/FileMetrics'
+import { FileMetrics } from '../components/Header/fieldsets/FileMetrics'
+import { derived, writable } from 'svelte/store'
+import { SimpleWritable } from './localStore'
+import { ErrorComponentType, ErrorStore } from '../components/Error/Error'
import {
radixBytePad,
regexEditDataTest,
validateEncodingStr,
} from '../utilities/display'
-import { derived, writable } from 'svelte/store'
-import { SimpleWritable } from './localStore'
import {
BYTE_ACTION_DIV_OFFSET,
- selectedByte,
- viewport,
+ ViewportDataStore_t,
+ type ByteValue,
} from '../components/DataDisplays/CustomByteDisplay/BinaryData'
+import {
+ ReplaceQuery,
+ SearchQuery,
+} from '../components/Header/fieldsets/SearchReplace'
+import {
+ EditByteModes,
+ UNPRINTABLE_CHAR_STAND_IN,
+ type RadixValues,
+ type BytesPerRow,
+ EditActionRestrictions,
+} from './configuration'
export class SelectionData_t {
startOffset = -1
@@ -107,22 +111,80 @@ export const searchCaseInsensitive = writable(false)
export const dataFeedLineTop = writable(0)
export const dataFeedAwaitRefresh = writable(false)
export const rerenderActionElements = writable(false)
-// data in the viewport
-// export const viewportData = writable(new Uint8Array(0))
// Viewport properties
-export const viewportStartOffset = writable(0)
-export const viewportLength = writable(0)
-export const viewportFollowingByteCount = writable(0)
-export const viewportScrollTop = writable(0)
-export const viewportScrollHeight = writable(0)
-export const viewportClientHeight = writable(0)
-export const viewportCapacity = writable(0)
-export const viewportLineHeight = writable(0)
+export const viewport = new ViewportDataStore_t()
+export const viewportNumLinesDisplayed = writable(20)
+
+export const bytesPerRow = writable(16 as BytesPerRow)
+export const editingByte = writable(false)
+export const selectedByte = writable({
+ text: '',
+ offset: -1,
+ value: -1,
+} as ByteValue)
+
+export const fileMetrics = new FileMetrics()
+
+export const searchQuery = new SearchQuery()
+export const replaceQuery = new ReplaceQuery()
+
+export const searchErr = new ErrorStore(ErrorComponentType.SYMBOL)
+export const replaceErr = new ErrorStore(ErrorComponentType.SYMBOL)
+export const seekErr = new ErrorStore(ErrorComponentType.SYMBOL)
+
+export const editorActionsAllowed = writable(EditActionRestrictions.None)
+export const tooltipsEnabled = writable(false)
+export const sizeHumanReadable = writable(false)
// tracks the start and end offsets of the current selection
export const selectionDataStore = new SelectionData()
+export const searchable = derived(
+ [searchQuery, editorEncoding],
+ ([$searchQuery, $editorEncoding]) => {
+ if ($searchQuery.input.length === 0 || $searchQuery.processing) {
+ searchErr.update(() => {
+ return ''
+ })
+ return false
+ }
+ const ret = validateEncodingStr($searchQuery.input, $editorEncoding,
'full')
+ searchErr.update(() => {
+ return ret.errMsg
+ })
+ return ret.valid
+ }
+)
+
+export const replaceable = derived(
+ [replaceQuery, editorEncoding, searchable, selectionDataStore],
+ ([$replaceData, $editorEncoding, $searchable, $selectionData]) => {
+ if (
+ $replaceData.input.length < 0 ||
+ !$searchable ||
+ $replaceData.processing
+ ) {
+ replaceErr.update(() => {
+ return ''
+ })
+ return false
+ }
+ if ($selectionData.active) {
+ replaceErr.update(() => {
+ return 'Cannot replace while viewport data is selected'
+ })
+ return false
+ }
+
+ const ret = validateEncodingStr($replaceData.input, $editorEncoding)
+ replaceErr.update(() => {
+ return ret.errMsg
+ })
+ return ret.valid
+ }
+)
+
// derived readable enumeration that indicates the edit mode (single byte or
multiple bytes)
export const editMode = derived(
selectionDataStore,
@@ -134,41 +196,6 @@ export const editMode = derived(
EditByteModes.Single
)
-// derived readable number whose value is the number of lines displayed in the
viewport
-export const viewportNumLinesDisplayed = derived(
- [viewportClientHeight, viewportLineHeight],
- ([$viewportClientHeight, $viewportLineHeight]) => {
- return Math.floor($viewportClientHeight / $viewportLineHeight) + 1
- }
-)
-
-// derived readable number whose value is the end offset of the current
viewport
-export const viewportEndOffset = derived(
- [viewportStartOffset, viewportLength],
- ([$viewportStartOffset, $viewportLength]) => {
- return $viewportStartOffset + $viewportLength
- }
-)
-
-// derived readable boolean that indicates if the viewport is scrolled to the
top
-export const viewportScrolledToTop = derived(
- [viewportScrollTop],
- ([$viewportScrollTop]) => {
- return $viewportScrollTop === 0
- }
-)
-
-// derived readable boolean that indicates if the viewport is scrolled to the
end
-export const viewportScrolledToEnd = derived(
- [viewportScrollTop, viewportScrollHeight, viewportClientHeight],
- ([$viewportScrollTop, $viewportScrollHeight, $viewportClientHeight]) => {
- return (
- Math.ceil($viewportScrollTop) + $viewportClientHeight >=
- $viewportScrollHeight
- )
- }
-)
-
// derived readable number whose value is the size of the current data
selection
export const selectionSize = derived(
[selectionDataStore, editorSelection],
@@ -216,11 +243,6 @@ export const editedByteIsOriginalByte = derived(
}
)
-// derived readable number that indicates the number of encoded bytes per row
in each viewport
-export const bytesPerRow = derived(displayRadix, ($displayRadix) => {
- return $displayRadix === 2 ? 8 : (16 as BytesPerRow)
-})
-
export const viewportColumnWidth = derived(bytesPerRow, (bytesPerRow) => {
return bytesPerRow * BYTE_ACTION_DIV_OFFSET
})
@@ -376,10 +398,12 @@ function validRequestableData(
}
export const dvOffset = derived(
- [selectionDataStore, addressRadix],
- ([$selectionData, $addressRadix]) => {
+ [selectionDataStore, addressRadix, viewport],
+ ([$selectionData, $addressRadix, $viewport]) => {
return $selectionData.active
- ? $selectionData.startOffset.toString($addressRadix).toUpperCase()
+ ? ($viewport.fileOffset + $selectionData.startOffset)
+ .toString($addressRadix)
+ .toUpperCase()
: ''
}
)
diff --git a/src/svelte/src/utilities/display.ts
b/src/svelte/src/utilities/display.ts
index 4a9617e..0e2c14f 100644
--- a/src/svelte/src/utilities/display.ts
+++ b/src/svelte/src/utilities/display.ts
@@ -13,19 +13,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { writable } from 'svelte/store'
import {
EditByteModes,
type BytesPerRow,
type RadixValues,
} from '../stores/configuration'
-export type ViewportReferences = {
- physical: HTMLTextAreaElement
- address: HTMLTextAreaElement
- logical: HTMLTextAreaElement
-}
-
export type Viewport = 'physical' | 'address' | 'logical'
export type ValidationResponse = {
@@ -45,29 +38,8 @@ const ByteDivWidths = {
}
export type BinaryBytePrefix = 'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB'
-export type BinaryBitPrefix = 'b' | 'Kb' | 'Mb' | 'Gb' | 'Tb' | 'Pb'
-type ValidByteOctetCount = 1 | 2 | 3 | 4
-
-export const DISPLAYED_DATA_LINES = 20
-
-export const tooltipsEnabled = writable(false)
-export const sizeHumanReadable = writable(false)
-
-export function viewport_references(
- viewport?: Viewport
-): ViewportReferences | HTMLTextAreaElement {
- return viewport
- ? (document.getElementById(viewport) as HTMLTextAreaElement)
- : {
- physical: document.getElementById('physical') as HTMLTextAreaElement,
- address: document.getElementById('address') as HTMLTextAreaElement,
- logical: document.getElementById('logical') as HTMLTextAreaElement,
- }
-}
-export function edit_byte_window_ref(): HTMLDivElement {
- return document.getElementById('editByteWindow') as HTMLDivElement
-}
+export type BinaryBitPrefix = 'b' | 'Kb' | 'Mb' | 'Gb' | 'Tb' | 'Pb'
export function radixBytePad(radix: RadixValues): number {
switch (radix) {
diff --git a/src/svelte/src/utilities/highlights.ts
b/src/svelte/src/utilities/highlights.ts
index 51966b0..1ceeb44 100644
--- a/src/svelte/src/utilities/highlights.ts
+++ b/src/svelte/src/utilities/highlights.ts
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import { derived, get, readable, writable } from 'svelte/store'
+import { derived, readable, writable } from 'svelte/store'
import { selectionDataStore } from '../stores'
let selectionHighlightLUT = new Uint8Array(1024)