@papernote/ui 1.8.2 → 1.9.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/components/NotificationBell.d.ts +104 -0
- package/dist/components/NotificationBell.d.ts.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/index.d.ts +106 -2
- package/dist/index.esm.js +236 -47
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +235 -45
- package/dist/index.js.map +1 -1
- package/dist/styles.css +21 -0
- package/package.json +1 -1
- package/src/components/Layout.tsx +1 -1
- package/src/components/NotificationBell.stories.tsx +717 -0
- package/src/components/NotificationBell.tsx +556 -0
- package/src/components/index.ts +4 -0
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { forwardRef, useState, useEffect, useCallback, useRef, useId, useImperativeHandle, useMemo, Children, isValidElement, cloneElement, Component, createContext as createContext$1, useLayoutEffect, createElement, useContext, useReducer } from 'react';
|
|
4
|
-
import { Loader2, X, EyeOff, Eye, AlertTriangle, CheckCircle, AlertCircle, ChevronDown, Search, Check, Minus, Star, Calendar as Calendar$1, ChevronLeft, ChevronRight, Clock, ChevronUp, Plus, TrendingUp, TrendingDown, Info, Trash2, ChevronsLeft, ChevronsRight, Circle, MoreVertical, GripVertical, Upload, Bold, Italic, Underline, List, ListOrdered, Code, Link, MoreHorizontal, Home, FileText, Image, File as File$1, Menu as Menu$1, ArrowDown, User, Settings, LogOut, Moon, Sun, Bell, Edit, Trash, Pin, PinOff, Download, Save, ArrowUpDown, Filter, XCircle, BarChart3, MessageSquare } from 'lucide-react';
|
|
4
|
+
import { Loader2, X, EyeOff, Eye, AlertTriangle, CheckCircle, AlertCircle, ChevronDown, Search, Check, Minus, Star, Calendar as Calendar$1, ChevronLeft, ChevronRight, Clock, ChevronUp, Plus, TrendingUp, TrendingDown, Info, Trash2, ChevronsLeft, ChevronsRight, Circle, MoreVertical, GripVertical, Upload, Bold, Italic, Underline, List, ListOrdered, Code, Link, MoreHorizontal, Home, FileText, Image, File as File$1, Menu as Menu$1, ArrowDown, User, Settings, LogOut, Moon, Sun, Bell, ExternalLink, Edit, Trash, Pin, PinOff, Download, Save, ArrowUpDown, Filter, XCircle, BarChart3, MessageSquare } from 'lucide-react';
|
|
5
5
|
import { createPortal } from 'react-dom';
|
|
6
6
|
import { useInRouterContext, useNavigate, useLocation, Link as Link$1 } from 'react-router-dom';
|
|
7
7
|
|
|
@@ -9681,7 +9681,7 @@ function UserProfileButton({ userName, userEmail, userTitle, initials, isOnline
|
|
|
9681
9681
|
*/
|
|
9682
9682
|
const Layout = ({ sidebar, children, statusBar, className = '', sections }) => {
|
|
9683
9683
|
console.log('🏗️ Layout render with sections:', sections);
|
|
9684
|
-
return (jsxs("div", { className: `h-screen flex flex-col bg-paper-100 ${className}`, children: [jsxs("div", { className: "flex flex-1 overflow-hidden relative", children: [sidebar, jsx("div", { className: "w-8 h-full bg-paper-100 flex-shrink-0 relative flex items-
|
|
9684
|
+
return (jsxs("div", { className: `h-screen flex flex-col bg-paper-100 ${className}`, children: [jsxs("div", { className: "flex flex-1 overflow-hidden relative", children: [sidebar, jsx("div", { className: "w-8 h-full bg-paper-100 flex-shrink-0 relative z-10 flex items-start justify-center pt-32", children: jsx(PageNavigation, { sections: sections }) }), jsx("div", { className: "flex-1 overflow-auto", children: children })] }), statusBar] }));
|
|
9685
9685
|
};
|
|
9686
9686
|
|
|
9687
9687
|
/**
|
|
@@ -10056,6 +10056,203 @@ function NotificationIndicator({ count = 0, onClick, className = '', maxCount =
|
|
|
10056
10056
|
return (jsxs("button", { onClick: onClick, className: `relative bg-white p-2.5 rounded-lg text-ink-400 hover:text-ink-600 hover:bg-paper-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-accent-400 transition-all shadow-xs dark:bg-slate-800 dark:text-slate-400 dark:hover:text-slate-100 dark:hover:bg-slate-700 ${className}`, "aria-label": "View notifications", children: [jsx(Bell, { className: "h-5 w-5" }), showBadge && (jsx("span", { className: `absolute -top-1 -right-1 ${variantClasses[variant]} text-white text-xs font-semibold rounded-full h-5 min-w-5 px-1 flex items-center justify-center`, children: displayCount }))] }));
|
|
10057
10057
|
}
|
|
10058
10058
|
|
|
10059
|
+
/**
|
|
10060
|
+
* Format a date to a relative time string
|
|
10061
|
+
*/
|
|
10062
|
+
function formatTimeAgo(date) {
|
|
10063
|
+
const now = new Date();
|
|
10064
|
+
const then = new Date(date);
|
|
10065
|
+
const diffMs = now.getTime() - then.getTime();
|
|
10066
|
+
const diffSeconds = Math.floor(diffMs / 1000);
|
|
10067
|
+
const diffMinutes = Math.floor(diffSeconds / 60);
|
|
10068
|
+
const diffHours = Math.floor(diffMinutes / 60);
|
|
10069
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
10070
|
+
if (diffSeconds < 60) {
|
|
10071
|
+
return 'Just now';
|
|
10072
|
+
}
|
|
10073
|
+
else if (diffMinutes < 60) {
|
|
10074
|
+
return `${diffMinutes}m ago`;
|
|
10075
|
+
}
|
|
10076
|
+
else if (diffHours < 24) {
|
|
10077
|
+
return `${diffHours}h ago`;
|
|
10078
|
+
}
|
|
10079
|
+
else if (diffDays < 7) {
|
|
10080
|
+
return `${diffDays}d ago`;
|
|
10081
|
+
}
|
|
10082
|
+
else {
|
|
10083
|
+
return then.toLocaleDateString();
|
|
10084
|
+
}
|
|
10085
|
+
}
|
|
10086
|
+
/**
|
|
10087
|
+
* Map notification type to Badge variant
|
|
10088
|
+
*/
|
|
10089
|
+
const typeToBadgeVariant = {
|
|
10090
|
+
info: 'info',
|
|
10091
|
+
success: 'success',
|
|
10092
|
+
warning: 'warning',
|
|
10093
|
+
error: 'error',
|
|
10094
|
+
};
|
|
10095
|
+
/**
|
|
10096
|
+
* Default labels for notification types
|
|
10097
|
+
*/
|
|
10098
|
+
const defaultTypeLabels = {
|
|
10099
|
+
info: 'Info',
|
|
10100
|
+
success: 'Success',
|
|
10101
|
+
warning: 'Warning',
|
|
10102
|
+
error: 'Alert',
|
|
10103
|
+
};
|
|
10104
|
+
/**
|
|
10105
|
+
* Map dropdown position to Popover placement
|
|
10106
|
+
*/
|
|
10107
|
+
function getPopoverPlacement(position) {
|
|
10108
|
+
switch (position) {
|
|
10109
|
+
case 'bottom-right':
|
|
10110
|
+
case 'right':
|
|
10111
|
+
return 'bottom-start';
|
|
10112
|
+
case 'bottom-left':
|
|
10113
|
+
case 'left':
|
|
10114
|
+
return 'bottom-end';
|
|
10115
|
+
case 'top-right':
|
|
10116
|
+
return 'top-start';
|
|
10117
|
+
case 'top-left':
|
|
10118
|
+
return 'top-end';
|
|
10119
|
+
default:
|
|
10120
|
+
return 'bottom-start';
|
|
10121
|
+
}
|
|
10122
|
+
}
|
|
10123
|
+
/**
|
|
10124
|
+
* NotificationBell - A bell icon with badge and dropdown for displaying notifications
|
|
10125
|
+
*
|
|
10126
|
+
* Displays a bell icon with an optional unread count badge. When clicked, shows a
|
|
10127
|
+
* dropdown panel with recent notifications, mark as read actions, and a link to
|
|
10128
|
+
* view all notifications.
|
|
10129
|
+
*
|
|
10130
|
+
* @example Basic usage (compact variant)
|
|
10131
|
+
* ```tsx
|
|
10132
|
+
* <NotificationBell
|
|
10133
|
+
* notifications={notifications}
|
|
10134
|
+
* onMarkAsRead={(id) => markRead(id)}
|
|
10135
|
+
* onMarkAllRead={() => markAllRead()}
|
|
10136
|
+
* onNotificationClick={(n) => navigate(n.actionUrl)}
|
|
10137
|
+
* onViewAll={() => navigate('/notifications')}
|
|
10138
|
+
* />
|
|
10139
|
+
* ```
|
|
10140
|
+
*
|
|
10141
|
+
* @example Detailed variant with labeled badges
|
|
10142
|
+
* ```tsx
|
|
10143
|
+
* <NotificationBell
|
|
10144
|
+
* notifications={notifications}
|
|
10145
|
+
* variant="detailed"
|
|
10146
|
+
* showUnreadInHeader
|
|
10147
|
+
* dropdownPosition="bottom-left"
|
|
10148
|
+
* />
|
|
10149
|
+
* ```
|
|
10150
|
+
*/
|
|
10151
|
+
function NotificationBell({ notifications, unreadCount: providedUnreadCount, onMarkAsRead, onMarkAllRead, onNotificationClick, onViewAll, loading = false, dropdownPosition = 'bottom-right', maxHeight = '400px', size = 'md', emptyMessage = 'No notifications', viewAllText = 'View all notifications', disabled = false, className = '', variant = 'compact', showUnreadInHeader = false, bellStyle = 'ghost', }) {
|
|
10152
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
10153
|
+
// Calculate unread count if not provided
|
|
10154
|
+
const unreadCount = useMemo(() => {
|
|
10155
|
+
if (providedUnreadCount !== undefined) {
|
|
10156
|
+
return providedUnreadCount;
|
|
10157
|
+
}
|
|
10158
|
+
return notifications.filter((n) => !n.isRead).length;
|
|
10159
|
+
}, [providedUnreadCount, notifications]);
|
|
10160
|
+
// Handle notification click
|
|
10161
|
+
const handleNotificationClick = useCallback((notification) => {
|
|
10162
|
+
onNotificationClick?.(notification);
|
|
10163
|
+
}, [onNotificationClick]);
|
|
10164
|
+
// Handle mark as read
|
|
10165
|
+
const handleMarkAsRead = useCallback((e, id) => {
|
|
10166
|
+
e.stopPropagation();
|
|
10167
|
+
onMarkAsRead?.(id);
|
|
10168
|
+
}, [onMarkAsRead]);
|
|
10169
|
+
// Handle mark all as read
|
|
10170
|
+
const handleMarkAllRead = useCallback(() => {
|
|
10171
|
+
onMarkAllRead?.();
|
|
10172
|
+
}, [onMarkAllRead]);
|
|
10173
|
+
// Handle view all
|
|
10174
|
+
const handleViewAll = useCallback(() => {
|
|
10175
|
+
onViewAll?.();
|
|
10176
|
+
setIsOpen(false);
|
|
10177
|
+
}, [onViewAll]);
|
|
10178
|
+
// Icon sizes based on button size
|
|
10179
|
+
const iconSizes = {
|
|
10180
|
+
sm: 'h-4 w-4',
|
|
10181
|
+
md: 'h-5 w-5',
|
|
10182
|
+
lg: 'h-6 w-6',
|
|
10183
|
+
};
|
|
10184
|
+
// Dropdown width based on size
|
|
10185
|
+
const dropdownWidths = {
|
|
10186
|
+
sm: 'w-72',
|
|
10187
|
+
md: 'w-80',
|
|
10188
|
+
lg: 'w-96',
|
|
10189
|
+
};
|
|
10190
|
+
// Outlined bell style classes
|
|
10191
|
+
const outlinedSizeClasses = {
|
|
10192
|
+
sm: 'p-2',
|
|
10193
|
+
md: 'p-3',
|
|
10194
|
+
lg: 'p-4',
|
|
10195
|
+
};
|
|
10196
|
+
// Trigger button
|
|
10197
|
+
const triggerButton = bellStyle === 'outlined' ? (jsxs("div", { className: "relative inline-block", children: [jsx("button", { className: `
|
|
10198
|
+
${outlinedSizeClasses[size]}
|
|
10199
|
+
bg-white border-2 border-paper-300 rounded-xl
|
|
10200
|
+
hover:bg-paper-50 hover:border-paper-400
|
|
10201
|
+
focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-accent-400
|
|
10202
|
+
transition-all duration-200
|
|
10203
|
+
disabled:opacity-40 disabled:cursor-not-allowed
|
|
10204
|
+
${className}
|
|
10205
|
+
`, disabled: disabled, "aria-label": unreadCount > 0
|
|
10206
|
+
? `Notifications - ${unreadCount} unread`
|
|
10207
|
+
: 'Notifications', children: jsx(Bell, { className: `${iconSizes[size]} text-ink-600` }) }), unreadCount > 0 && (jsx("span", { className: `
|
|
10208
|
+
absolute -top-1 -right-1
|
|
10209
|
+
flex items-center justify-center
|
|
10210
|
+
min-w-[18px] h-[18px] px-1.5
|
|
10211
|
+
rounded-full text-white font-semibold text-[11px]
|
|
10212
|
+
bg-error-500 shadow-sm
|
|
10213
|
+
pointer-events-none
|
|
10214
|
+
`, "aria-label": `${unreadCount > 99 ? '99+' : unreadCount} notifications`, children: unreadCount > 99 ? '99+' : unreadCount }))] })) : (jsx(Button, { variant: "ghost", iconOnly: true, size: size, disabled: disabled, badge: unreadCount > 0 ? unreadCount : undefined, badgeVariant: "error", "aria-label": unreadCount > 0
|
|
10215
|
+
? `Notifications - ${unreadCount} unread`
|
|
10216
|
+
: 'Notifications', className: className, children: jsx(Bell, { className: iconSizes[size] }) }));
|
|
10217
|
+
// Header title with optional unread count
|
|
10218
|
+
const headerTitle = showUnreadInHeader && unreadCount > 0
|
|
10219
|
+
? `Notifications (${unreadCount} unread)`
|
|
10220
|
+
: 'Notifications';
|
|
10221
|
+
// Render compact notification item
|
|
10222
|
+
const renderCompactItem = (notification) => (jsxs("div", { className: "flex gap-3", children: [jsx("div", { className: "flex-shrink-0 pt-1", children: jsx(Badge, { dot: true, variant: typeToBadgeVariant[notification.type], size: "sm" }) }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx(Text, { size: "sm", weight: notification.priority === 'high' ||
|
|
10223
|
+
notification.priority === 'urgent' ||
|
|
10224
|
+
!notification.isRead
|
|
10225
|
+
? 'medium'
|
|
10226
|
+
: 'normal', truncate: true, children: notification.title }), jsx(Text, { size: "xs", color: "muted", lineClamp: 2, className: "mt-0.5", children: notification.message }), jsx(Text, { size: "xs", color: "muted", className: "mt-1", children: formatTimeAgo(notification.createdAt) })] }), !notification.isRead && onMarkAsRead && (jsx("button", { className: "flex-shrink-0 p-1 text-ink-400 hover:text-ink-600 hover:bg-paper-100 rounded transition-colors", onClick: (e) => handleMarkAsRead(e, notification.id), "aria-label": "Mark as read", title: "Mark as read", children: jsx(Check, { className: "h-4 w-4" }) }))] }));
|
|
10227
|
+
// Render detailed notification item
|
|
10228
|
+
const renderDetailedItem = (notification) => (jsxs("div", { className: "flex gap-3", children: [jsxs("div", { className: "flex-1 min-w-0", children: [jsxs("div", { className: "flex items-start justify-between gap-2", children: [jsx(Text, { size: "sm", weight: notification.priority === 'high' ||
|
|
10229
|
+
notification.priority === 'urgent' ||
|
|
10230
|
+
!notification.isRead
|
|
10231
|
+
? 'semibold'
|
|
10232
|
+
: 'medium', className: "flex-1", children: notification.title }), jsx(Text, { size: "xs", color: "muted", className: "flex-shrink-0 whitespace-nowrap", children: formatTimeAgo(notification.createdAt) })] }), jsx(Text, { size: "xs", color: "muted", lineClamp: 2, className: "mt-1", children: notification.message }), jsx("div", { className: "mt-2", children: jsx(Badge, { variant: typeToBadgeVariant[notification.type], size: "sm", children: notification.typeLabel || defaultTypeLabels[notification.type] }) })] }), !notification.isRead && onMarkAsRead && (jsx("button", { className: "flex-shrink-0 p-1 text-ink-400 hover:text-ink-600 hover:bg-paper-100 rounded transition-colors self-center", onClick: (e) => handleMarkAsRead(e, notification.id), "aria-label": "Mark as read", title: "Mark as read", children: jsx(Check, { className: "h-4 w-4" }) }))] }));
|
|
10233
|
+
// Dropdown content
|
|
10234
|
+
const dropdownContent = (jsxs("div", { className: `${dropdownWidths[size]} bg-white`, children: [jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b border-paper-200", children: [jsx(Text, { weight: "semibold", size: "sm", children: headerTitle }), unreadCount > 0 && onMarkAllRead && (jsxs("button", { className: "flex items-center gap-1.5 text-xs text-ink-600 hover:text-ink-800 transition-colors", onClick: handleMarkAllRead, children: [jsx(Check, { className: "h-3.5 w-3.5" }), "Mark all read"] }))] }), jsx("div", { className: "overflow-y-auto", style: { maxHeight }, role: "list", "aria-label": "Notifications", children: loading ? (
|
|
10235
|
+
// Loading state
|
|
10236
|
+
jsx("div", { className: "p-4", children: jsx(Stack, { spacing: "sm", children: [1, 2, 3].map((i) => (jsxs("div", { className: "flex gap-3", children: [variant === 'compact' && (jsx(Skeleton, { className: "h-4 w-4 rounded-full flex-shrink-0" })), jsxs("div", { className: "flex-1", children: [jsxs("div", { className: "flex justify-between", children: [jsx(Skeleton, { className: "h-4 w-3/4 mb-2" }), variant === 'detailed' && (jsx(Skeleton, { className: "h-3 w-12" }))] }), jsx(Skeleton, { className: "h-3 w-full mb-1" }), variant === 'compact' ? (jsx(Skeleton, { className: "h-3 w-1/4" })) : (jsx(Skeleton, { className: "h-5 w-16 mt-2" }))] })] }, i))) }) })) : notifications.length === 0 ? (
|
|
10237
|
+
// Empty state
|
|
10238
|
+
jsxs("div", { className: "py-8 px-4 text-center", children: [jsx(Bell, { className: "h-10 w-10 text-ink-300 mx-auto mb-3" }), jsx(Text, { color: "muted", size: "sm", children: emptyMessage })] })) : (
|
|
10239
|
+
// Notification items
|
|
10240
|
+
notifications.map((notification) => (jsx("div", { role: "listitem", className: `
|
|
10241
|
+
px-4 py-3 border-b border-paper-100 last:border-b-0
|
|
10242
|
+
hover:bg-paper-50 transition-colors cursor-pointer
|
|
10243
|
+
${!notification.isRead ? 'bg-primary-50/30' : ''}
|
|
10244
|
+
${notification.priority === 'urgent' ? 'border-l-2 border-l-error-500' : ''}
|
|
10245
|
+
`, onClick: () => handleNotificationClick(notification), onKeyDown: (e) => {
|
|
10246
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
10247
|
+
e.preventDefault();
|
|
10248
|
+
handleNotificationClick(notification);
|
|
10249
|
+
}
|
|
10250
|
+
}, tabIndex: 0, children: variant === 'compact'
|
|
10251
|
+
? renderCompactItem(notification)
|
|
10252
|
+
: renderDetailedItem(notification) }, notification.id)))) }), onViewAll && notifications.length > 0 && (jsx("div", { className: "px-4 py-3 border-t border-paper-200", children: jsx(Button, { variant: "ghost", size: "sm", fullWidth: true, onClick: handleViewAll, icon: jsx(ExternalLink, { className: "h-3.5 w-3.5" }), iconPosition: "right", children: viewAllText }) }))] }));
|
|
10253
|
+
return (jsx(Popover, { trigger: triggerButton, placement: getPopoverPlacement(dropdownPosition), triggerMode: "click", showArrow: false, offset: 4, open: isOpen, onOpenChange: setIsOpen, closeOnClickOutside: true, closeOnEscape: true, disabled: disabled, className: "p-0 overflow-hidden", children: dropdownContent }));
|
|
10254
|
+
}
|
|
10255
|
+
|
|
10059
10256
|
/**
|
|
10060
10257
|
* Get value from item by key path (supports nested keys like 'user.name')
|
|
10061
10258
|
*/
|
|
@@ -11072,52 +11269,44 @@ function getAugmentedNamespace(n) {
|
|
|
11072
11269
|
* (A1, A1:C5, ...)
|
|
11073
11270
|
*/
|
|
11074
11271
|
|
|
11075
|
-
|
|
11076
|
-
var hasRequiredCollection;
|
|
11077
|
-
|
|
11078
|
-
function requireCollection () {
|
|
11079
|
-
if (hasRequiredCollection) return collection;
|
|
11080
|
-
hasRequiredCollection = 1;
|
|
11081
|
-
class Collection {
|
|
11272
|
+
let Collection$3 = class Collection {
|
|
11082
11273
|
|
|
11083
|
-
|
|
11084
|
-
|
|
11085
|
-
|
|
11086
|
-
|
|
11087
|
-
|
|
11088
|
-
|
|
11089
|
-
|
|
11090
|
-
|
|
11091
|
-
|
|
11092
|
-
|
|
11093
|
-
|
|
11274
|
+
constructor(data, refs) {
|
|
11275
|
+
if (data == null && refs == null) {
|
|
11276
|
+
this._data = [];
|
|
11277
|
+
this._refs = [];
|
|
11278
|
+
} else {
|
|
11279
|
+
if (data.length !== refs.length)
|
|
11280
|
+
throw Error('Collection: data length should match references length.');
|
|
11281
|
+
this._data = data;
|
|
11282
|
+
this._refs = refs;
|
|
11283
|
+
}
|
|
11284
|
+
}
|
|
11094
11285
|
|
|
11095
|
-
|
|
11096
|
-
|
|
11097
|
-
|
|
11286
|
+
get data() {
|
|
11287
|
+
return this._data;
|
|
11288
|
+
}
|
|
11098
11289
|
|
|
11099
|
-
|
|
11100
|
-
|
|
11101
|
-
|
|
11290
|
+
get refs() {
|
|
11291
|
+
return this._refs;
|
|
11292
|
+
}
|
|
11102
11293
|
|
|
11103
|
-
|
|
11104
|
-
|
|
11105
|
-
|
|
11294
|
+
get length() {
|
|
11295
|
+
return this._data.length;
|
|
11296
|
+
}
|
|
11106
11297
|
|
|
11107
|
-
|
|
11108
|
-
|
|
11109
|
-
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
|
|
11115
|
-
|
|
11116
|
-
|
|
11298
|
+
/**
|
|
11299
|
+
* Add data and references to this collection.
|
|
11300
|
+
* @param {{}} obj - data
|
|
11301
|
+
* @param {{}} ref - reference
|
|
11302
|
+
*/
|
|
11303
|
+
add(obj, ref) {
|
|
11304
|
+
this._data.push(obj);
|
|
11305
|
+
this._refs.push(ref);
|
|
11306
|
+
}
|
|
11307
|
+
};
|
|
11117
11308
|
|
|
11118
|
-
|
|
11119
|
-
return collection;
|
|
11120
|
-
}
|
|
11309
|
+
var collection = Collection$3;
|
|
11121
11310
|
|
|
11122
11311
|
var helpers;
|
|
11123
11312
|
var hasRequiredHelpers;
|
|
@@ -11126,7 +11315,7 @@ function requireHelpers () {
|
|
|
11126
11315
|
if (hasRequiredHelpers) return helpers;
|
|
11127
11316
|
hasRequiredHelpers = 1;
|
|
11128
11317
|
const FormulaError = requireError();
|
|
11129
|
-
const Collection =
|
|
11318
|
+
const Collection = collection;
|
|
11130
11319
|
|
|
11131
11320
|
const Types = {
|
|
11132
11321
|
NUMBER: 0,
|
|
@@ -20780,7 +20969,7 @@ var engineering = EngineeringFunctions;
|
|
|
20780
20969
|
|
|
20781
20970
|
const FormulaError$b = requireError();
|
|
20782
20971
|
const {FormulaHelpers: FormulaHelpers$8, Types: Types$6, WildCard, Address: Address$3} = requireHelpers();
|
|
20783
|
-
const Collection$2 =
|
|
20972
|
+
const Collection$2 = collection;
|
|
20784
20973
|
const H$5 = FormulaHelpers$8;
|
|
20785
20974
|
|
|
20786
20975
|
const ReferenceFunctions$1 = {
|
|
@@ -32408,7 +32597,7 @@ var parsing = {
|
|
|
32408
32597
|
const FormulaError$4 = requireError();
|
|
32409
32598
|
const {Address: Address$1} = requireHelpers();
|
|
32410
32599
|
const {Prefix: Prefix$1, Postfix: Postfix$1, Infix: Infix$1, Operators: Operators$1} = operators;
|
|
32411
|
-
const Collection$1 =
|
|
32600
|
+
const Collection$1 = collection;
|
|
32412
32601
|
const MAX_ROW$1 = 1048576, MAX_COLUMN$1 = 16384;
|
|
32413
32602
|
const {NotAllInputParsedException} = require$$4;
|
|
32414
32603
|
|
|
@@ -33170,7 +33359,7 @@ var hooks$1 = {
|
|
|
33170
33359
|
const FormulaError$2 = requireError();
|
|
33171
33360
|
const {FormulaHelpers: FormulaHelpers$1, Types, Address} = requireHelpers();
|
|
33172
33361
|
const {Prefix, Postfix, Infix, Operators} = operators;
|
|
33173
|
-
const Collection =
|
|
33362
|
+
const Collection = collection;
|
|
33174
33363
|
const MAX_ROW = 1048576, MAX_COLUMN = 16384;
|
|
33175
33364
|
|
|
33176
33365
|
let Utils$1 = class Utils {
|
|
@@ -57675,5 +57864,5 @@ function Responsive({ mobile, tablet, desktop, }) {
|
|
|
57675
57864
|
return jsx(Fragment, { children: mobile || tablet || desktop });
|
|
57676
57865
|
}
|
|
57677
57866
|
|
|
57678
|
-
export { Accordion, ActionBar, ActionBarCenter, ActionBarLeft, ActionBarRight, ActionButton, AdminModal, Alert, AlertDialog, AppLayout, Autocomplete, Avatar, BREAKPOINTS, Badge, BottomNavigation, BottomNavigationSpacer, BottomSheet, BottomSheetActions, BottomSheetContent, BottomSheetHeader, Box, Breadcrumbs, Button, ButtonGroup, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardView, Carousel, Checkbox, CheckboxList, Chip, ChipGroup, Collapsible, ColorPicker, Combobox, ComingSoon, CommandPalette, CompactStat, ConfirmDialog, ContextMenu, ControlBar, CurrencyDisplay, CurrencyInput, Dashboard, DashboardContent, DashboardHeader, DataGrid, DataTable, DataTableCardView, DateDisplay, DatePicker, DateRangePicker, DateTimePicker, DesktopOnly, Drawer, DrawerFooter, DropZone, Dropdown, DropdownTrigger, EmptyState, ErrorBoundary, ExpandablePanel, ExpandablePanelContainer, ExpandablePanelSpacer, ExpandableRowButton, ExpandableToolbar, ExpandedRowEditForm, ExportButton, FORMULA_CATEGORIES, FORMULA_DEFINITIONS, FORMULA_NAMES, FieldArray, FileUpload, FilterBar, FilterControls, FilterStatusBanner, FloatingActionButton, Form, FormContext, FormControl, FormWizard, Grid, GridItem, Hide, HorizontalScroll, HoverCard, InfiniteScroll, Input, KanbanBoard, Layout, Loading, LoadingOverlay, Logo, MarkdownEditor, MaskedInput, Menu, MenuDivider, MobileHeader, MobileHeaderSpacer, MobileLayout, MobileOnly, MobileProvider, Modal, ModalFooter, MultiSelect, NotificationBanner, NotificationBar, NotificationIndicator, NumberInput, Page, PageHeader, PageLayout, PageNavigation, Pagination, PasswordInput, Popover, Progress, PullToRefresh, QueryTransparency, RadioGroup, Rating, Responsive, RichTextEditor, SearchBar, SearchableList, Select, Separator, Show, Sidebar, SidebarGroup, Skeleton, SkeletonCard$1 as SkeletonCard, SkeletonTable, Slider, Spreadsheet, SpreadsheetReport, Stack, StatCard, StatItem, StatsCardGrid, StatsGrid, StatusBadge, StatusBar, StepIndicator, Stepper, SwipeActions, SwipeableCard, Switch, Tabs, Text, Textarea, ThemeToggle, TimePicker, Timeline, Toast, ToastContainer, Tooltip, Transfer, TreeView, TwoColumnContent, UserProfileButton, addErrorMessage, addInfoMessage, addSuccessMessage, addWarningMessage, calculateColumnWidth, createActionsSection, createFiltersSection, createMultiSheetExcel, createPageControlsSection, createQueryDetailsSection, exportDataTableToExcel, exportToExcel, formatStatisticValue, formatStatistics, getFormula, getFormulasByCategory, loadColumnOrder, loadColumnWidths, reorderArray, saveColumnOrder, saveColumnWidths, searchFormulas, statusManager, useBreadcrumbReset, useBreakpoint, useBreakpointValue, useColumnReorder, useColumnResize, useCommandPalette, useConfirmDialog, useFABScroll, useFormContext, useIsDesktop, useIsMobile, useIsTablet, useIsTouchDevice, useMediaQuery, useMobileContext, useOrientation, usePrefersMobile, useResponsiveCallback, useSafeAreaInsets, useViewportSize, withMobileContext };
|
|
57867
|
+
export { Accordion, ActionBar, ActionBarCenter, ActionBarLeft, ActionBarRight, ActionButton, AdminModal, Alert, AlertDialog, AppLayout, Autocomplete, Avatar, BREAKPOINTS, Badge, BottomNavigation, BottomNavigationSpacer, BottomSheet, BottomSheetActions, BottomSheetContent, BottomSheetHeader, Box, Breadcrumbs, Button, ButtonGroup, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardView, Carousel, Checkbox, CheckboxList, Chip, ChipGroup, Collapsible, ColorPicker, Combobox, ComingSoon, CommandPalette, CompactStat, ConfirmDialog, ContextMenu, ControlBar, CurrencyDisplay, CurrencyInput, Dashboard, DashboardContent, DashboardHeader, DataGrid, DataTable, DataTableCardView, DateDisplay, DatePicker, DateRangePicker, DateTimePicker, DesktopOnly, Drawer, DrawerFooter, DropZone, Dropdown, DropdownTrigger, EmptyState, ErrorBoundary, ExpandablePanel, ExpandablePanelContainer, ExpandablePanelSpacer, ExpandableRowButton, ExpandableToolbar, ExpandedRowEditForm, ExportButton, FORMULA_CATEGORIES, FORMULA_DEFINITIONS, FORMULA_NAMES, FieldArray, FileUpload, FilterBar, FilterControls, FilterStatusBanner, FloatingActionButton, Form, FormContext, FormControl, FormWizard, Grid, GridItem, Hide, HorizontalScroll, HoverCard, InfiniteScroll, Input, KanbanBoard, Layout, Loading, LoadingOverlay, Logo, MarkdownEditor, MaskedInput, Menu, MenuDivider, MobileHeader, MobileHeaderSpacer, MobileLayout, MobileOnly, MobileProvider, Modal, ModalFooter, MultiSelect, NotificationBanner, NotificationBar, NotificationBell, NotificationIndicator, NumberInput, Page, PageHeader, PageLayout, PageNavigation, Pagination, PasswordInput, Popover, Progress, PullToRefresh, QueryTransparency, RadioGroup, Rating, Responsive, RichTextEditor, SearchBar, SearchableList, Select, Separator, Show, Sidebar, SidebarGroup, Skeleton, SkeletonCard$1 as SkeletonCard, SkeletonTable, Slider, Spreadsheet, SpreadsheetReport, Stack, StatCard, StatItem, StatsCardGrid, StatsGrid, StatusBadge, StatusBar, StepIndicator, Stepper, SwipeActions, SwipeableCard, Switch, Tabs, Text, Textarea, ThemeToggle, TimePicker, Timeline, Toast, ToastContainer, Tooltip, Transfer, TreeView, TwoColumnContent, UserProfileButton, addErrorMessage, addInfoMessage, addSuccessMessage, addWarningMessage, calculateColumnWidth, createActionsSection, createFiltersSection, createMultiSheetExcel, createPageControlsSection, createQueryDetailsSection, exportDataTableToExcel, exportToExcel, formatStatisticValue, formatStatistics, getFormula, getFormulasByCategory, loadColumnOrder, loadColumnWidths, reorderArray, saveColumnOrder, saveColumnWidths, searchFormulas, statusManager, useBreadcrumbReset, useBreakpoint, useBreakpointValue, useColumnReorder, useColumnResize, useCommandPalette, useConfirmDialog, useFABScroll, useFormContext, useIsDesktop, useIsMobile, useIsTablet, useIsTouchDevice, useMediaQuery, useMobileContext, useOrientation, usePrefersMobile, useResponsiveCallback, useSafeAreaInsets, useViewportSize, withMobileContext };
|
|
57679
57868
|
//# sourceMappingURL=index.esm.js.map
|