lynx-console 0.1.0 → 0.1.1

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.
package/dist/index.mjs CHANGED
@@ -1,10 +1,11 @@
1
1
  import "./index.css";
2
2
  import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from "@lynx-js/react";
3
3
  import "./assets/src/components/BottomSheet.css.ts.vanilla-CulwSDhG.css";
4
- import "./assets/src/components/ConsolePanel.css.ts.vanilla-DFvHPEyg.css";
4
+ import "./assets/src/components/ConsolePanel.css.ts.vanilla-DWdhFBJq.css";
5
5
  import { stringify } from "javascript-stringify";
6
- import "./assets/src/components/NetworkPanel.css.ts.vanilla-DFMduT0T.css";
7
- import "./assets/src/components/PerformancePanel.css.ts.vanilla-D35LuXlW.css";
6
+ import "./assets/src/components/FadeList.css.ts.vanilla-sppTKMZj.css";
7
+ import "./assets/src/components/NetworkPanel.css.ts.vanilla-BSE4s40D.css";
8
+ import "./assets/src/components/PerformancePanel.css.ts.vanilla-Bb3zG5G8.css";
8
9
  import "./assets/src/components/Tabs.css.ts.vanilla-DD7L2oXt.css";
9
10
  import "./assets/src/components/FloatingButton.css.ts.vanilla-BaG0OI6p.css";
10
11
 
@@ -288,96 +289,94 @@ var createRuntimeFn = (config) => {
288
289
 
289
290
  //#endregion
290
291
  //#region src/components/ConsolePanel.css.ts
291
- var argNull = "ConsolePanel_argNull__db6kuu17";
292
- var argObject = "ConsolePanel_argObject__db6kuu1j";
293
- var argObjectContent = "ConsolePanel_argObjectContent__db6kuu1m";
294
- var argObjectHeader = "ConsolePanel_argObjectHeader__db6kuu1k";
295
- var argObjectJson = "ConsolePanel_argObjectJson__db6kuu1p";
296
- var argObjectPreview = "ConsolePanel_argObjectPreview__db6kuu1l";
292
+ var argNull = "ConsolePanel_argNull__db6kuu18";
293
+ var argObject = "ConsolePanel_argObject__db6kuu1k";
294
+ var argObjectContent = "ConsolePanel_argObjectContent__db6kuu1n";
295
+ var argObjectHeader = "ConsolePanel_argObjectHeader__db6kuu1l";
296
+ var argObjectJson = "ConsolePanel_argObjectJson__db6kuu1q";
297
+ var argObjectPreview = "ConsolePanel_argObjectPreview__db6kuu1m";
297
298
  var argPrimitive = createRuntimeFn({
298
- defaultClassName: "ConsolePanel_argPrimitive__db6kuu1e",
299
+ defaultClassName: "ConsolePanel_argPrimitive__db6kuu1f",
299
300
  variantClassNames: { level: {
300
- log: "ConsolePanel_argPrimitive_level_log__db6kuu1f",
301
- info: "ConsolePanel_argPrimitive_level_info__db6kuu1g",
302
- warn: "ConsolePanel_argPrimitive_level_warn__db6kuu1h",
303
- error: "ConsolePanel_argPrimitive_level_error__db6kuu1i"
301
+ log: "ConsolePanel_argPrimitive_level_log__db6kuu1g",
302
+ info: "ConsolePanel_argPrimitive_level_info__db6kuu1h",
303
+ warn: "ConsolePanel_argPrimitive_level_warn__db6kuu1i",
304
+ error: "ConsolePanel_argPrimitive_level_error__db6kuu1j"
304
305
  } },
305
306
  defaultVariants: {},
306
307
  compoundVariants: []
307
308
  });
308
309
  var argString = createRuntimeFn({
309
- defaultClassName: "ConsolePanel_argString__db6kuu19",
310
+ defaultClassName: "ConsolePanel_argString__db6kuu1a",
310
311
  variantClassNames: { level: {
311
- log: "ConsolePanel_argString_level_log__db6kuu1a",
312
- info: "ConsolePanel_argString_level_info__db6kuu1b",
313
- warn: "ConsolePanel_argString_level_warn__db6kuu1c",
314
- error: "ConsolePanel_argString_level_error__db6kuu1d"
312
+ log: "ConsolePanel_argString_level_log__db6kuu1b",
313
+ info: "ConsolePanel_argString_level_info__db6kuu1c",
314
+ warn: "ConsolePanel_argString_level_warn__db6kuu1d",
315
+ error: "ConsolePanel_argString_level_error__db6kuu1e"
315
316
  } },
316
317
  defaultVariants: {},
317
318
  compoundVariants: []
318
319
  });
319
- var argUndefined = "ConsolePanel_argUndefined__db6kuu18";
320
- var clearButton$2 = "ConsolePanel_clearButton__db6kuuo";
321
- var clearButtonText$2 = "ConsolePanel_clearButtonText__db6kuup";
320
+ var argUndefined = "ConsolePanel_argUndefined__db6kuu19";
321
+ var clearButton$2 = "ConsolePanel_clearButton__db6kuup";
322
+ var clearButtonText$2 = "ConsolePanel_clearButtonText__db6kuuq";
322
323
  var container$2 = "ConsolePanel_container__db6kuu0";
323
- var fadeBottom = "ConsolePanel_fadeBottom__db6kuu1q";
324
- var fadeTop = "ConsolePanel_fadeTop__db6kuu5";
325
- var filterButton = "ConsolePanel_filterButton__db6kuu7";
326
- var filterButtonText = "ConsolePanel_filterButtonText__db6kuu8";
324
+ var filterButton = "ConsolePanel_filterButton__db6kuu6";
325
+ var filterButtonText = "ConsolePanel_filterButtonText__db6kuu7";
327
326
  var filterCheckbox = createRuntimeFn({
328
- defaultClassName: "ConsolePanel_filterCheckbox__db6kuub",
327
+ defaultClassName: "ConsolePanel_filterCheckbox__db6kuua",
329
328
  variantClassNames: { level: {
330
- log: "ConsolePanel_filterCheckbox_level_log__db6kuuc",
331
- info: "ConsolePanel_filterCheckbox_level_info__db6kuud",
332
- warn: "ConsolePanel_filterCheckbox_level_warn__db6kuue",
333
- error: "ConsolePanel_filterCheckbox_level_error__db6kuuf"
329
+ log: "ConsolePanel_filterCheckbox_level_log__db6kuub",
330
+ info: "ConsolePanel_filterCheckbox_level_info__db6kuuc",
331
+ warn: "ConsolePanel_filterCheckbox_level_warn__db6kuud",
332
+ error: "ConsolePanel_filterCheckbox_level_error__db6kuue"
334
333
  } },
335
334
  defaultVariants: {},
336
335
  compoundVariants: []
337
336
  });
338
- var filterDropdown = "ConsolePanel_filterDropdown__db6kuu9";
337
+ var filterDropdown = "ConsolePanel_filterDropdown__db6kuu8";
339
338
  var filterLabel = createRuntimeFn({
340
- defaultClassName: "ConsolePanel_filterLabel__db6kuug",
339
+ defaultClassName: "ConsolePanel_filterLabel__db6kuuf",
341
340
  variantClassNames: { level: {
342
- log: "ConsolePanel_filterLabel_level_log__db6kuuh",
343
- info: "ConsolePanel_filterLabel_level_info__db6kuui",
344
- warn: "ConsolePanel_filterLabel_level_warn__db6kuuj",
345
- error: "ConsolePanel_filterLabel_level_error__db6kuuk"
341
+ log: "ConsolePanel_filterLabel_level_log__db6kuug",
342
+ info: "ConsolePanel_filterLabel_level_info__db6kuuh",
343
+ warn: "ConsolePanel_filterLabel_level_warn__db6kuui",
344
+ error: "ConsolePanel_filterLabel_level_error__db6kuuj"
346
345
  } },
347
346
  defaultVariants: {},
348
347
  compoundVariants: []
349
348
  });
350
- var filterOption = "ConsolePanel_filterOption__db6kuua";
351
- var filterWrapper = "ConsolePanel_filterWrapper__db6kuu6";
352
- var logArgItem = "ConsolePanel_logArgItem__db6kuu16";
353
- var logArgsContainer = "ConsolePanel_logArgsContainer__db6kuu15";
349
+ var filterOption = "ConsolePanel_filterOption__db6kuu9";
350
+ var filterWrapper = "ConsolePanel_filterWrapper__db6kuu5";
351
+ var logArgItem = "ConsolePanel_logArgItem__db6kuu17";
352
+ var logArgsContainer = "ConsolePanel_logArgsContainer__db6kuu16";
354
353
  var logContainer = "ConsolePanel_logContainer__db6kuu3";
355
354
  var logHeader = "ConsolePanel_logHeader__db6kuu4";
356
355
  var logItem = createRuntimeFn({
357
- defaultClassName: "ConsolePanel_logItem__db6kuur",
356
+ defaultClassName: "ConsolePanel_logItem__db6kuus",
358
357
  variantClassNames: { level: {
359
- log: "ConsolePanel_logItem_level_log__db6kuus",
360
- info: "ConsolePanel_logItem_level_info__db6kuut",
361
- warn: "ConsolePanel_logItem_level_warn__db6kuuu",
362
- error: "ConsolePanel_logItem_level_error__db6kuuv"
358
+ log: "ConsolePanel_logItem_level_log__db6kuut",
359
+ info: "ConsolePanel_logItem_level_info__db6kuuu",
360
+ warn: "ConsolePanel_logItem_level_warn__db6kuuv",
361
+ error: "ConsolePanel_logItem_level_error__db6kuuw"
363
362
  } },
364
363
  defaultVariants: {},
365
364
  compoundVariants: []
366
365
  });
367
- var logItemHeader = "ConsolePanel_logItemHeader__db6kuuw";
366
+ var logItemHeader = "ConsolePanel_logItemHeader__db6kuux";
368
367
  var logLevel = createRuntimeFn({
369
- defaultClassName: "ConsolePanel_logLevel__db6kuux",
368
+ defaultClassName: "ConsolePanel_logLevel__db6kuuy",
370
369
  variantClassNames: { level: {
371
- log: "ConsolePanel_logLevel_level_log__db6kuuy",
372
- info: "ConsolePanel_logLevel_level_info__db6kuuz",
373
- warn: "ConsolePanel_logLevel_level_warn__db6kuu10",
374
- error: "ConsolePanel_logLevel_level_error__db6kuu11"
370
+ log: "ConsolePanel_logLevel_level_log__db6kuuz",
371
+ info: "ConsolePanel_logLevel_level_info__db6kuu10",
372
+ warn: "ConsolePanel_logLevel_level_warn__db6kuu11",
373
+ error: "ConsolePanel_logLevel_level_error__db6kuu12"
375
374
  } },
376
375
  defaultVariants: {},
377
376
  compoundVariants: []
378
377
  });
379
- var logList = "ConsolePanel_logList__db6kuuq";
380
- var logTime = "ConsolePanel_logTime__db6kuu12";
378
+ var logList = "ConsolePanel_logList__db6kuur";
379
+ var logTime = "ConsolePanel_logTime__db6kuu13";
381
380
  var placeholder$2 = "ConsolePanel_placeholder__db6kuu1";
382
381
  var placeholderText$2 = "ConsolePanel_placeholderText__db6kuu2";
383
382
  var replInput = "ConsolePanel_replInput__db6kuu1t";
@@ -385,10 +384,12 @@ var replInputRow = "ConsolePanel_replInputRow__db6kuu1r";
385
384
  var replPrompt = "ConsolePanel_replPrompt__db6kuu1s";
386
385
  var replRunButton = "ConsolePanel_replRunButton__db6kuu1u";
387
386
  var replRunButtonText = "ConsolePanel_replRunButtonText__db6kuu1v";
388
- var searchInput = "ConsolePanel_searchInput__db6kuun";
389
- var searchPrompt = "ConsolePanel_searchPrompt__db6kuum";
390
- var searchWrapper = "ConsolePanel_searchWrapper__db6kuul";
391
- var toggleIndicator = "ConsolePanel_toggleIndicator__db6kuu13";
387
+ var searchClear = "ConsolePanel_searchClear__db6kuun";
388
+ var searchClearText = "ConsolePanel_searchClearText__db6kuuo";
389
+ var searchInput = "ConsolePanel_searchInput__db6kuum";
390
+ var searchPrompt = "ConsolePanel_searchPrompt__db6kuul";
391
+ var searchWrapper = "ConsolePanel_searchWrapper__db6kuuk";
392
+ var toggleIndicator = "ConsolePanel_toggleIndicator__db6kuu14";
392
393
 
393
394
  //#endregion
394
395
  //#region src/styles/vars/color.ts
@@ -778,6 +779,45 @@ const vars = {
778
779
  }
779
780
  };
780
781
 
782
+ //#endregion
783
+ //#region src/components/FadeList.css.ts
784
+ var fadeBottom = "FadeList_fadeBottom__uvxsyd1";
785
+ var fadeTop = "FadeList_fadeTop__uvxsyd0";
786
+
787
+ //#endregion
788
+ //#region src/components/FadeList.tsx
789
+ const FadeList = ({ className, listRef: externalListRef, children, ...listProps }) => {
790
+ const [fadeState, setFadeState] = useState({
791
+ atTop: true,
792
+ atBottom: true
793
+ });
794
+ const fadeRef = useRef({
795
+ atTop: true,
796
+ atBottom: true
797
+ });
798
+ const internalListRef = useRef(null);
799
+ const listRef = externalListRef ?? internalListRef;
800
+ return <>
801
+ <view className={fadeTop} style={{ background: fadeState.atTop ? "linear-gradient(to bottom, #ffffff00, #ffffff00)" : `linear-gradient(to bottom, ${vars.$color.bg.layerFloating}, #ffffff00)` }} />
802
+ <list ref={listRef} scroll-orientation="vertical" className={className} scroll-event-throttle={16} bindscroll={(e) => {
803
+ const { scrollTop, scrollHeight, listHeight } = e.detail;
804
+ const atTop = scrollTop <= 10;
805
+ const atBottom = scrollTop + listHeight >= scrollHeight - 10;
806
+ if (atTop !== fadeRef.current.atTop || atBottom !== fadeRef.current.atBottom) {
807
+ fadeRef.current.atTop = atTop;
808
+ fadeRef.current.atBottom = atBottom;
809
+ setFadeState({
810
+ atTop,
811
+ atBottom
812
+ });
813
+ }
814
+ }} {...listProps}>
815
+ {children}
816
+ </list>
817
+ <view className={fadeBottom} style={{ background: fadeState.atBottom ? "linear-gradient(to top, #ffffff00, #ffffff00)" : `linear-gradient(to top, ${vars.$color.bg.layerFloating}, #ffffff00)` }} />
818
+ </>;
819
+ };
820
+
781
821
  //#endregion
782
822
  //#region src/components/LogPanel.tsx
783
823
  const LOG_LEVELS = [
@@ -805,14 +845,6 @@ const LogPanel = ({ logs, clearLogs }) => {
805
845
  const [enabledLevels, setEnabledLevels] = useState(() => savedEnabledLevels ?? new Set(LOG_LEVELS));
806
846
  const [filterOpen, setFilterOpen] = useState(false);
807
847
  const [searchQuery, setSearchQuery] = useState(savedSearchQuery);
808
- const [fadeState, setFadeState] = useState({
809
- atTop: true,
810
- atBottom: true
811
- });
812
- const fadeRef = useRef({
813
- atTop: true,
814
- atBottom: true
815
- });
816
848
  const inputRef = useRef(null);
817
849
  const searchInputRef = useRef(null);
818
850
  const listRef = useRef(null);
@@ -957,6 +989,15 @@ const LogPanel = ({ logs, clearLogs }) => {
957
989
  <view className={searchWrapper}>
958
990
  <text className={searchPrompt}>{"›"}</text>
959
991
  <input ref={searchInputRef} className={searchInput} placeholder="Search logs..." bindinput={(e) => setSearchQuery(e.detail.value)} />
992
+ {searchQuery.length > 0 && <view className={searchClear} bindtap={() => {
993
+ setSearchQuery("");
994
+ searchInputRef.current?.invoke({
995
+ method: "setValue",
996
+ params: { value: "" }
997
+ }).exec();
998
+ }}>
999
+ <text className={searchClearText}>✕</text>
1000
+ </view>}
960
1001
  </view>
961
1002
  <view style={{
962
1003
  display: "flex",
@@ -964,24 +1005,11 @@ const LogPanel = ({ logs, clearLogs }) => {
964
1005
  gap: 8
965
1006
  }}>
966
1007
  <view className={clearButton$2} bindtap={clearLogs}>
967
- <text className={clearButtonText$2}>Clear</text>
1008
+ <text className={clearButtonText$2}>🗑</text>
968
1009
  </view>
969
1010
  </view>
970
1011
  </view>
971
- <view className={fadeTop} style={{ background: fadeState.atTop ? `linear-gradient(to bottom, #ffffff00, #ffffff00)` : `linear-gradient(to bottom, ${vars.$color.bg.layerDefault}, #ffffff00)` }} />
972
- <list ref={listRef} scroll-orientation="vertical" className={logList} preload-buffer-count={10} initial-scroll-index={Math.max(0, filteredLogs.length - 1)} scroll-event-throttle={16} bindscroll={(e) => {
973
- const { scrollTop, scrollHeight, listHeight } = e.detail;
974
- const atTop = scrollTop <= 10;
975
- const atBottom = scrollTop + listHeight >= scrollHeight - 10;
976
- if (atTop !== fadeRef.current.atTop || atBottom !== fadeRef.current.atBottom) {
977
- fadeRef.current.atTop = atTop;
978
- fadeRef.current.atBottom = atBottom;
979
- setFadeState({
980
- atTop,
981
- atBottom
982
- });
983
- }
984
- }}>
1012
+ <FadeList listRef={listRef} className={logList} preload-buffer-count={10} initial-scroll-index={Math.max(0, filteredLogs.length - 1)}>
985
1013
  {filteredLogs.length === 0 ? <list-item item-key="empty-state">
986
1014
  <view className={placeholder$2}>
987
1015
  <text className={placeholderText$2}>
@@ -1007,8 +1035,7 @@ const LogPanel = ({ logs, clearLogs }) => {
1007
1035
  </view>
1008
1036
  </list-item>;
1009
1037
  })}
1010
- </list>
1011
- <view className={fadeBottom} style={{ background: fadeState.atBottom ? `linear-gradient(to top, #ffffff00, #ffffff00)` : `linear-gradient(to top, ${vars.$color.bg.layerDefault}, #ffffff00)` }} />
1038
+ </FadeList>
1012
1039
  <view className={replInputRow}>
1013
1040
  <text className={replPrompt}>{"›"}</text>
1014
1041
  <input ref={inputRef} className={replInput} placeholder="enter code..." bindinput={(e) => setCode(e.detail.value)} bindconfirm={handleRun} />
@@ -1173,13 +1200,13 @@ const NetworkPanel = ({ networks, clearNetworks }) => {
1173
1200
  <view className={header$1}>
1174
1201
  <text className={count$1}>Total: {networks.length} requests</text>
1175
1202
  <view className={clearButton$1} bindtap={clearNetworks}>
1176
- <text className={clearButtonText$1}>Clear</text>
1203
+ <text className={clearButtonText$1}>🗑</text>
1177
1204
  </view>
1178
1205
  </view>
1179
1206
 
1180
1207
  {networks.length === 0 ? <view className={placeholder$1}>
1181
1208
  <text className={placeholderText$1}>No network requests yet</text>
1182
- </view> : <list className={list$1}>
1209
+ </view> : <FadeList className={list$1}>
1183
1210
  {networks.map((network) => <list-item key={network.id} item-key={network.id}>
1184
1211
  <view className={item$1({ status: network.status })}>
1185
1212
  <view className={itemHeader$1} bindtap={() => setSelectedId(selectedId === network.id ? null : network.id)}>
@@ -1242,7 +1269,7 @@ const NetworkPanel = ({ networks, clearNetworks }) => {
1242
1269
  </view>}
1243
1270
  </view>
1244
1271
  </list-item>)}
1245
- </list>}
1272
+ </FadeList>}
1246
1273
  </view>;
1247
1274
  };
1248
1275
 
@@ -1324,7 +1351,7 @@ const PerformancePanel = ({ performances, clearPerformances }) => {
1324
1351
  <text>Log</text>
1325
1352
  </view>
1326
1353
  <view bindtap={clearPerformances} className={clearButton}>
1327
- <text className={clearButtonText}>Clear</text>
1354
+ <text className={clearButtonText}>🗑</text>
1328
1355
  </view>
1329
1356
  </view>
1330
1357
  <view className={placeholder}>
@@ -1337,11 +1364,11 @@ const PerformancePanel = ({ performances, clearPerformances }) => {
1337
1364
  <view className={header}>
1338
1365
  <text className={count}>{performances.length} entries</text>
1339
1366
  <view bindtap={clearPerformances} className={clearButton}>
1340
- <text className={clearButtonText}>Clear</text>
1367
+ <text className={clearButtonText}>🗑</text>
1341
1368
  </view>
1342
1369
  </view>
1343
1370
 
1344
- <list className={list}>
1371
+ <FadeList className={list}>
1345
1372
  {performances.map((perf) => {
1346
1373
  const isMetricFcp = isMetricFcpEntry(perf);
1347
1374
  const fcpMetrics = extractFcpMetrics(perf);
@@ -1417,7 +1444,7 @@ const PerformancePanel = ({ performances, clearPerformances }) => {
1417
1444
  </view>
1418
1445
  </list-item>;
1419
1446
  })}
1420
- </list>
1447
+ </FadeList>
1421
1448
  </view>;
1422
1449
  };
1423
1450
 
@@ -1584,9 +1611,9 @@ function useLongPressDrag(onTap) {
1584
1611
  bottom: isDragging ? tempBottom : bottom,
1585
1612
  clearTimer,
1586
1613
  handlers: {
1587
- bindtouchstart: handleTouchStart,
1588
- bindtouchmove: handleTouchMove,
1589
- bindtouchend: handleTouchEnd
1614
+ catchtouchstart: handleTouchStart,
1615
+ catchtouchmove: handleTouchMove,
1616
+ catchtouchend: handleTouchEnd
1590
1617
  }
1591
1618
  };
1592
1619
  }
@@ -1621,19 +1648,21 @@ const FloatingButton = ({ bindtap, children }) => {
1621
1648
  }
1622
1649
  };
1623
1650
  const isDragging = phase === "dragging";
1624
- return <view className={wrapper} style={{
1651
+ return <>
1652
+ <view className={wrapper} consume-slide-event={[[-180, 180]]} style={{
1625
1653
  right: `${right}px`,
1626
1654
  bottom: `${bottom}px`,
1627
1655
  transform: isDragging ? "scale(1.05)" : "scale(1)"
1628
1656
  }} {...handlers}>
1629
- <view className={button}>
1630
- {children}
1631
- <view className={shineOverlay} style={SHINE_STYLES[phase]} />
1632
- </view>
1633
- <view className={reloadButton} catchtouchstart={() => clearTimer()} bindtap={handleReload}>
1634
- <text className={reloadIcon}>{"↻"}</text>
1657
+ <view className={button}>
1658
+ {children}
1659
+ <view className={shineOverlay} style={SHINE_STYLES[phase]} />
1660
+ </view>
1661
+ <view className={reloadButton} catchtouchstart={() => clearTimer()} bindtap={handleReload}>
1662
+ <text className={reloadIcon}>{"↻"}</text>
1663
+ </view>
1635
1664
  </view>
1636
- </view>;
1665
+ </>;
1637
1666
  };
1638
1667
 
1639
1668
  //#endregion