@xyo-network/xl1-react-transaction 2.0.17 → 3.0.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionStackProgress.d.ts","sourceRoot":"","sources":["../../../../src/confirmation/components/TransactionStackProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAIN,MAAM,OAAO,CAAA;AAMd,MAAM,WAAW,6BAA8B,SAAQ,UAAU;IAC/D,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAyE5E,CAAA"}
1
+ {"version":3,"file":"TransactionStackProgress.d.ts","sourceRoot":"","sources":["../../../../src/confirmation/components/TransactionStackProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAIN,MAAM,OAAO,CAAA;AAMd,MAAM,WAAW,6BAA8B,SAAQ,UAAU;IAC/D,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA+E5E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockConfirmationStats.d.ts","sourceRoot":"","sources":["../../../../../src/confirmation/components/support/BlockConfirmationStats.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAiCxE,CAAA"}
1
+ {"version":3,"file":"BlockConfirmationStats.d.ts","sourceRoot":"","sources":["../../../../../src/confirmation/components/support/BlockConfirmationStats.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAuCxE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockFormatters.d.ts","sourceRoot":"","sources":["../../../../src/confirmation/helpers/BlockFormatters.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;AAExE,UAAU,qBAAqB;IAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,EAAE,qBAAqB;IAIzC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAsBlC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAU5E,YAAY,CAAC,WAAW,EAAE,MAAM;CAGjC"}
1
+ {"version":3,"file":"BlockFormatters.d.ts","sourceRoot":"","sources":["../../../../src/confirmation/helpers/BlockFormatters.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;AAExE,UAAU,qBAAqB;IAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,EAAE,qBAAqB;IAIzC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAsBlC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAU5E,YAAY,CAAC,WAAW,EAAE,MAAM;CAIjC"}
@@ -7,6 +7,6 @@ interface BlockRangeState {
7
7
  progressColor: LinearProgressProps['color'];
8
8
  range: number[];
9
9
  }
10
- export declare const useBlockRangeState: (blockRange: BlockRange | undefined, confirmedInBlock: number | undefined, currentBlockNumber?: number | undefined) => BlockRangeState;
10
+ export declare const useBlockRangeState: (blockRange: BlockRange | undefined, confirmedInBlock: number | undefined, currentBlockNumber?: number) => BlockRangeState;
11
11
  export {};
12
12
  //# sourceMappingURL=useBlockRangeState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBlockRangeState.d.ts","sourceRoot":"","sources":["../../../../src/confirmation/hooks/useBlockRangeState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAOtD,UAAU,eAAe;IACvB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,eAAO,MAAM,kBAAkB,GAC7B,YAAY,UAAU,GAAG,SAAS,EAClC,kBAAkB,MAAM,GAAG,SAAS,EACpC,qBAAqB,MAAM,GAAG,SAAS,KACtC,eAcF,CAAA"}
1
+ {"version":3,"file":"useBlockRangeState.d.ts","sourceRoot":"","sources":["../../../../src/confirmation/hooks/useBlockRangeState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAOtD,UAAU,eAAe;IACvB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,eAAO,MAAM,kBAAkB,GAC7B,YAAY,UAAU,GAAG,SAAS,EAClC,kBAAkB,MAAM,GAAG,SAAS,EACpC,qBAAqB,MAAM,KAC1B,eAcF,CAAA"}
@@ -3,7 +3,7 @@ import { LinearProgress, Stack as Stack3 } from "@mui/material";
3
3
  import { isDefined as isDefined7 } from "@xylabs/sdk-js";
4
4
  import {
5
5
  useLayoutEffect,
6
- useMemo as useMemo2,
6
+ useMemo as useMemo3,
7
7
  useRef,
8
8
  useState
9
9
  } from "react";
@@ -46,7 +46,8 @@ var BlockFormatters = class {
46
46
  }
47
47
  }
48
48
  formatNumber(blockNumber) {
49
- return blockNumber.toString().length <= 5 ? new Intl.NumberFormat().format(blockNumber) : `${blockNumber.toString().slice(-2)}`;
49
+ const numberFormat = new Intl.NumberFormat();
50
+ return blockNumber.toString().length <= 5 ? numberFormat.format(blockNumber) : blockNumber.toString().slice(-2);
50
51
  }
51
52
  };
52
53
 
@@ -56,7 +57,7 @@ var blockProgressColor = (confirmedInBlock, isExpired) => {
56
57
  if (isDefined2(confirmedInBlock)) {
57
58
  return "success";
58
59
  }
59
- if (isExpired) {
60
+ if (isExpired === true) {
60
61
  return "error";
61
62
  }
62
63
  return "primary";
@@ -142,6 +143,7 @@ import {
142
143
  Typography
143
144
  } from "@mui/material";
144
145
  import { isDefined as isDefined6 } from "@xylabs/sdk-js";
146
+ import { useMemo as useMemo2 } from "react";
145
147
  import { jsx, jsxs } from "react/jsx-runtime";
146
148
  var BlockConfirmationStats = ({
147
149
  confirmed,
@@ -149,6 +151,11 @@ var BlockConfirmationStats = ({
149
151
  currentBlockNumberValue,
150
152
  passedBlocks
151
153
  }) => {
154
+ const formattedPassedBlocks = useMemo2(() => {
155
+ if (!isDefined6(passedBlocks) || passedBlocks.length === 0) return "N/A";
156
+ const numberFormat = new Intl.NumberFormat();
157
+ return passedBlocks.map((block) => numberFormat.format(block)).join(", ");
158
+ }, [passedBlocks]);
152
159
  return /* @__PURE__ */ jsxs(Stack, { children: [
153
160
  /* @__PURE__ */ jsxs(
154
161
  Typography,
@@ -165,7 +172,7 @@ var BlockConfirmationStats = ({
165
172
  " ",
166
173
  currentBlockNumberValue,
167
174
  " ",
168
- /* @__PURE__ */ jsx(Grow, { in: confirmed, children: /* @__PURE__ */ jsx(CheckCircleOutlined, { sx: { width: "0.8em", height: "0.8em" }, color: "success" }) })
175
+ /* @__PURE__ */ jsx(Grow, { in: confirmed === true, children: /* @__PURE__ */ jsx(CheckCircleOutlined, { sx: { width: "0.8em", height: "0.8em" }, color: "success" }) })
169
176
  ]
170
177
  }
171
178
  ),
@@ -180,7 +187,7 @@ var BlockConfirmationStats = ({
180
187
  children: [
181
188
  "Passed Blocks:",
182
189
  " ",
183
- isDefined6(passedBlocks) && passedBlocks.length > 0 ? passedBlocks.map((block) => new Intl.NumberFormat().format(block)).join(", ") : "N/A"
190
+ formattedPassedBlocks
184
191
  ]
185
192
  }
186
193
  )
@@ -230,7 +237,7 @@ var BlockRangeEntryStack = ({
230
237
  /* @__PURE__ */ jsx2(
231
238
  Tooltip,
232
239
  {
233
- title: `Block: ${new Intl.NumberFormat().format(block)} (${blockStatus})`,
240
+ title: `Block: ${formattedBlockNumber} (${blockStatus ?? "unknown"})`,
234
241
  placement: "top",
235
242
  arrow: true,
236
243
  children: /* @__PURE__ */ jsx2(
@@ -283,7 +290,7 @@ var TransactionStackProgress = ({
283
290
  isConfirmed,
284
291
  isExpired
285
292
  } = useBlockRangeState(blockRange, confirmedInBlock, currentBlockNumber);
286
- const blockFormatters = useMemo2(() => new BlockFormatters({ confirmedInBlock, currentBlockNumber }), [confirmedInBlock, currentBlockNumber]);
293
+ const blockFormatters = useMemo3(() => new BlockFormatters({ confirmedInBlock, currentBlockNumber }), [confirmedInBlock, currentBlockNumber]);
287
294
  const [progressValue, setProgressValue] = useState(0);
288
295
  useLayoutEffect(() => {
289
296
  if (isDefined7(currentBlockNumber) && isDefined7(confirmedInBlock) && currentBlockNumber > confirmedInBlock) {
@@ -297,6 +304,11 @@ var TransactionStackProgress = ({
297
304
  progressElement
298
305
  ));
299
306
  }, [confirmedInBlock, currentBlockNumber]);
307
+ const formattedCurrentBlockNumber = useMemo3(() => {
308
+ if (!isDefined7(currentBlockNumber)) return "N/A";
309
+ const numberFormat = new Intl.NumberFormat();
310
+ return numberFormat.format(currentBlockNumber);
311
+ }, [currentBlockNumber]);
300
312
  return /* @__PURE__ */ jsx3(Stack3, { direction: "row", ...props, children: /* @__PURE__ */ jsxs3(
301
313
  Stack3,
302
314
  {
@@ -336,7 +348,7 @@ var TransactionStackProgress = ({
336
348
  {
337
349
  confirmed: isConfirmed,
338
350
  currentBlockColor: isDefined7(currentBlockNumber) ? blockFormatters.color(currentBlockNumber) : "text.secondary",
339
- currentBlockNumberValue: isDefined7(currentBlockNumber) ? new Intl.NumberFormat().format(currentBlockNumber) : "N/A",
351
+ currentBlockNumberValue: formattedCurrentBlockNumber,
340
352
  passedBlocks
341
353
  }
342
354
  )
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/confirmation/components/TransactionStackProgress.tsx", "../../src/confirmation/helpers/BlockFormatters.ts", "../../src/confirmation/helpers/blockProgressColor.ts", "../../src/confirmation/helpers/createFilledRange.ts", "../../src/confirmation/helpers/getBlockProgress.ts", "../../src/confirmation/helpers/isCurrentBlockPassedRange.ts", "../../src/confirmation/helpers/passedBlocksInRange.ts", "../../src/confirmation/hooks/useBlockRangeState.ts", "../../src/confirmation/components/support/BlockConfirmationStats.tsx", "../../src/confirmation/components/support/BlockRangeEntryStack.tsx"],
4
- "sourcesContent": ["import type { StackProps } from '@mui/material'\nimport { LinearProgress, Stack } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { type BlockRange } from '@xyo-network/xl1-sdk'\nimport React, {\n useLayoutEffect,\n useMemo,\n useRef, useState,\n} from 'react'\n\nimport { BlockFormatters, getBlockProgress } from '../helpers/index.ts'\nimport { useBlockRangeState } from '../hooks/index.ts'\nimport { BlockConfirmationStats, BlockRangeEntryStack } from './support/index.ts'\n\nexport interface TransactionStackProgressProps extends StackProps {\n blockRange?: BlockRange\n confirmedInBlock?: number\n currentBlockNumber?: number\n}\n\nexport const TransactionStackProgress: React.FC<TransactionStackProgressProps> = ({\n blockRange, confirmedInBlock, currentBlockNumber, ...props\n}) => {\n const blockPositionsRef = useRef<Record<number, HTMLSpanElement | null>>({})\n const updateBlockPositionRefs = (blockNumber: number, ref: HTMLSpanElement | null) => {\n blockPositionsRef.current[blockNumber] = ref\n }\n\n const progressElementRef = useRef<HTMLDivElement | null>(null)\n\n const {\n passedBlocks, progressColor, range, isConfirmed, isExpired,\n } = useBlockRangeState(blockRange, confirmedInBlock, currentBlockNumber)\n\n const blockFormatters = useMemo(() => new BlockFormatters({ confirmedInBlock, currentBlockNumber }), [confirmedInBlock, currentBlockNumber])\n\n const [progressValue, setProgressValue] = useState(0)\n\n useLayoutEffect(() => {\n // prevent updates if the current block is past the confirmed block\n if (isDefined(currentBlockNumber) && isDefined(confirmedInBlock) && currentBlockNumber > confirmedInBlock) {\n return\n }\n const currentBlockNumberElement = isDefined(currentBlockNumber) ? blockPositionsRef.current[currentBlockNumber] : null\n const progressElement = progressElementRef.current\n // since we are relying on htmlElements, we have to use layout effect\n setProgressValue(getBlockProgress(\n currentBlockNumber,\n currentBlockNumberElement,\n progressElement,\n ))\n }, [confirmedInBlock, currentBlockNumber])\n\n return (\n <Stack direction=\"row\" {...props}>\n <Stack\n sx={{\n width: '100%',\n gap: 1,\n }}\n >\n <Stack>\n <LinearProgress ref={progressElementRef} variant=\"determinate\" value={isExpired ? 100 : progressValue} color={progressColor} />\n <Stack\n direction=\"row\"\n sx={{ justifyContent: 'space-between' }}\n >\n {range.map((block) => {\n const blockColor = blockFormatters.color(block)\n const blockStatus = blockFormatters.confirmationStatus(block)\n const formattedBlockNumber = blockFormatters.formatNumber(block)\n return (\n <BlockRangeEntryStack\n key={block}\n block={block}\n blockColor={blockColor}\n blockStatus={blockStatus}\n formattedBlockNumber={formattedBlockNumber}\n updateBlockPositionRefs={updateBlockPositionRefs}\n />\n )\n })}\n </Stack>\n </Stack>\n <BlockConfirmationStats\n confirmed={isConfirmed}\n currentBlockColor={isDefined(currentBlockNumber) ? blockFormatters.color(currentBlockNumber) : 'text.secondary'}\n currentBlockNumberValue={isDefined(currentBlockNumber) ? new Intl.NumberFormat().format(currentBlockNumber) : 'N/A'}\n passedBlocks={passedBlocks}\n />\n </Stack>\n </Stack>\n )\n}\n", "import { isDefined } from '@xylabs/sdk-js'\n\nexport type BlockConfirmationStatus = 'confirmed' | 'missed' | 'pending'\n\ninterface BlockFormattersParams {\n confirmedInBlock: number | undefined\n currentBlockNumber: number | undefined\n}\n\nexport class BlockFormatters {\n private readonly params: BlockFormattersParams\n\n constructor(params: BlockFormattersParams) {\n this.params = params\n }\n\n color(blockNumber: number): string {\n const { currentBlockNumber, confirmedInBlock } = this.params\n if (blockNumber === currentBlockNumber) {\n return isDefined(confirmedInBlock) && confirmedInBlock === blockNumber ? 'success.dark' : 'text'\n }\n const status = this.confirmationStatus(blockNumber)\n switch (status) {\n case 'confirmed': {\n return 'success.dark'\n }\n case 'missed': {\n return 'warning.light'\n }\n case 'pending': {\n return 'text.secondary'\n }\n default: {\n return 'text.secondary'\n }\n }\n }\n\n confirmationStatus(blockNumber: number): BlockConfirmationStatus | undefined {\n const { currentBlockNumber, confirmedInBlock } = this.params\n if (isDefined(currentBlockNumber)) {\n if (isDefined(confirmedInBlock) && blockNumber === confirmedInBlock) {\n return 'confirmed'\n }\n return currentBlockNumber > blockNumber ? 'missed' : 'pending'\n }\n }\n\n formatNumber(blockNumber: number) {\n return blockNumber.toString().length <= 5 ? new Intl.NumberFormat().format(blockNumber) : `${blockNumber.toString().slice(-2)}`\n }\n}\n", "import type { LinearProgressProps } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\n\nexport const blockProgressColor = (\n confirmedInBlock: number | undefined,\n isExpired: boolean | undefined,\n): LinearProgressProps['color'] => {\n if (isDefined(confirmedInBlock)) {\n return 'success'\n }\n if (isExpired) {\n return 'error'\n }\n return 'primary'\n}\n", "import { isUndefined } from '@xylabs/sdk-js'\n\nexport const createFilledRange = (range?: [number, number]): number[] => {\n if (isUndefined(range)) {\n return []\n }\n const [start, end] = range\n if (end < start) {\n console.warn('Invalid range: end is less than start')\n return []\n }\n\n const result: number[] = []\n\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n\n return result\n}\n", "import { isUndefined, isUndefinedOrNull } from '@xylabs/sdk-js'\n\nexport const getBlockProgress = (\n currentBlockNumber: number | undefined,\n currentBlockRef: HTMLSpanElement | null,\n progressElementRef: HTMLDivElement | null,\n) => {\n if (isUndefined(currentBlockNumber) || isUndefinedOrNull(currentBlockRef) || isUndefinedOrNull(progressElementRef)) {\n return 0\n }\n\n const currentBlockOffsetLeft = currentBlockRef.offsetLeft\n const currentBlockOffsetWidth = currentBlockRef.clientWidth / 2\n const currentBlockCenterOffsetLeft = currentBlockOffsetLeft + currentBlockOffsetWidth\n const parentOffsetLeft = progressElementRef.offsetLeft\n const parentWidth = progressElementRef.clientWidth\n\n const relativePosition = currentBlockCenterOffsetLeft - parentOffsetLeft\n const progress = (relativePosition / parentWidth) * 100\n\n return Math.min(Math.max(progress, 0), 100)\n}\n", "import { isDefined } from '@xylabs/sdk-js'\nimport type { BlockRange } from '@xyo-network/xl1-sdk'\n\nexport const isCurrentBlockPassedRange = (\n blockRange: BlockRange | undefined,\n currentBlockNumber: number | undefined,\n) => {\n if (!isDefined(blockRange) || !isDefined(currentBlockNumber)) {\n return false\n }\n const [, end] = blockRange\n return currentBlockNumber > end\n}\n", "import { isDefined } from '@xylabs/sdk-js'\n\nexport const passedBlocksInRange = (\n range: number[] | undefined,\n currentBlockNumber: number | undefined,\n) => {\n if (!isDefined(currentBlockNumber) || !isDefined(range)) {\n return []\n }\n const [start] = range\n return range.filter(block => block < currentBlockNumber && block >= start)\n}\n", "import type { LinearProgressProps } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { BlockRange } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport {\n blockProgressColor, createFilledRange, isCurrentBlockPassedRange, passedBlocksInRange,\n} from '../helpers/index.ts'\n\ninterface BlockRangeState {\n isConfirmed: boolean\n isExpired: boolean\n passedBlocks: number[]\n progressColor: LinearProgressProps['color']\n range: number[]\n}\n\nexport const useBlockRangeState = (\n blockRange: BlockRange | undefined,\n confirmedInBlock: number | undefined,\n currentBlockNumber?: number | undefined,\n): BlockRangeState => {\n const range = useMemo(() => createFilledRange((blockRange)), [blockRange])\n\n const isExpired = useMemo(() => isCurrentBlockPassedRange(blockRange, currentBlockNumber), [blockRange, currentBlockNumber])\n\n const passedBlocks = useMemo(() => passedBlocksInRange(range, currentBlockNumber), [currentBlockNumber, range])\n\n const progressColor = useMemo(() => blockProgressColor(confirmedInBlock, isExpired), [confirmedInBlock, isExpired])\n\n const isConfirmed = isDefined(confirmedInBlock)\n\n return {\n isConfirmed, isExpired, passedBlocks, progressColor, range,\n }\n}\n", "import { CheckCircleOutlined } from '@mui/icons-material'\nimport {\n Grow, Stack, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport React from 'react'\n\nexport interface BlockConfirmationStatsProps {\n confirmed?: boolean\n currentBlockColor?: string\n currentBlockNumberValue?: string\n passedBlocks?: number[]\n}\n\nexport const BlockConfirmationStats: React.FC<BlockConfirmationStatsProps> = ({\n confirmed, currentBlockColor, currentBlockNumberValue, passedBlocks,\n}) => {\n return (\n <Stack>\n <Typography\n variant=\"caption\"\n color={currentBlockColor}\n sx={{\n display: 'inline-flex', alignItems: 'center', gap: 0.5,\n }}\n >\n Current Block:\n {' '}\n {currentBlockNumberValue}\n {' '}\n <Grow in={confirmed}>\n <CheckCircleOutlined sx={{ width: '0.8em', height: '0.8em' }} color=\"success\" />\n </Grow>\n </Typography>\n <Typography\n variant=\"caption\"\n sx={{\n color: 'warning.light',\n opacity: 0.75,\n }}\n >\n Passed Blocks:\n {' '}\n {isDefined(passedBlocks) && passedBlocks.length > 0 ? passedBlocks.map(block => new Intl.NumberFormat().format(block)).join(', ') : 'N/A'}\n </Typography>\n </Stack>\n )\n}\n", "import type { BoxProps, StackProps } from '@mui/material'\nimport {\n Box, Stack, styled, Tooltip, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { BlockConfirmationStatus } from '../../helpers/index.ts'\n\nexport interface BlockRangeEntryStackProps extends StackProps {\n block: number\n blockColor: string\n blockStatus: BlockConfirmationStatus | undefined\n formattedBlockNumber: string\n updateBlockPositionRefs?: (blockNumber: number, ref: HTMLSpanElement | null) => void\n}\n\nexport const BlockRangeEntryStack: React.FC<BlockRangeEntryStackProps> = ({\n block, blockColor, blockStatus, formattedBlockNumber, updateBlockPositionRefs, sx, ...props\n}) => {\n return (\n <Stack\n ref={(ref) => { if (updateBlockPositionRefs) updateBlockPositionRefs(block, ref) }}\n key={block}\n sx={{ position: 'relative', ...sx }}\n {...props}\n >\n <Box\n component=\"span\"\n sx={{\n display: 'flex', position: 'relative', width: '100%', height: 5,\n }}\n >\n <StyledBlockNumberIndicator component=\"span\" sx={{ backgroundColor: blockColor }} />\n </Box>\n <Tooltip\n title={`Block: ${new Intl.NumberFormat().format(block)} (${blockStatus})`}\n placement=\"top\"\n arrow\n >\n <Typography\n variant=\"caption\"\n sx={{\n color: blockColor,\n cursor: 'pointer',\n opacity: blockStatus === 'missed' ? 0.75 : 1,\n }}\n >\n {formattedBlockNumber}\n </Typography>\n </Tooltip>\n </Stack>\n )\n}\n\nconst StyledBlockNumberIndicator = styled(Box, { name: 'StyledBlockNumberIndicator' })<BoxProps>(({ theme }) => {\n return theme.unstable_sx({\n position: 'absolute',\n left: 'calc(50% - 1px)',\n transform: 'calc(translateX(-50%) - 1px)',\n height: 3,\n width: '1px',\n backgroundColor: 'primary.main',\n })\n})\n"],
5
- "mappings": "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",
6
- "names": ["Stack", "isDefined", "useMemo", "isDefined", "isUndefined", "isDefined", "isDefined", "isDefined", "isDefined", "isDefined", "Stack", "Typography", "jsx", "jsxs", "jsx", "jsxs", "useMemo", "isDefined", "Stack"]
4
+ "sourcesContent": ["import type { StackProps } from '@mui/material'\nimport { LinearProgress, Stack } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { type BlockRange } from '@xyo-network/xl1-sdk'\nimport React, {\n useLayoutEffect,\n useMemo,\n useRef, useState,\n} from 'react'\n\nimport { BlockFormatters, getBlockProgress } from '../helpers/index.ts'\nimport { useBlockRangeState } from '../hooks/index.ts'\nimport { BlockConfirmationStats, BlockRangeEntryStack } from './support/index.ts'\n\nexport interface TransactionStackProgressProps extends StackProps {\n blockRange?: BlockRange\n confirmedInBlock?: number\n currentBlockNumber?: number\n}\n\nexport const TransactionStackProgress: React.FC<TransactionStackProgressProps> = ({\n blockRange, confirmedInBlock, currentBlockNumber, ...props\n}) => {\n const blockPositionsRef = useRef<Record<number, HTMLSpanElement | null>>({})\n const updateBlockPositionRefs = (blockNumber: number, ref: HTMLSpanElement | null) => {\n blockPositionsRef.current[blockNumber] = ref\n }\n\n const progressElementRef = useRef<HTMLDivElement | null>(null)\n\n const {\n passedBlocks, progressColor, range, isConfirmed, isExpired,\n } = useBlockRangeState(blockRange, confirmedInBlock, currentBlockNumber)\n\n const blockFormatters = useMemo(() => new BlockFormatters({ confirmedInBlock, currentBlockNumber }), [confirmedInBlock, currentBlockNumber])\n\n const [progressValue, setProgressValue] = useState(0)\n\n useLayoutEffect(() => {\n // prevent updates if the current block is past the confirmed block\n if (isDefined(currentBlockNumber) && isDefined(confirmedInBlock) && currentBlockNumber > confirmedInBlock) {\n return\n }\n const currentBlockNumberElement = isDefined(currentBlockNumber) ? blockPositionsRef.current[currentBlockNumber] : null\n const progressElement = progressElementRef.current\n // since we are relying on htmlElements, we have to use layout effect\n setProgressValue(getBlockProgress(\n currentBlockNumber,\n currentBlockNumberElement,\n progressElement,\n ))\n }, [confirmedInBlock, currentBlockNumber])\n\n const formattedCurrentBlockNumber = useMemo(() => {\n if (!isDefined(currentBlockNumber)) return 'N/A'\n const numberFormat = new Intl.NumberFormat()\n return numberFormat.format(currentBlockNumber)\n }, [currentBlockNumber])\n\n return (\n <Stack direction=\"row\" {...props}>\n <Stack\n sx={{\n width: '100%',\n gap: 1,\n }}\n >\n <Stack>\n <LinearProgress ref={progressElementRef} variant=\"determinate\" value={isExpired ? 100 : progressValue} color={progressColor} />\n <Stack\n direction=\"row\"\n sx={{ justifyContent: 'space-between' }}\n >\n {range.map((block) => {\n const blockColor = blockFormatters.color(block)\n const blockStatus = blockFormatters.confirmationStatus(block)\n const formattedBlockNumber = blockFormatters.formatNumber(block)\n return (\n <BlockRangeEntryStack\n key={block}\n block={block}\n blockColor={blockColor}\n blockStatus={blockStatus}\n formattedBlockNumber={formattedBlockNumber}\n updateBlockPositionRefs={updateBlockPositionRefs}\n />\n )\n })}\n </Stack>\n </Stack>\n <BlockConfirmationStats\n confirmed={isConfirmed}\n currentBlockColor={isDefined(currentBlockNumber) ? blockFormatters.color(currentBlockNumber) : 'text.secondary'}\n currentBlockNumberValue={formattedCurrentBlockNumber}\n passedBlocks={passedBlocks}\n />\n </Stack>\n </Stack>\n )\n}\n", "import { isDefined } from '@xylabs/sdk-js'\n\nexport type BlockConfirmationStatus = 'confirmed' | 'missed' | 'pending'\n\ninterface BlockFormattersParams {\n confirmedInBlock: number | undefined\n currentBlockNumber: number | undefined\n}\n\nexport class BlockFormatters {\n private readonly params: BlockFormattersParams\n\n constructor(params: BlockFormattersParams) {\n this.params = params\n }\n\n color(blockNumber: number): string {\n const { currentBlockNumber, confirmedInBlock } = this.params\n if (blockNumber === currentBlockNumber) {\n return isDefined(confirmedInBlock) && confirmedInBlock === blockNumber ? 'success.dark' : 'text'\n }\n const status = this.confirmationStatus(blockNumber)\n switch (status) {\n case 'confirmed': {\n return 'success.dark'\n }\n case 'missed': {\n return 'warning.light'\n }\n case 'pending': {\n return 'text.secondary'\n }\n default: {\n return 'text.secondary'\n }\n }\n }\n\n confirmationStatus(blockNumber: number): BlockConfirmationStatus | undefined {\n const { currentBlockNumber, confirmedInBlock } = this.params\n if (isDefined(currentBlockNumber)) {\n if (isDefined(confirmedInBlock) && blockNumber === confirmedInBlock) {\n return 'confirmed'\n }\n return currentBlockNumber > blockNumber ? 'missed' : 'pending'\n }\n }\n\n formatNumber(blockNumber: number) {\n const numberFormat = new Intl.NumberFormat()\n return blockNumber.toString().length <= 5 ? numberFormat.format(blockNumber) : blockNumber.toString().slice(-2)\n }\n}\n", "import type { LinearProgressProps } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\n\nexport const blockProgressColor = (\n confirmedInBlock: number | undefined,\n isExpired: boolean | undefined,\n): LinearProgressProps['color'] => {\n if (isDefined(confirmedInBlock)) {\n return 'success'\n }\n if (isExpired === true) {\n return 'error'\n }\n return 'primary'\n}\n", "import { isUndefined } from '@xylabs/sdk-js'\n\nexport const createFilledRange = (range?: [number, number]): number[] => {\n if (isUndefined(range)) {\n return []\n }\n const [start, end] = range\n if (end < start) {\n console.warn('Invalid range: end is less than start')\n return []\n }\n\n const result: number[] = []\n\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n\n return result\n}\n", "import { isUndefined, isUndefinedOrNull } from '@xylabs/sdk-js'\n\nexport const getBlockProgress = (\n currentBlockNumber: number | undefined,\n currentBlockRef: HTMLSpanElement | null,\n progressElementRef: HTMLDivElement | null,\n) => {\n if (isUndefined(currentBlockNumber) || isUndefinedOrNull(currentBlockRef) || isUndefinedOrNull(progressElementRef)) {\n return 0\n }\n\n const currentBlockOffsetLeft = currentBlockRef.offsetLeft\n const currentBlockOffsetWidth = currentBlockRef.clientWidth / 2\n const currentBlockCenterOffsetLeft = currentBlockOffsetLeft + currentBlockOffsetWidth\n const parentOffsetLeft = progressElementRef.offsetLeft\n const parentWidth = progressElementRef.clientWidth\n\n const relativePosition = currentBlockCenterOffsetLeft - parentOffsetLeft\n const progress = (relativePosition / parentWidth) * 100\n\n return Math.min(Math.max(progress, 0), 100)\n}\n", "import { isDefined } from '@xylabs/sdk-js'\nimport type { BlockRange } from '@xyo-network/xl1-sdk'\n\nexport const isCurrentBlockPassedRange = (\n blockRange: BlockRange | undefined,\n currentBlockNumber: number | undefined,\n) => {\n if (!isDefined(blockRange) || !isDefined(currentBlockNumber)) {\n return false\n }\n const [, end] = blockRange\n return currentBlockNumber > end\n}\n", "import { isDefined } from '@xylabs/sdk-js'\n\nexport const passedBlocksInRange = (\n range: number[] | undefined,\n currentBlockNumber: number | undefined,\n) => {\n if (!isDefined(currentBlockNumber) || !isDefined(range)) {\n return []\n }\n const [start] = range\n return range.filter(block => block < currentBlockNumber && block >= start)\n}\n", "import type { LinearProgressProps } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { BlockRange } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport {\n blockProgressColor, createFilledRange, isCurrentBlockPassedRange, passedBlocksInRange,\n} from '../helpers/index.ts'\n\ninterface BlockRangeState {\n isConfirmed: boolean\n isExpired: boolean\n passedBlocks: number[]\n progressColor: LinearProgressProps['color']\n range: number[]\n}\n\nexport const useBlockRangeState = (\n blockRange: BlockRange | undefined,\n confirmedInBlock: number | undefined,\n currentBlockNumber?: number,\n): BlockRangeState => {\n const range = useMemo(() => createFilledRange((blockRange)), [blockRange])\n\n const isExpired = useMemo(() => isCurrentBlockPassedRange(blockRange, currentBlockNumber), [blockRange, currentBlockNumber])\n\n const passedBlocks = useMemo(() => passedBlocksInRange(range, currentBlockNumber), [currentBlockNumber, range])\n\n const progressColor = useMemo(() => blockProgressColor(confirmedInBlock, isExpired), [confirmedInBlock, isExpired])\n\n const isConfirmed = isDefined(confirmedInBlock)\n\n return {\n isConfirmed, isExpired, passedBlocks, progressColor, range,\n }\n}\n", "import { CheckCircleOutlined } from '@mui/icons-material'\nimport {\n Grow, Stack, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport React, { useMemo } from 'react'\n\nexport interface BlockConfirmationStatsProps {\n confirmed?: boolean\n currentBlockColor?: string\n currentBlockNumberValue?: string\n passedBlocks?: number[]\n}\n\nexport const BlockConfirmationStats: React.FC<BlockConfirmationStatsProps> = ({\n confirmed, currentBlockColor, currentBlockNumberValue, passedBlocks,\n}) => {\n const formattedPassedBlocks = useMemo(() => {\n if (!isDefined(passedBlocks) || passedBlocks.length === 0) return 'N/A'\n const numberFormat = new Intl.NumberFormat()\n return passedBlocks.map(block => numberFormat.format(block)).join(', ')\n }, [passedBlocks])\n\n return (\n <Stack>\n <Typography\n variant=\"caption\"\n color={currentBlockColor}\n sx={{\n display: 'inline-flex', alignItems: 'center', gap: 0.5,\n }}\n >\n Current Block:\n {' '}\n {currentBlockNumberValue}\n {' '}\n <Grow in={confirmed === true}>\n <CheckCircleOutlined sx={{ width: '0.8em', height: '0.8em' }} color=\"success\" />\n </Grow>\n </Typography>\n <Typography\n variant=\"caption\"\n sx={{\n color: 'warning.light',\n opacity: 0.75,\n }}\n >\n Passed Blocks:\n {' '}\n {formattedPassedBlocks}\n </Typography>\n </Stack>\n )\n}\n", "import type { BoxProps, StackProps } from '@mui/material'\nimport {\n Box, Stack, styled, Tooltip, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { BlockConfirmationStatus } from '../../helpers/index.ts'\n\nexport interface BlockRangeEntryStackProps extends StackProps {\n block: number\n blockColor: string\n blockStatus: BlockConfirmationStatus | undefined\n formattedBlockNumber: string\n updateBlockPositionRefs?: (blockNumber: number, ref: HTMLSpanElement | null) => void\n}\n\nexport const BlockRangeEntryStack: React.FC<BlockRangeEntryStackProps> = ({\n block, blockColor, blockStatus, formattedBlockNumber, updateBlockPositionRefs, sx, ...props\n}) => {\n return (\n <Stack\n ref={(ref) => { if (updateBlockPositionRefs) updateBlockPositionRefs(block, ref) }}\n key={block}\n sx={{ position: 'relative', ...sx }}\n {...props}\n >\n <Box\n component=\"span\"\n sx={{\n display: 'flex', position: 'relative', width: '100%', height: 5,\n }}\n >\n <StyledBlockNumberIndicator component=\"span\" sx={{ backgroundColor: blockColor }} />\n </Box>\n <Tooltip\n title={`Block: ${formattedBlockNumber} (${blockStatus ?? 'unknown'})`}\n placement=\"top\"\n arrow\n >\n <Typography\n variant=\"caption\"\n sx={{\n color: blockColor,\n cursor: 'pointer',\n opacity: blockStatus === 'missed' ? 0.75 : 1,\n }}\n >\n {formattedBlockNumber}\n </Typography>\n </Tooltip>\n </Stack>\n )\n}\n\nconst StyledBlockNumberIndicator = styled(Box, { name: 'StyledBlockNumberIndicator' })<BoxProps>(({ theme }) => {\n return theme.unstable_sx({\n position: 'absolute',\n left: 'calc(50% - 1px)',\n transform: 'calc(translateX(-50%) - 1px)',\n height: 3,\n width: '1px',\n backgroundColor: 'primary.main',\n })\n})\n"],
5
+ "mappings": "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",
6
+ "names": ["Stack", "isDefined", "useMemo", "isDefined", "isUndefined", "isDefined", "isDefined", "isDefined", "isDefined", "isDefined", "useMemo", "Stack", "Typography", "jsx", "jsxs", "jsx", "jsxs", "useMemo", "isDefined", "Stack"]
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-react-transaction",
4
- "version": "2.0.17",
4
+ "version": "3.0.0",
5
5
  "description": "XYO Layer One API",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -43,32 +43,30 @@
43
43
  "@metamask/json-rpc-engine": "^10.5.0",
44
44
  "@metamask/providers": "^22.1.1",
45
45
  "@metamask/utils": "^11.11.0",
46
- "@mui/icons-material": "^9.1.0",
47
- "@mui/material": "^9.1.0",
46
+ "@mui/icons-material": "^9.1.1",
47
+ "@mui/material": "^9.1.1",
48
48
  "@noble/post-quantum": "~0.6.1",
49
49
  "@opentelemetry/api": "^1.9.1",
50
- "@opentelemetry/sdk-trace-base": "^2.7.1",
50
+ "@opentelemetry/sdk-trace-base": "^2.8.0",
51
51
  "@scure/base": "~2.2.0",
52
52
  "@scure/bip39": "~2.2.0",
53
- "@storybook/react-vite": "^10.4.3",
53
+ "@storybook/react-vite": "^10.4.6",
54
54
  "@types/react": "^19.2.17",
55
- "@xylabs/geo": "^6.1.1",
56
- "@xylabs/sdk-js": "^6.1.1",
57
- "@xylabs/threads": "^6.1.1",
58
- "@xylabs/toolchain": "~8.1.20",
59
- "@xylabs/tsconfig": "~8.1.20",
60
- "@xylabs/tsconfig-dom": "~8.1.20",
61
- "@xylabs/tsconfig-react": "~8.1.20",
62
- "@xyo-network/address": "^6.1.0",
55
+ "@xylabs/geo": "^6.1.3",
56
+ "@xylabs/sdk-js": "^6.1.3",
57
+ "@xylabs/threads": "^6.1.3",
58
+ "@xylabs/toolchain": "~8.2.7",
59
+ "@xylabs/tsconfig": "~8.2.7",
60
+ "@xylabs/tsconfig-dom": "~8.2.7",
61
+ "@xylabs/tsconfig-react": "~8.2.7",
63
62
  "@xyo-network/sdk-js": "^6.1.0",
64
- "@xyo-network/sdk-protocol-js": "~6.1.0",
65
- "@xyo-network/xl1-sdk": "^2.1.4",
63
+ "@xyo-network/sdk-protocol-js": "~6.1.1",
64
+ "@xyo-network/xl1-sdk": "~3.0",
66
65
  "ajv": "^8.20.0",
67
66
  "async-mutex": "^0.5.0",
68
67
  "cosmiconfig": "^9.0.2",
69
68
  "debug": "~4.4.3",
70
- "dotenv": "~17.4.2",
71
- "eslint": "^10.4.1",
69
+ "eslint": "^10.5.0",
72
70
  "ethers": "^6.16.0",
73
71
  "hash-wasm": "~4.12.0",
74
72
  "idb": "^8.0.3",
@@ -76,11 +74,11 @@
76
74
  "observable-fns": "~0.6.1",
77
75
  "react": "^19.2.7",
78
76
  "react-dom": "^19.2.7",
79
- "storybook": "^10.4.3",
77
+ "storybook": "^10.4.6",
80
78
  "typescript": "~6.0.3",
81
79
  "uuid": "~14.0.0",
82
80
  "vite": "^8.0.16",
83
- "vitest": "^4.1.8",
81
+ "vitest": "^4.1.9",
84
82
  "webextension-polyfill": "^0.12.0",
85
83
  "zod": "~4.4.3"
86
84
  },
@@ -99,10 +97,9 @@
99
97
  "@xylabs/geo": "^6.0",
100
98
  "@xylabs/sdk-js": "^6.0",
101
99
  "@xylabs/threads": "^6.1",
102
- "@xyo-network/address": "^6.0",
103
100
  "@xyo-network/sdk-js": "^6.0",
104
101
  "@xyo-network/sdk-protocol-js": "~6.1",
105
- "@xyo-network/xl1-sdk": "^2.1",
102
+ "@xyo-network/xl1-sdk": "^3.0",
106
103
  "ajv": "^8.20",
107
104
  "async-mutex": "^0.5",
108
105
  "cosmiconfig": "^9.0",