poe-svelte-ui-lib 1.10.8 → 1.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,8 +30,7 @@
30
30
  historyData = [],
31
31
  }: IGraphProps = $props()
32
32
 
33
- /* Статический режим: historyData передан целиком с реальными timestamp (Unix-эпоха в мс) —
34
- компонент рисует весь массив разом, без интервалов/AUTO; streamingData/refreshRate игнорируются */
33
+ /* Статический режим: historyData передан целиком с реальными timestamp (Unix-эпоха в мс) */
35
34
  const isHistoryMode = $derived(!!historyData && historyData.length > 0)
36
35
 
37
36
  /* Состояние компонента */
@@ -42,19 +41,13 @@
42
41
  let ctx: CanvasRenderingContext2D
43
42
  let width = $state(600)
44
43
  let height = $state(125)
45
-
46
- /* selectedRefreshRate изначально берётся из пропа (сохраняется вместе с компонентом в конструкторе),
47
- но остаётся локально переключаемым через Select ниже — присвоение этому $derived временно
48
- переопределяет значение, пока не изменится refreshRate/isTest (проп) */
49
44
  let selectedRefreshRate = $derived(isTest ? 50 : (refreshRate ?? 0))
50
45
  const maxDataPoints = $derived(selectedRefreshRate == 0 ? 20 : 100)
51
46
  const defaultColors = ["#3b82f6", "#ef4444", "#10b981", "#f59e0b", "#8b5cf6", "#ec4899"]
52
47
 
53
48
  let previousValues: number[] = $state([])
54
49
 
55
- /* Автомасштаб Y для живого режима: диапазон плавно "подъезжает" к фактическому min/max буфера
56
- (±10% отступ), пересчитывается один раз за тик (не за кадр/mousemove) и сглаживается —
57
- иначе ось дёргалась бы на каждый новый семпл */
50
+ /* Автомасштаб Y для живого режима: диапазон плавно "подъезжает" к фактическому min/max буфера (±10% отступ) */
58
51
  let liveYRange = $state<{ min: number; max: number } | null>(null)
59
52
 
60
53
  const computeAutoYRange = (values: number[]): { min: number; max: number } => {
@@ -120,8 +113,7 @@
120
113
  initializeGraphData()
121
114
  })
122
115
 
123
- /* Статический режим: строим graphData один раз (и заново при каждой смене historyData) —
124
- x = реальный timestamp точки, "текущее" значение в панели Values — последняя (по времени) точка серии */
116
+ /* Статический режим: строим graphData один раз */
125
117
  $effect(() => {
126
118
  if (!isHistoryMode) return
127
119
  const series = historyData.slice(0, 6).map((s, i) => {
@@ -138,12 +130,7 @@
138
130
  drawAllGraphs()
139
131
  })
140
132
 
141
- /* Обработка входящих потоковых данных.
142
- ВАЖНО: streamingData читается только внутри колбэков setInterval (асинхронный контекст),
143
- а не в теле $effect — иначе каждое новое сообщение (у нас до 10 Гц с устройства) делает
144
- streamingData зависимостью эффекта, и он пересоздаёт таймер на каждый пакет: если Refresh
145
- rate медленнее, чем частота входящих данных, setInterval убивается раньше, чем успевает
146
- сработать хотя бы раз — график зависает. */
133
+ /* Обработка входящих потоковых данных */
147
134
  let intervalId: ReturnType<typeof setInterval>
148
135
  $effect(() => {
149
136
  clearInterval(intervalId)
@@ -24,7 +24,7 @@
24
24
  let checkedOptions: boolean[] = $derived(
25
25
  (() => {
26
26
  if (bitMode) {
27
- return localOptions.map((option) => Math.abs((value ?? 0) & (1 << (option?.value ?? 0))) == Math.pow(2, option.value ?? 0))
27
+ return localOptions.map((option) => (((value ?? 0) & (1 << (option?.value ?? 0))) >>> 0) === Math.pow(2, option.value ?? 0))
28
28
  } else {
29
29
  return [value == 1]
30
30
  }
@@ -38,7 +38,7 @@
38
38
 
39
39
  const handleToggle = (index: number) => {
40
40
  if (localOptions[index].disabled) return
41
- value = Math.abs((value ?? 0) ^ (1 << (bitMode ? (localOptions[index].value ?? 0) : 0)))
41
+ value = ((value ?? 0) ^ (1 << (bitMode ? (localOptions[index].value ?? 0) : 0))) >>> 0
42
42
 
43
43
  onChange(value)
44
44
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-svelte-ui-lib",
3
- "version": "1.10.8",
3
+ "version": "1.10.9",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {