@tap-payments/os-micro-frontend-shared 0.1.33 → 0.1.34-test.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.
@@ -0,0 +1,64 @@
1
+ import { styled } from '@mui/material/styles';
2
+ import { motion } from 'framer-motion';
3
+ export const CHIP_GAP = 3;
4
+ export const DEFAULT_CHIP_MIN_WIDTH = 24;
5
+ export const Root = styled('div')(() => ({
6
+ position: 'relative',
7
+ display: 'flex',
8
+ alignItems: 'center',
9
+ justifyContent: 'center',
10
+ }));
11
+ export const Container = styled(motion.div)(() => ({
12
+ position: 'relative',
13
+ display: 'inline-flex',
14
+ alignItems: 'center',
15
+ justifyContent: 'center',
16
+ }));
17
+ export const PeekStack = styled('div')(() => ({
18
+ position: 'relative',
19
+ display: 'inline-block',
20
+ width: 0,
21
+ height: 24,
22
+ pointerEvents: 'none',
23
+ }));
24
+ export const PeekChip = styled(motion.div)(({ theme }) => ({
25
+ border: `1px solid ${theme.palette.divider}`,
26
+ borderRadius: 12,
27
+ height: 24,
28
+ display: 'flex',
29
+ alignItems: 'center',
30
+ justifyContent: 'center',
31
+ background: theme.palette.background.paper,
32
+ fontSize: 12,
33
+ position: 'absolute',
34
+ top: 0,
35
+ left: 0,
36
+ boxSizing: 'border-box',
37
+ whiteSpace: 'nowrap',
38
+ lineHeight: 1,
39
+ transition: 'width 180ms ease-out, padding 180ms ease-out',
40
+ }));
41
+ export const MainChip = styled(motion.div)(({ theme }) => ({
42
+ border: `1px solid ${theme.palette.divider}`,
43
+ borderRadius: 12,
44
+ height: 24,
45
+ minWidth: 24,
46
+ display: 'inline-flex',
47
+ alignItems: 'center',
48
+ justifyContent: 'center',
49
+ background: theme.palette.background.paper,
50
+ overflow: 'hidden',
51
+ position: 'relative',
52
+ boxSizing: 'border-box',
53
+ whiteSpace: 'nowrap',
54
+ fontSize: 12,
55
+ lineHeight: 1,
56
+ }));
57
+ export const tableCellSx = {
58
+ position: 'relative',
59
+ overflow: 'visible',
60
+ zIndex: 1,
61
+ display: 'flex',
62
+ alignItems: 'center',
63
+ justifyContent: 'center',
64
+ };
@@ -0,0 +1,7 @@
1
+ import type { SxProps } from '@mui/material';
2
+ import type { ReactNode } from 'react';
3
+ export interface LeftPeekRightExpandingChipProps {
4
+ icons: ReactNode[];
5
+ expandedZIndex?: number;
6
+ sx?: SxProps;
7
+ }
@@ -0,0 +1,26 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface UseLeftPeekRightExpandingChipArgs {
3
+ icons: ReactNode[];
4
+ }
5
+ export interface PeekChipComputedItem {
6
+ key: string;
7
+ rIdx: number;
8
+ origIdx: number;
9
+ offX: number;
10
+ hoverX: number;
11
+ zIndex: number;
12
+ refCb: (el: HTMLDivElement | null) => void;
13
+ content: ReactNode;
14
+ }
15
+ export declare function useLeftPeekRightExpandingChip({ icons }: UseLeftPeekRightExpandingChipArgs): {
16
+ isHovering: boolean;
17
+ handleMouseEnter: () => void;
18
+ handleRootMouseLeave: () => void;
19
+ rootRef: import("react").MutableRefObject<HTMLDivElement | null>;
20
+ mainChipRef: import("react").MutableRefObject<HTMLDivElement | null>;
21
+ peekItems: PeekChipComputedItem[];
22
+ mainShiftX: number;
23
+ mainIcon: ReactNode;
24
+ guardLeft: number;
25
+ guardWidth: number;
26
+ };
@@ -0,0 +1,106 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { CHIP_GAP, DEFAULT_CHIP_MIN_WIDTH } from './style';
3
+ export function useLeftPeekRightExpandingChip({ icons }) {
4
+ var _a;
5
+ const [isHovering, setIsHovering] = useState(false);
6
+ const [rightWidths, setRightWidths] = useState([]);
7
+ const rootRef = useRef(null);
8
+ const mainChipRef = useRef(null);
9
+ const rightChipRefs = useRef([]);
10
+ const hoverTimeoutRef = useRef(null);
11
+ const safeIcons = icons !== null && icons !== void 0 ? icons : [];
12
+ const lastIndex = Math.max(0, ((_a = safeIcons.length) !== null && _a !== void 0 ? _a : 1) - 1);
13
+ const mainIcon = safeIcons[lastIndex];
14
+ const peekIcons = safeIcons.slice(0, lastIndex);
15
+ const { peekItems, mainShiftX, guardLeft, guardWidth } = useMemo(() => {
16
+ const n = peekIcons.length;
17
+ const measured = rightWidths.length === n && rightWidths.every((w) => w > 0);
18
+ const anchorOffXAll = -6 * n;
19
+ const totalPeekWidth = measured ? rightWidths.reduce((acc, w) => acc + w, 0) : n * DEFAULT_CHIP_MIN_WIDTH;
20
+ const gapsTotal = Math.max(0, n - 1) * CHIP_GAP;
21
+ const mainShift = Math.round(isHovering ? anchorOffXAll + totalPeekWidth + CHIP_GAP * n : 0);
22
+ const anchorRIdx = n - 1;
23
+ const anchorOffXEach = -6 * (anchorRIdx + 1);
24
+ const items = [];
25
+ for (let rIdx = 0; rIdx < n; rIdx++) {
26
+ const origIdx = n - 1 - rIdx;
27
+ const offX = -6 * (rIdx + 1);
28
+ const cumWidthBefore = measured
29
+ ? rightWidths.slice(0, origIdx).reduce((acc, w) => acc + w, 0) + CHIP_GAP * origIdx
30
+ : (DEFAULT_CHIP_MIN_WIDTH + CHIP_GAP) * origIdx;
31
+ const hoverX = Math.round(rIdx === anchorRIdx ? anchorOffXEach : anchorOffXEach + cumWidthBefore);
32
+ items.push({
33
+ key: `peek-${rIdx}`,
34
+ rIdx,
35
+ origIdx,
36
+ offX,
37
+ hoverX,
38
+ zIndex: n - rIdx,
39
+ refCb: (el) => {
40
+ rightChipRefs.current[origIdx] = el;
41
+ },
42
+ content: peekIcons[origIdx],
43
+ });
44
+ }
45
+ const guardLeft = anchorOffXEach;
46
+ const guardWidth = totalPeekWidth + gapsTotal;
47
+ return { peekItems: items, mainShiftX: mainShift, guardLeft, guardWidth };
48
+ }, [peekIcons, rightWidths, isHovering]);
49
+ const clearHoverTimeout = useCallback(() => {
50
+ if (hoverTimeoutRef.current) {
51
+ clearTimeout(hoverTimeoutRef.current);
52
+ hoverTimeoutRef.current = null;
53
+ }
54
+ }, []);
55
+ const measureRightWidths = useCallback(() => {
56
+ const TARGET_PADDING_X = 12;
57
+ const BORDER_X = 2;
58
+ const next = peekIcons.map((_, origIdx) => {
59
+ const el = rightChipRefs.current[origIdx];
60
+ if (!el)
61
+ return DEFAULT_CHIP_MIN_WIDTH;
62
+ const contentWidth = el.scrollWidth || DEFAULT_CHIP_MIN_WIDTH;
63
+ const target = Math.max(DEFAULT_CHIP_MIN_WIDTH, contentWidth + TARGET_PADDING_X + BORDER_X);
64
+ return Math.ceil(target);
65
+ });
66
+ setRightWidths((prev) => {
67
+ if (prev.length === next.length && prev.every((v, i) => v === next[i]))
68
+ return prev;
69
+ return next;
70
+ });
71
+ }, [peekIcons.length]);
72
+ const handleMouseEnter = useCallback(() => {
73
+ clearHoverTimeout();
74
+ setIsHovering(true);
75
+ }, [clearHoverTimeout]);
76
+ const handleRootMouseLeave = useCallback(() => {
77
+ clearHoverTimeout();
78
+ hoverTimeoutRef.current = setTimeout(() => setIsHovering(false), 120);
79
+ }, [clearHoverTimeout]);
80
+ useEffect(() => {
81
+ return () => clearHoverTimeout();
82
+ }, [clearHoverTimeout]);
83
+ useEffect(() => {
84
+ measureRightWidths();
85
+ }, [peekIcons.length]);
86
+ useEffect(() => {
87
+ if (!isHovering)
88
+ return;
89
+ const id = window.requestAnimationFrame(() => {
90
+ measureRightWidths();
91
+ });
92
+ return () => window.cancelAnimationFrame(id);
93
+ }, [isHovering, measureRightWidths]);
94
+ return {
95
+ isHovering,
96
+ handleMouseEnter,
97
+ handleRootMouseLeave,
98
+ rootRef,
99
+ mainChipRef,
100
+ peekItems,
101
+ mainShiftX,
102
+ mainIcon,
103
+ guardLeft,
104
+ guardWidth,
105
+ };
106
+ }
@@ -1,4 +1,4 @@
1
- import { useRef, useEffect, useState, useMemo, useCallback } from 'react';
1
+ import { useRef, useEffect, useState, useMemo, useCallback, useLayoutEffect } from 'react';
2
2
  import { animate, useMotionValue, useTransform } from 'framer-motion';
3
3
  import { CHIP_GAP } from './style';
4
4
  export const DEFAULT_CHIP_MIN_WIDTH = 24;
@@ -16,6 +16,19 @@ export function useRightLeftExpandingCenterChip({ leftIcons, rightIcons, centerI
16
16
  const rightChipRefs = useRef([]);
17
17
  const expandableInnerRef = useRef(null);
18
18
  const resizeRaf = useRef(null);
19
+ const arraysEqual = useCallback((a, b) => {
20
+ if (a === b)
21
+ return true;
22
+ if (a.length !== b.length)
23
+ return false;
24
+ for (let i = 0; i < a.length; i++)
25
+ if (a[i] !== b[i])
26
+ return false;
27
+ return true;
28
+ }, []);
29
+ const anchorsEqual = useCallback((a, b) => {
30
+ return a.left === b.left && a.right === b.right;
31
+ }, []);
19
32
  const expandedMV = useMotionValue(0);
20
33
  const shiftX = useTransform(expandedMV, (v) => v / 2);
21
34
  const leftOffsets = useMemo(() => {
@@ -54,53 +67,49 @@ export function useRightLeftExpandingCenterChip({ leftIcons, rightIcons, centerI
54
67
  clearTimeout(hoverTimeoutRef.current);
55
68
  hoverTimeoutRef.current = setTimeout(() => setIsHovering(false), 120);
56
69
  }, []);
57
- const measureAnchors = useCallback(() => {
58
- var _a;
70
+ const measureAll = useCallback(() => {
71
+ var _a, _b, _c;
59
72
  const wrap = centerWrapRef.current;
60
73
  const chip = centerChipRef.current;
61
74
  const content = centerContentRef.current;
62
- if (!wrap)
63
- return;
64
- const wrapRect = wrap.getBoundingClientRect();
65
- const targetRect = (_a = (chip !== null && chip !== void 0 ? chip : content)) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
66
- if (!targetRect)
67
- return;
68
- const left = targetRect.left - wrapRect.left;
69
- const right = targetRect.right - wrapRect.left;
70
- setAnchors({ left, right });
71
- }, []);
72
- const measureStackChipWidths = useCallback(() => {
73
- setLeftWidths(leftChipRefs.current.map((el) => (el ? el.offsetWidth : DEFAULT_CHIP_MIN_WIDTH)));
74
- setRightWidths(rightChipRefs.current.map((el) => (el ? el.offsetWidth : DEFAULT_CHIP_MIN_WIDTH)));
75
- }, []);
76
- const measureExpandableWidth = useCallback(() => {
77
- var _a, _b;
78
- setExpandableWidth((_b = (_a = expandableInnerRef.current) === null || _a === void 0 ? void 0 : _a.scrollWidth) !== null && _b !== void 0 ? _b : 0);
79
- }, []);
75
+ let nextAnchors = anchors;
76
+ if (wrap) {
77
+ const wrapRect = wrap.getBoundingClientRect();
78
+ const targetRect = (_a = (chip !== null && chip !== void 0 ? chip : content)) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
79
+ if (targetRect) {
80
+ const left = Math.round(targetRect.left - wrapRect.left);
81
+ const right = Math.round(targetRect.right - wrapRect.left);
82
+ nextAnchors = { left, right };
83
+ }
84
+ }
85
+ const nextLeftWidths = leftChipRefs.current.map((el) => (el ? el.offsetWidth : DEFAULT_CHIP_MIN_WIDTH));
86
+ const nextRightWidths = rightChipRefs.current.map((el) => (el ? el.offsetWidth : DEFAULT_CHIP_MIN_WIDTH));
87
+ const nextExpandableWidth = (_c = (_b = expandableInnerRef.current) === null || _b === void 0 ? void 0 : _b.scrollWidth) !== null && _c !== void 0 ? _c : 0;
88
+ if (!anchorsEqual(anchors, nextAnchors))
89
+ setAnchors(nextAnchors);
90
+ if (!arraysEqual(leftWidths, nextLeftWidths))
91
+ setLeftWidths(nextLeftWidths);
92
+ if (!arraysEqual(rightWidths, nextRightWidths))
93
+ setRightWidths(nextRightWidths);
94
+ if (expandableWidth !== nextExpandableWidth)
95
+ setExpandableWidth(nextExpandableWidth);
96
+ }, [anchors, leftWidths, rightWidths, expandableWidth, anchorsEqual, arraysEqual]);
80
97
  const onResize = useCallback(() => {
81
98
  if (resizeRaf.current)
82
99
  cancelAnimationFrame(resizeRaf.current);
83
100
  resizeRaf.current = requestAnimationFrame(() => {
84
- measureAnchors();
85
- measureStackChipWidths();
86
- measureExpandableWidth();
101
+ measureAll();
87
102
  });
88
- }, [measureAnchors, measureStackChipWidths, measureExpandableWidth]);
103
+ }, [measureAll]);
89
104
  useEffect(() => {
90
105
  return () => {
91
106
  if (hoverTimeoutRef.current)
92
107
  clearTimeout(hoverTimeoutRef.current);
93
108
  };
94
109
  }, []);
95
- useEffect(() => {
96
- measureAnchors();
97
- }, [centerIcon, measureAnchors]);
98
- useEffect(() => {
99
- measureStackChipWidths();
100
- }, [leftIcons, rightIcons, measureStackChipWidths]);
101
- useEffect(() => {
102
- measureExpandableWidth();
103
- }, [expandableCenter, measureExpandableWidth]);
110
+ useLayoutEffect(() => {
111
+ measureAll();
112
+ }, [centerIcon, leftIcons, rightIcons, expandableCenter, measureAll]);
104
113
  useEffect(() => {
105
114
  onResize();
106
115
  window.addEventListener('resize', onResize);
@@ -18,4 +18,5 @@ export declare const statusButtonIcons: {
18
18
  authenticated: string;
19
19
  paidOut: string;
20
20
  scheduled: string;
21
+ checked: string;
21
22
  };
@@ -1,4 +1,4 @@
1
- import { initiatedIcon, abandonedIcon, cancelledIcon, reportsIcon, searchIcon, chevronDownIcon, unAuthorizedIcon, settlementInitiatedIcon, unCapturedIcon, capturedIcon, authorizedIcon, openFlagIcon, closedFlagIcon, reverseActionIcon, authenticatedIcon, unauthenticatedIcon, paidOutFilterIcon, scheduledFilterIcon, } from '../../constants/index.js';
1
+ import { initiatedIcon, abandonedIcon, cancelledIcon, reportsIcon, searchIcon, chevronDownIcon, unAuthorizedIcon, settlementInitiatedIcon, unCapturedIcon, capturedIcon, authorizedIcon, openFlagIcon, closedFlagIcon, reverseActionIcon, authenticatedIcon, unauthenticatedIcon, paidOutFilterIcon, scheduledFilterIcon, completedBlackIcon, } from '../../constants/index.js';
2
2
  export const statusButtonIcons = {
3
3
  inProgress: initiatedIcon,
4
4
  initiated: initiatedIcon,
@@ -19,4 +19,5 @@ export const statusButtonIcons = {
19
19
  authenticated: authenticatedIcon,
20
20
  paidOut: paidOutFilterIcon,
21
21
  scheduled: scheduledFilterIcon,
22
+ checked: completedBlackIcon,
22
23
  };
@@ -20,7 +20,7 @@ export declare const CountBadge: import("@emotion/styled").StyledComponent<impor
20
20
  }, {}, {}>;
21
21
  export declare const StatusIcon: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<Theme> & {
22
22
  variant: StatusButtonVariant;
23
- icon?: "search" | "scheduled" | "paidOut" | "reversed" | "initiated" | "captured" | "unCaptured" | "inProgress" | "abandoned" | "cancelled" | "authorized" | "unauthenticated" | "authenticated" | "unSettled" | "reports" | "chevronDown" | "unAuthorized" | "openFlag" | "closedFlag" | undefined;
23
+ icon?: "search" | "scheduled" | "paidOut" | "reversed" | "checked" | "initiated" | "captured" | "unCaptured" | "inProgress" | "abandoned" | "cancelled" | "authorized" | "unauthenticated" | "authenticated" | "unSettled" | "reports" | "chevronDown" | "unAuthorized" | "openFlag" | "closedFlag" | undefined;
24
24
  }, React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, {}>;
25
25
  export declare const StyledFilterName: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<Theme>, React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, {}>;
26
26
  export declare const StyledDropdown: import("@emotion/styled").StyledComponent<import("../DropdownMenu").IProps & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
@@ -35,5 +35,5 @@ export declare const LabelWrapper: import("@emotion/styled").StyledComponent<imp
35
35
  }, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
36
36
  export declare const StyledStatusIcon: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<Theme> & {
37
37
  variant: StatusButtonVariant;
38
- icon?: "search" | "scheduled" | "paidOut" | "reversed" | "initiated" | "captured" | "unCaptured" | "inProgress" | "abandoned" | "cancelled" | "authorized" | "unauthenticated" | "authenticated" | "unSettled" | "reports" | "chevronDown" | "unAuthorized" | "openFlag" | "closedFlag" | undefined;
38
+ icon?: "search" | "scheduled" | "paidOut" | "reversed" | "checked" | "initiated" | "captured" | "unCaptured" | "inProgress" | "abandoned" | "cancelled" | "authorized" | "unauthenticated" | "authenticated" | "unSettled" | "reports" | "chevronDown" | "unAuthorized" | "openFlag" | "closedFlag" | undefined;
39
39
  }, React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, {}>;
@@ -21,8 +21,5 @@ export default function AppsCell(_a) {
21
21
  height: '32px',
22
22
  display: 'flex',
23
23
  alignItems: 'center',
24
- zIndex: 40,
25
- position: 'absolute',
26
- left: 0,
27
24
  } }, { children: _jsx(IconWithHoverOverlays, { mainIcon: { iconUrl: appsGridIcon, title: 'Apps' }, overlayIcons: apps }) })) })));
28
25
  }
@@ -100,3 +100,4 @@ export * from './TooltipChip';
100
100
  export * from './RightLeftExpandingCenterChip';
101
101
  export * from './RadioButton';
102
102
  export * from './RadioGroup';
103
+ export * from './LeftPeekRightExpandingChip';
@@ -100,3 +100,4 @@ export * from './TooltipChip';
100
100
  export * from './RightLeftExpandingCenterChip';
101
101
  export * from './RadioButton';
102
102
  export * from './RadioGroup';
103
+ export * from './LeftPeekRightExpandingChip';
@@ -309,6 +309,7 @@ export declare const destinationSuccessTableIcon: string;
309
309
  export declare const authenticationFailedTableIcon: string;
310
310
  export declare const authenticatedIcon: string;
311
311
  export declare const scheduledFilterIcon: string;
312
+ export declare const completedBlackIcon: string;
312
313
  export declare const paidOutFilterIcon: string;
313
314
  export declare const unauthenticatedIcon: string;
314
315
  export declare const authenticationAttemptedIcon: string;
@@ -313,6 +313,7 @@ export const destinationSuccessTableIcon = `${appBaseUrl}/destinationSuccess.svg
313
313
  export const authenticationFailedTableIcon = `${lightUrl}/status/authenticationFailed.svg`;
314
314
  export const authenticatedIcon = `${lightUrl}/status/table/authenticated.svg`;
315
315
  export const scheduledFilterIcon = `${lightUrl}/paidOutFilterIcon.svg`;
316
+ export const completedBlackIcon = `${lightUrl}/completedBlackIcon.svg`;
316
317
  export const paidOutFilterIcon = `${lightUrl}/scheduledFilterIcon.svg`;
317
318
  export const unauthenticatedIcon = `${lightUrl}/status/unauthenticated.svg`;
318
319
  export const authenticationAttemptedIcon = `${lightUrl}/status/authenticationAttempted.svg`;
@@ -19,7 +19,7 @@ export interface TableStatus<T> {
19
19
  filterStatus: T;
20
20
  totalCount?: number;
21
21
  }
22
- export type TableHeaderStatus = 'all' | 'initiated' | 'captured' | 'unCaptured' | 'inProgress' | 'abandoned' | 'cancelled' | 'reversed' | 'unsettled' | 'unauthorized' | 'completed' | 'authorized' | 'refunded' | 'paidOut' | 'pending' | 'cleared' | 'open' | 'revered' | 'unauthenticated' | 'authenticated' | 'issued' | 'drafted' | 'scheduled' | 'paid' | 'outstanding' | 'draft' | 'expired' | 'transacted' | 'settled' | 'unSettled' | 'summary' | 'chargeSettlements' | 'refundSettlements' | 'destinationSettlements' | 'chargebackSettlements' | 'used' | 'active' | 'expired' | 'consumed' | 'notActive' | 'signedUp' | (string & {}) | undefined;
22
+ export type TableHeaderStatus = 'all' | 'initiated' | 'captured' | 'unCaptured' | 'inProgress' | 'abandoned' | 'cancelled' | 'reversed' | 'unsettled' | 'unauthorized' | 'completed' | 'authorized' | 'refunded' | 'paidOut' | 'pending' | 'cleared' | 'open' | 'revered' | 'unauthenticated' | 'authenticated' | 'issued' | 'drafted' | 'scheduled' | 'paid' | 'outstanding' | 'draft' | 'expired' | 'transacted' | 'settled' | 'unSettled' | 'summary' | 'chargeSettlements' | 'refundSettlements' | 'destinationSettlements' | 'chargebackSettlements' | 'used' | 'active' | 'expired' | 'consumed' | 'notActive' | 'signedUp' | 'checked' | (string & {}) | undefined;
23
23
  export interface IColumnProps<R = any> {
24
24
  header?: string | (() => React.ReactNode);
25
25
  render?: (props: IRenderAttr<R, IColumnProps<R>>) => React.ReactNode;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@tap-payments/os-micro-frontend-shared",
3
3
  "description": "Shared components and utilities for Tap Payments micro frontends",
4
- "version": "0.1.33",
5
- "testVersion": 0,
4
+ "version": "0.1.34-test.1",
5
+ "testVersion": 1,
6
6
  "type": "module",
7
7
  "main": "build/index.js",
8
8
  "module": "build/index.js",
@@ -131,4 +131,4 @@
131
131
  "publishConfig": {
132
132
  "registry": "https://registry.npmjs.org/"
133
133
  }
134
- }
134
+ }