@rufous/ui 0.2.81 → 0.2.83
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/main.cjs +628 -735
- package/dist/main.d.cts +7 -1
- package/dist/main.d.ts +7 -1
- package/dist/main.js +633 -740
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -4022,8 +4022,235 @@ var RufousLogoLoader = ({ size = 80, sx, className }) => {
|
|
|
4022
4022
|
};
|
|
4023
4023
|
|
|
4024
4024
|
// lib/DataGrid/DataGrid.tsx
|
|
4025
|
-
var
|
|
4025
|
+
var import_react23 = __toESM(require("react"), 1);
|
|
4026
4026
|
var import_lucide_react2 = require("lucide-react");
|
|
4027
|
+
|
|
4028
|
+
// lib/Tooltip/Tooltip.tsx
|
|
4029
|
+
var import_react22 = __toESM(require("react"), 1);
|
|
4030
|
+
var import_react_dom4 = __toESM(require("react-dom"), 1);
|
|
4031
|
+
var GAP = 8;
|
|
4032
|
+
function computePosition(anchor, tooltip, placement) {
|
|
4033
|
+
const { top: aTop, left: aLeft, width: aW, height: aH } = anchor;
|
|
4034
|
+
const { width: tW, height: tH } = tooltip;
|
|
4035
|
+
let top = 0;
|
|
4036
|
+
let left = 0;
|
|
4037
|
+
let arrowLeft;
|
|
4038
|
+
let arrowTop;
|
|
4039
|
+
switch (placement) {
|
|
4040
|
+
case "top":
|
|
4041
|
+
top = aTop - tH - GAP;
|
|
4042
|
+
left = aLeft + aW / 2 - tW / 2;
|
|
4043
|
+
arrowLeft = tW / 2 - 4;
|
|
4044
|
+
break;
|
|
4045
|
+
case "top-start":
|
|
4046
|
+
top = aTop - tH - GAP;
|
|
4047
|
+
left = aLeft;
|
|
4048
|
+
arrowLeft = Math.min(aW / 2, tW - 16);
|
|
4049
|
+
break;
|
|
4050
|
+
case "top-end":
|
|
4051
|
+
top = aTop - tH - GAP;
|
|
4052
|
+
left = aLeft + aW - tW;
|
|
4053
|
+
arrowLeft = Math.max(tW - aW / 2 - 4, 8);
|
|
4054
|
+
break;
|
|
4055
|
+
case "bottom":
|
|
4056
|
+
top = aTop + aH + GAP;
|
|
4057
|
+
left = aLeft + aW / 2 - tW / 2;
|
|
4058
|
+
arrowLeft = tW / 2 - 4;
|
|
4059
|
+
break;
|
|
4060
|
+
case "bottom-start":
|
|
4061
|
+
top = aTop + aH + GAP;
|
|
4062
|
+
left = aLeft;
|
|
4063
|
+
arrowLeft = Math.min(aW / 2, tW - 16);
|
|
4064
|
+
break;
|
|
4065
|
+
case "bottom-end":
|
|
4066
|
+
top = aTop + aH + GAP;
|
|
4067
|
+
left = aLeft + aW - tW;
|
|
4068
|
+
arrowLeft = Math.max(tW - aW / 2 - 4, 8);
|
|
4069
|
+
break;
|
|
4070
|
+
case "left":
|
|
4071
|
+
top = aTop + aH / 2 - tH / 2;
|
|
4072
|
+
left = aLeft - tW - GAP;
|
|
4073
|
+
arrowTop = tH / 2 - 4;
|
|
4074
|
+
break;
|
|
4075
|
+
case "left-start":
|
|
4076
|
+
top = aTop;
|
|
4077
|
+
left = aLeft - tW - GAP;
|
|
4078
|
+
arrowTop = Math.min(aH / 2, tH - 16);
|
|
4079
|
+
break;
|
|
4080
|
+
case "left-end":
|
|
4081
|
+
top = aTop + aH - tH;
|
|
4082
|
+
left = aLeft - tW - GAP;
|
|
4083
|
+
arrowTop = Math.max(tH - aH / 2 - 4, 8);
|
|
4084
|
+
break;
|
|
4085
|
+
case "right":
|
|
4086
|
+
top = aTop + aH / 2 - tH / 2;
|
|
4087
|
+
left = aLeft + aW + GAP;
|
|
4088
|
+
arrowTop = tH / 2 - 4;
|
|
4089
|
+
break;
|
|
4090
|
+
case "right-start":
|
|
4091
|
+
top = aTop;
|
|
4092
|
+
left = aLeft + aW + GAP;
|
|
4093
|
+
arrowTop = Math.min(aH / 2, tH - 16);
|
|
4094
|
+
break;
|
|
4095
|
+
case "right-end":
|
|
4096
|
+
top = aTop + aH - tH;
|
|
4097
|
+
left = aLeft + aW + GAP;
|
|
4098
|
+
arrowTop = Math.max(tH - aH / 2 - 4, 8);
|
|
4099
|
+
break;
|
|
4100
|
+
default:
|
|
4101
|
+
top = aTop - tH - GAP;
|
|
4102
|
+
left = aLeft + aW / 2 - tW / 2;
|
|
4103
|
+
}
|
|
4104
|
+
const vw = window.innerWidth;
|
|
4105
|
+
const vh = window.innerHeight;
|
|
4106
|
+
left = Math.max(8, Math.min(left, vw - tW - 8));
|
|
4107
|
+
top = Math.max(8, Math.min(top, vh - tH - 8));
|
|
4108
|
+
return { top, left, arrowLeft, arrowTop };
|
|
4109
|
+
}
|
|
4110
|
+
var Tooltip = ({
|
|
4111
|
+
title,
|
|
4112
|
+
placement = "top",
|
|
4113
|
+
arrow = false,
|
|
4114
|
+
open: controlledOpen,
|
|
4115
|
+
disableHoverListener = false,
|
|
4116
|
+
disableFocusListener = false,
|
|
4117
|
+
enterDelay = 100,
|
|
4118
|
+
leaveDelay = 0,
|
|
4119
|
+
children,
|
|
4120
|
+
followCursor = false,
|
|
4121
|
+
className = "",
|
|
4122
|
+
style,
|
|
4123
|
+
sx
|
|
4124
|
+
}) => {
|
|
4125
|
+
const sxClass = useSx(sx);
|
|
4126
|
+
const [internalOpen, setInternalOpen] = (0, import_react22.useState)(false);
|
|
4127
|
+
const [position, setPosition] = (0, import_react22.useState)({ top: 0, left: 0 });
|
|
4128
|
+
const anchorRef = (0, import_react22.useRef)(null);
|
|
4129
|
+
const tooltipRef = (0, import_react22.useRef)(null);
|
|
4130
|
+
const enterTimer = (0, import_react22.useRef)(null);
|
|
4131
|
+
const leaveTimer = (0, import_react22.useRef)(null);
|
|
4132
|
+
const cursorPos = (0, import_react22.useRef)({ x: 0, y: 0 });
|
|
4133
|
+
const isOpen = controlledOpen !== void 0 ? controlledOpen : internalOpen;
|
|
4134
|
+
const clearTimers = (0, import_react22.useCallback)(() => {
|
|
4135
|
+
if (enterTimer.current) clearTimeout(enterTimer.current);
|
|
4136
|
+
if (leaveTimer.current) clearTimeout(leaveTimer.current);
|
|
4137
|
+
}, []);
|
|
4138
|
+
const updatePosition = (0, import_react22.useCallback)(() => {
|
|
4139
|
+
if (!anchorRef.current || !tooltipRef.current) return;
|
|
4140
|
+
const anchorRect = anchorRef.current.getBoundingClientRect();
|
|
4141
|
+
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
4142
|
+
if (followCursor) {
|
|
4143
|
+
const fakeRect = {
|
|
4144
|
+
top: cursorPos.current.y,
|
|
4145
|
+
left: cursorPos.current.x,
|
|
4146
|
+
right: cursorPos.current.x,
|
|
4147
|
+
bottom: cursorPos.current.y,
|
|
4148
|
+
width: 0,
|
|
4149
|
+
height: 0,
|
|
4150
|
+
x: cursorPos.current.x,
|
|
4151
|
+
y: cursorPos.current.y,
|
|
4152
|
+
toJSON: () => ({})
|
|
4153
|
+
};
|
|
4154
|
+
setPosition(computePosition(fakeRect, tooltipRect, placement));
|
|
4155
|
+
} else {
|
|
4156
|
+
setPosition(computePosition(anchorRect, tooltipRect, placement));
|
|
4157
|
+
}
|
|
4158
|
+
}, [placement, followCursor]);
|
|
4159
|
+
(0, import_react22.useEffect)(() => {
|
|
4160
|
+
if (isOpen) {
|
|
4161
|
+
requestAnimationFrame(() => {
|
|
4162
|
+
updatePosition();
|
|
4163
|
+
});
|
|
4164
|
+
}
|
|
4165
|
+
}, [isOpen, updatePosition]);
|
|
4166
|
+
const handleOpen = (0, import_react22.useCallback)(() => {
|
|
4167
|
+
clearTimers();
|
|
4168
|
+
if (enterDelay > 0) {
|
|
4169
|
+
enterTimer.current = setTimeout(() => {
|
|
4170
|
+
setInternalOpen(true);
|
|
4171
|
+
}, enterDelay);
|
|
4172
|
+
} else {
|
|
4173
|
+
setInternalOpen(true);
|
|
4174
|
+
}
|
|
4175
|
+
}, [enterDelay, clearTimers]);
|
|
4176
|
+
const handleClose = (0, import_react22.useCallback)(() => {
|
|
4177
|
+
clearTimers();
|
|
4178
|
+
if (leaveDelay > 0) {
|
|
4179
|
+
leaveTimer.current = setTimeout(() => {
|
|
4180
|
+
setInternalOpen(false);
|
|
4181
|
+
}, leaveDelay);
|
|
4182
|
+
} else {
|
|
4183
|
+
setInternalOpen(false);
|
|
4184
|
+
}
|
|
4185
|
+
}, [leaveDelay, clearTimers]);
|
|
4186
|
+
const handleMouseMove = (0, import_react22.useCallback)(
|
|
4187
|
+
(e) => {
|
|
4188
|
+
cursorPos.current = { x: e.clientX, y: e.clientY };
|
|
4189
|
+
if (isOpen && followCursor) {
|
|
4190
|
+
updatePosition();
|
|
4191
|
+
}
|
|
4192
|
+
},
|
|
4193
|
+
[isOpen, followCursor, updatePosition]
|
|
4194
|
+
);
|
|
4195
|
+
(0, import_react22.useEffect)(() => {
|
|
4196
|
+
return () => clearTimers();
|
|
4197
|
+
}, [clearTimers]);
|
|
4198
|
+
const childProps = {};
|
|
4199
|
+
if (!disableHoverListener) {
|
|
4200
|
+
childProps.onMouseEnter = handleOpen;
|
|
4201
|
+
childProps.onMouseLeave = handleClose;
|
|
4202
|
+
childProps.onMouseMove = followCursor ? handleMouseMove : void 0;
|
|
4203
|
+
}
|
|
4204
|
+
if (!disableFocusListener) {
|
|
4205
|
+
childProps.onFocus = handleOpen;
|
|
4206
|
+
childProps.onBlur = handleClose;
|
|
4207
|
+
}
|
|
4208
|
+
const tooltipClasses = [
|
|
4209
|
+
"rf-tooltip",
|
|
4210
|
+
`rf-tooltip--placement-${placement}`,
|
|
4211
|
+
isOpen ? "rf-tooltip--visible" : "",
|
|
4212
|
+
sxClass,
|
|
4213
|
+
className
|
|
4214
|
+
].filter(Boolean).join(" ");
|
|
4215
|
+
const tooltipElement = /* @__PURE__ */ import_react22.default.createElement(
|
|
4216
|
+
"div",
|
|
4217
|
+
{
|
|
4218
|
+
ref: tooltipRef,
|
|
4219
|
+
className: tooltipClasses,
|
|
4220
|
+
style: {
|
|
4221
|
+
top: position.top,
|
|
4222
|
+
left: position.left,
|
|
4223
|
+
...style
|
|
4224
|
+
},
|
|
4225
|
+
role: "tooltip",
|
|
4226
|
+
"aria-hidden": !isOpen
|
|
4227
|
+
},
|
|
4228
|
+
title,
|
|
4229
|
+
arrow && /* @__PURE__ */ import_react22.default.createElement(
|
|
4230
|
+
"span",
|
|
4231
|
+
{
|
|
4232
|
+
className: "rf-tooltip__arrow",
|
|
4233
|
+
style: {
|
|
4234
|
+
...position.arrowLeft !== void 0 ? { left: position.arrowLeft } : {},
|
|
4235
|
+
...position.arrowTop !== void 0 ? { top: position.arrowTop } : {}
|
|
4236
|
+
}
|
|
4237
|
+
}
|
|
4238
|
+
)
|
|
4239
|
+
);
|
|
4240
|
+
return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
|
|
4241
|
+
"span",
|
|
4242
|
+
{
|
|
4243
|
+
ref: anchorRef,
|
|
4244
|
+
style: { display: "inline-flex", position: "relative" },
|
|
4245
|
+
"aria-describedby": isOpen ? "rf-tooltip" : void 0,
|
|
4246
|
+
...childProps
|
|
4247
|
+
},
|
|
4248
|
+
import_react22.default.cloneElement(children)
|
|
4249
|
+
), import_react_dom4.default.createPortal(tooltipElement, document.body));
|
|
4250
|
+
};
|
|
4251
|
+
Tooltip.displayName = "Tooltip";
|
|
4252
|
+
|
|
4253
|
+
// lib/DataGrid/DataGrid.tsx
|
|
4027
4254
|
var getOperatorsForType = (type) => {
|
|
4028
4255
|
if (type === "date") return [
|
|
4029
4256
|
{ value: "is", label: "is" },
|
|
@@ -4076,11 +4303,13 @@ function DataGrid({
|
|
|
4076
4303
|
pageSizeOptions = [5, 10, 25, 50],
|
|
4077
4304
|
title,
|
|
4078
4305
|
className,
|
|
4079
|
-
sx
|
|
4306
|
+
sx,
|
|
4307
|
+
onRowDoubleClick,
|
|
4308
|
+
onCellDoubleClick
|
|
4080
4309
|
}) {
|
|
4081
4310
|
const sxClass = useSx(sx);
|
|
4082
|
-
const [columnOverrides, setColumnOverrides] = (0,
|
|
4083
|
-
const resolvedColumns = (0,
|
|
4311
|
+
const [columnOverrides, setColumnOverrides] = (0, import_react23.useState)({});
|
|
4312
|
+
const resolvedColumns = (0, import_react23.useMemo)(() => {
|
|
4084
4313
|
return initialColumnsProp.map((col) => {
|
|
4085
4314
|
const field = String(col.field || col.key || "");
|
|
4086
4315
|
const override = columnOverrides[field] || {};
|
|
@@ -4093,7 +4322,7 @@ function DataGrid({
|
|
|
4093
4322
|
};
|
|
4094
4323
|
});
|
|
4095
4324
|
}, [initialColumnsProp, columnOverrides]);
|
|
4096
|
-
const [columnWidths, setColumnWidths] = (0,
|
|
4325
|
+
const [columnWidths, setColumnWidths] = (0, import_react23.useState)(() => {
|
|
4097
4326
|
const widths = {};
|
|
4098
4327
|
initialColumnsProp.forEach((col) => {
|
|
4099
4328
|
const field = String(col.field || col.key || "");
|
|
@@ -4102,26 +4331,26 @@ function DataGrid({
|
|
|
4102
4331
|
});
|
|
4103
4332
|
return widths;
|
|
4104
4333
|
});
|
|
4105
|
-
const [pageSize, setPageSize] = (0,
|
|
4106
|
-
const [sortField, setSortField] = (0,
|
|
4107
|
-
const [sortDirection, setSortDirection] = (0,
|
|
4108
|
-
const [filterText, setFilterText] = (0,
|
|
4109
|
-
const [currentPage, setCurrentPage] = (0,
|
|
4110
|
-
const [columnFilters, setColumnFilters] = (0,
|
|
4111
|
-
const [resizingColumn, setResizingColumn] = (0,
|
|
4112
|
-
const [startX, setStartX] = (0,
|
|
4113
|
-
const [startWidth, setStartWidth] = (0,
|
|
4114
|
-
const [activeMenu, setActiveMenu] = (0,
|
|
4115
|
-
const [menuPosition, setMenuPosition] = (0,
|
|
4116
|
-
const menuRef = (0,
|
|
4117
|
-
const [showManageColumns, setShowManageColumns] = (0,
|
|
4118
|
-
const [showAdvancedFilter, setShowAdvancedFilter] = (0,
|
|
4334
|
+
const [pageSize, setPageSize] = (0, import_react23.useState)(initialPageSize);
|
|
4335
|
+
const [sortField, setSortField] = (0, import_react23.useState)(null);
|
|
4336
|
+
const [sortDirection, setSortDirection] = (0, import_react23.useState)(null);
|
|
4337
|
+
const [filterText, setFilterText] = (0, import_react23.useState)("");
|
|
4338
|
+
const [currentPage, setCurrentPage] = (0, import_react23.useState)(1);
|
|
4339
|
+
const [columnFilters, setColumnFilters] = (0, import_react23.useState)({});
|
|
4340
|
+
const [resizingColumn, setResizingColumn] = (0, import_react23.useState)(null);
|
|
4341
|
+
const [startX, setStartX] = (0, import_react23.useState)(0);
|
|
4342
|
+
const [startWidth, setStartWidth] = (0, import_react23.useState)(0);
|
|
4343
|
+
const [activeMenu, setActiveMenu] = (0, import_react23.useState)(null);
|
|
4344
|
+
const [menuPosition, setMenuPosition] = (0, import_react23.useState)({ top: 0, left: 0 });
|
|
4345
|
+
const menuRef = (0, import_react23.useRef)(null);
|
|
4346
|
+
const [showManageColumns, setShowManageColumns] = (0, import_react23.useState)(false);
|
|
4347
|
+
const [showAdvancedFilter, setShowAdvancedFilter] = (0, import_react23.useState)(false);
|
|
4119
4348
|
const initialFilterCol = String(initialColumnsProp[0]?.field || initialColumnsProp[0]?.key || "");
|
|
4120
|
-
const [advancedFilters, setAdvancedFilters] = (0,
|
|
4349
|
+
const [advancedFilters, setAdvancedFilters] = (0, import_react23.useState)([
|
|
4121
4350
|
{ column: initialFilterCol, operator: getDefaultOperator(initialColumnsProp[0]?.type), value: "", logic: "AND" }
|
|
4122
4351
|
]);
|
|
4123
|
-
const [colSearch, setColSearch] = (0,
|
|
4124
|
-
(0,
|
|
4352
|
+
const [colSearch, setColSearch] = (0, import_react23.useState)("");
|
|
4353
|
+
(0, import_react23.useEffect)(() => {
|
|
4125
4354
|
const handleMouseMove = (e) => {
|
|
4126
4355
|
if (!resizingColumn) return;
|
|
4127
4356
|
const col = resolvedColumns.find((c) => String(c.field) === resizingColumn);
|
|
@@ -4141,7 +4370,7 @@ function DataGrid({
|
|
|
4141
4370
|
document.removeEventListener("mouseup", handleMouseUp);
|
|
4142
4371
|
};
|
|
4143
4372
|
}, [resizingColumn, startX, startWidth, resolvedColumns]);
|
|
4144
|
-
(0,
|
|
4373
|
+
(0, import_react23.useEffect)(() => {
|
|
4145
4374
|
const handleClickOutside = (e) => {
|
|
4146
4375
|
if (menuRef.current && !menuRef.current.contains(e.target)) {
|
|
4147
4376
|
setActiveMenu(null);
|
|
@@ -4150,7 +4379,7 @@ function DataGrid({
|
|
|
4150
4379
|
document.addEventListener("mousedown", handleClickOutside);
|
|
4151
4380
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
4152
4381
|
}, []);
|
|
4153
|
-
(0,
|
|
4382
|
+
(0, import_react23.useEffect)(() => {
|
|
4154
4383
|
setColumnWidths((prev) => {
|
|
4155
4384
|
const next = { ...prev };
|
|
4156
4385
|
initialColumnsProp.forEach((col) => {
|
|
@@ -4201,7 +4430,7 @@ function DataGrid({
|
|
|
4201
4430
|
});
|
|
4202
4431
|
setActiveMenu(null);
|
|
4203
4432
|
};
|
|
4204
|
-
const filteredData = (0,
|
|
4433
|
+
const filteredData = (0, import_react23.useMemo)(() => {
|
|
4205
4434
|
return data.filter((item) => {
|
|
4206
4435
|
const matchesGlobal = !filterText || Object.values(item).some(
|
|
4207
4436
|
(val) => String(val).toLowerCase().includes(filterText.toLowerCase())
|
|
@@ -4305,7 +4534,7 @@ function DataGrid({
|
|
|
4305
4534
|
return matchesGlobal && matchesAdvanced;
|
|
4306
4535
|
});
|
|
4307
4536
|
}, [data, filterText, advancedFilters]);
|
|
4308
|
-
const sortedData = (0,
|
|
4537
|
+
const sortedData = (0, import_react23.useMemo)(() => {
|
|
4309
4538
|
if (!sortField || !sortDirection) return filteredData;
|
|
4310
4539
|
const col = resolvedColumns.find((c) => c.field === sortField);
|
|
4311
4540
|
return [...filteredData].sort((a, b) => {
|
|
@@ -4321,7 +4550,7 @@ function DataGrid({
|
|
|
4321
4550
|
});
|
|
4322
4551
|
}, [filteredData, sortField, sortDirection, resolvedColumns]);
|
|
4323
4552
|
const totalPages = Math.max(1, Math.ceil(sortedData.length / pageSize));
|
|
4324
|
-
const paginatedData = (0,
|
|
4553
|
+
const paginatedData = (0, import_react23.useMemo)(() => {
|
|
4325
4554
|
const start = (currentPage - 1) * pageSize;
|
|
4326
4555
|
return sortedData.slice(start, start + pageSize);
|
|
4327
4556
|
}, [sortedData, currentPage, pageSize]);
|
|
@@ -4360,7 +4589,7 @@ function DataGrid({
|
|
|
4360
4589
|
setMenuPosition(position);
|
|
4361
4590
|
setActiveMenu(keyStr);
|
|
4362
4591
|
};
|
|
4363
|
-
const visibleColumns = (0,
|
|
4592
|
+
const visibleColumns = (0, import_react23.useMemo)(() => {
|
|
4364
4593
|
const left = resolvedColumns.filter((c) => !c.hidden && c.pinned === "left");
|
|
4365
4594
|
const mid = resolvedColumns.filter((c) => !c.hidden && !c.pinned);
|
|
4366
4595
|
const right = resolvedColumns.filter((c) => !c.hidden && c.pinned === "right");
|
|
@@ -4387,7 +4616,7 @@ function DataGrid({
|
|
|
4387
4616
|
return offset2;
|
|
4388
4617
|
};
|
|
4389
4618
|
const hasActiveFilters = advancedFilters.some((f) => f.value);
|
|
4390
|
-
return /* @__PURE__ */
|
|
4619
|
+
return /* @__PURE__ */ import_react23.default.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header-info" }, /* @__PURE__ */ import_react23.default.createElement("h2", null, title), /* @__PURE__ */ import_react23.default.createElement("p", null, filteredData.length, " total records")), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header-actions" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Search, { size: 15 }), /* @__PURE__ */ import_react23.default.createElement(
|
|
4391
4620
|
"input",
|
|
4392
4621
|
{
|
|
4393
4622
|
className: "dg-search",
|
|
@@ -4398,52 +4627,50 @@ function DataGrid({
|
|
|
4398
4627
|
setCurrentPage(1);
|
|
4399
4628
|
}
|
|
4400
4629
|
}
|
|
4401
|
-
)), /* @__PURE__ */
|
|
4630
|
+
)), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4402
4631
|
"button",
|
|
4403
4632
|
{
|
|
4404
4633
|
className: `dg-icon-btn ${hasActiveFilters ? "active" : ""}`,
|
|
4405
|
-
onClick: () => setShowAdvancedFilter(true)
|
|
4406
|
-
title: "Filters"
|
|
4634
|
+
onClick: () => setShowAdvancedFilter(true)
|
|
4407
4635
|
},
|
|
4408
|
-
/* @__PURE__ */
|
|
4409
|
-
), /* @__PURE__ */
|
|
4636
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 16 })
|
|
4637
|
+
)), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Manage Columns", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4410
4638
|
"button",
|
|
4411
4639
|
{
|
|
4412
4640
|
className: "dg-icon-btn",
|
|
4413
|
-
onClick: () => setShowManageColumns(true)
|
|
4414
|
-
title: "Manage Columns"
|
|
4641
|
+
onClick: () => setShowManageColumns(true)
|
|
4415
4642
|
},
|
|
4416
|
-
/* @__PURE__ */
|
|
4417
|
-
), /* @__PURE__ */
|
|
4643
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 16 })
|
|
4644
|
+
)), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-table-wrap" }, /* @__PURE__ */ import_react23.default.createElement("table", { className: "dg-table" }, /* @__PURE__ */ import_react23.default.createElement("thead", null, /* @__PURE__ */ import_react23.default.createElement("tr", null, visibleColumns.map((col, idx) => {
|
|
4418
4645
|
const colField = String(col.field);
|
|
4419
4646
|
const width = columnWidths[colField] || 200;
|
|
4420
4647
|
const leftOffset = getLeftOffset(col, idx);
|
|
4421
4648
|
const rightOffset = getRightOffset(col, idx);
|
|
4422
4649
|
const isSorted = sortField === col.field;
|
|
4423
|
-
return /* @__PURE__ */
|
|
4650
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
4424
4651
|
"th",
|
|
4425
4652
|
{
|
|
4426
4653
|
key: colField,
|
|
4427
4654
|
className: `dg-thead-cell${col.pinned === "left" ? " pinned-left" : col.pinned === "right" ? " pinned-right" : ""} ${col.headerClassName || ""}`,
|
|
4428
4655
|
style: { width, minWidth: width, left: leftOffset, right: rightOffset, flex: col.flex }
|
|
4429
4656
|
},
|
|
4430
|
-
/* @__PURE__ */
|
|
4657
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-inner" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4431
4658
|
"div",
|
|
4432
4659
|
{
|
|
4433
4660
|
className: `dg-th-label${col.sortable === false ? " no-sort" : ""}`,
|
|
4434
4661
|
onClick: () => col.sortable !== false && handleSort(col.field || "")
|
|
4435
4662
|
},
|
|
4436
4663
|
col.headerName,
|
|
4437
|
-
isSorted && sortDirection === "asc" && /* @__PURE__ */
|
|
4438
|
-
isSorted && sortDirection === "desc" && /* @__PURE__ */
|
|
4439
|
-
), /* @__PURE__ */
|
|
4664
|
+
isSorted && sortDirection === "asc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronUp, { size: 12 }),
|
|
4665
|
+
isSorted && sortDirection === "desc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronDown, { size: 12 })
|
|
4666
|
+
), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-actions" }, !col.disableColumnMenu && /* @__PURE__ */ import_react23.default.createElement(
|
|
4440
4667
|
"button",
|
|
4441
4668
|
{
|
|
4442
4669
|
className: "dg-th-menu-btn",
|
|
4443
4670
|
onClick: (e) => handleMenuOpen(e, colField)
|
|
4444
4671
|
},
|
|
4445
|
-
/* @__PURE__ */
|
|
4446
|
-
), /* @__PURE__ */
|
|
4672
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.MoreVertical, { size: 13 })
|
|
4673
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
4447
4674
|
"div",
|
|
4448
4675
|
{
|
|
4449
4676
|
className: `dg-resizer${resizingColumn === colField ? " resizing" : ""}`,
|
|
@@ -4456,17 +4683,18 @@ function DataGrid({
|
|
|
4456
4683
|
}
|
|
4457
4684
|
)))
|
|
4458
4685
|
);
|
|
4459
|
-
}), actions && /* @__PURE__ */
|
|
4686
|
+
}), actions && /* @__PURE__ */ import_react23.default.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ import_react23.default.createElement("tbody", null, paginatedData.length === 0 ? /* @__PURE__ */ import_react23.default.createElement("tr", null, /* @__PURE__ */ import_react23.default.createElement("td", { colSpan: visibleColumns.length + (actions ? 1 : 0), className: "dg-empty" }, "No records found")) : paginatedData.map((item) => /* @__PURE__ */ import_react23.default.createElement("tr", { key: item.id, className: "dg-tbody-row", onDoubleClick: () => onRowDoubleClick?.(item) }, visibleColumns.map((col, idx) => {
|
|
4460
4687
|
const colField = String(col.field);
|
|
4461
4688
|
const width = columnWidths[colField] || 200;
|
|
4462
4689
|
const leftOffset = getLeftOffset(col, idx);
|
|
4463
4690
|
const rightOffset = getRightOffset(col, idx);
|
|
4464
|
-
return /* @__PURE__ */
|
|
4691
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
4465
4692
|
"td",
|
|
4466
4693
|
{
|
|
4467
4694
|
key: `${item.id}-${colField}`,
|
|
4468
4695
|
className: `dg-td${col.pinned === "left" ? " pinned-left" : col.pinned === "right" ? " pinned-right" : ""} ${col.cellClassName || ""}`,
|
|
4469
|
-
style: { width, minWidth: width, maxWidth: width, left: leftOffset, right: rightOffset, flex: col.flex }
|
|
4696
|
+
style: { width, minWidth: width, maxWidth: width, left: leftOffset, right: rightOffset, flex: col.flex },
|
|
4697
|
+
onDoubleClick: () => onCellDoubleClick?.({ row: item, field: colField, value: item[col.field || ""] })
|
|
4470
4698
|
},
|
|
4471
4699
|
(() => {
|
|
4472
4700
|
const field = String(col.field);
|
|
@@ -4482,22 +4710,20 @@ function DataGrid({
|
|
|
4482
4710
|
return String(formattedValue ?? "");
|
|
4483
4711
|
})()
|
|
4484
4712
|
);
|
|
4485
|
-
}), actions && /* @__PURE__ */
|
|
4713
|
+
}), actions && /* @__PURE__ */ import_react23.default.createElement("td", { className: "dg-row-actions-cell" }, (() => {
|
|
4486
4714
|
const resolvedActions = typeof actions === "function" ? actions(item) : actions;
|
|
4487
4715
|
const visibleActions = resolvedActions.filter((a) => !a.show || a.show(item));
|
|
4488
4716
|
if (visibleActions.length === 0) return null;
|
|
4489
|
-
return /* @__PURE__ */
|
|
4717
|
+
return /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-row-actions" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-action-group" }, visibleActions.map((action, i) => /* @__PURE__ */ import_react23.default.createElement(Tooltip, { key: i, title: action.label, placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4490
4718
|
"button",
|
|
4491
4719
|
{
|
|
4492
|
-
key: i,
|
|
4493
4720
|
className: "dg-row-action-btn",
|
|
4494
4721
|
style: { color: action.color || "var(--text-secondary)" },
|
|
4495
|
-
onClick: () => action.onClick(item)
|
|
4496
|
-
title: action.label
|
|
4722
|
+
onClick: () => action.onClick(item)
|
|
4497
4723
|
},
|
|
4498
4724
|
action.icon
|
|
4499
|
-
))));
|
|
4500
|
-
})())))))), /* @__PURE__ */
|
|
4725
|
+
)))));
|
|
4726
|
+
})())))))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-pagination" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-page-info" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-per-page" }, /* @__PURE__ */ import_react23.default.createElement("span", null, "Rows per page:"), /* @__PURE__ */ import_react23.default.createElement(
|
|
4501
4727
|
"select",
|
|
4502
4728
|
{
|
|
4503
4729
|
value: pageSize,
|
|
@@ -4506,8 +4732,8 @@ function DataGrid({
|
|
|
4506
4732
|
setCurrentPage(1);
|
|
4507
4733
|
}
|
|
4508
4734
|
},
|
|
4509
|
-
pageSizeOptions.map((o) => /* @__PURE__ */
|
|
4510
|
-
)), /* @__PURE__ */
|
|
4735
|
+
pageSizeOptions.map((o) => /* @__PURE__ */ import_react23.default.createElement("option", { key: o, value: o }, o))
|
|
4736
|
+
)), /* @__PURE__ */ import_react23.default.createElement("span", null, (currentPage - 1) * pageSize + 1, "\u2013", Math.min(currentPage * pageSize, filteredData.length), " of ", filteredData.length)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-page-nav" }, /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-page-btn", disabled: currentPage === 1, onClick: () => setCurrentPage((p) => p - 1) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronLeft, { size: 15 })), /* @__PURE__ */ import_react23.default.createElement("span", { className: "dg-page-fraction" }, currentPage, " / ", totalPages), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-page-btn", disabled: currentPage === totalPages, onClick: () => setCurrentPage((p) => p + 1) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronRight, { size: 15 })))), activeMenu && /* @__PURE__ */ import_react23.default.createElement(
|
|
4511
4737
|
"div",
|
|
4512
4738
|
{
|
|
4513
4739
|
ref: menuRef,
|
|
@@ -4518,25 +4744,25 @@ function DataGrid({
|
|
|
4518
4744
|
...menuPosition.right !== void 0 ? { right: menuPosition.right } : {}
|
|
4519
4745
|
}
|
|
4520
4746
|
},
|
|
4521
|
-
/* @__PURE__ */
|
|
4522
|
-
/* @__PURE__ */
|
|
4523
|
-
/* @__PURE__ */
|
|
4747
|
+
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "asc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowUp, { size: 14 }), " Sort ascending"),
|
|
4748
|
+
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "desc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowDown, { size: 14 }), " Sort descending"),
|
|
4749
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
|
|
4524
4750
|
(() => {
|
|
4525
4751
|
const col = resolvedColumns.find((c) => c.field === activeMenu);
|
|
4526
4752
|
if (!col) return null;
|
|
4527
|
-
return /* @__PURE__ */
|
|
4753
|
+
return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, col.pinned === "left" ? /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(45deg)" } }), " Pin left"), col.pinned === "right" ? /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(-45deg)" } }), " Pin right"));
|
|
4528
4754
|
})(),
|
|
4529
|
-
/* @__PURE__ */
|
|
4530
|
-
/* @__PURE__ */
|
|
4755
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
|
|
4756
|
+
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4531
4757
|
setShowAdvancedFilter(true);
|
|
4532
4758
|
setActiveMenu(null);
|
|
4533
|
-
} }, /* @__PURE__ */
|
|
4534
|
-
/* @__PURE__ */
|
|
4535
|
-
/* @__PURE__ */
|
|
4759
|
+
} }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 14 }), " Filter\u2026"),
|
|
4760
|
+
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => toggleHide(activeMenu) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.EyeOff, { size: 14 }), " Hide column"),
|
|
4761
|
+
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4536
4762
|
setShowManageColumns(true);
|
|
4537
4763
|
setActiveMenu(null);
|
|
4538
|
-
} }, /* @__PURE__ */
|
|
4539
|
-
), showManageColumns && /* @__PURE__ */
|
|
4764
|
+
} }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 14 }), " Manage columns")
|
|
4765
|
+
), showManageColumns && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowManageColumns(false) }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react23.default.createElement("h3", null, "Manage Columns"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowManageColumns(false) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.X, { size: 18 }))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-body" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-search-wrap", style: { marginBottom: 8 } }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Search, { size: 14 }), /* @__PURE__ */ import_react23.default.createElement(
|
|
4540
4766
|
"input",
|
|
4541
4767
|
{
|
|
4542
4768
|
className: "dg-search",
|
|
@@ -4548,15 +4774,15 @@ function DataGrid({
|
|
|
4548
4774
|
)), resolvedColumns.filter((c) => c.header.toLowerCase().includes(colSearch.toLowerCase())).map((col) => {
|
|
4549
4775
|
const key = String(col.key);
|
|
4550
4776
|
const isUnhideable = col.hideable === false;
|
|
4551
|
-
return /* @__PURE__ */
|
|
4552
|
-
})), /* @__PURE__ */
|
|
4777
|
+
return /* @__PURE__ */ import_react23.default.createElement("div", { key, className: `dg-col-row${isUnhideable ? " disabled" : ""}` }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-col-label" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-col-dot", style: { background: col.hidden ? "var(--border-color)" : "var(--primary-color)" } }), col.header), !isUnhideable && /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => toggleHide(key) }, col.hidden ? /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.EyeOff, { size: 14 }) : /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.EyeOff, { size: 14, style: { opacity: 0.4 } })));
|
|
4778
|
+
})), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumnOverrides((prev) => {
|
|
4553
4779
|
const next = { ...prev };
|
|
4554
4780
|
resolvedColumns.forEach((c) => {
|
|
4555
4781
|
const k = String(c.key);
|
|
4556
4782
|
next[k] = { ...next[k], hidden: false };
|
|
4557
4783
|
});
|
|
4558
4784
|
return next;
|
|
4559
|
-
}) }, "Show All"), /* @__PURE__ */
|
|
4785
|
+
}) }, "Show All"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => {
|
|
4560
4786
|
const newOverrides = { ...columnOverrides };
|
|
4561
4787
|
resolvedColumns.forEach((c) => {
|
|
4562
4788
|
if (c.hideable !== false) {
|
|
@@ -4565,21 +4791,21 @@ function DataGrid({
|
|
|
4565
4791
|
}
|
|
4566
4792
|
});
|
|
4567
4793
|
setColumnOverrides(newOverrides);
|
|
4568
|
-
} }, "Hide All")))), showAdvancedFilter && /* @__PURE__ */
|
|
4794
|
+
} }, "Hide All")))), showAdvancedFilter && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal dg-modal-wide dg-filter-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react23.default.createElement("h3", null, "Filters"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.X, { size: 18 }))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-body" }, advancedFilters.map((f, idx) => /* @__PURE__ */ import_react23.default.createElement("div", { key: idx }, idx > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-logic" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4569
4795
|
"button",
|
|
4570
4796
|
{
|
|
4571
4797
|
className: `dg-logic-btn${f.logic === "AND" ? " active" : ""}`,
|
|
4572
4798
|
onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "AND" } : fi))
|
|
4573
4799
|
},
|
|
4574
4800
|
"AND"
|
|
4575
|
-
), /* @__PURE__ */
|
|
4801
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
4576
4802
|
"button",
|
|
4577
4803
|
{
|
|
4578
4804
|
className: `dg-logic-btn${f.logic === "OR" ? " active" : ""}`,
|
|
4579
4805
|
onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "OR" } : fi))
|
|
4580
4806
|
},
|
|
4581
4807
|
"OR"
|
|
4582
|
-
)), /* @__PURE__ */
|
|
4808
|
+
)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-row" }, advancedFilters.length > 1 && /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => setAdvancedFilters((p) => p.filter((_, i) => i !== idx)) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.X, { size: 14 })), /* @__PURE__ */ import_react23.default.createElement(
|
|
4583
4809
|
"select",
|
|
4584
4810
|
{
|
|
4585
4811
|
className: "dg-filter-select",
|
|
@@ -4591,20 +4817,20 @@ function DataGrid({
|
|
|
4591
4817
|
setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, column: newColKey, operator: defaultOp, value: "" } : fi));
|
|
4592
4818
|
}
|
|
4593
4819
|
},
|
|
4594
|
-
resolvedColumns.map((c) => /* @__PURE__ */
|
|
4820
|
+
resolvedColumns.map((c) => /* @__PURE__ */ import_react23.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
|
|
4595
4821
|
), (() => {
|
|
4596
4822
|
const col = resolvedColumns.find((c) => String(c.key) === f.column);
|
|
4597
4823
|
const operators = getOperatorsForType(col?.type);
|
|
4598
4824
|
const hideValue = f.operator === "is empty" || f.operator === "is not empty";
|
|
4599
|
-
return /* @__PURE__ */
|
|
4825
|
+
return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(
|
|
4600
4826
|
"select",
|
|
4601
4827
|
{
|
|
4602
4828
|
className: "dg-filter-select dg-filter-select-sm",
|
|
4603
4829
|
value: f.operator,
|
|
4604
4830
|
onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, operator: e.target.value, value: "" } : fi))
|
|
4605
4831
|
},
|
|
4606
|
-
operators.map((op) => /* @__PURE__ */
|
|
4607
|
-
), !hideValue && col?.type === "date" && /* @__PURE__ */
|
|
4832
|
+
operators.map((op) => /* @__PURE__ */ import_react23.default.createElement("option", { key: op.value, value: op.value }, op.label))
|
|
4833
|
+
), !hideValue && col?.type === "date" && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-datefield" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4608
4834
|
DateField,
|
|
4609
4835
|
{
|
|
4610
4836
|
value: f.value,
|
|
@@ -4613,17 +4839,17 @@ function DataGrid({
|
|
|
4613
4839
|
}
|
|
4614
4840
|
)), !hideValue && col?.type === "status" && (() => {
|
|
4615
4841
|
const options = col.statusOptions || [...new Set(data.map((item) => String(item[col.field || col.key || ""])))].filter((v) => v && v !== "undefined" && v !== "null").sort();
|
|
4616
|
-
return /* @__PURE__ */
|
|
4842
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
4617
4843
|
"select",
|
|
4618
4844
|
{
|
|
4619
4845
|
className: "dg-filter-select",
|
|
4620
4846
|
value: f.value,
|
|
4621
4847
|
onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
|
|
4622
4848
|
},
|
|
4623
|
-
/* @__PURE__ */
|
|
4624
|
-
options.map((opt) => /* @__PURE__ */
|
|
4849
|
+
/* @__PURE__ */ import_react23.default.createElement("option", { value: "" }, "Select\u2026"),
|
|
4850
|
+
options.map((opt) => /* @__PURE__ */ import_react23.default.createElement("option", { key: opt, value: opt }, opt))
|
|
4625
4851
|
);
|
|
4626
|
-
})(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */
|
|
4852
|
+
})(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */ import_react23.default.createElement(
|
|
4627
4853
|
"input",
|
|
4628
4854
|
{
|
|
4629
4855
|
type: col?.type === "number" ? "number" : "text",
|
|
@@ -4633,7 +4859,7 @@ function DataGrid({
|
|
|
4633
4859
|
onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
|
|
4634
4860
|
}
|
|
4635
4861
|
));
|
|
4636
|
-
})()))), /* @__PURE__ */
|
|
4862
|
+
})()))), /* @__PURE__ */ import_react23.default.createElement(
|
|
4637
4863
|
"button",
|
|
4638
4864
|
{
|
|
4639
4865
|
className: "dg-action-btn",
|
|
@@ -4644,9 +4870,9 @@ function DataGrid({
|
|
|
4644
4870
|
setAdvancedFilters((p) => [...p, { column: String(firstCol.key), operator: defaultOp, value: "", logic: "AND" }]);
|
|
4645
4871
|
}
|
|
4646
4872
|
},
|
|
4647
|
-
/* @__PURE__ */
|
|
4873
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Plus, { size: 14 }),
|
|
4648
4874
|
" Add Filter"
|
|
4649
|
-
)), /* @__PURE__ */
|
|
4875
|
+
)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4650
4876
|
"button",
|
|
4651
4877
|
{
|
|
4652
4878
|
className: "dg-action-btn",
|
|
@@ -4655,20 +4881,20 @@ function DataGrid({
|
|
|
4655
4881
|
setAdvancedFilters([{ column: String(firstCol.key), operator: getDefaultOperator(firstCol?.type), value: "", logic: "AND" }]);
|
|
4656
4882
|
}
|
|
4657
4883
|
},
|
|
4658
|
-
/* @__PURE__ */
|
|
4884
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Trash2, { size: 14 }),
|
|
4659
4885
|
" Reset"
|
|
4660
|
-
), /* @__PURE__ */
|
|
4886
|
+
), /* @__PURE__ */ import_react23.default.createElement("button", { className: "submit-btn", onClick: () => setShowAdvancedFilter(false) }, "Apply")))));
|
|
4661
4887
|
}
|
|
4662
4888
|
|
|
4663
4889
|
// lib/Select/Select.tsx
|
|
4664
|
-
var
|
|
4665
|
-
var
|
|
4666
|
-
var ChevronDownIcon2 = () => /* @__PURE__ */
|
|
4667
|
-
var CheckIcon2 = () => /* @__PURE__ */
|
|
4890
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
4891
|
+
var import_react_dom5 = __toESM(require("react-dom"), 1);
|
|
4892
|
+
var ChevronDownIcon2 = () => /* @__PURE__ */ import_react24.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "6 9 12 15 18 9" }));
|
|
4893
|
+
var CheckIcon2 = () => /* @__PURE__ */ import_react24.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "20 6 9 17 4 12" }));
|
|
4668
4894
|
function normaliseOptions(options) {
|
|
4669
4895
|
return options.map((o) => typeof o === "string" ? { value: o, label: o } : o);
|
|
4670
4896
|
}
|
|
4671
|
-
var Select =
|
|
4897
|
+
var Select = import_react24.default.forwardRef(function Select2(props, ref) {
|
|
4672
4898
|
const {
|
|
4673
4899
|
options: rawOptions,
|
|
4674
4900
|
value,
|
|
@@ -4687,14 +4913,14 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4687
4913
|
style,
|
|
4688
4914
|
sx
|
|
4689
4915
|
} = props;
|
|
4690
|
-
const [open, setOpen] = (0,
|
|
4691
|
-
const [focusedIdx, setFocusedIdx] = (0,
|
|
4692
|
-
const [popupStyle, setPopupStyle] = (0,
|
|
4693
|
-
const containerRef = (0,
|
|
4694
|
-
const listRef = (0,
|
|
4695
|
-
const inputId = (0,
|
|
4916
|
+
const [open, setOpen] = (0, import_react24.useState)(false);
|
|
4917
|
+
const [focusedIdx, setFocusedIdx] = (0, import_react24.useState)(-1);
|
|
4918
|
+
const [popupStyle, setPopupStyle] = (0, import_react24.useState)({});
|
|
4919
|
+
const containerRef = (0, import_react24.useRef)(null);
|
|
4920
|
+
const listRef = (0, import_react24.useRef)(null);
|
|
4921
|
+
const inputId = (0, import_react24.useRef)(`rf-sel-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
4696
4922
|
const sxClass = useSx(sx);
|
|
4697
|
-
const calcPopupStyle = (0,
|
|
4923
|
+
const calcPopupStyle = (0, import_react24.useCallback)(() => {
|
|
4698
4924
|
if (!containerRef.current) return;
|
|
4699
4925
|
const rect = containerRef.current.getBoundingClientRect();
|
|
4700
4926
|
setPopupStyle({
|
|
@@ -4705,28 +4931,28 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4705
4931
|
}, []);
|
|
4706
4932
|
const options = normaliseOptions(rawOptions);
|
|
4707
4933
|
const selectedValues = multiple ? Array.isArray(value) ? value : value != null ? [value] : [] : value != null ? [value] : [];
|
|
4708
|
-
const isSelected = (0,
|
|
4934
|
+
const isSelected = (0, import_react24.useCallback)(
|
|
4709
4935
|
(optValue) => selectedValues.includes(optValue),
|
|
4710
4936
|
[selectedValues]
|
|
4711
4937
|
);
|
|
4712
4938
|
const getSelectedLabels = () => options.filter((o) => selectedValues.includes(o.value)).map((o) => o.label);
|
|
4713
4939
|
const hasValue = selectedValues.length > 0;
|
|
4714
4940
|
const isFloating = Boolean(open || hasValue);
|
|
4715
|
-
const openPopup = (0,
|
|
4941
|
+
const openPopup = (0, import_react24.useCallback)(() => {
|
|
4716
4942
|
if (disabled) return;
|
|
4717
4943
|
calcPopupStyle();
|
|
4718
4944
|
setOpen(true);
|
|
4719
4945
|
setFocusedIdx(-1);
|
|
4720
4946
|
}, [disabled, calcPopupStyle]);
|
|
4721
|
-
const closePopup = (0,
|
|
4947
|
+
const closePopup = (0, import_react24.useCallback)(() => {
|
|
4722
4948
|
setOpen(false);
|
|
4723
4949
|
setFocusedIdx(-1);
|
|
4724
4950
|
}, []);
|
|
4725
|
-
const togglePopup = (0,
|
|
4951
|
+
const togglePopup = (0, import_react24.useCallback)(() => {
|
|
4726
4952
|
if (open) closePopup();
|
|
4727
4953
|
else openPopup();
|
|
4728
4954
|
}, [open, openPopup, closePopup]);
|
|
4729
|
-
(0,
|
|
4955
|
+
(0, import_react24.useEffect)(() => {
|
|
4730
4956
|
if (!open) return;
|
|
4731
4957
|
const handleOutside = (e) => {
|
|
4732
4958
|
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
@@ -4742,7 +4968,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4742
4968
|
window.removeEventListener("resize", calcPopupStyle);
|
|
4743
4969
|
};
|
|
4744
4970
|
}, [open, closePopup, calcPopupStyle]);
|
|
4745
|
-
const selectOption = (0,
|
|
4971
|
+
const selectOption = (0, import_react24.useCallback)((opt) => {
|
|
4746
4972
|
if (opt.disabled) return;
|
|
4747
4973
|
if (multiple) {
|
|
4748
4974
|
const already = isSelected(opt.value);
|
|
@@ -4817,20 +5043,20 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4817
5043
|
if (multiple) {
|
|
4818
5044
|
const labels = getSelectedLabels();
|
|
4819
5045
|
if (labels.length === 0) {
|
|
4820
|
-
return /* @__PURE__ */
|
|
5046
|
+
return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__chips" }, placeholder && /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__display rf-select__display--placeholder" }, placeholder));
|
|
4821
5047
|
}
|
|
4822
5048
|
if (labels.length <= 2) {
|
|
4823
|
-
return /* @__PURE__ */
|
|
5049
|
+
return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__chips" }, labels.map((l, i) => /* @__PURE__ */ import_react24.default.createElement("span", { key: i, className: "rf-select__chip" }, l)));
|
|
4824
5050
|
}
|
|
4825
|
-
return /* @__PURE__ */
|
|
5051
|
+
return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__chips" }, labels.slice(0, 2).map((l, i) => /* @__PURE__ */ import_react24.default.createElement("span", { key: i, className: "rf-select__chip" }, l)), /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__count" }, "+", labels.length - 2));
|
|
4826
5052
|
}
|
|
4827
5053
|
const selectedOpt = options.find((o) => o.value === value);
|
|
4828
5054
|
if (selectedOpt) {
|
|
4829
|
-
return /* @__PURE__ */
|
|
5055
|
+
return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__display" }, selectedOpt.label);
|
|
4830
5056
|
}
|
|
4831
|
-
return /* @__PURE__ */
|
|
5057
|
+
return /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-select__display${placeholder ? " rf-select__display--placeholder" : ""}` }, placeholder || "\xA0");
|
|
4832
5058
|
};
|
|
4833
|
-
return /* @__PURE__ */
|
|
5059
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
4834
5060
|
"div",
|
|
4835
5061
|
{
|
|
4836
5062
|
ref: (node) => {
|
|
@@ -4841,7 +5067,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4841
5067
|
className: rootClasses,
|
|
4842
5068
|
style
|
|
4843
5069
|
},
|
|
4844
|
-
/* @__PURE__ */
|
|
5070
|
+
/* @__PURE__ */ import_react24.default.createElement(
|
|
4845
5071
|
"div",
|
|
4846
5072
|
{
|
|
4847
5073
|
className: "rf-text-field__wrapper",
|
|
@@ -4855,16 +5081,16 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4855
5081
|
onKeyDown: handleKeyDown
|
|
4856
5082
|
},
|
|
4857
5083
|
renderDisplay(),
|
|
4858
|
-
label && /* @__PURE__ */
|
|
4859
|
-
variant === "outlined" && /* @__PURE__ */
|
|
4860
|
-
/* @__PURE__ */
|
|
5084
|
+
label && /* @__PURE__ */ import_react24.default.createElement("label", { id: inputId, className: "rf-text-field__label" }, label, required && /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-text-field__asterisk" }, " *")),
|
|
5085
|
+
variant === "outlined" && /* @__PURE__ */ import_react24.default.createElement("fieldset", { className: "rf-text-field__notch" }, label ? /* @__PURE__ */ import_react24.default.createElement("legend", { className: "rf-text-field__legend" }, /* @__PURE__ */ import_react24.default.createElement("span", null, label, required ? " *" : "")) : /* @__PURE__ */ import_react24.default.createElement("legend", { className: "rf-text-field__legend--empty" })),
|
|
5086
|
+
/* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__arrow", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(ChevronDownIcon2, null))
|
|
4861
5087
|
),
|
|
4862
|
-
helperText && /* @__PURE__ */
|
|
4863
|
-
open && !disabled &&
|
|
4864
|
-
/* @__PURE__ */
|
|
5088
|
+
helperText && /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText),
|
|
5089
|
+
open && !disabled && import_react_dom5.default.createPortal(
|
|
5090
|
+
/* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__popup", role: "presentation", style: popupStyle }, /* @__PURE__ */ import_react24.default.createElement("ul", { ref: listRef, className: "rf-select__listbox", role: "listbox", "aria-multiselectable": multiple }, options.map((opt, idx) => {
|
|
4865
5091
|
const selected = isSelected(opt.value);
|
|
4866
5092
|
const focused = focusedIdx === idx;
|
|
4867
|
-
return /* @__PURE__ */
|
|
5093
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
4868
5094
|
"li",
|
|
4869
5095
|
{
|
|
4870
5096
|
key: opt.value,
|
|
@@ -4883,8 +5109,8 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4883
5109
|
onMouseDown: (e) => e.preventDefault(),
|
|
4884
5110
|
onClick: () => selectOption(opt)
|
|
4885
5111
|
},
|
|
4886
|
-
/* @__PURE__ */
|
|
4887
|
-
/* @__PURE__ */
|
|
5112
|
+
/* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-label" }, opt.label),
|
|
5113
|
+
/* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-check", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(CheckIcon2, null))
|
|
4888
5114
|
);
|
|
4889
5115
|
}))),
|
|
4890
5116
|
document.body
|
|
@@ -4894,7 +5120,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4894
5120
|
Select.displayName = "Select";
|
|
4895
5121
|
|
|
4896
5122
|
// lib/Slider/Slider.tsx
|
|
4897
|
-
var
|
|
5123
|
+
var import_react25 = __toESM(require("react"), 1);
|
|
4898
5124
|
function clamp(val, min, max) {
|
|
4899
5125
|
return Math.max(min, Math.min(max, val));
|
|
4900
5126
|
}
|
|
@@ -4904,7 +5130,7 @@ function snapToStep(val, min, step) {
|
|
|
4904
5130
|
function pct(val, min, max) {
|
|
4905
5131
|
return (val - min) / (max - min) * 100;
|
|
4906
5132
|
}
|
|
4907
|
-
var Slider =
|
|
5133
|
+
var Slider = import_react25.default.forwardRef(function Slider2(props, ref) {
|
|
4908
5134
|
const {
|
|
4909
5135
|
value,
|
|
4910
5136
|
onChange,
|
|
@@ -4924,9 +5150,9 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
4924
5150
|
sx
|
|
4925
5151
|
} = props;
|
|
4926
5152
|
const sxClass = useSx(sx);
|
|
4927
|
-
const trackRef = (0,
|
|
4928
|
-
const draggingThumb = (0,
|
|
4929
|
-
const [dragging, setDragging] = (0,
|
|
5153
|
+
const trackRef = (0, import_react25.useRef)(null);
|
|
5154
|
+
const draggingThumb = (0, import_react25.useRef)(null);
|
|
5155
|
+
const [dragging, setDragging] = (0, import_react25.useState)(null);
|
|
4930
5156
|
const isRange = range || Array.isArray(value);
|
|
4931
5157
|
const rawVal = value ?? (isRange ? [min, max] : min);
|
|
4932
5158
|
const vals = isRange ? Array.isArray(rawVal) ? [rawVal[0], rawVal[1]] : [rawVal, rawVal] : [rawVal, rawVal];
|
|
@@ -4937,7 +5163,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
4937
5163
|
computedMarks.push(...marks);
|
|
4938
5164
|
}
|
|
4939
5165
|
const hasLabelledMarks = computedMarks.some((m) => m.label);
|
|
4940
|
-
const getValueFromPointer = (0,
|
|
5166
|
+
const getValueFromPointer = (0, import_react25.useCallback)((e) => {
|
|
4941
5167
|
const track = trackRef.current;
|
|
4942
5168
|
if (!track) return min;
|
|
4943
5169
|
const rect = track.getBoundingClientRect();
|
|
@@ -4951,7 +5177,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
4951
5177
|
const raw = min + ratio * (max - min);
|
|
4952
5178
|
return clamp(snapToStep(raw, min, step), min, max);
|
|
4953
5179
|
}, [min, max, step, orientation]);
|
|
4954
|
-
(0,
|
|
5180
|
+
(0, import_react25.useEffect)(() => {
|
|
4955
5181
|
if (dragging === null) return;
|
|
4956
5182
|
const onMove = (e) => {
|
|
4957
5183
|
const newVal = getValueFromPointer(e);
|
|
@@ -5044,7 +5270,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
5044
5270
|
const val = vals[thumb];
|
|
5045
5271
|
const p = pct(val, min, max);
|
|
5046
5272
|
const thumbStyle = orientation === "vertical" ? { bottom: `${p}%`, transform: "translate(-50%, 50%)" } : { left: `${p}%` };
|
|
5047
|
-
return /* @__PURE__ */
|
|
5273
|
+
return /* @__PURE__ */ import_react25.default.createElement(
|
|
5048
5274
|
"div",
|
|
5049
5275
|
{
|
|
5050
5276
|
key: thumb,
|
|
@@ -5060,30 +5286,30 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
5060
5286
|
onPointerDown: (e) => handleThumbPointerDown(e, thumb),
|
|
5061
5287
|
onKeyDown: (e) => handleThumbKeyDown(e, thumb)
|
|
5062
5288
|
},
|
|
5063
|
-
valueLabelDisplay !== "off" && /* @__PURE__ */
|
|
5289
|
+
valueLabelDisplay !== "off" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__value-label", "aria-hidden": "true" }, val)
|
|
5064
5290
|
);
|
|
5065
5291
|
};
|
|
5066
|
-
return /* @__PURE__ */
|
|
5292
|
+
return /* @__PURE__ */ import_react25.default.createElement("div", { ref, className: rootClasses, style }, label && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__label" }, label), /* @__PURE__ */ import_react25.default.createElement(
|
|
5067
5293
|
"div",
|
|
5068
5294
|
{
|
|
5069
5295
|
ref: trackRef,
|
|
5070
5296
|
className: "rf-slider__track-container",
|
|
5071
5297
|
onPointerDown: handleTrackPointerDown
|
|
5072
5298
|
},
|
|
5073
|
-
/* @__PURE__ */
|
|
5074
|
-
/* @__PURE__ */
|
|
5299
|
+
/* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__rail", "aria-hidden": "true" }),
|
|
5300
|
+
/* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__track", style: trackStyle, "aria-hidden": "true" }),
|
|
5075
5301
|
computedMarks.map((mark) => {
|
|
5076
5302
|
const p = pct(mark.value, min, max);
|
|
5077
5303
|
const isActive = isRange ? mark.value >= vals[0] && mark.value <= vals[1] : mark.value <= vals[0];
|
|
5078
5304
|
const markStyle = orientation === "vertical" ? { bottom: `${p}%`, transform: "translate(-50%, 50%)" } : { left: `${p}%` };
|
|
5079
|
-
return /* @__PURE__ */
|
|
5305
|
+
return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, { key: mark.value }, /* @__PURE__ */ import_react25.default.createElement(
|
|
5080
5306
|
"div",
|
|
5081
5307
|
{
|
|
5082
5308
|
className: `rf-slider__mark${isActive ? " rf-slider__mark--active" : ""}`,
|
|
5083
5309
|
style: markStyle,
|
|
5084
5310
|
"aria-hidden": "true"
|
|
5085
5311
|
}
|
|
5086
|
-
), mark.label && orientation === "horizontal" && /* @__PURE__ */
|
|
5312
|
+
), mark.label && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement(
|
|
5087
5313
|
"div",
|
|
5088
5314
|
{
|
|
5089
5315
|
className: "rf-slider__mark-label",
|
|
@@ -5095,13 +5321,13 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
5095
5321
|
}),
|
|
5096
5322
|
renderThumb(0),
|
|
5097
5323
|
isRange && renderThumb(1)
|
|
5098
|
-
), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */
|
|
5324
|
+
), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__marks-labels", "aria-hidden": "true" }));
|
|
5099
5325
|
});
|
|
5100
5326
|
Slider.displayName = "Slider";
|
|
5101
5327
|
|
|
5102
5328
|
// lib/Switch/Switch.tsx
|
|
5103
|
-
var
|
|
5104
|
-
var Switch =
|
|
5329
|
+
var import_react26 = __toESM(require("react"), 1);
|
|
5330
|
+
var Switch = import_react26.default.forwardRef(function Switch2(props, ref) {
|
|
5105
5331
|
const {
|
|
5106
5332
|
checked = false,
|
|
5107
5333
|
onChange,
|
|
@@ -5116,8 +5342,8 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5116
5342
|
sx
|
|
5117
5343
|
} = props;
|
|
5118
5344
|
const sxClass = useSx(sx);
|
|
5119
|
-
const inputRef = (0,
|
|
5120
|
-
const inputId = (0,
|
|
5345
|
+
const inputRef = (0, import_react26.useRef)(null);
|
|
5346
|
+
const inputId = (0, import_react26.useRef)(`rf-sw-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
5121
5347
|
const handleChange = (e) => {
|
|
5122
5348
|
if (!disabled) onChange?.(e.target.checked);
|
|
5123
5349
|
};
|
|
@@ -5131,7 +5357,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5131
5357
|
sxClass,
|
|
5132
5358
|
className
|
|
5133
5359
|
].filter(Boolean).join(" ");
|
|
5134
|
-
return /* @__PURE__ */
|
|
5360
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
5135
5361
|
"label",
|
|
5136
5362
|
{
|
|
5137
5363
|
ref,
|
|
@@ -5139,7 +5365,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5139
5365
|
style,
|
|
5140
5366
|
htmlFor: inputId
|
|
5141
5367
|
},
|
|
5142
|
-
/* @__PURE__ */
|
|
5368
|
+
/* @__PURE__ */ import_react26.default.createElement(
|
|
5143
5369
|
"input",
|
|
5144
5370
|
{
|
|
5145
5371
|
ref: inputRef,
|
|
@@ -5154,17 +5380,17 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5154
5380
|
"aria-checked": checked
|
|
5155
5381
|
}
|
|
5156
5382
|
),
|
|
5157
|
-
/* @__PURE__ */
|
|
5158
|
-
label && /* @__PURE__ */
|
|
5383
|
+
/* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__track", "aria-hidden": "true" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__thumb" })),
|
|
5384
|
+
label && /* @__PURE__ */ import_react26.default.createElement("span", { className: "rf-switch__label" }, label, required && /* @__PURE__ */ import_react26.default.createElement("span", { style: { color: "var(--tf-error-color, #d32f2f)" } }, " *"))
|
|
5159
5385
|
);
|
|
5160
5386
|
});
|
|
5161
5387
|
Switch.displayName = "Switch";
|
|
5162
5388
|
|
|
5163
5389
|
// lib/RadioGroup/RadioGroup.tsx
|
|
5164
|
-
var
|
|
5165
|
-
var RadioGroupContext = (0,
|
|
5166
|
-
var Radio =
|
|
5167
|
-
const ctx = (0,
|
|
5390
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
5391
|
+
var RadioGroupContext = (0, import_react27.createContext)({});
|
|
5392
|
+
var Radio = import_react27.default.forwardRef(function Radio2(props, ref) {
|
|
5393
|
+
const ctx = (0, import_react27.useContext)(RadioGroupContext);
|
|
5168
5394
|
const {
|
|
5169
5395
|
value,
|
|
5170
5396
|
label,
|
|
@@ -5176,7 +5402,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
|
|
|
5176
5402
|
sx
|
|
5177
5403
|
} = props;
|
|
5178
5404
|
const sxClass = useSx(sx);
|
|
5179
|
-
const inputId = (0,
|
|
5405
|
+
const inputId = (0, import_react27.useRef)(`rf-radio-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
5180
5406
|
const isChecked = checkedProp !== void 0 ? checkedProp : ctx.value === value;
|
|
5181
5407
|
const isDisabled = disabledProp !== void 0 ? disabledProp : ctx.disabled ?? false;
|
|
5182
5408
|
const size = sizeProp ?? ctx.size ?? "medium";
|
|
@@ -5194,7 +5420,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
|
|
|
5194
5420
|
isDisabled ? "rf-radio--disabled" : "",
|
|
5195
5421
|
sxClass
|
|
5196
5422
|
].filter(Boolean).join(" ");
|
|
5197
|
-
return /* @__PURE__ */
|
|
5423
|
+
return /* @__PURE__ */ import_react27.default.createElement("label", { ref, className: rootClasses, htmlFor: inputId }, /* @__PURE__ */ import_react27.default.createElement(
|
|
5198
5424
|
"input",
|
|
5199
5425
|
{
|
|
5200
5426
|
id: inputId,
|
|
@@ -5207,10 +5433,10 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
|
|
|
5207
5433
|
name,
|
|
5208
5434
|
"aria-checked": isChecked
|
|
5209
5435
|
}
|
|
5210
|
-
), /* @__PURE__ */
|
|
5436
|
+
), /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__control", "aria-hidden": "true" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__ripple" }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__outer" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__inner" }))), label && /* @__PURE__ */ import_react27.default.createElement("span", { className: "rf-radio__label" }, label));
|
|
5211
5437
|
});
|
|
5212
5438
|
Radio.displayName = "Radio";
|
|
5213
|
-
var RadioGroup =
|
|
5439
|
+
var RadioGroup = import_react27.default.forwardRef(function RadioGroup2(props, ref) {
|
|
5214
5440
|
const {
|
|
5215
5441
|
value,
|
|
5216
5442
|
onChange,
|
|
@@ -5226,7 +5452,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5226
5452
|
sx
|
|
5227
5453
|
} = props;
|
|
5228
5454
|
const sxClass = useSx(sx);
|
|
5229
|
-
const groupName = (0,
|
|
5455
|
+
const groupName = (0, import_react27.useRef)(name ?? `rf-rg-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
5230
5456
|
const rootClasses = [
|
|
5231
5457
|
"rf-radio-group",
|
|
5232
5458
|
row ? "rf-radio-group--row" : "",
|
|
@@ -5234,7 +5460,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5234
5460
|
sxClass,
|
|
5235
5461
|
className
|
|
5236
5462
|
].filter(Boolean).join(" ");
|
|
5237
|
-
return /* @__PURE__ */
|
|
5463
|
+
return /* @__PURE__ */ import_react27.default.createElement(RadioGroupContext.Provider, { value: { value, onChange, name: groupName, disabled, size } }, /* @__PURE__ */ import_react27.default.createElement(
|
|
5238
5464
|
"div",
|
|
5239
5465
|
{
|
|
5240
5466
|
ref,
|
|
@@ -5243,8 +5469,8 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5243
5469
|
role: "radiogroup",
|
|
5244
5470
|
"aria-label": label
|
|
5245
5471
|
},
|
|
5246
|
-
label && /* @__PURE__ */
|
|
5247
|
-
options ? options.map((opt) => /* @__PURE__ */
|
|
5472
|
+
label && /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio-group__label" }, label),
|
|
5473
|
+
options ? options.map((opt) => /* @__PURE__ */ import_react27.default.createElement(
|
|
5248
5474
|
Radio,
|
|
5249
5475
|
{
|
|
5250
5476
|
key: opt.value,
|
|
@@ -5258,9 +5484,9 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5258
5484
|
RadioGroup.displayName = "RadioGroup";
|
|
5259
5485
|
|
|
5260
5486
|
// lib/Rating/Rating.tsx
|
|
5261
|
-
var
|
|
5487
|
+
var import_react28 = __toESM(require("react"), 1);
|
|
5262
5488
|
var starSize = { small: 18, medium: 24, large: 32 };
|
|
5263
|
-
var FilledStarIcon = ({ size }) => /* @__PURE__ */
|
|
5489
|
+
var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
|
|
5264
5490
|
"svg",
|
|
5265
5491
|
{
|
|
5266
5492
|
width: size,
|
|
@@ -5269,9 +5495,9 @@ var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.create
|
|
|
5269
5495
|
fill: "currentColor",
|
|
5270
5496
|
"aria-hidden": "true"
|
|
5271
5497
|
},
|
|
5272
|
-
/* @__PURE__ */
|
|
5498
|
+
/* @__PURE__ */ import_react28.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })
|
|
5273
5499
|
);
|
|
5274
|
-
var EmptyStarIcon = ({ size }) => /* @__PURE__ */
|
|
5500
|
+
var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
|
|
5275
5501
|
"svg",
|
|
5276
5502
|
{
|
|
5277
5503
|
width: size,
|
|
@@ -5282,9 +5508,9 @@ var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createE
|
|
|
5282
5508
|
strokeWidth: "1.6",
|
|
5283
5509
|
"aria-hidden": "true"
|
|
5284
5510
|
},
|
|
5285
|
-
/* @__PURE__ */
|
|
5511
|
+
/* @__PURE__ */ import_react28.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })
|
|
5286
5512
|
);
|
|
5287
|
-
var Rating =
|
|
5513
|
+
var Rating = import_react28.default.forwardRef(function Rating2(props, ref) {
|
|
5288
5514
|
const {
|
|
5289
5515
|
value,
|
|
5290
5516
|
onChange,
|
|
@@ -5302,13 +5528,13 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5302
5528
|
sx
|
|
5303
5529
|
} = props;
|
|
5304
5530
|
const sxClass = useSx(sx);
|
|
5305
|
-
const [hoverValue, setHoverValue] = (0,
|
|
5306
|
-
const starsRef = (0,
|
|
5531
|
+
const [hoverValue, setHoverValue] = (0, import_react28.useState)(null);
|
|
5532
|
+
const starsRef = (0, import_react28.useRef)(null);
|
|
5307
5533
|
const currentValue = value ?? 0;
|
|
5308
5534
|
const displayValue = hoverValue !== null ? hoverValue : currentValue;
|
|
5309
5535
|
const iconSize = starSize[size] ?? 24;
|
|
5310
|
-
const renderedFilledIcon = icon ?? /* @__PURE__ */
|
|
5311
|
-
const renderedEmptyIcon = emptyIcon ?? /* @__PURE__ */
|
|
5536
|
+
const renderedFilledIcon = icon ?? /* @__PURE__ */ import_react28.default.createElement(FilledStarIcon, { size: iconSize });
|
|
5537
|
+
const renderedEmptyIcon = emptyIcon ?? /* @__PURE__ */ import_react28.default.createElement(EmptyStarIcon, { size: iconSize });
|
|
5312
5538
|
const isFilled = (pos) => {
|
|
5313
5539
|
if (highlightSelectedOnly) return displayValue === pos;
|
|
5314
5540
|
return displayValue >= pos - (precision < 1 ? 0.25 : 0);
|
|
@@ -5369,7 +5595,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5369
5595
|
sxClass,
|
|
5370
5596
|
className
|
|
5371
5597
|
].filter(Boolean).join(" ");
|
|
5372
|
-
return /* @__PURE__ */
|
|
5598
|
+
return /* @__PURE__ */ import_react28.default.createElement("div", { ref, className: rootClasses, style }, label && /* @__PURE__ */ import_react28.default.createElement("div", { className: "rf-rating__label" }, label), /* @__PURE__ */ import_react28.default.createElement(
|
|
5373
5599
|
"div",
|
|
5374
5600
|
{
|
|
5375
5601
|
ref: starsRef,
|
|
@@ -5386,7 +5612,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5386
5612
|
"rf-rating__item",
|
|
5387
5613
|
isHovered ? "rf-rating__item--hovered" : ""
|
|
5388
5614
|
].filter(Boolean).join(" ");
|
|
5389
|
-
return /* @__PURE__ */
|
|
5615
|
+
return /* @__PURE__ */ import_react28.default.createElement(
|
|
5390
5616
|
"button",
|
|
5391
5617
|
{
|
|
5392
5618
|
key: pos,
|
|
@@ -5401,15 +5627,15 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5401
5627
|
},
|
|
5402
5628
|
halfFilled ? (
|
|
5403
5629
|
// Half-star: show half filled + half empty
|
|
5404
|
-
/* @__PURE__ */
|
|
5630
|
+
/* @__PURE__ */ import_react28.default.createElement("div", { className: "rf-rating__icon-container", style: { position: "relative" } }, /* @__PURE__ */ import_react28.default.createElement("span", { className: "rf-rating__icon--empty" }, renderedEmptyIcon), /* @__PURE__ */ import_react28.default.createElement(
|
|
5405
5631
|
"span",
|
|
5406
5632
|
{
|
|
5407
5633
|
className: "rf-rating__half-left",
|
|
5408
5634
|
style: { position: "absolute", inset: 0, width: "50%", overflow: "hidden" }
|
|
5409
5635
|
},
|
|
5410
|
-
/* @__PURE__ */
|
|
5636
|
+
/* @__PURE__ */ import_react28.default.createElement("span", { className: "rf-rating__icon--filled" }, renderedFilledIcon)
|
|
5411
5637
|
))
|
|
5412
|
-
) : /* @__PURE__ */
|
|
5638
|
+
) : /* @__PURE__ */ import_react28.default.createElement("div", { className: "rf-rating__icon-container" }, /* @__PURE__ */ import_react28.default.createElement("span", { className: filled ? "rf-rating__icon--filled" : "rf-rating__icon--empty" }, filled ? renderedFilledIcon : renderedEmptyIcon))
|
|
5413
5639
|
);
|
|
5414
5640
|
})
|
|
5415
5641
|
));
|
|
@@ -5417,11 +5643,11 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5417
5643
|
Rating.displayName = "Rating";
|
|
5418
5644
|
|
|
5419
5645
|
// lib/ToggleButton/ToggleButton.tsx
|
|
5420
|
-
var
|
|
5421
|
-
var ToggleGroupContext = (0,
|
|
5422
|
-
var ToggleButton =
|
|
5646
|
+
var import_react29 = __toESM(require("react"), 1);
|
|
5647
|
+
var ToggleGroupContext = (0, import_react29.createContext)({});
|
|
5648
|
+
var ToggleButton = import_react29.default.forwardRef(
|
|
5423
5649
|
function ToggleButton2(props, ref) {
|
|
5424
|
-
const ctx = (0,
|
|
5650
|
+
const ctx = (0, import_react29.useContext)(ToggleGroupContext);
|
|
5425
5651
|
const { value, children, disabled: disabledProp, selected: selectedProp, sx } = props;
|
|
5426
5652
|
const sxClass = useSx(sx);
|
|
5427
5653
|
let isSelected = false;
|
|
@@ -5452,7 +5678,7 @@ var ToggleButton = import_react28.default.forwardRef(
|
|
|
5452
5678
|
}
|
|
5453
5679
|
}
|
|
5454
5680
|
};
|
|
5455
|
-
const isIconOnly =
|
|
5681
|
+
const isIconOnly = import_react29.default.Children.count(children) === 1 && import_react29.default.isValidElement(children) && children.type === "svg";
|
|
5456
5682
|
const btnClasses = [
|
|
5457
5683
|
"rf-toggle-btn",
|
|
5458
5684
|
isSelected ? "rf-toggle-btn--selected" : "",
|
|
@@ -5460,7 +5686,7 @@ var ToggleButton = import_react28.default.forwardRef(
|
|
|
5460
5686
|
isIconOnly ? "rf-toggle-btn--icon-only" : "",
|
|
5461
5687
|
sxClass
|
|
5462
5688
|
].filter(Boolean).join(" ");
|
|
5463
|
-
return /* @__PURE__ */
|
|
5689
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
5464
5690
|
"button",
|
|
5465
5691
|
{
|
|
5466
5692
|
ref,
|
|
@@ -5475,7 +5701,7 @@ var ToggleButton = import_react28.default.forwardRef(
|
|
|
5475
5701
|
}
|
|
5476
5702
|
);
|
|
5477
5703
|
ToggleButton.displayName = "ToggleButton";
|
|
5478
|
-
var ToggleButtonGroup =
|
|
5704
|
+
var ToggleButtonGroup = import_react29.default.forwardRef(
|
|
5479
5705
|
function ToggleButtonGroup2(props, ref) {
|
|
5480
5706
|
const {
|
|
5481
5707
|
value,
|
|
@@ -5502,7 +5728,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
|
|
|
5502
5728
|
sxClass,
|
|
5503
5729
|
className
|
|
5504
5730
|
].filter(Boolean).join(" ");
|
|
5505
|
-
return /* @__PURE__ */
|
|
5731
|
+
return /* @__PURE__ */ import_react29.default.createElement(ToggleGroupContext.Provider, { value: { value, onChange, exclusive, size, disabled, color } }, /* @__PURE__ */ import_react29.default.createElement(
|
|
5506
5732
|
"div",
|
|
5507
5733
|
{
|
|
5508
5734
|
ref,
|
|
@@ -5518,7 +5744,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
|
|
|
5518
5744
|
ToggleButtonGroup.displayName = "ToggleButtonGroup";
|
|
5519
5745
|
|
|
5520
5746
|
// lib/Avatar/Avatar.tsx
|
|
5521
|
-
var
|
|
5747
|
+
var import_react30 = __toESM(require("react"), 1);
|
|
5522
5748
|
var DEFAULT_PALETTE = [
|
|
5523
5749
|
"#a41b06",
|
|
5524
5750
|
"#8b1605",
|
|
@@ -5553,7 +5779,7 @@ function getInitials(alt) {
|
|
|
5553
5779
|
}
|
|
5554
5780
|
return words[0][0].toUpperCase();
|
|
5555
5781
|
}
|
|
5556
|
-
var Avatar =
|
|
5782
|
+
var Avatar = import_react30.default.forwardRef(
|
|
5557
5783
|
({
|
|
5558
5784
|
src,
|
|
5559
5785
|
alt,
|
|
@@ -5568,7 +5794,7 @@ var Avatar = import_react29.default.forwardRef(
|
|
|
5568
5794
|
sx
|
|
5569
5795
|
}, ref) => {
|
|
5570
5796
|
const sxClass = useSx(sx);
|
|
5571
|
-
const [imgError, setImgError] = (0,
|
|
5797
|
+
const [imgError, setImgError] = (0, import_react30.useState)(false);
|
|
5572
5798
|
const { className: sizeClass, style: sizeStyle } = getSizeStyle(size);
|
|
5573
5799
|
const bgColor = color || DEFAULT_PALETTE[_avatarColorIndex % DEFAULT_PALETTE.length];
|
|
5574
5800
|
const classes = [
|
|
@@ -5588,7 +5814,7 @@ var Avatar = import_react29.default.forwardRef(
|
|
|
5588
5814
|
inlineStyle.backgroundColor = bgColor;
|
|
5589
5815
|
inlineStyle.color = "#ffffff";
|
|
5590
5816
|
}
|
|
5591
|
-
return /* @__PURE__ */
|
|
5817
|
+
return /* @__PURE__ */ import_react30.default.createElement("div", { ref, className: classes, style: inlineStyle, "aria-label": alt, role: alt ? "img" : void 0, onClick, tabIndex: onClick ? 0 : void 0 }, showImage ? /* @__PURE__ */ import_react30.default.createElement(
|
|
5592
5818
|
"img",
|
|
5593
5819
|
{
|
|
5594
5820
|
src,
|
|
@@ -5597,7 +5823,7 @@ var Avatar = import_react29.default.forwardRef(
|
|
|
5597
5823
|
onError: () => setImgError(true),
|
|
5598
5824
|
...imgProps
|
|
5599
5825
|
}
|
|
5600
|
-
) : /* @__PURE__ */
|
|
5826
|
+
) : /* @__PURE__ */ import_react30.default.createElement("span", { className: "rf-avatar__initials" }, content));
|
|
5601
5827
|
}
|
|
5602
5828
|
);
|
|
5603
5829
|
Avatar.displayName = "Avatar";
|
|
@@ -5610,7 +5836,7 @@ var AvatarGroup = ({
|
|
|
5610
5836
|
sx
|
|
5611
5837
|
}) => {
|
|
5612
5838
|
const sxClass = useSx(sx);
|
|
5613
|
-
const childArray =
|
|
5839
|
+
const childArray = import_react30.default.Children.toArray(children);
|
|
5614
5840
|
const totalCount = childArray.length;
|
|
5615
5841
|
const overflowCount = totalCount > max ? totalCount - (max - 1) : 0;
|
|
5616
5842
|
const visibleChildren = overflowCount > 0 ? childArray.slice(0, max - 1) : childArray;
|
|
@@ -5624,7 +5850,7 @@ var AvatarGroup = ({
|
|
|
5624
5850
|
}
|
|
5625
5851
|
const classes = ["rf-avatar-group", spacingClass, sxClass, className].filter(Boolean).join(" ");
|
|
5626
5852
|
const avatarsToRender = [...visibleChildren].reverse();
|
|
5627
|
-
return /* @__PURE__ */
|
|
5853
|
+
return /* @__PURE__ */ import_react30.default.createElement("div", { className: classes, style, role: "group" }, overflowCount > 0 && /* @__PURE__ */ import_react30.default.createElement(
|
|
5628
5854
|
Avatar,
|
|
5629
5855
|
{
|
|
5630
5856
|
className: "rf-avatar-group__overflow",
|
|
@@ -5636,7 +5862,7 @@ var AvatarGroup = ({
|
|
|
5636
5862
|
), avatarsToRender.map((child, i) => {
|
|
5637
5863
|
if (typeof spacing === "number") {
|
|
5638
5864
|
const typedChild = child;
|
|
5639
|
-
return
|
|
5865
|
+
return import_react30.default.cloneElement(typedChild, {
|
|
5640
5866
|
key: i,
|
|
5641
5867
|
style: {
|
|
5642
5868
|
marginLeft: i < avatarsToRender.length - 1 ? -spacing : 0,
|
|
@@ -5650,7 +5876,7 @@ var AvatarGroup = ({
|
|
|
5650
5876
|
AvatarGroup.displayName = "AvatarGroup";
|
|
5651
5877
|
|
|
5652
5878
|
// lib/Chip/Chip.tsx
|
|
5653
|
-
var
|
|
5879
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
5654
5880
|
var Chip = ({
|
|
5655
5881
|
label,
|
|
5656
5882
|
onDelete,
|
|
@@ -5688,7 +5914,7 @@ var Chip = ({
|
|
|
5688
5914
|
onDelete();
|
|
5689
5915
|
}
|
|
5690
5916
|
};
|
|
5691
|
-
return /* @__PURE__ */
|
|
5917
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
5692
5918
|
"div",
|
|
5693
5919
|
{
|
|
5694
5920
|
className: classes,
|
|
@@ -5699,10 +5925,10 @@ var Chip = ({
|
|
|
5699
5925
|
onKeyDown: !disabled ? handleKeyDown : void 0,
|
|
5700
5926
|
"aria-disabled": disabled || void 0
|
|
5701
5927
|
},
|
|
5702
|
-
avatar && /* @__PURE__ */
|
|
5703
|
-
!avatar && icon && /* @__PURE__ */
|
|
5704
|
-
/* @__PURE__ */
|
|
5705
|
-
onDelete && /* @__PURE__ */
|
|
5928
|
+
avatar && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__avatar" }, avatar),
|
|
5929
|
+
!avatar && icon && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__icon", "aria-hidden": "true" }, icon),
|
|
5930
|
+
/* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__label" }, label),
|
|
5931
|
+
onDelete && /* @__PURE__ */ import_react31.default.createElement(
|
|
5706
5932
|
"button",
|
|
5707
5933
|
{
|
|
5708
5934
|
className: "rf-chip__delete",
|
|
@@ -5723,7 +5949,7 @@ var Chip = ({
|
|
|
5723
5949
|
Chip.displayName = "Chip";
|
|
5724
5950
|
|
|
5725
5951
|
// lib/Divider/Divider.tsx
|
|
5726
|
-
var
|
|
5952
|
+
var import_react32 = __toESM(require("react"), 1);
|
|
5727
5953
|
var Divider = ({
|
|
5728
5954
|
orientation = "horizontal",
|
|
5729
5955
|
variant = "fullWidth",
|
|
@@ -5737,7 +5963,7 @@ var Divider = ({
|
|
|
5737
5963
|
sx
|
|
5738
5964
|
}) => {
|
|
5739
5965
|
const sxClass = useSx(sx);
|
|
5740
|
-
const hasChildren =
|
|
5966
|
+
const hasChildren = import_react32.default.Children.count(children) > 0;
|
|
5741
5967
|
const variantClass = variant === "inset" ? "rf-divider--inset" : variant === "middle" ? "rf-divider--middle" : "";
|
|
5742
5968
|
const classes = [
|
|
5743
5969
|
"rf-divider",
|
|
@@ -5753,7 +5979,7 @@ var Divider = ({
|
|
|
5753
5979
|
].filter(Boolean).join(" ");
|
|
5754
5980
|
const Tag = component || (hasChildren ? "div" : "hr");
|
|
5755
5981
|
if (!hasChildren) {
|
|
5756
|
-
return /* @__PURE__ */
|
|
5982
|
+
return /* @__PURE__ */ import_react32.default.createElement(
|
|
5757
5983
|
Tag,
|
|
5758
5984
|
{
|
|
5759
5985
|
className: classes,
|
|
@@ -5762,7 +5988,7 @@ var Divider = ({
|
|
|
5762
5988
|
}
|
|
5763
5989
|
);
|
|
5764
5990
|
}
|
|
5765
|
-
return /* @__PURE__ */
|
|
5991
|
+
return /* @__PURE__ */ import_react32.default.createElement(
|
|
5766
5992
|
Tag,
|
|
5767
5993
|
{
|
|
5768
5994
|
className: classes,
|
|
@@ -5770,13 +5996,13 @@ var Divider = ({
|
|
|
5770
5996
|
role: "separator",
|
|
5771
5997
|
"aria-orientation": orientation
|
|
5772
5998
|
},
|
|
5773
|
-
/* @__PURE__ */
|
|
5999
|
+
/* @__PURE__ */ import_react32.default.createElement("span", { className: "rf-divider__text" }, children)
|
|
5774
6000
|
);
|
|
5775
6001
|
};
|
|
5776
6002
|
Divider.displayName = "Divider";
|
|
5777
6003
|
|
|
5778
6004
|
// lib/List/List.tsx
|
|
5779
|
-
var
|
|
6005
|
+
var import_react33 = __toESM(require("react"), 1);
|
|
5780
6006
|
var List = ({
|
|
5781
6007
|
dense = false,
|
|
5782
6008
|
disablePadding = false,
|
|
@@ -5794,7 +6020,7 @@ var List = ({
|
|
|
5794
6020
|
sxClass,
|
|
5795
6021
|
className
|
|
5796
6022
|
].filter(Boolean).join(" ");
|
|
5797
|
-
return /* @__PURE__ */
|
|
6023
|
+
return /* @__PURE__ */ import_react33.default.createElement("ul", { className: classes, style }, subheader, children);
|
|
5798
6024
|
};
|
|
5799
6025
|
List.displayName = "List";
|
|
5800
6026
|
var ListItem = ({
|
|
@@ -5818,7 +6044,7 @@ var ListItem = ({
|
|
|
5818
6044
|
sxClass,
|
|
5819
6045
|
className
|
|
5820
6046
|
].filter(Boolean).join(" ");
|
|
5821
|
-
return /* @__PURE__ */
|
|
6047
|
+
return /* @__PURE__ */ import_react33.default.createElement("li", { className: classes, style }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "rf-list-item__content" }, children), secondaryAction && /* @__PURE__ */ import_react33.default.createElement("div", { className: "rf-list-item__secondary-action" }, secondaryAction));
|
|
5822
6048
|
};
|
|
5823
6049
|
ListItem.displayName = "ListItem";
|
|
5824
6050
|
var ListItemText = ({
|
|
@@ -5835,12 +6061,12 @@ var ListItemText = ({
|
|
|
5835
6061
|
inset ? "rf-list-item-text--inset" : "",
|
|
5836
6062
|
sxClass
|
|
5837
6063
|
].filter(Boolean).join(" ");
|
|
5838
|
-
return /* @__PURE__ */
|
|
6064
|
+
return /* @__PURE__ */ import_react33.default.createElement("div", { className: classes }, /* @__PURE__ */ import_react33.default.createElement("p", { className: "rf-list-item-text__primary", ...primaryTypographyProps }, primary), secondary && /* @__PURE__ */ import_react33.default.createElement("p", { className: "rf-list-item-text__secondary", ...secondaryTypographyProps }, secondary));
|
|
5839
6065
|
};
|
|
5840
6066
|
ListItemText.displayName = "ListItemText";
|
|
5841
6067
|
var ListItemIcon = ({ children, sx }) => {
|
|
5842
6068
|
const sxClass = useSx(sx);
|
|
5843
|
-
return /* @__PURE__ */
|
|
6069
|
+
return /* @__PURE__ */ import_react33.default.createElement("div", { className: ["rf-list-item-icon", sxClass].filter(Boolean).join(" "), "aria-hidden": "true" }, children);
|
|
5844
6070
|
};
|
|
5845
6071
|
ListItemIcon.displayName = "ListItemIcon";
|
|
5846
6072
|
var ListItemButton = ({
|
|
@@ -5872,7 +6098,7 @@ var ListItemButton = ({
|
|
|
5872
6098
|
"aria-disabled": disabled || void 0
|
|
5873
6099
|
};
|
|
5874
6100
|
if (href) {
|
|
5875
|
-
return /* @__PURE__ */
|
|
6101
|
+
return /* @__PURE__ */ import_react33.default.createElement(
|
|
5876
6102
|
"a",
|
|
5877
6103
|
{
|
|
5878
6104
|
href,
|
|
@@ -5883,7 +6109,7 @@ var ListItemButton = ({
|
|
|
5883
6109
|
children
|
|
5884
6110
|
);
|
|
5885
6111
|
}
|
|
5886
|
-
return /* @__PURE__ */
|
|
6112
|
+
return /* @__PURE__ */ import_react33.default.createElement(
|
|
5887
6113
|
"button",
|
|
5888
6114
|
{
|
|
5889
6115
|
type: "button",
|
|
@@ -5912,12 +6138,12 @@ var ListSubheader = ({
|
|
|
5912
6138
|
color !== "default" ? `rf-list-subheader--color-${color}` : "",
|
|
5913
6139
|
sxClass
|
|
5914
6140
|
].filter(Boolean).join(" ");
|
|
5915
|
-
return /* @__PURE__ */
|
|
6141
|
+
return /* @__PURE__ */ import_react33.default.createElement("li", { className: classes, role: "presentation", "aria-label": typeof children === "string" ? children : void 0 }, children);
|
|
5916
6142
|
};
|
|
5917
6143
|
ListSubheader.displayName = "ListSubheader";
|
|
5918
6144
|
|
|
5919
6145
|
// lib/Typography/Typography.tsx
|
|
5920
|
-
var
|
|
6146
|
+
var import_react34 = __toESM(require("react"), 1);
|
|
5921
6147
|
var VARIANT_ELEMENT_MAP = {
|
|
5922
6148
|
h1: "h1",
|
|
5923
6149
|
h2: "h2",
|
|
@@ -5925,349 +6151,124 @@ var VARIANT_ELEMENT_MAP = {
|
|
|
5925
6151
|
h4: "h4",
|
|
5926
6152
|
h5: "h5",
|
|
5927
6153
|
h6: "h6",
|
|
5928
|
-
subtitle1: "h6",
|
|
5929
|
-
subtitle2: "h6",
|
|
5930
|
-
body1: "p",
|
|
5931
|
-
body2: "p",
|
|
5932
|
-
caption: "span",
|
|
5933
|
-
overline: "span",
|
|
5934
|
-
button: "span"
|
|
5935
|
-
};
|
|
5936
|
-
var COLOR_CLASSES = {
|
|
5937
|
-
primary: "rf-typography--color-primary",
|
|
5938
|
-
secondary: "rf-typography--color-secondary",
|
|
5939
|
-
textPrimary: "rf-typography--color-textPrimary",
|
|
5940
|
-
textSecondary: "rf-typography--color-textSecondary",
|
|
5941
|
-
error: "rf-typography--color-error"
|
|
5942
|
-
};
|
|
5943
|
-
var WEIGHT_CLASSES = {
|
|
5944
|
-
light: "rf-typography--weight-light",
|
|
5945
|
-
regular: "rf-typography--weight-regular",
|
|
5946
|
-
medium: "rf-typography--weight-medium",
|
|
5947
|
-
bold: "rf-typography--weight-bold"
|
|
5948
|
-
};
|
|
5949
|
-
var Typography = ({
|
|
5950
|
-
variant = "body1",
|
|
5951
|
-
component,
|
|
5952
|
-
align = "inherit",
|
|
5953
|
-
color,
|
|
5954
|
-
noWrap = false,
|
|
5955
|
-
gutterBottom = false,
|
|
5956
|
-
paragraph = false,
|
|
5957
|
-
fontWeight,
|
|
5958
|
-
children,
|
|
5959
|
-
className = "",
|
|
5960
|
-
style,
|
|
5961
|
-
sx
|
|
5962
|
-
}) => {
|
|
5963
|
-
const sxClass = useSx(sx);
|
|
5964
|
-
const Tag = component || (paragraph ? "p" : VARIANT_ELEMENT_MAP[variant] || "span");
|
|
5965
|
-
const colorClass = color ? COLOR_CLASSES[color] : "";
|
|
5966
|
-
const colorStyle = color && !COLOR_CLASSES[color] ? { color } : {};
|
|
5967
|
-
let weightClass = "";
|
|
5968
|
-
let weightStyle = {};
|
|
5969
|
-
if (fontWeight !== void 0) {
|
|
5970
|
-
if (typeof fontWeight === "string") {
|
|
5971
|
-
weightClass = WEIGHT_CLASSES[fontWeight] || "";
|
|
5972
|
-
} else {
|
|
5973
|
-
weightStyle = { fontWeight };
|
|
5974
|
-
}
|
|
5975
|
-
}
|
|
5976
|
-
const alignClass = align !== "inherit" ? `rf-typography--align-${align}` : "";
|
|
5977
|
-
const classes = [
|
|
5978
|
-
"rf-typography",
|
|
5979
|
-
`rf-typography--${variant}`,
|
|
5980
|
-
alignClass,
|
|
5981
|
-
colorClass,
|
|
5982
|
-
weightClass,
|
|
5983
|
-
noWrap ? "rf-typography--no-wrap" : "",
|
|
5984
|
-
gutterBottom ? "rf-typography--gutter-bottom" : "",
|
|
5985
|
-
paragraph ? "rf-typography--paragraph" : "",
|
|
5986
|
-
sxClass,
|
|
5987
|
-
className
|
|
5988
|
-
].filter(Boolean).join(" ");
|
|
5989
|
-
const inlineStyle = {
|
|
5990
|
-
...colorStyle,
|
|
5991
|
-
...weightStyle,
|
|
5992
|
-
...style
|
|
5993
|
-
};
|
|
5994
|
-
return /* @__PURE__ */ import_react33.default.createElement(Tag, { className: classes, style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0 }, children);
|
|
5995
|
-
};
|
|
5996
|
-
Typography.displayName = "Typography";
|
|
5997
|
-
|
|
5998
|
-
// lib/Skeleton/Skeleton.tsx
|
|
5999
|
-
var import_react34 = __toESM(require("react"), 1);
|
|
6000
|
-
var Skeleton = ({
|
|
6001
|
-
variant = "text",
|
|
6002
|
-
width,
|
|
6003
|
-
height,
|
|
6004
|
-
animation = "pulse",
|
|
6005
|
-
className = "",
|
|
6006
|
-
style,
|
|
6007
|
-
sx
|
|
6008
|
-
}) => {
|
|
6009
|
-
const sxClass = useSx(sx);
|
|
6010
|
-
const animationClass = animation === "pulse" ? "rf-skeleton--pulse" : animation === "wave" ? "rf-skeleton--wave" : "rf-skeleton--no-animation";
|
|
6011
|
-
const classes = [
|
|
6012
|
-
"rf-skeleton",
|
|
6013
|
-
`rf-skeleton--${variant}`,
|
|
6014
|
-
animationClass,
|
|
6015
|
-
sxClass,
|
|
6016
|
-
className
|
|
6017
|
-
].filter(Boolean).join(" ");
|
|
6018
|
-
const inlineStyle = {
|
|
6019
|
-
...width !== void 0 ? { width: typeof width === "number" ? width : width } : {},
|
|
6020
|
-
...height !== void 0 ? { height: typeof height === "number" ? height : height } : {},
|
|
6021
|
-
...style
|
|
6022
|
-
};
|
|
6023
|
-
if (variant === "text" && !height) {
|
|
6024
|
-
}
|
|
6025
|
-
if (variant === "circular" && !width && !height) {
|
|
6026
|
-
inlineStyle.width = 40;
|
|
6027
|
-
inlineStyle.height = 40;
|
|
6028
|
-
}
|
|
6029
|
-
if (variant === "rectangular" && !height) {
|
|
6030
|
-
inlineStyle.height = 140;
|
|
6031
|
-
}
|
|
6032
|
-
if (variant === "rounded" && !height) {
|
|
6033
|
-
inlineStyle.height = 140;
|
|
6034
|
-
}
|
|
6035
|
-
return /* @__PURE__ */ import_react34.default.createElement(
|
|
6036
|
-
"span",
|
|
6037
|
-
{
|
|
6038
|
-
className: classes,
|
|
6039
|
-
style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0,
|
|
6040
|
-
"aria-busy": "true",
|
|
6041
|
-
"aria-live": "polite"
|
|
6042
|
-
}
|
|
6043
|
-
);
|
|
6044
|
-
};
|
|
6045
|
-
Skeleton.displayName = "Skeleton";
|
|
6046
|
-
|
|
6047
|
-
// lib/Tooltip/Tooltip.tsx
|
|
6048
|
-
var import_react35 = __toESM(require("react"), 1);
|
|
6049
|
-
var import_react_dom5 = __toESM(require("react-dom"), 1);
|
|
6050
|
-
var GAP = 8;
|
|
6051
|
-
function computePosition(anchor, tooltip, placement) {
|
|
6052
|
-
const { top: aTop, left: aLeft, width: aW, height: aH } = anchor;
|
|
6053
|
-
const { width: tW, height: tH } = tooltip;
|
|
6054
|
-
let top = 0;
|
|
6055
|
-
let left = 0;
|
|
6056
|
-
let arrowLeft;
|
|
6057
|
-
let arrowTop;
|
|
6058
|
-
switch (placement) {
|
|
6059
|
-
case "top":
|
|
6060
|
-
top = aTop - tH - GAP;
|
|
6061
|
-
left = aLeft + aW / 2 - tW / 2;
|
|
6062
|
-
arrowLeft = tW / 2 - 4;
|
|
6063
|
-
break;
|
|
6064
|
-
case "top-start":
|
|
6065
|
-
top = aTop - tH - GAP;
|
|
6066
|
-
left = aLeft;
|
|
6067
|
-
arrowLeft = Math.min(aW / 2, tW - 16);
|
|
6068
|
-
break;
|
|
6069
|
-
case "top-end":
|
|
6070
|
-
top = aTop - tH - GAP;
|
|
6071
|
-
left = aLeft + aW - tW;
|
|
6072
|
-
arrowLeft = Math.max(tW - aW / 2 - 4, 8);
|
|
6073
|
-
break;
|
|
6074
|
-
case "bottom":
|
|
6075
|
-
top = aTop + aH + GAP;
|
|
6076
|
-
left = aLeft + aW / 2 - tW / 2;
|
|
6077
|
-
arrowLeft = tW / 2 - 4;
|
|
6078
|
-
break;
|
|
6079
|
-
case "bottom-start":
|
|
6080
|
-
top = aTop + aH + GAP;
|
|
6081
|
-
left = aLeft;
|
|
6082
|
-
arrowLeft = Math.min(aW / 2, tW - 16);
|
|
6083
|
-
break;
|
|
6084
|
-
case "bottom-end":
|
|
6085
|
-
top = aTop + aH + GAP;
|
|
6086
|
-
left = aLeft + aW - tW;
|
|
6087
|
-
arrowLeft = Math.max(tW - aW / 2 - 4, 8);
|
|
6088
|
-
break;
|
|
6089
|
-
case "left":
|
|
6090
|
-
top = aTop + aH / 2 - tH / 2;
|
|
6091
|
-
left = aLeft - tW - GAP;
|
|
6092
|
-
arrowTop = tH / 2 - 4;
|
|
6093
|
-
break;
|
|
6094
|
-
case "left-start":
|
|
6095
|
-
top = aTop;
|
|
6096
|
-
left = aLeft - tW - GAP;
|
|
6097
|
-
arrowTop = Math.min(aH / 2, tH - 16);
|
|
6098
|
-
break;
|
|
6099
|
-
case "left-end":
|
|
6100
|
-
top = aTop + aH - tH;
|
|
6101
|
-
left = aLeft - tW - GAP;
|
|
6102
|
-
arrowTop = Math.max(tH - aH / 2 - 4, 8);
|
|
6103
|
-
break;
|
|
6104
|
-
case "right":
|
|
6105
|
-
top = aTop + aH / 2 - tH / 2;
|
|
6106
|
-
left = aLeft + aW + GAP;
|
|
6107
|
-
arrowTop = tH / 2 - 4;
|
|
6108
|
-
break;
|
|
6109
|
-
case "right-start":
|
|
6110
|
-
top = aTop;
|
|
6111
|
-
left = aLeft + aW + GAP;
|
|
6112
|
-
arrowTop = Math.min(aH / 2, tH - 16);
|
|
6113
|
-
break;
|
|
6114
|
-
case "right-end":
|
|
6115
|
-
top = aTop + aH - tH;
|
|
6116
|
-
left = aLeft + aW + GAP;
|
|
6117
|
-
arrowTop = Math.max(tH - aH / 2 - 4, 8);
|
|
6118
|
-
break;
|
|
6119
|
-
default:
|
|
6120
|
-
top = aTop - tH - GAP;
|
|
6121
|
-
left = aLeft + aW / 2 - tW / 2;
|
|
6122
|
-
}
|
|
6123
|
-
const vw = window.innerWidth;
|
|
6124
|
-
const vh = window.innerHeight;
|
|
6125
|
-
left = Math.max(8, Math.min(left, vw - tW - 8));
|
|
6126
|
-
top = Math.max(8, Math.min(top, vh - tH - 8));
|
|
6127
|
-
return { top, left, arrowLeft, arrowTop };
|
|
6128
|
-
}
|
|
6129
|
-
var Tooltip = ({
|
|
6130
|
-
title,
|
|
6131
|
-
placement = "top",
|
|
6132
|
-
arrow = false,
|
|
6133
|
-
open: controlledOpen,
|
|
6134
|
-
disableHoverListener = false,
|
|
6135
|
-
disableFocusListener = false,
|
|
6136
|
-
enterDelay = 100,
|
|
6137
|
-
leaveDelay = 0,
|
|
6154
|
+
subtitle1: "h6",
|
|
6155
|
+
subtitle2: "h6",
|
|
6156
|
+
body1: "p",
|
|
6157
|
+
body2: "p",
|
|
6158
|
+
caption: "span",
|
|
6159
|
+
overline: "span",
|
|
6160
|
+
button: "span"
|
|
6161
|
+
};
|
|
6162
|
+
var COLOR_CLASSES = {
|
|
6163
|
+
primary: "rf-typography--color-primary",
|
|
6164
|
+
secondary: "rf-typography--color-secondary",
|
|
6165
|
+
textPrimary: "rf-typography--color-textPrimary",
|
|
6166
|
+
textSecondary: "rf-typography--color-textSecondary",
|
|
6167
|
+
error: "rf-typography--color-error"
|
|
6168
|
+
};
|
|
6169
|
+
var WEIGHT_CLASSES = {
|
|
6170
|
+
light: "rf-typography--weight-light",
|
|
6171
|
+
regular: "rf-typography--weight-regular",
|
|
6172
|
+
medium: "rf-typography--weight-medium",
|
|
6173
|
+
bold: "rf-typography--weight-bold"
|
|
6174
|
+
};
|
|
6175
|
+
var Typography = ({
|
|
6176
|
+
variant = "body1",
|
|
6177
|
+
component,
|
|
6178
|
+
align = "inherit",
|
|
6179
|
+
color,
|
|
6180
|
+
noWrap = false,
|
|
6181
|
+
gutterBottom = false,
|
|
6182
|
+
paragraph = false,
|
|
6183
|
+
fontWeight,
|
|
6138
6184
|
children,
|
|
6139
|
-
followCursor = false,
|
|
6140
6185
|
className = "",
|
|
6141
6186
|
style,
|
|
6142
6187
|
sx
|
|
6143
6188
|
}) => {
|
|
6144
6189
|
const sxClass = useSx(sx);
|
|
6145
|
-
const
|
|
6146
|
-
const
|
|
6147
|
-
const
|
|
6148
|
-
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
const clearTimers = (0, import_react35.useCallback)(() => {
|
|
6154
|
-
if (enterTimer.current) clearTimeout(enterTimer.current);
|
|
6155
|
-
if (leaveTimer.current) clearTimeout(leaveTimer.current);
|
|
6156
|
-
}, []);
|
|
6157
|
-
const updatePosition = (0, import_react35.useCallback)(() => {
|
|
6158
|
-
if (!anchorRef.current || !tooltipRef.current) return;
|
|
6159
|
-
const anchorRect = anchorRef.current.getBoundingClientRect();
|
|
6160
|
-
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
6161
|
-
if (followCursor) {
|
|
6162
|
-
const fakeRect = {
|
|
6163
|
-
top: cursorPos.current.y,
|
|
6164
|
-
left: cursorPos.current.x,
|
|
6165
|
-
right: cursorPos.current.x,
|
|
6166
|
-
bottom: cursorPos.current.y,
|
|
6167
|
-
width: 0,
|
|
6168
|
-
height: 0,
|
|
6169
|
-
x: cursorPos.current.x,
|
|
6170
|
-
y: cursorPos.current.y,
|
|
6171
|
-
toJSON: () => ({})
|
|
6172
|
-
};
|
|
6173
|
-
setPosition(computePosition(fakeRect, tooltipRect, placement));
|
|
6174
|
-
} else {
|
|
6175
|
-
setPosition(computePosition(anchorRect, tooltipRect, placement));
|
|
6176
|
-
}
|
|
6177
|
-
}, [placement, followCursor]);
|
|
6178
|
-
(0, import_react35.useEffect)(() => {
|
|
6179
|
-
if (isOpen) {
|
|
6180
|
-
requestAnimationFrame(() => {
|
|
6181
|
-
updatePosition();
|
|
6182
|
-
});
|
|
6183
|
-
}
|
|
6184
|
-
}, [isOpen, updatePosition]);
|
|
6185
|
-
const handleOpen = (0, import_react35.useCallback)(() => {
|
|
6186
|
-
clearTimers();
|
|
6187
|
-
if (enterDelay > 0) {
|
|
6188
|
-
enterTimer.current = setTimeout(() => {
|
|
6189
|
-
setInternalOpen(true);
|
|
6190
|
-
}, enterDelay);
|
|
6191
|
-
} else {
|
|
6192
|
-
setInternalOpen(true);
|
|
6193
|
-
}
|
|
6194
|
-
}, [enterDelay, clearTimers]);
|
|
6195
|
-
const handleClose = (0, import_react35.useCallback)(() => {
|
|
6196
|
-
clearTimers();
|
|
6197
|
-
if (leaveDelay > 0) {
|
|
6198
|
-
leaveTimer.current = setTimeout(() => {
|
|
6199
|
-
setInternalOpen(false);
|
|
6200
|
-
}, leaveDelay);
|
|
6190
|
+
const Tag = component || (paragraph ? "p" : VARIANT_ELEMENT_MAP[variant] || "span");
|
|
6191
|
+
const colorClass = color ? COLOR_CLASSES[color] : "";
|
|
6192
|
+
const colorStyle = color && !COLOR_CLASSES[color] ? { color } : {};
|
|
6193
|
+
let weightClass = "";
|
|
6194
|
+
let weightStyle = {};
|
|
6195
|
+
if (fontWeight !== void 0) {
|
|
6196
|
+
if (typeof fontWeight === "string") {
|
|
6197
|
+
weightClass = WEIGHT_CLASSES[fontWeight] || "";
|
|
6201
6198
|
} else {
|
|
6202
|
-
|
|
6199
|
+
weightStyle = { fontWeight };
|
|
6203
6200
|
}
|
|
6204
|
-
}, [leaveDelay, clearTimers]);
|
|
6205
|
-
const handleMouseMove = (0, import_react35.useCallback)(
|
|
6206
|
-
(e) => {
|
|
6207
|
-
cursorPos.current = { x: e.clientX, y: e.clientY };
|
|
6208
|
-
if (isOpen && followCursor) {
|
|
6209
|
-
updatePosition();
|
|
6210
|
-
}
|
|
6211
|
-
},
|
|
6212
|
-
[isOpen, followCursor, updatePosition]
|
|
6213
|
-
);
|
|
6214
|
-
(0, import_react35.useEffect)(() => {
|
|
6215
|
-
return () => clearTimers();
|
|
6216
|
-
}, [clearTimers]);
|
|
6217
|
-
const childProps = {};
|
|
6218
|
-
if (!disableHoverListener) {
|
|
6219
|
-
childProps.onMouseEnter = handleOpen;
|
|
6220
|
-
childProps.onMouseLeave = handleClose;
|
|
6221
|
-
childProps.onMouseMove = followCursor ? handleMouseMove : void 0;
|
|
6222
|
-
}
|
|
6223
|
-
if (!disableFocusListener) {
|
|
6224
|
-
childProps.onFocus = handleOpen;
|
|
6225
|
-
childProps.onBlur = handleClose;
|
|
6226
6201
|
}
|
|
6227
|
-
const
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6202
|
+
const alignClass = align !== "inherit" ? `rf-typography--align-${align}` : "";
|
|
6203
|
+
const classes = [
|
|
6204
|
+
"rf-typography",
|
|
6205
|
+
`rf-typography--${variant}`,
|
|
6206
|
+
alignClass,
|
|
6207
|
+
colorClass,
|
|
6208
|
+
weightClass,
|
|
6209
|
+
noWrap ? "rf-typography--no-wrap" : "",
|
|
6210
|
+
gutterBottom ? "rf-typography--gutter-bottom" : "",
|
|
6211
|
+
paragraph ? "rf-typography--paragraph" : "",
|
|
6231
6212
|
sxClass,
|
|
6232
6213
|
className
|
|
6233
6214
|
].filter(Boolean).join(" ");
|
|
6234
|
-
const
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6238
|
-
|
|
6239
|
-
|
|
6240
|
-
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
|
|
6252
|
-
|
|
6253
|
-
|
|
6254
|
-
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6259
|
-
|
|
6215
|
+
const inlineStyle = {
|
|
6216
|
+
...colorStyle,
|
|
6217
|
+
...weightStyle,
|
|
6218
|
+
...style
|
|
6219
|
+
};
|
|
6220
|
+
return /* @__PURE__ */ import_react34.default.createElement(Tag, { className: classes, style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0 }, children);
|
|
6221
|
+
};
|
|
6222
|
+
Typography.displayName = "Typography";
|
|
6223
|
+
|
|
6224
|
+
// lib/Skeleton/Skeleton.tsx
|
|
6225
|
+
var import_react35 = __toESM(require("react"), 1);
|
|
6226
|
+
var Skeleton = ({
|
|
6227
|
+
variant = "text",
|
|
6228
|
+
width,
|
|
6229
|
+
height,
|
|
6230
|
+
animation = "pulse",
|
|
6231
|
+
className = "",
|
|
6232
|
+
style,
|
|
6233
|
+
sx
|
|
6234
|
+
}) => {
|
|
6235
|
+
const sxClass = useSx(sx);
|
|
6236
|
+
const animationClass = animation === "pulse" ? "rf-skeleton--pulse" : animation === "wave" ? "rf-skeleton--wave" : "rf-skeleton--no-animation";
|
|
6237
|
+
const classes = [
|
|
6238
|
+
"rf-skeleton",
|
|
6239
|
+
`rf-skeleton--${variant}`,
|
|
6240
|
+
animationClass,
|
|
6241
|
+
sxClass,
|
|
6242
|
+
className
|
|
6243
|
+
].filter(Boolean).join(" ");
|
|
6244
|
+
const inlineStyle = {
|
|
6245
|
+
...width !== void 0 ? { width: typeof width === "number" ? width : width } : {},
|
|
6246
|
+
...height !== void 0 ? { height: typeof height === "number" ? height : height } : {},
|
|
6247
|
+
...style
|
|
6248
|
+
};
|
|
6249
|
+
if (variant === "text" && !height) {
|
|
6250
|
+
}
|
|
6251
|
+
if (variant === "circular" && !width && !height) {
|
|
6252
|
+
inlineStyle.width = 40;
|
|
6253
|
+
inlineStyle.height = 40;
|
|
6254
|
+
}
|
|
6255
|
+
if (variant === "rectangular" && !height) {
|
|
6256
|
+
inlineStyle.height = 140;
|
|
6257
|
+
}
|
|
6258
|
+
if (variant === "rounded" && !height) {
|
|
6259
|
+
inlineStyle.height = 140;
|
|
6260
|
+
}
|
|
6261
|
+
return /* @__PURE__ */ import_react35.default.createElement(
|
|
6260
6262
|
"span",
|
|
6261
6263
|
{
|
|
6262
|
-
|
|
6263
|
-
style:
|
|
6264
|
-
"aria-
|
|
6265
|
-
|
|
6266
|
-
}
|
|
6267
|
-
|
|
6268
|
-
), import_react_dom5.default.createPortal(tooltipElement, document.body));
|
|
6264
|
+
className: classes,
|
|
6265
|
+
style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0,
|
|
6266
|
+
"aria-busy": "true",
|
|
6267
|
+
"aria-live": "polite"
|
|
6268
|
+
}
|
|
6269
|
+
);
|
|
6269
6270
|
};
|
|
6270
|
-
|
|
6271
|
+
Skeleton.displayName = "Skeleton";
|
|
6271
6272
|
|
|
6272
6273
|
// lib/Box/Box.tsx
|
|
6273
6274
|
var React88 = __toESM(require("react"), 1);
|
|
@@ -8712,7 +8713,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
|
|
|
8712
8713
|
setPaused(false);
|
|
8713
8714
|
}, []);
|
|
8714
8715
|
(0, import_react51.useImperativeHandle)(ref, () => ({ stop: handleStop }), [handleStop]);
|
|
8715
|
-
return /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-wrapper", ref: panelRef }, /* @__PURE__ */ import_react51.default.createElement(
|
|
8716
|
+
return /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-wrapper", ref: panelRef }, /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Text to Speech", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement(
|
|
8716
8717
|
"button",
|
|
8717
8718
|
{
|
|
8718
8719
|
className: `toolbar-btn ${speaking ? "is-active" : ""}`,
|
|
@@ -8722,11 +8723,10 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
|
|
|
8722
8723
|
} else {
|
|
8723
8724
|
setShowPanel(!showPanel);
|
|
8724
8725
|
}
|
|
8725
|
-
}
|
|
8726
|
-
title: "Text to Speech"
|
|
8726
|
+
}
|
|
8727
8727
|
},
|
|
8728
8728
|
speaking ? "\u23F9" : "\u{1F50A}"
|
|
8729
|
-
), showPanel && !speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel-header" }, "Text to Speech"), /* @__PURE__ */ import_react51.default.createElement("label", { className: "tts-label" }, "Voice"), /* @__PURE__ */ import_react51.default.createElement(
|
|
8729
|
+
)), showPanel && !speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel-header" }, "Text to Speech"), /* @__PURE__ */ import_react51.default.createElement("label", { className: "tts-label" }, "Voice"), /* @__PURE__ */ import_react51.default.createElement(
|
|
8730
8730
|
"select",
|
|
8731
8731
|
{
|
|
8732
8732
|
className: "tts-select",
|
|
@@ -8748,7 +8748,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
|
|
|
8748
8748
|
), /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-info" }, editor && !editor.state.selection.empty ? "Will read selected text" : "Will read all editor text"), /* @__PURE__ */ import_react51.default.createElement("button", { className: "tts-speak-btn", onClick: () => {
|
|
8749
8749
|
handleSpeak();
|
|
8750
8750
|
setShowPanel(false);
|
|
8751
|
-
} }, "\u25B6 Speak")), speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-controls" }, paused ? /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handleResume, title: "
|
|
8751
|
+
} }, "\u25B6 Speak")), speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-controls" }, paused ? /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Resume", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handleResume }, "\u25B6")) : /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Pause", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handlePause }, "\u275A\u275A")), /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Stop", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handleStop }, "\u25A0"))));
|
|
8752
8752
|
});
|
|
8753
8753
|
var TextToSpeech_default = TextToSpeech;
|
|
8754
8754
|
|
|
@@ -8867,7 +8867,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
|
|
|
8867
8867
|
}, []);
|
|
8868
8868
|
(0, import_react52.useImperativeHandle)(ref, () => ({ stop: stopListening }), [stopListening]);
|
|
8869
8869
|
if (!supported) {
|
|
8870
|
-
return /* @__PURE__ */ import_react52.default.createElement(
|
|
8870
|
+
return /* @__PURE__ */ import_react52.default.createElement(Tooltip, { title: "Speech recognition not supported in this browser", placement: "top" }, /* @__PURE__ */ import_react52.default.createElement("button", { className: "toolbar-btn", disabled: true }, "\u{1F3A4}"));
|
|
8871
8871
|
}
|
|
8872
8872
|
const LANGUAGES2 = [
|
|
8873
8873
|
{ code: "en-US", label: "English (US)" },
|
|
@@ -8889,7 +8889,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
|
|
|
8889
8889
|
{ code: "kn-IN", label: "Kannada" },
|
|
8890
8890
|
{ code: "ml-IN", label: "Malayalam" }
|
|
8891
8891
|
];
|
|
8892
|
-
return /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-wrapper", ref: panelRef }, /* @__PURE__ */ import_react52.default.createElement(
|
|
8892
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-wrapper", ref: panelRef }, /* @__PURE__ */ import_react52.default.createElement(Tooltip, { title: listening ? "Stop recording" : "Speech to Text", placement: "top" }, /* @__PURE__ */ import_react52.default.createElement(
|
|
8893
8893
|
"button",
|
|
8894
8894
|
{
|
|
8895
8895
|
className: `toolbar-btn ${listening ? "is-active stt-recording" : ""}`,
|
|
@@ -8899,11 +8899,10 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
|
|
|
8899
8899
|
} else {
|
|
8900
8900
|
setShowPanel(!showPanel);
|
|
8901
8901
|
}
|
|
8902
|
-
}
|
|
8903
|
-
title: listening ? "Stop recording" : "Speech to Text"
|
|
8902
|
+
}
|
|
8904
8903
|
},
|
|
8905
8904
|
"\u{1F3A4}"
|
|
8906
|
-
), showPanel && !listening && /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel-header" }, "Speech to Text"), /* @__PURE__ */ import_react52.default.createElement("label", { className: "stt-label" }, "Language"), /* @__PURE__ */ import_react52.default.createElement(
|
|
8905
|
+
)), showPanel && !listening && /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel-header" }, "Speech to Text"), /* @__PURE__ */ import_react52.default.createElement("label", { className: "stt-label" }, "Language"), /* @__PURE__ */ import_react52.default.createElement(
|
|
8907
8906
|
"select",
|
|
8908
8907
|
{
|
|
8909
8908
|
className: "stt-select",
|
|
@@ -9057,16 +9056,15 @@ var AICommands = ({ editor, onAICommand }) => {
|
|
|
9057
9056
|
setPreviousResults([]);
|
|
9058
9057
|
}, []);
|
|
9059
9058
|
if (!editor) return null;
|
|
9060
|
-
return /* @__PURE__ */ import_react53.default.createElement(import_react53.default.Fragment, null, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-wrapper", ref: panelRef }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9059
|
+
return /* @__PURE__ */ import_react53.default.createElement(import_react53.default.Fragment, null, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-wrapper", ref: panelRef }, /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "AI Commands", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9061
9060
|
"button",
|
|
9062
9061
|
{
|
|
9063
9062
|
className: `toolbar-btn ${open ? "is-active" : ""}`,
|
|
9064
|
-
onClick: () => setOpen(!open)
|
|
9065
|
-
title: "AI Commands"
|
|
9063
|
+
onClick: () => setOpen(!open)
|
|
9066
9064
|
},
|
|
9067
9065
|
/* @__PURE__ */ import_react53.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", stroke: "none" }, /* @__PURE__ */ import_react53.default.createElement("path", { d: "M9 2l1.5 3L14 6.5 10.5 8 9 11 7.5 8 4 6.5 7.5 5zM18 10l1 2 2 1-2 1-1 2-1-2-2-1 2-1zM5 17l1.5 3L10 21.5 6.5 23 5 26 3.5 23 0 21.5 3.5 20z" })),
|
|
9068
9066
|
/* @__PURE__ */ import_react53.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")
|
|
9069
|
-
), open && /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-panel" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-header" }, "AI Commands"), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-list" }, AI_COMMANDS.map((cmd) => /* @__PURE__ */ import_react53.default.createElement(
|
|
9067
|
+
)), open && /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-panel" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-header" }, "AI Commands"), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-list" }, AI_COMMANDS.map((cmd) => /* @__PURE__ */ import_react53.default.createElement(
|
|
9070
9068
|
"button",
|
|
9071
9069
|
{
|
|
9072
9070
|
key: cmd.id,
|
|
@@ -9083,16 +9081,15 @@ var AICommands = ({ editor, onAICommand }) => {
|
|
|
9083
9081
|
onChange: (e) => setPromptText(e.target.value),
|
|
9084
9082
|
rows: 3
|
|
9085
9083
|
}
|
|
9086
|
-
), /* @__PURE__ */ import_react53.default.createElement(
|
|
9084
|
+
), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Run with custom prompt", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9087
9085
|
"button",
|
|
9088
9086
|
{
|
|
9089
9087
|
className: "ai-modal-robot-btn",
|
|
9090
9088
|
onClick: () => fetchAIResult(promptText, originalText),
|
|
9091
|
-
disabled: loading
|
|
9092
|
-
title: "Run with custom prompt"
|
|
9089
|
+
disabled: loading
|
|
9093
9090
|
},
|
|
9094
9091
|
/* @__PURE__ */ import_react53.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react53.default.createElement("rect", { x: "3", y: "11", width: "18", height: "10", rx: "2" }), /* @__PURE__ */ import_react53.default.createElement("circle", { cx: "9", cy: "16", r: "1" }), /* @__PURE__ */ import_react53.default.createElement("circle", { cx: "15", cy: "16", r: "1" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M12 2v4" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M8 7h8" }))
|
|
9095
|
-
))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9092
|
+
)))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9096
9093
|
"button",
|
|
9097
9094
|
{
|
|
9098
9095
|
className: "ai-modal-action-btn ai-modal-insert-btn",
|
|
@@ -9108,16 +9105,15 @@ var AICommands = ({ editor, onAICommand }) => {
|
|
|
9108
9105
|
disabled: loading || !resultText
|
|
9109
9106
|
},
|
|
9110
9107
|
"Insert After"
|
|
9111
|
-
), /* @__PURE__ */ import_react53.default.createElement(
|
|
9108
|
+
), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Generate another response", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9112
9109
|
"button",
|
|
9113
9110
|
{
|
|
9114
9111
|
className: "ai-modal-action-btn ai-modal-refresh-btn",
|
|
9115
9112
|
onClick: handleRefresh,
|
|
9116
|
-
disabled: loading
|
|
9117
|
-
title: "Generate another response"
|
|
9113
|
+
disabled: loading
|
|
9118
9114
|
},
|
|
9119
9115
|
/* @__PURE__ */ import_react53.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react53.default.createElement("path", { d: "M21 2v6h-6" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M3 12a9 9 0 0 1 15-6.7L21 8" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M3 22v-6h6" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M21 12a9 9 0 0 1-15 6.7L3 16" }))
|
|
9120
|
-
)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result-section" }, loading ? /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-loading" }, /* @__PURE__ */ import_react53.default.createElement("span", { className: "ai-spinner" }), /* @__PURE__ */ import_react53.default.createElement("span", null, "Generating response...")) : /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result" }, resultText)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-footer" }, /* @__PURE__ */ import_react53.default.createElement("button", { className: "ai-modal-cancel-btn", onClick: handleCancel }, "CANCEL")))),
|
|
9116
|
+
))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result-section" }, loading ? /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-loading" }, /* @__PURE__ */ import_react53.default.createElement("span", { className: "ai-spinner" }), /* @__PURE__ */ import_react53.default.createElement("span", null, "Generating response...")) : /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result" }, resultText)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-footer" }, /* @__PURE__ */ import_react53.default.createElement("button", { className: "ai-modal-cancel-btn", onClick: handleCancel }, "CANCEL")))),
|
|
9121
9117
|
document.body
|
|
9122
9118
|
));
|
|
9123
9119
|
};
|
|
@@ -9335,7 +9331,7 @@ var TranslateModal = ({ editor, onClose, onTranslate, initialSource, initialTarg
|
|
|
9335
9331
|
},
|
|
9336
9332
|
/* @__PURE__ */ import_react54.default.createElement("span", { className: "translate-code" }, lang.code),
|
|
9337
9333
|
/* @__PURE__ */ import_react54.default.createElement("span", { className: "translate-name" }, lang.name)
|
|
9338
|
-
)))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-swap" }, /* @__PURE__ */ import_react54.default.createElement("button", { className: "translate-swap-btn", onClick: handleSwap
|
|
9334
|
+
)))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-swap" }, /* @__PURE__ */ import_react54.default.createElement(Tooltip, { title: "Swap languages", placement: "top" }, /* @__PURE__ */ import_react54.default.createElement("button", { className: "translate-swap-btn", onClick: handleSwap }, "\u21C4"))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-col" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-filter" }, /* @__PURE__ */ import_react54.default.createElement(
|
|
9339
9335
|
"input",
|
|
9340
9336
|
{
|
|
9341
9337
|
type: "text",
|
|
@@ -10217,16 +10213,15 @@ var Dropdown = ({ trigger, children, className = "", keepOpen = false }) => {
|
|
|
10217
10213
|
};
|
|
10218
10214
|
position();
|
|
10219
10215
|
}, [open]);
|
|
10220
|
-
return /* @__PURE__ */ import_react55.default.createElement("div", { className: `dropdown ${className}`, ref }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10216
|
+
return /* @__PURE__ */ import_react55.default.createElement("div", { className: `dropdown ${className}`, ref }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: trigger.title || "", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10221
10217
|
"button",
|
|
10222
10218
|
{
|
|
10223
10219
|
className: `toolbar-btn ${trigger.className || ""}`,
|
|
10224
|
-
onClick: () => setOpen(!open)
|
|
10225
|
-
title: trigger.title
|
|
10220
|
+
onClick: () => setOpen(!open)
|
|
10226
10221
|
},
|
|
10227
10222
|
trigger.label,
|
|
10228
10223
|
/* @__PURE__ */ import_react55.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")
|
|
10229
|
-
), open && (0, import_react_dom13.createPortal)(
|
|
10224
|
+
)), open && (0, import_react_dom13.createPortal)(
|
|
10230
10225
|
/* @__PURE__ */ import_react55.default.createElement("div", { className: "rf-rte-wrapper rf-rte-dropdown-portal" }, /* @__PURE__ */ import_react55.default.createElement("div", { ref: menuRef, className: "dropdown-menu dropdown-menu-fixed", onClick: keepOpen ? void 0 : () => setOpen(false) }, typeof children === "function" ? children(() => setOpen(false)) : children)),
|
|
10231
10226
|
document.body
|
|
10232
10227
|
));
|
|
@@ -10472,16 +10467,14 @@ var ColorPickerPanel = ({ editor, onClose }) => {
|
|
|
10472
10467
|
onClick: () => setTab("text")
|
|
10473
10468
|
},
|
|
10474
10469
|
"Text"
|
|
10475
|
-
)), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-grid" }, COLOR_PALETTE.map((color, i) => /* @__PURE__ */ import_react55.default.createElement(
|
|
10470
|
+
)), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-grid" }, COLOR_PALETTE.map((color, i) => /* @__PURE__ */ import_react55.default.createElement(Tooltip, { key: i, title: color, placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10476
10471
|
"button",
|
|
10477
10472
|
{
|
|
10478
|
-
key: i,
|
|
10479
10473
|
className: `color-picker-swatch ${color === "#ffffff" ? "white-swatch" : ""}${activeColor && activeColor.toLowerCase() === color.toLowerCase() ? " swatch-active" : ""}`,
|
|
10480
10474
|
style: { background: color },
|
|
10481
|
-
onClick: () => applyColor(color)
|
|
10482
|
-
title: color
|
|
10475
|
+
onClick: () => applyColor(color)
|
|
10483
10476
|
}
|
|
10484
|
-
))), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-footer" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-preview", style: { background: activeColor || "#000" } }), /* @__PURE__ */ import_react55.default.createElement("button", { className: "color-picker-remove", onClick: removeColor
|
|
10477
|
+
)))), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-footer" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-preview", style: { background: activeColor || "#000" } }), /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Remove color", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement("button", { className: "color-picker-remove", onClick: removeColor }, "\u2713"))));
|
|
10485
10478
|
};
|
|
10486
10479
|
var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTextToSpeech, onClose, onImageUpload, visibleButtons, isFullscreen, onToggleFullscreen }) => {
|
|
10487
10480
|
const [, setEditorState] = (0, import_react55.useState)(0);
|
|
@@ -10562,25 +10555,23 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10562
10555
|
setTimeout(() => setTranslateStatus(""), 2e3);
|
|
10563
10556
|
}, [editor, translateSource, translateTarget, onTranslate]);
|
|
10564
10557
|
if (!editor) return null;
|
|
10565
|
-
return /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: `toolbar-row ${onClose ? "with-close" : ""}` }, (show("undo") || show("redo")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("undo") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10558
|
+
return /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: `toolbar-row ${onClose ? "with-close" : ""}` }, (show("undo") || show("redo")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("undo") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Undo (Ctrl+Z)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10566
10559
|
"button",
|
|
10567
10560
|
{
|
|
10568
10561
|
className: "toolbar-btn",
|
|
10569
10562
|
onClick: () => editor.chain().focus().undo().run(),
|
|
10570
|
-
disabled: !editor.can().undo()
|
|
10571
|
-
title: "Undo (Ctrl+Z)"
|
|
10563
|
+
disabled: !editor.can().undo()
|
|
10572
10564
|
},
|
|
10573
10565
|
/* @__PURE__ */ import_react55.default.createElement(IconUndo, null)
|
|
10574
|
-
), show("redo") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10566
|
+
)), show("redo") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Redo (Ctrl+Y)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10575
10567
|
"button",
|
|
10576
10568
|
{
|
|
10577
10569
|
className: "toolbar-btn",
|
|
10578
10570
|
onClick: () => editor.chain().focus().redo().run(),
|
|
10579
|
-
disabled: !editor.can().redo()
|
|
10580
|
-
title: "Redo (Ctrl+Y)"
|
|
10571
|
+
disabled: !editor.can().redo()
|
|
10581
10572
|
},
|
|
10582
10573
|
/* @__PURE__ */ import_react55.default.createElement(IconRedo, null)
|
|
10583
|
-
)), show("ai") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, /* @__PURE__ */ import_react55.default.createElement(AICommands_default, { editor, onAICommand })), /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("paragraph") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10574
|
+
))), show("ai") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, /* @__PURE__ */ import_react55.default.createElement(AICommands_default, { editor, onAICommand })), /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("paragraph") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10584
10575
|
Dropdown,
|
|
10585
10576
|
{
|
|
10586
10577
|
trigger: {
|
|
@@ -10711,23 +10702,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10711
10702
|
keepOpen: true
|
|
10712
10703
|
},
|
|
10713
10704
|
(close) => /* @__PURE__ */ import_react55.default.createElement(ColorPickerPanel, { editor, onClose: close })
|
|
10714
|
-
), show("bold") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10705
|
+
), show("bold") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Bold (Ctrl+B)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10715
10706
|
"button",
|
|
10716
10707
|
{
|
|
10717
10708
|
className: `toolbar-btn ${editor.isActive("bold") ? "is-active" : ""}`,
|
|
10718
|
-
onClick: () => editor.chain().focus().toggleBold().run()
|
|
10719
|
-
title: "Bold (Ctrl+B)"
|
|
10709
|
+
onClick: () => editor.chain().focus().toggleBold().run()
|
|
10720
10710
|
},
|
|
10721
10711
|
/* @__PURE__ */ import_react55.default.createElement(IconBold, null)
|
|
10722
|
-
), show("italic") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10712
|
+
)), show("italic") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Italic (Ctrl+I)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10723
10713
|
"button",
|
|
10724
10714
|
{
|
|
10725
10715
|
className: `toolbar-btn ${editor.isActive("italic") ? "is-active" : ""}`,
|
|
10726
|
-
onClick: () => editor.chain().focus().toggleItalic().run()
|
|
10727
|
-
title: "Italic (Ctrl+I)"
|
|
10716
|
+
onClick: () => editor.chain().focus().toggleItalic().run()
|
|
10728
10717
|
},
|
|
10729
10718
|
/* @__PURE__ */ import_react55.default.createElement(IconItalic, null)
|
|
10730
|
-
), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10719
|
+
)), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10731
10720
|
Dropdown,
|
|
10732
10721
|
{
|
|
10733
10722
|
trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconStrike, null), title: "Text decoration", className: editor.isActive("strike") ? "is-active" : "" }
|
|
@@ -10752,15 +10741,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10752
10741
|
c.run();
|
|
10753
10742
|
}
|
|
10754
10743
|
} }, "\u2715 Clear formatting")
|
|
10755
|
-
), show("link") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10744
|
+
), show("link") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Insert Link", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10756
10745
|
"button",
|
|
10757
10746
|
{
|
|
10758
10747
|
className: `toolbar-btn ${editor.isActive("link") ? "is-active" : ""}`,
|
|
10759
|
-
onClick: setLink
|
|
10760
|
-
title: "Insert Link"
|
|
10748
|
+
onClick: setLink
|
|
10761
10749
|
},
|
|
10762
10750
|
/* @__PURE__ */ import_react55.default.createElement(IconLink, null)
|
|
10763
|
-
), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10751
|
+
)), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10764
10752
|
Dropdown,
|
|
10765
10753
|
{
|
|
10766
10754
|
trigger: {
|
|
@@ -10787,15 +10775,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10787
10775
|
lh
|
|
10788
10776
|
);
|
|
10789
10777
|
})
|
|
10790
|
-
)), (show("ul") || show("ol")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("ul") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10778
|
+
)), (show("ul") || show("ol")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("ul") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: editor.isActive("bulletList") ? "Disable Bullet List" : "Enable Bullet List", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10791
10779
|
"button",
|
|
10792
10780
|
{
|
|
10793
10781
|
className: `toolbar-btn ${editor.isActive("bulletList") ? "is-active" : ""}`,
|
|
10794
|
-
onClick: () => editor.chain().focus().toggleBulletList().run()
|
|
10795
|
-
title: editor.isActive("bulletList") ? "Disable Bullet List" : "Enable Bullet List"
|
|
10782
|
+
onClick: () => editor.chain().focus().toggleBulletList().run()
|
|
10796
10783
|
},
|
|
10797
10784
|
/* @__PURE__ */ import_react55.default.createElement(IconBulletList, null)
|
|
10798
|
-
), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
|
|
10785
|
+
)), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
|
|
10799
10786
|
{ label: "Default", style: null, icon: "\u2022" },
|
|
10800
10787
|
{ label: "Circle", style: "circle", icon: "\u25CB" },
|
|
10801
10788
|
{ label: "Dot", style: "disc", icon: "\u2219" },
|
|
@@ -10828,15 +10815,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10828
10815
|
/* @__PURE__ */ import_react55.default.createElement("span", { className: "bullet-style-icon" }, item.icon),
|
|
10829
10816
|
" ",
|
|
10830
10817
|
item.label
|
|
10831
|
-
)))), show("ol") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10818
|
+
)))), show("ol") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: editor.isActive("orderedList") ? "Disable Ordered List" : "Enable Ordered List", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10832
10819
|
"button",
|
|
10833
10820
|
{
|
|
10834
10821
|
className: `toolbar-btn ${editor.isActive("orderedList") ? "is-active" : ""}`,
|
|
10835
|
-
onClick: () => editor.chain().focus().toggleOrderedList().run()
|
|
10836
|
-
title: editor.isActive("orderedList") ? "Disable Ordered List" : "Enable Ordered List"
|
|
10822
|
+
onClick: () => editor.chain().focus().toggleOrderedList().run()
|
|
10837
10823
|
},
|
|
10838
10824
|
/* @__PURE__ */ import_react55.default.createElement(IconOrderedList, null)
|
|
10839
|
-
), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
|
|
10825
|
+
)), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
|
|
10840
10826
|
{ label: "Default", style: "decimal", icon: "1." },
|
|
10841
10827
|
{ label: "Lower Alpha", style: "lower-alpha", icon: "a." },
|
|
10842
10828
|
{ label: "Lower Greek", style: "lower-greek", icon: "\u03B1." },
|
|
@@ -10896,7 +10882,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10896
10882
|
" ",
|
|
10897
10883
|
item.label
|
|
10898
10884
|
))
|
|
10899
|
-
), show("indent") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10885
|
+
), show("indent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Increase Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10900
10886
|
"button",
|
|
10901
10887
|
{
|
|
10902
10888
|
className: "toolbar-btn",
|
|
@@ -10913,11 +10899,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10913
10899
|
});
|
|
10914
10900
|
return true;
|
|
10915
10901
|
}).run();
|
|
10916
|
-
}
|
|
10917
|
-
title: "Increase Indent"
|
|
10902
|
+
}
|
|
10918
10903
|
},
|
|
10919
10904
|
/* @__PURE__ */ import_react55.default.createElement(IconIndentIncrease, null)
|
|
10920
|
-
), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10905
|
+
)), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Decrease Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10921
10906
|
"button",
|
|
10922
10907
|
{
|
|
10923
10908
|
className: "toolbar-btn",
|
|
@@ -10934,35 +10919,31 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10934
10919
|
});
|
|
10935
10920
|
return true;
|
|
10936
10921
|
}).run();
|
|
10937
|
-
}
|
|
10938
|
-
title: "Decrease Indent"
|
|
10922
|
+
}
|
|
10939
10923
|
},
|
|
10940
10924
|
/* @__PURE__ */ import_react55.default.createElement(IconIndentDecrease, null)
|
|
10941
|
-
)), show("table") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconTable, null), title: "Insert Table" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(TableGridSelector, { editor, onClose: close })), show("image") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconImage, null), title: "Insert Image" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(ImagePanel, { editor, onClose: close, onImageUpload })), show("video") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconVideo, null), title: "Insert Video" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(InsertPanel, { editor, onClose: close, mode: "video" })), show("cut") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10925
|
+
))), show("table") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconTable, null), title: "Insert Table" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(TableGridSelector, { editor, onClose: close })), show("image") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconImage, null), title: "Insert Image" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(ImagePanel, { editor, onClose: close, onImageUpload })), show("video") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconVideo, null), title: "Insert Video" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(InsertPanel, { editor, onClose: close, mode: "video" })), show("cut") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Cut (Ctrl+X)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10942
10926
|
"button",
|
|
10943
10927
|
{
|
|
10944
10928
|
className: "toolbar-btn",
|
|
10945
|
-
onClick: () => document.execCommand("cut")
|
|
10946
|
-
title: "Cut (Ctrl+X)"
|
|
10929
|
+
onClick: () => document.execCommand("cut")
|
|
10947
10930
|
},
|
|
10948
10931
|
/* @__PURE__ */ import_react55.default.createElement(IconCut, null)
|
|
10949
|
-
), show("copy") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10932
|
+
)), show("copy") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Copy selected text", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10950
10933
|
"button",
|
|
10951
10934
|
{
|
|
10952
10935
|
className: "toolbar-btn",
|
|
10953
|
-
onClick: handleCopy
|
|
10954
|
-
title: "Copy selected text"
|
|
10936
|
+
onClick: handleCopy
|
|
10955
10937
|
},
|
|
10956
10938
|
copySuccess ? /* @__PURE__ */ import_react55.default.createElement(IconCheck, null) : /* @__PURE__ */ import_react55.default.createElement(IconCopy, null)
|
|
10957
|
-
), show("paste") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10939
|
+
)), show("paste") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Paste (Ctrl+V)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10958
10940
|
"button",
|
|
10959
10941
|
{
|
|
10960
10942
|
className: "toolbar-btn",
|
|
10961
|
-
onClick: handlePaste
|
|
10962
|
-
title: "Paste (Ctrl+V)"
|
|
10943
|
+
onClick: handlePaste
|
|
10963
10944
|
},
|
|
10964
10945
|
/* @__PURE__ */ import_react55.default.createElement(IconPaste, null)
|
|
10965
|
-
), show("specialchars") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "\u03A9", title: "Special characters", className: "special-characters-btn" } }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "char-grid" }, SPECIAL_CHARS.map((char) => /* @__PURE__ */ import_react55.default.createElement(
|
|
10946
|
+
)), show("specialchars") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "\u03A9", title: "Special characters", className: "special-characters-btn" } }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "char-grid" }, SPECIAL_CHARS.map((char) => /* @__PURE__ */ import_react55.default.createElement(
|
|
10966
10947
|
"button",
|
|
10967
10948
|
{
|
|
10968
10949
|
key: char,
|
|
@@ -10994,23 +10975,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10994
10975
|
}
|
|
10995
10976
|
} }, "</>", " Inline Code"),
|
|
10996
10977
|
/* @__PURE__ */ import_react55.default.createElement("button", { className: "dropdown-item", onClick: () => editor.chain().focus().toggleCodeBlock().run() }, "{ }", " Code Block")
|
|
10997
|
-
), show("fullscreen") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10978
|
+
), show("fullscreen") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Toggle Fullscreen", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10998
10979
|
"button",
|
|
10999
10980
|
{
|
|
11000
10981
|
className: `toolbar-btn ${isFullscreen ? "is-active" : ""}`,
|
|
11001
|
-
onClick: onToggleFullscreen
|
|
11002
|
-
title: "Toggle Fullscreen"
|
|
10982
|
+
onClick: onToggleFullscreen
|
|
11003
10983
|
},
|
|
11004
10984
|
/* @__PURE__ */ import_react55.default.createElement(IconFullscreen, null)
|
|
11005
|
-
), show("tts") && /* @__PURE__ */ import_react55.default.createElement(TextToSpeech_default, { ref: ttsRef, editor, onTextToSpeech }), show("stt") && /* @__PURE__ */ import_react55.default.createElement(SpeechToText_default, { ref: sttRef, editor, onSpeechToText }), show("translate") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "translate-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10985
|
+
)), show("tts") && /* @__PURE__ */ import_react55.default.createElement(TextToSpeech_default, { ref: ttsRef, editor, onTextToSpeech }), show("stt") && /* @__PURE__ */ import_react55.default.createElement(SpeechToText_default, { ref: sttRef, editor, onSpeechToText }), show("translate") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "translate-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Translate selected text", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
11006
10986
|
"button",
|
|
11007
10987
|
{
|
|
11008
10988
|
className: "toolbar-btn",
|
|
11009
|
-
onClick: handleQuickTranslate
|
|
11010
|
-
title: "Translate selected text"
|
|
10989
|
+
onClick: handleQuickTranslate
|
|
11011
10990
|
},
|
|
11012
10991
|
/* @__PURE__ */ import_react55.default.createElement(IconTranslate, null)
|
|
11013
|
-
), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Translate options", className: "translate-arrow-btn" } }, /* @__PURE__ */ import_react55.default.createElement("button", { className: "dropdown-item", onClick: () => setShowTranslateModal(true) }, "Options")), translateStatus && /* @__PURE__ */ import_react55.default.createElement("span", { className: `translate-toast-popup ${translateStatus === "Please select the text" || translateStatus === "Translation failed" ? "error" : ""}` }, translateStatus)), show("todo") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "todo-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10992
|
+
)), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Translate options", className: "translate-arrow-btn" } }, /* @__PURE__ */ import_react55.default.createElement("button", { className: "dropdown-item", onClick: () => setShowTranslateModal(true) }, "Options")), translateStatus && /* @__PURE__ */ import_react55.default.createElement("span", { className: `translate-toast-popup ${translateStatus === "Please select the text" || translateStatus === "Translation failed" ? "error" : ""}` }, translateStatus)), show("todo") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "todo-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: todoEnabled ? "Disable Task List" : "Enable Task List", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
11014
10993
|
"button",
|
|
11015
10994
|
{
|
|
11016
10995
|
className: `toolbar-btn ${todoEnabled ? "is-active" : ""}`,
|
|
@@ -11051,11 +11030,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
11051
11030
|
}).run();
|
|
11052
11031
|
}
|
|
11053
11032
|
}
|
|
11054
|
-
}
|
|
11055
|
-
title: todoEnabled ? "Disable Task List" : "Enable Task List"
|
|
11033
|
+
}
|
|
11056
11034
|
},
|
|
11057
11035
|
/* @__PURE__ */ import_react55.default.createElement(IconTaskList, null)
|
|
11058
|
-
), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Task status", className: "todo-arrow-btn" }, keepOpen: true }, ["todo", "working", "blocked", "resolved"].map((status) => {
|
|
11036
|
+
)), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Task status", className: "todo-arrow-btn" }, keepOpen: true }, ["todo", "working", "blocked", "resolved"].map((status) => {
|
|
11059
11037
|
const images = { todo: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/todo-blank.svg", working: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/working.svg", blocked: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/blocked.svg", resolved: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/closed.svg" };
|
|
11060
11038
|
const labels = { todo: "Todo", working: "Working", blocked: "Blocked", resolved: "Resolved" };
|
|
11061
11039
|
return /* @__PURE__ */ import_react55.default.createElement("button", { key: status, className: "dropdown-item task-status-item", onClick: () => {
|
|
@@ -11092,7 +11070,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
11092
11070
|
return true;
|
|
11093
11071
|
}).run();
|
|
11094
11072
|
} }, /* @__PURE__ */ import_react55.default.createElement("span", { className: `task-icon task-${status}` }, /* @__PURE__ */ import_react55.default.createElement("img", { src: images[status], alt: status })), " ", labels[status]);
|
|
11095
|
-
})))), onClose && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-row-right" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
11073
|
+
})))), onClose && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-row-right" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Close", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
11096
11074
|
"button",
|
|
11097
11075
|
{
|
|
11098
11076
|
className: "toolbar-btn btn-cross",
|
|
@@ -11106,11 +11084,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
11106
11084
|
} catch {
|
|
11107
11085
|
}
|
|
11108
11086
|
onClose();
|
|
11109
|
-
}
|
|
11110
|
-
title: "Close"
|
|
11087
|
+
}
|
|
11111
11088
|
},
|
|
11112
11089
|
/* @__PURE__ */ import_react55.default.createElement(closeIcon_default, { color: "#a81c08" })
|
|
11113
|
-
)), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
|
|
11090
|
+
))), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
|
|
11114
11091
|
TranslateModal_default,
|
|
11115
11092
|
{
|
|
11116
11093
|
editor,
|
|
@@ -11194,15 +11171,14 @@ var ImagePropertiesModal = ({ editor, node, onClose }) => {
|
|
|
11194
11171
|
value: width,
|
|
11195
11172
|
onChange: (e) => handleWidthChange(e.target.value)
|
|
11196
11173
|
}
|
|
11197
|
-
), /* @__PURE__ */ import_react56.default.createElement(
|
|
11174
|
+
), /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement(
|
|
11198
11175
|
"button",
|
|
11199
11176
|
{
|
|
11200
11177
|
className: `lock-btn ${lockRatio ? "locked" : ""}`,
|
|
11201
|
-
onClick: () => setLockRatio(!lockRatio)
|
|
11202
|
-
title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
|
|
11178
|
+
onClick: () => setLockRatio(!lockRatio)
|
|
11203
11179
|
},
|
|
11204
11180
|
lockRatio ? "\u{1F512}" : "\u{1F513}"
|
|
11205
|
-
), /* @__PURE__ */ import_react56.default.createElement(
|
|
11181
|
+
)), /* @__PURE__ */ import_react56.default.createElement(
|
|
11206
11182
|
"input",
|
|
11207
11183
|
{
|
|
11208
11184
|
type: "number",
|
|
@@ -11387,13 +11363,13 @@ var ImageToolbar = ({ editor }) => {
|
|
|
11387
11363
|
style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
|
|
11388
11364
|
onMouseDown: (e) => e.preventDefault()
|
|
11389
11365
|
},
|
|
11390
|
-
/* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete
|
|
11391
|
-
/* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true)
|
|
11392
|
-
/* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy
|
|
11393
|
-
/* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => {
|
|
11366
|
+
/* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
|
|
11367
|
+
/* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Edit properties", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true) }, "\u270E")),
|
|
11368
|
+
/* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Copy image", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy }, copyStatus ? "\u2713" : "\u{1F4CB}")), copyStatus && /* @__PURE__ */ import_react56.default.createElement("span", { className: "img-copy-toast" }, copyStatus)),
|
|
11369
|
+
/* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Horizontal alignment", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => {
|
|
11394
11370
|
setShowAlign(!showAlign);
|
|
11395
11371
|
setShowVAlign(false);
|
|
11396
|
-
}
|
|
11372
|
+
} }, "\u2630 ", /* @__PURE__ */ import_react56.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE"))), showAlign && /* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-menu" }, ALIGNMENTS.map((a) => /* @__PURE__ */ import_react56.default.createElement("button", { key: a.value, className: "dropdown-item", onClick: () => setAlignmentVal(a.value) }, a.icon, " ", a.label))))
|
|
11397
11373
|
), showModal && /* @__PURE__ */ import_react56.default.createElement(
|
|
11398
11374
|
ImagePropertiesModal,
|
|
11399
11375
|
{
|
|
@@ -11476,15 +11452,14 @@ var VideoPropertiesModal = ({ editor, node, nodeType, onClose }) => {
|
|
|
11476
11452
|
value: width,
|
|
11477
11453
|
onChange: (e) => handleWidthChange(e.target.value)
|
|
11478
11454
|
}
|
|
11479
|
-
), /* @__PURE__ */ import_react57.default.createElement(
|
|
11455
|
+
), /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
11480
11456
|
"button",
|
|
11481
11457
|
{
|
|
11482
11458
|
className: `lock-btn ${lockRatio ? "locked" : ""}`,
|
|
11483
|
-
onClick: () => setLockRatio(!lockRatio)
|
|
11484
|
-
title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
|
|
11459
|
+
onClick: () => setLockRatio(!lockRatio)
|
|
11485
11460
|
},
|
|
11486
11461
|
lockRatio ? "\u{1F512}" : "\u{1F513}"
|
|
11487
|
-
), /* @__PURE__ */ import_react57.default.createElement(
|
|
11462
|
+
)), /* @__PURE__ */ import_react57.default.createElement(
|
|
11488
11463
|
"input",
|
|
11489
11464
|
{
|
|
11490
11465
|
type: "number",
|
|
@@ -11611,13 +11586,13 @@ var VideoToolbar = ({ editor }) => {
|
|
|
11611
11586
|
style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
|
|
11612
11587
|
onMouseDown: (e) => e.preventDefault()
|
|
11613
11588
|
},
|
|
11614
|
-
/* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete
|
|
11615
|
-
/* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true)
|
|
11616
|
-
/* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy
|
|
11617
|
-
/* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
|
|
11589
|
+
/* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
|
|
11590
|
+
/* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Edit properties", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true) }, "\u270E")),
|
|
11591
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Copy URL", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy }, copyStatus ? "\u2713" : "\u{1F4CB}")), copyStatus && /* @__PURE__ */ import_react57.default.createElement("span", { className: "img-copy-toast" }, copyStatus)),
|
|
11592
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Size presets", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
|
|
11618
11593
|
setShowSize(!showSize);
|
|
11619
11594
|
setShowAlign(false);
|
|
11620
|
-
}
|
|
11595
|
+
} }, /* @__PURE__ */ import_react57.default.createElement("span", { style: { fontSize: "11px" } }, node.attrs.width || 640, "x", node.attrs.height || 360), /* @__PURE__ */ import_react57.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE"))), showSize && /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-menu" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "dropdown-item", onClick: () => {
|
|
11621
11596
|
handleResize("small");
|
|
11622
11597
|
setShowSize(false);
|
|
11623
11598
|
} }, "Small (320x180)"), /* @__PURE__ */ import_react57.default.createElement("button", { className: "dropdown-item", onClick: () => {
|
|
@@ -11630,10 +11605,10 @@ var VideoToolbar = ({ editor }) => {
|
|
|
11630
11605
|
handleResize("full");
|
|
11631
11606
|
setShowSize(false);
|
|
11632
11607
|
} }, "Full (854x480)"))),
|
|
11633
|
-
/* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
|
|
11608
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Horizontal alignment", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
|
|
11634
11609
|
setShowAlign(!showAlign);
|
|
11635
11610
|
setShowSize(false);
|
|
11636
|
-
}
|
|
11611
|
+
} }, "\u2630 ", /* @__PURE__ */ import_react57.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE"))), showAlign && /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-menu" }, ALIGNMENTS2.map((a) => /* @__PURE__ */ import_react57.default.createElement("button", { key: a.value, className: "dropdown-item", onClick: () => setAlignmentVal(a.value) }, a.icon, " ", a.label))))
|
|
11637
11612
|
), showModal && /* @__PURE__ */ import_react57.default.createElement(
|
|
11638
11613
|
VideoPropertiesModal,
|
|
11639
11614
|
{
|
|
@@ -11716,101 +11691,19 @@ var TableToolbar = ({ editor }) => {
|
|
|
11716
11691
|
style: { top: pos.top, left: pos.left },
|
|
11717
11692
|
onMouseDown: prevent
|
|
11718
11693
|
},
|
|
11719
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11720
|
-
|
|
11721
|
-
|
|
11722
|
-
className: "rf-table-toolbar-btn",
|
|
11723
|
-
onClick: () => editor.chain().focus().addRowBefore().run(),
|
|
11724
|
-
title: "Insert row above"
|
|
11725
|
-
},
|
|
11726
|
-
/* @__PURE__ */ import_react58.default.createElement(IconAddRowBefore, null)
|
|
11727
|
-
),
|
|
11728
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11729
|
-
"button",
|
|
11730
|
-
{
|
|
11731
|
-
className: "rf-table-toolbar-btn",
|
|
11732
|
-
onClick: () => editor.chain().focus().addRowAfter().run(),
|
|
11733
|
-
title: "Insert row below"
|
|
11734
|
-
},
|
|
11735
|
-
/* @__PURE__ */ import_react58.default.createElement(IconAddRowAfter, null)
|
|
11736
|
-
),
|
|
11737
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11738
|
-
"button",
|
|
11739
|
-
{
|
|
11740
|
-
className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger",
|
|
11741
|
-
onClick: () => editor.chain().focus().deleteRow().run(),
|
|
11742
|
-
title: "Delete row"
|
|
11743
|
-
},
|
|
11744
|
-
/* @__PURE__ */ import_react58.default.createElement(IconDeleteRow, null)
|
|
11745
|
-
),
|
|
11694
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert row above", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addRowBefore().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddRowBefore, null))),
|
|
11695
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert row below", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addRowAfter().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddRowAfter, null))),
|
|
11696
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Delete row", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger", onClick: () => editor.chain().focus().deleteRow().run() }, /* @__PURE__ */ import_react58.default.createElement(IconDeleteRow, null))),
|
|
11746
11697
|
/* @__PURE__ */ import_react58.default.createElement("span", { className: "rf-table-toolbar-sep" }),
|
|
11747
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11748
|
-
|
|
11749
|
-
|
|
11750
|
-
className: "rf-table-toolbar-btn",
|
|
11751
|
-
onClick: () => editor.chain().focus().addColumnBefore().run(),
|
|
11752
|
-
title: "Insert column left"
|
|
11753
|
-
},
|
|
11754
|
-
/* @__PURE__ */ import_react58.default.createElement(IconAddColBefore, null)
|
|
11755
|
-
),
|
|
11756
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11757
|
-
"button",
|
|
11758
|
-
{
|
|
11759
|
-
className: "rf-table-toolbar-btn",
|
|
11760
|
-
onClick: () => editor.chain().focus().addColumnAfter().run(),
|
|
11761
|
-
title: "Insert column right"
|
|
11762
|
-
},
|
|
11763
|
-
/* @__PURE__ */ import_react58.default.createElement(IconAddColAfter, null)
|
|
11764
|
-
),
|
|
11765
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11766
|
-
"button",
|
|
11767
|
-
{
|
|
11768
|
-
className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger",
|
|
11769
|
-
onClick: () => editor.chain().focus().deleteColumn().run(),
|
|
11770
|
-
title: "Delete column"
|
|
11771
|
-
},
|
|
11772
|
-
/* @__PURE__ */ import_react58.default.createElement(IconDeleteCol, null)
|
|
11773
|
-
),
|
|
11698
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert column left", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addColumnBefore().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddColBefore, null))),
|
|
11699
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert column right", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addColumnAfter().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddColAfter, null))),
|
|
11700
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Delete column", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger", onClick: () => editor.chain().focus().deleteColumn().run() }, /* @__PURE__ */ import_react58.default.createElement(IconDeleteCol, null))),
|
|
11774
11701
|
/* @__PURE__ */ import_react58.default.createElement("span", { className: "rf-table-toolbar-sep" }),
|
|
11775
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11776
|
-
|
|
11777
|
-
{
|
|
11778
|
-
className: "rf-table-toolbar-btn",
|
|
11779
|
-
onClick: () => editor.chain().focus().mergeCells().run(),
|
|
11780
|
-
disabled: !canMerge,
|
|
11781
|
-
title: "Merge cells"
|
|
11782
|
-
},
|
|
11783
|
-
/* @__PURE__ */ import_react58.default.createElement(IconMergeCells, null)
|
|
11784
|
-
),
|
|
11785
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11786
|
-
"button",
|
|
11787
|
-
{
|
|
11788
|
-
className: "rf-table-toolbar-btn",
|
|
11789
|
-
onClick: () => editor.chain().focus().splitCell().run(),
|
|
11790
|
-
disabled: !canSplit,
|
|
11791
|
-
title: "Split cell"
|
|
11792
|
-
},
|
|
11793
|
-
/* @__PURE__ */ import_react58.default.createElement(IconSplitCell, null)
|
|
11794
|
-
),
|
|
11702
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Merge cells", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().mergeCells().run(), disabled: !canMerge }, /* @__PURE__ */ import_react58.default.createElement(IconMergeCells, null))),
|
|
11703
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Split cell", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().splitCell().run(), disabled: !canSplit }, /* @__PURE__ */ import_react58.default.createElement(IconSplitCell, null))),
|
|
11795
11704
|
/* @__PURE__ */ import_react58.default.createElement("span", { className: "rf-table-toolbar-sep" }),
|
|
11796
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11797
|
-
|
|
11798
|
-
{
|
|
11799
|
-
className: `rf-table-toolbar-btn ${editor.isActive("tableHeader") ? "active" : ""}`,
|
|
11800
|
-
onClick: () => editor.chain().focus().toggleHeaderRow().run(),
|
|
11801
|
-
title: "Toggle header row"
|
|
11802
|
-
},
|
|
11803
|
-
/* @__PURE__ */ import_react58.default.createElement(IconToggleHeader, null)
|
|
11804
|
-
),
|
|
11805
|
-
/* @__PURE__ */ import_react58.default.createElement(
|
|
11806
|
-
"button",
|
|
11807
|
-
{
|
|
11808
|
-
className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger",
|
|
11809
|
-
onClick: () => editor.chain().focus().deleteTable().run(),
|
|
11810
|
-
title: "Delete table"
|
|
11811
|
-
},
|
|
11812
|
-
/* @__PURE__ */ import_react58.default.createElement(IconDeleteTable, null)
|
|
11813
|
-
)
|
|
11705
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Toggle header row", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: `rf-table-toolbar-btn ${editor.isActive("tableHeader") ? "active" : ""}`, onClick: () => editor.chain().focus().toggleHeaderRow().run() }, /* @__PURE__ */ import_react58.default.createElement(IconToggleHeader, null))),
|
|
11706
|
+
/* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Delete table", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger", onClick: () => editor.chain().focus().deleteTable().run() }, /* @__PURE__ */ import_react58.default.createElement(IconDeleteTable, null)))
|
|
11814
11707
|
),
|
|
11815
11708
|
document.body
|
|
11816
11709
|
);
|