@rufous/ui 0.2.81 → 0.2.82
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 +623 -733
- package/dist/main.js +628 -738
- 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" },
|
|
@@ -4079,8 +4306,8 @@ function DataGrid({
|
|
|
4079
4306
|
sx
|
|
4080
4307
|
}) {
|
|
4081
4308
|
const sxClass = useSx(sx);
|
|
4082
|
-
const [columnOverrides, setColumnOverrides] = (0,
|
|
4083
|
-
const resolvedColumns = (0,
|
|
4309
|
+
const [columnOverrides, setColumnOverrides] = (0, import_react23.useState)({});
|
|
4310
|
+
const resolvedColumns = (0, import_react23.useMemo)(() => {
|
|
4084
4311
|
return initialColumnsProp.map((col) => {
|
|
4085
4312
|
const field = String(col.field || col.key || "");
|
|
4086
4313
|
const override = columnOverrides[field] || {};
|
|
@@ -4093,7 +4320,7 @@ function DataGrid({
|
|
|
4093
4320
|
};
|
|
4094
4321
|
});
|
|
4095
4322
|
}, [initialColumnsProp, columnOverrides]);
|
|
4096
|
-
const [columnWidths, setColumnWidths] = (0,
|
|
4323
|
+
const [columnWidths, setColumnWidths] = (0, import_react23.useState)(() => {
|
|
4097
4324
|
const widths = {};
|
|
4098
4325
|
initialColumnsProp.forEach((col) => {
|
|
4099
4326
|
const field = String(col.field || col.key || "");
|
|
@@ -4102,26 +4329,26 @@ function DataGrid({
|
|
|
4102
4329
|
});
|
|
4103
4330
|
return widths;
|
|
4104
4331
|
});
|
|
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,
|
|
4332
|
+
const [pageSize, setPageSize] = (0, import_react23.useState)(initialPageSize);
|
|
4333
|
+
const [sortField, setSortField] = (0, import_react23.useState)(null);
|
|
4334
|
+
const [sortDirection, setSortDirection] = (0, import_react23.useState)(null);
|
|
4335
|
+
const [filterText, setFilterText] = (0, import_react23.useState)("");
|
|
4336
|
+
const [currentPage, setCurrentPage] = (0, import_react23.useState)(1);
|
|
4337
|
+
const [columnFilters, setColumnFilters] = (0, import_react23.useState)({});
|
|
4338
|
+
const [resizingColumn, setResizingColumn] = (0, import_react23.useState)(null);
|
|
4339
|
+
const [startX, setStartX] = (0, import_react23.useState)(0);
|
|
4340
|
+
const [startWidth, setStartWidth] = (0, import_react23.useState)(0);
|
|
4341
|
+
const [activeMenu, setActiveMenu] = (0, import_react23.useState)(null);
|
|
4342
|
+
const [menuPosition, setMenuPosition] = (0, import_react23.useState)({ top: 0, left: 0 });
|
|
4343
|
+
const menuRef = (0, import_react23.useRef)(null);
|
|
4344
|
+
const [showManageColumns, setShowManageColumns] = (0, import_react23.useState)(false);
|
|
4345
|
+
const [showAdvancedFilter, setShowAdvancedFilter] = (0, import_react23.useState)(false);
|
|
4119
4346
|
const initialFilterCol = String(initialColumnsProp[0]?.field || initialColumnsProp[0]?.key || "");
|
|
4120
|
-
const [advancedFilters, setAdvancedFilters] = (0,
|
|
4347
|
+
const [advancedFilters, setAdvancedFilters] = (0, import_react23.useState)([
|
|
4121
4348
|
{ column: initialFilterCol, operator: getDefaultOperator(initialColumnsProp[0]?.type), value: "", logic: "AND" }
|
|
4122
4349
|
]);
|
|
4123
|
-
const [colSearch, setColSearch] = (0,
|
|
4124
|
-
(0,
|
|
4350
|
+
const [colSearch, setColSearch] = (0, import_react23.useState)("");
|
|
4351
|
+
(0, import_react23.useEffect)(() => {
|
|
4125
4352
|
const handleMouseMove = (e) => {
|
|
4126
4353
|
if (!resizingColumn) return;
|
|
4127
4354
|
const col = resolvedColumns.find((c) => String(c.field) === resizingColumn);
|
|
@@ -4141,7 +4368,7 @@ function DataGrid({
|
|
|
4141
4368
|
document.removeEventListener("mouseup", handleMouseUp);
|
|
4142
4369
|
};
|
|
4143
4370
|
}, [resizingColumn, startX, startWidth, resolvedColumns]);
|
|
4144
|
-
(0,
|
|
4371
|
+
(0, import_react23.useEffect)(() => {
|
|
4145
4372
|
const handleClickOutside = (e) => {
|
|
4146
4373
|
if (menuRef.current && !menuRef.current.contains(e.target)) {
|
|
4147
4374
|
setActiveMenu(null);
|
|
@@ -4150,7 +4377,7 @@ function DataGrid({
|
|
|
4150
4377
|
document.addEventListener("mousedown", handleClickOutside);
|
|
4151
4378
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
4152
4379
|
}, []);
|
|
4153
|
-
(0,
|
|
4380
|
+
(0, import_react23.useEffect)(() => {
|
|
4154
4381
|
setColumnWidths((prev) => {
|
|
4155
4382
|
const next = { ...prev };
|
|
4156
4383
|
initialColumnsProp.forEach((col) => {
|
|
@@ -4201,7 +4428,7 @@ function DataGrid({
|
|
|
4201
4428
|
});
|
|
4202
4429
|
setActiveMenu(null);
|
|
4203
4430
|
};
|
|
4204
|
-
const filteredData = (0,
|
|
4431
|
+
const filteredData = (0, import_react23.useMemo)(() => {
|
|
4205
4432
|
return data.filter((item) => {
|
|
4206
4433
|
const matchesGlobal = !filterText || Object.values(item).some(
|
|
4207
4434
|
(val) => String(val).toLowerCase().includes(filterText.toLowerCase())
|
|
@@ -4305,7 +4532,7 @@ function DataGrid({
|
|
|
4305
4532
|
return matchesGlobal && matchesAdvanced;
|
|
4306
4533
|
});
|
|
4307
4534
|
}, [data, filterText, advancedFilters]);
|
|
4308
|
-
const sortedData = (0,
|
|
4535
|
+
const sortedData = (0, import_react23.useMemo)(() => {
|
|
4309
4536
|
if (!sortField || !sortDirection) return filteredData;
|
|
4310
4537
|
const col = resolvedColumns.find((c) => c.field === sortField);
|
|
4311
4538
|
return [...filteredData].sort((a, b) => {
|
|
@@ -4321,7 +4548,7 @@ function DataGrid({
|
|
|
4321
4548
|
});
|
|
4322
4549
|
}, [filteredData, sortField, sortDirection, resolvedColumns]);
|
|
4323
4550
|
const totalPages = Math.max(1, Math.ceil(sortedData.length / pageSize));
|
|
4324
|
-
const paginatedData = (0,
|
|
4551
|
+
const paginatedData = (0, import_react23.useMemo)(() => {
|
|
4325
4552
|
const start = (currentPage - 1) * pageSize;
|
|
4326
4553
|
return sortedData.slice(start, start + pageSize);
|
|
4327
4554
|
}, [sortedData, currentPage, pageSize]);
|
|
@@ -4360,7 +4587,7 @@ function DataGrid({
|
|
|
4360
4587
|
setMenuPosition(position);
|
|
4361
4588
|
setActiveMenu(keyStr);
|
|
4362
4589
|
};
|
|
4363
|
-
const visibleColumns = (0,
|
|
4590
|
+
const visibleColumns = (0, import_react23.useMemo)(() => {
|
|
4364
4591
|
const left = resolvedColumns.filter((c) => !c.hidden && c.pinned === "left");
|
|
4365
4592
|
const mid = resolvedColumns.filter((c) => !c.hidden && !c.pinned);
|
|
4366
4593
|
const right = resolvedColumns.filter((c) => !c.hidden && c.pinned === "right");
|
|
@@ -4387,7 +4614,7 @@ function DataGrid({
|
|
|
4387
4614
|
return offset2;
|
|
4388
4615
|
};
|
|
4389
4616
|
const hasActiveFilters = advancedFilters.some((f) => f.value);
|
|
4390
|
-
return /* @__PURE__ */
|
|
4617
|
+
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
4618
|
"input",
|
|
4392
4619
|
{
|
|
4393
4620
|
className: "dg-search",
|
|
@@ -4398,52 +4625,50 @@ function DataGrid({
|
|
|
4398
4625
|
setCurrentPage(1);
|
|
4399
4626
|
}
|
|
4400
4627
|
}
|
|
4401
|
-
)), /* @__PURE__ */
|
|
4628
|
+
)), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4402
4629
|
"button",
|
|
4403
4630
|
{
|
|
4404
4631
|
className: `dg-icon-btn ${hasActiveFilters ? "active" : ""}`,
|
|
4405
|
-
onClick: () => setShowAdvancedFilter(true)
|
|
4406
|
-
title: "Filters"
|
|
4632
|
+
onClick: () => setShowAdvancedFilter(true)
|
|
4407
4633
|
},
|
|
4408
|
-
/* @__PURE__ */
|
|
4409
|
-
), /* @__PURE__ */
|
|
4634
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 16 })
|
|
4635
|
+
)), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Manage Columns", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4410
4636
|
"button",
|
|
4411
4637
|
{
|
|
4412
4638
|
className: "dg-icon-btn",
|
|
4413
|
-
onClick: () => setShowManageColumns(true)
|
|
4414
|
-
title: "Manage Columns"
|
|
4639
|
+
onClick: () => setShowManageColumns(true)
|
|
4415
4640
|
},
|
|
4416
|
-
/* @__PURE__ */
|
|
4417
|
-
), /* @__PURE__ */
|
|
4641
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 16 })
|
|
4642
|
+
)), /* @__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
4643
|
const colField = String(col.field);
|
|
4419
4644
|
const width = columnWidths[colField] || 200;
|
|
4420
4645
|
const leftOffset = getLeftOffset(col, idx);
|
|
4421
4646
|
const rightOffset = getRightOffset(col, idx);
|
|
4422
4647
|
const isSorted = sortField === col.field;
|
|
4423
|
-
return /* @__PURE__ */
|
|
4648
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
4424
4649
|
"th",
|
|
4425
4650
|
{
|
|
4426
4651
|
key: colField,
|
|
4427
4652
|
className: `dg-thead-cell${col.pinned === "left" ? " pinned-left" : col.pinned === "right" ? " pinned-right" : ""} ${col.headerClassName || ""}`,
|
|
4428
4653
|
style: { width, minWidth: width, left: leftOffset, right: rightOffset, flex: col.flex }
|
|
4429
4654
|
},
|
|
4430
|
-
/* @__PURE__ */
|
|
4655
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-inner" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4431
4656
|
"div",
|
|
4432
4657
|
{
|
|
4433
4658
|
className: `dg-th-label${col.sortable === false ? " no-sort" : ""}`,
|
|
4434
4659
|
onClick: () => col.sortable !== false && handleSort(col.field || "")
|
|
4435
4660
|
},
|
|
4436
4661
|
col.headerName,
|
|
4437
|
-
isSorted && sortDirection === "asc" && /* @__PURE__ */
|
|
4438
|
-
isSorted && sortDirection === "desc" && /* @__PURE__ */
|
|
4439
|
-
), /* @__PURE__ */
|
|
4662
|
+
isSorted && sortDirection === "asc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronUp, { size: 12 }),
|
|
4663
|
+
isSorted && sortDirection === "desc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronDown, { size: 12 })
|
|
4664
|
+
), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-actions" }, !col.disableColumnMenu && /* @__PURE__ */ import_react23.default.createElement(
|
|
4440
4665
|
"button",
|
|
4441
4666
|
{
|
|
4442
4667
|
className: "dg-th-menu-btn",
|
|
4443
4668
|
onClick: (e) => handleMenuOpen(e, colField)
|
|
4444
4669
|
},
|
|
4445
|
-
/* @__PURE__ */
|
|
4446
|
-
), /* @__PURE__ */
|
|
4670
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.MoreVertical, { size: 13 })
|
|
4671
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
4447
4672
|
"div",
|
|
4448
4673
|
{
|
|
4449
4674
|
className: `dg-resizer${resizingColumn === colField ? " resizing" : ""}`,
|
|
@@ -4456,12 +4681,12 @@ function DataGrid({
|
|
|
4456
4681
|
}
|
|
4457
4682
|
)))
|
|
4458
4683
|
);
|
|
4459
|
-
}), actions && /* @__PURE__ */
|
|
4684
|
+
}), 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" }, visibleColumns.map((col, idx) => {
|
|
4460
4685
|
const colField = String(col.field);
|
|
4461
4686
|
const width = columnWidths[colField] || 200;
|
|
4462
4687
|
const leftOffset = getLeftOffset(col, idx);
|
|
4463
4688
|
const rightOffset = getRightOffset(col, idx);
|
|
4464
|
-
return /* @__PURE__ */
|
|
4689
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
4465
4690
|
"td",
|
|
4466
4691
|
{
|
|
4467
4692
|
key: `${item.id}-${colField}`,
|
|
@@ -4482,22 +4707,20 @@ function DataGrid({
|
|
|
4482
4707
|
return String(formattedValue ?? "");
|
|
4483
4708
|
})()
|
|
4484
4709
|
);
|
|
4485
|
-
}), actions && /* @__PURE__ */
|
|
4710
|
+
}), actions && /* @__PURE__ */ import_react23.default.createElement("td", { className: "dg-row-actions-cell" }, (() => {
|
|
4486
4711
|
const resolvedActions = typeof actions === "function" ? actions(item) : actions;
|
|
4487
4712
|
const visibleActions = resolvedActions.filter((a) => !a.show || a.show(item));
|
|
4488
4713
|
if (visibleActions.length === 0) return null;
|
|
4489
|
-
return /* @__PURE__ */
|
|
4714
|
+
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
4715
|
"button",
|
|
4491
4716
|
{
|
|
4492
|
-
key: i,
|
|
4493
4717
|
className: "dg-row-action-btn",
|
|
4494
4718
|
style: { color: action.color || "var(--text-secondary)" },
|
|
4495
|
-
onClick: () => action.onClick(item)
|
|
4496
|
-
title: action.label
|
|
4719
|
+
onClick: () => action.onClick(item)
|
|
4497
4720
|
},
|
|
4498
4721
|
action.icon
|
|
4499
|
-
))));
|
|
4500
|
-
})())))))), /* @__PURE__ */
|
|
4722
|
+
)))));
|
|
4723
|
+
})())))))), /* @__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
4724
|
"select",
|
|
4502
4725
|
{
|
|
4503
4726
|
value: pageSize,
|
|
@@ -4506,8 +4729,8 @@ function DataGrid({
|
|
|
4506
4729
|
setCurrentPage(1);
|
|
4507
4730
|
}
|
|
4508
4731
|
},
|
|
4509
|
-
pageSizeOptions.map((o) => /* @__PURE__ */
|
|
4510
|
-
)), /* @__PURE__ */
|
|
4732
|
+
pageSizeOptions.map((o) => /* @__PURE__ */ import_react23.default.createElement("option", { key: o, value: o }, o))
|
|
4733
|
+
)), /* @__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
4734
|
"div",
|
|
4512
4735
|
{
|
|
4513
4736
|
ref: menuRef,
|
|
@@ -4518,25 +4741,25 @@ function DataGrid({
|
|
|
4518
4741
|
...menuPosition.right !== void 0 ? { right: menuPosition.right } : {}
|
|
4519
4742
|
}
|
|
4520
4743
|
},
|
|
4521
|
-
/* @__PURE__ */
|
|
4522
|
-
/* @__PURE__ */
|
|
4523
|
-
/* @__PURE__ */
|
|
4744
|
+
/* @__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"),
|
|
4745
|
+
/* @__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"),
|
|
4746
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
|
|
4524
4747
|
(() => {
|
|
4525
4748
|
const col = resolvedColumns.find((c) => c.field === activeMenu);
|
|
4526
4749
|
if (!col) return null;
|
|
4527
|
-
return /* @__PURE__ */
|
|
4750
|
+
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
4751
|
})(),
|
|
4529
|
-
/* @__PURE__ */
|
|
4530
|
-
/* @__PURE__ */
|
|
4752
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
|
|
4753
|
+
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4531
4754
|
setShowAdvancedFilter(true);
|
|
4532
4755
|
setActiveMenu(null);
|
|
4533
|
-
} }, /* @__PURE__ */
|
|
4534
|
-
/* @__PURE__ */
|
|
4535
|
-
/* @__PURE__ */
|
|
4756
|
+
} }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 14 }), " Filter\u2026"),
|
|
4757
|
+
/* @__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"),
|
|
4758
|
+
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4536
4759
|
setShowManageColumns(true);
|
|
4537
4760
|
setActiveMenu(null);
|
|
4538
|
-
} }, /* @__PURE__ */
|
|
4539
|
-
), showManageColumns && /* @__PURE__ */
|
|
4761
|
+
} }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 14 }), " Manage columns")
|
|
4762
|
+
), 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
4763
|
"input",
|
|
4541
4764
|
{
|
|
4542
4765
|
className: "dg-search",
|
|
@@ -4548,15 +4771,15 @@ function DataGrid({
|
|
|
4548
4771
|
)), resolvedColumns.filter((c) => c.header.toLowerCase().includes(colSearch.toLowerCase())).map((col) => {
|
|
4549
4772
|
const key = String(col.key);
|
|
4550
4773
|
const isUnhideable = col.hideable === false;
|
|
4551
|
-
return /* @__PURE__ */
|
|
4552
|
-
})), /* @__PURE__ */
|
|
4774
|
+
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 } })));
|
|
4775
|
+
})), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumnOverrides((prev) => {
|
|
4553
4776
|
const next = { ...prev };
|
|
4554
4777
|
resolvedColumns.forEach((c) => {
|
|
4555
4778
|
const k = String(c.key);
|
|
4556
4779
|
next[k] = { ...next[k], hidden: false };
|
|
4557
4780
|
});
|
|
4558
4781
|
return next;
|
|
4559
|
-
}) }, "Show All"), /* @__PURE__ */
|
|
4782
|
+
}) }, "Show All"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => {
|
|
4560
4783
|
const newOverrides = { ...columnOverrides };
|
|
4561
4784
|
resolvedColumns.forEach((c) => {
|
|
4562
4785
|
if (c.hideable !== false) {
|
|
@@ -4565,21 +4788,21 @@ function DataGrid({
|
|
|
4565
4788
|
}
|
|
4566
4789
|
});
|
|
4567
4790
|
setColumnOverrides(newOverrides);
|
|
4568
|
-
} }, "Hide All")))), showAdvancedFilter && /* @__PURE__ */
|
|
4791
|
+
} }, "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
4792
|
"button",
|
|
4570
4793
|
{
|
|
4571
4794
|
className: `dg-logic-btn${f.logic === "AND" ? " active" : ""}`,
|
|
4572
4795
|
onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "AND" } : fi))
|
|
4573
4796
|
},
|
|
4574
4797
|
"AND"
|
|
4575
|
-
), /* @__PURE__ */
|
|
4798
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
4576
4799
|
"button",
|
|
4577
4800
|
{
|
|
4578
4801
|
className: `dg-logic-btn${f.logic === "OR" ? " active" : ""}`,
|
|
4579
4802
|
onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "OR" } : fi))
|
|
4580
4803
|
},
|
|
4581
4804
|
"OR"
|
|
4582
|
-
)), /* @__PURE__ */
|
|
4805
|
+
)), /* @__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
4806
|
"select",
|
|
4584
4807
|
{
|
|
4585
4808
|
className: "dg-filter-select",
|
|
@@ -4591,20 +4814,20 @@ function DataGrid({
|
|
|
4591
4814
|
setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, column: newColKey, operator: defaultOp, value: "" } : fi));
|
|
4592
4815
|
}
|
|
4593
4816
|
},
|
|
4594
|
-
resolvedColumns.map((c) => /* @__PURE__ */
|
|
4817
|
+
resolvedColumns.map((c) => /* @__PURE__ */ import_react23.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
|
|
4595
4818
|
), (() => {
|
|
4596
4819
|
const col = resolvedColumns.find((c) => String(c.key) === f.column);
|
|
4597
4820
|
const operators = getOperatorsForType(col?.type);
|
|
4598
4821
|
const hideValue = f.operator === "is empty" || f.operator === "is not empty";
|
|
4599
|
-
return /* @__PURE__ */
|
|
4822
|
+
return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(
|
|
4600
4823
|
"select",
|
|
4601
4824
|
{
|
|
4602
4825
|
className: "dg-filter-select dg-filter-select-sm",
|
|
4603
4826
|
value: f.operator,
|
|
4604
4827
|
onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, operator: e.target.value, value: "" } : fi))
|
|
4605
4828
|
},
|
|
4606
|
-
operators.map((op) => /* @__PURE__ */
|
|
4607
|
-
), !hideValue && col?.type === "date" && /* @__PURE__ */
|
|
4829
|
+
operators.map((op) => /* @__PURE__ */ import_react23.default.createElement("option", { key: op.value, value: op.value }, op.label))
|
|
4830
|
+
), !hideValue && col?.type === "date" && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-datefield" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4608
4831
|
DateField,
|
|
4609
4832
|
{
|
|
4610
4833
|
value: f.value,
|
|
@@ -4613,17 +4836,17 @@ function DataGrid({
|
|
|
4613
4836
|
}
|
|
4614
4837
|
)), !hideValue && col?.type === "status" && (() => {
|
|
4615
4838
|
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__ */
|
|
4839
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
4617
4840
|
"select",
|
|
4618
4841
|
{
|
|
4619
4842
|
className: "dg-filter-select",
|
|
4620
4843
|
value: f.value,
|
|
4621
4844
|
onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
|
|
4622
4845
|
},
|
|
4623
|
-
/* @__PURE__ */
|
|
4624
|
-
options.map((opt) => /* @__PURE__ */
|
|
4846
|
+
/* @__PURE__ */ import_react23.default.createElement("option", { value: "" }, "Select\u2026"),
|
|
4847
|
+
options.map((opt) => /* @__PURE__ */ import_react23.default.createElement("option", { key: opt, value: opt }, opt))
|
|
4625
4848
|
);
|
|
4626
|
-
})(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */
|
|
4849
|
+
})(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */ import_react23.default.createElement(
|
|
4627
4850
|
"input",
|
|
4628
4851
|
{
|
|
4629
4852
|
type: col?.type === "number" ? "number" : "text",
|
|
@@ -4633,7 +4856,7 @@ function DataGrid({
|
|
|
4633
4856
|
onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
|
|
4634
4857
|
}
|
|
4635
4858
|
));
|
|
4636
|
-
})()))), /* @__PURE__ */
|
|
4859
|
+
})()))), /* @__PURE__ */ import_react23.default.createElement(
|
|
4637
4860
|
"button",
|
|
4638
4861
|
{
|
|
4639
4862
|
className: "dg-action-btn",
|
|
@@ -4644,9 +4867,9 @@ function DataGrid({
|
|
|
4644
4867
|
setAdvancedFilters((p) => [...p, { column: String(firstCol.key), operator: defaultOp, value: "", logic: "AND" }]);
|
|
4645
4868
|
}
|
|
4646
4869
|
},
|
|
4647
|
-
/* @__PURE__ */
|
|
4870
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Plus, { size: 14 }),
|
|
4648
4871
|
" Add Filter"
|
|
4649
|
-
)), /* @__PURE__ */
|
|
4872
|
+
)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
4650
4873
|
"button",
|
|
4651
4874
|
{
|
|
4652
4875
|
className: "dg-action-btn",
|
|
@@ -4655,20 +4878,20 @@ function DataGrid({
|
|
|
4655
4878
|
setAdvancedFilters([{ column: String(firstCol.key), operator: getDefaultOperator(firstCol?.type), value: "", logic: "AND" }]);
|
|
4656
4879
|
}
|
|
4657
4880
|
},
|
|
4658
|
-
/* @__PURE__ */
|
|
4881
|
+
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Trash2, { size: 14 }),
|
|
4659
4882
|
" Reset"
|
|
4660
|
-
), /* @__PURE__ */
|
|
4883
|
+
), /* @__PURE__ */ import_react23.default.createElement("button", { className: "submit-btn", onClick: () => setShowAdvancedFilter(false) }, "Apply")))));
|
|
4661
4884
|
}
|
|
4662
4885
|
|
|
4663
4886
|
// lib/Select/Select.tsx
|
|
4664
|
-
var
|
|
4665
|
-
var
|
|
4666
|
-
var ChevronDownIcon2 = () => /* @__PURE__ */
|
|
4667
|
-
var CheckIcon2 = () => /* @__PURE__ */
|
|
4887
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
4888
|
+
var import_react_dom5 = __toESM(require("react-dom"), 1);
|
|
4889
|
+
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" }));
|
|
4890
|
+
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
4891
|
function normaliseOptions(options) {
|
|
4669
4892
|
return options.map((o) => typeof o === "string" ? { value: o, label: o } : o);
|
|
4670
4893
|
}
|
|
4671
|
-
var Select =
|
|
4894
|
+
var Select = import_react24.default.forwardRef(function Select2(props, ref) {
|
|
4672
4895
|
const {
|
|
4673
4896
|
options: rawOptions,
|
|
4674
4897
|
value,
|
|
@@ -4687,14 +4910,14 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4687
4910
|
style,
|
|
4688
4911
|
sx
|
|
4689
4912
|
} = 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,
|
|
4913
|
+
const [open, setOpen] = (0, import_react24.useState)(false);
|
|
4914
|
+
const [focusedIdx, setFocusedIdx] = (0, import_react24.useState)(-1);
|
|
4915
|
+
const [popupStyle, setPopupStyle] = (0, import_react24.useState)({});
|
|
4916
|
+
const containerRef = (0, import_react24.useRef)(null);
|
|
4917
|
+
const listRef = (0, import_react24.useRef)(null);
|
|
4918
|
+
const inputId = (0, import_react24.useRef)(`rf-sel-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
4696
4919
|
const sxClass = useSx(sx);
|
|
4697
|
-
const calcPopupStyle = (0,
|
|
4920
|
+
const calcPopupStyle = (0, import_react24.useCallback)(() => {
|
|
4698
4921
|
if (!containerRef.current) return;
|
|
4699
4922
|
const rect = containerRef.current.getBoundingClientRect();
|
|
4700
4923
|
setPopupStyle({
|
|
@@ -4705,28 +4928,28 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4705
4928
|
}, []);
|
|
4706
4929
|
const options = normaliseOptions(rawOptions);
|
|
4707
4930
|
const selectedValues = multiple ? Array.isArray(value) ? value : value != null ? [value] : [] : value != null ? [value] : [];
|
|
4708
|
-
const isSelected = (0,
|
|
4931
|
+
const isSelected = (0, import_react24.useCallback)(
|
|
4709
4932
|
(optValue) => selectedValues.includes(optValue),
|
|
4710
4933
|
[selectedValues]
|
|
4711
4934
|
);
|
|
4712
4935
|
const getSelectedLabels = () => options.filter((o) => selectedValues.includes(o.value)).map((o) => o.label);
|
|
4713
4936
|
const hasValue = selectedValues.length > 0;
|
|
4714
4937
|
const isFloating = Boolean(open || hasValue);
|
|
4715
|
-
const openPopup = (0,
|
|
4938
|
+
const openPopup = (0, import_react24.useCallback)(() => {
|
|
4716
4939
|
if (disabled) return;
|
|
4717
4940
|
calcPopupStyle();
|
|
4718
4941
|
setOpen(true);
|
|
4719
4942
|
setFocusedIdx(-1);
|
|
4720
4943
|
}, [disabled, calcPopupStyle]);
|
|
4721
|
-
const closePopup = (0,
|
|
4944
|
+
const closePopup = (0, import_react24.useCallback)(() => {
|
|
4722
4945
|
setOpen(false);
|
|
4723
4946
|
setFocusedIdx(-1);
|
|
4724
4947
|
}, []);
|
|
4725
|
-
const togglePopup = (0,
|
|
4948
|
+
const togglePopup = (0, import_react24.useCallback)(() => {
|
|
4726
4949
|
if (open) closePopup();
|
|
4727
4950
|
else openPopup();
|
|
4728
4951
|
}, [open, openPopup, closePopup]);
|
|
4729
|
-
(0,
|
|
4952
|
+
(0, import_react24.useEffect)(() => {
|
|
4730
4953
|
if (!open) return;
|
|
4731
4954
|
const handleOutside = (e) => {
|
|
4732
4955
|
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
@@ -4742,7 +4965,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4742
4965
|
window.removeEventListener("resize", calcPopupStyle);
|
|
4743
4966
|
};
|
|
4744
4967
|
}, [open, closePopup, calcPopupStyle]);
|
|
4745
|
-
const selectOption = (0,
|
|
4968
|
+
const selectOption = (0, import_react24.useCallback)((opt) => {
|
|
4746
4969
|
if (opt.disabled) return;
|
|
4747
4970
|
if (multiple) {
|
|
4748
4971
|
const already = isSelected(opt.value);
|
|
@@ -4817,20 +5040,20 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4817
5040
|
if (multiple) {
|
|
4818
5041
|
const labels = getSelectedLabels();
|
|
4819
5042
|
if (labels.length === 0) {
|
|
4820
|
-
return /* @__PURE__ */
|
|
5043
|
+
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
5044
|
}
|
|
4822
5045
|
if (labels.length <= 2) {
|
|
4823
|
-
return /* @__PURE__ */
|
|
5046
|
+
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
5047
|
}
|
|
4825
|
-
return /* @__PURE__ */
|
|
5048
|
+
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
5049
|
}
|
|
4827
5050
|
const selectedOpt = options.find((o) => o.value === value);
|
|
4828
5051
|
if (selectedOpt) {
|
|
4829
|
-
return /* @__PURE__ */
|
|
5052
|
+
return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__display" }, selectedOpt.label);
|
|
4830
5053
|
}
|
|
4831
|
-
return /* @__PURE__ */
|
|
5054
|
+
return /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-select__display${placeholder ? " rf-select__display--placeholder" : ""}` }, placeholder || "\xA0");
|
|
4832
5055
|
};
|
|
4833
|
-
return /* @__PURE__ */
|
|
5056
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
4834
5057
|
"div",
|
|
4835
5058
|
{
|
|
4836
5059
|
ref: (node) => {
|
|
@@ -4841,7 +5064,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4841
5064
|
className: rootClasses,
|
|
4842
5065
|
style
|
|
4843
5066
|
},
|
|
4844
|
-
/* @__PURE__ */
|
|
5067
|
+
/* @__PURE__ */ import_react24.default.createElement(
|
|
4845
5068
|
"div",
|
|
4846
5069
|
{
|
|
4847
5070
|
className: "rf-text-field__wrapper",
|
|
@@ -4855,16 +5078,16 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4855
5078
|
onKeyDown: handleKeyDown
|
|
4856
5079
|
},
|
|
4857
5080
|
renderDisplay(),
|
|
4858
|
-
label && /* @__PURE__ */
|
|
4859
|
-
variant === "outlined" && /* @__PURE__ */
|
|
4860
|
-
/* @__PURE__ */
|
|
5081
|
+
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" }, " *")),
|
|
5082
|
+
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" })),
|
|
5083
|
+
/* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__arrow", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(ChevronDownIcon2, null))
|
|
4861
5084
|
),
|
|
4862
|
-
helperText && /* @__PURE__ */
|
|
4863
|
-
open && !disabled &&
|
|
4864
|
-
/* @__PURE__ */
|
|
5085
|
+
helperText && /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText),
|
|
5086
|
+
open && !disabled && import_react_dom5.default.createPortal(
|
|
5087
|
+
/* @__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
5088
|
const selected = isSelected(opt.value);
|
|
4866
5089
|
const focused = focusedIdx === idx;
|
|
4867
|
-
return /* @__PURE__ */
|
|
5090
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
4868
5091
|
"li",
|
|
4869
5092
|
{
|
|
4870
5093
|
key: opt.value,
|
|
@@ -4883,8 +5106,8 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4883
5106
|
onMouseDown: (e) => e.preventDefault(),
|
|
4884
5107
|
onClick: () => selectOption(opt)
|
|
4885
5108
|
},
|
|
4886
|
-
/* @__PURE__ */
|
|
4887
|
-
/* @__PURE__ */
|
|
5109
|
+
/* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-label" }, opt.label),
|
|
5110
|
+
/* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-check", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(CheckIcon2, null))
|
|
4888
5111
|
);
|
|
4889
5112
|
}))),
|
|
4890
5113
|
document.body
|
|
@@ -4894,7 +5117,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
|
|
|
4894
5117
|
Select.displayName = "Select";
|
|
4895
5118
|
|
|
4896
5119
|
// lib/Slider/Slider.tsx
|
|
4897
|
-
var
|
|
5120
|
+
var import_react25 = __toESM(require("react"), 1);
|
|
4898
5121
|
function clamp(val, min, max) {
|
|
4899
5122
|
return Math.max(min, Math.min(max, val));
|
|
4900
5123
|
}
|
|
@@ -4904,7 +5127,7 @@ function snapToStep(val, min, step) {
|
|
|
4904
5127
|
function pct(val, min, max) {
|
|
4905
5128
|
return (val - min) / (max - min) * 100;
|
|
4906
5129
|
}
|
|
4907
|
-
var Slider =
|
|
5130
|
+
var Slider = import_react25.default.forwardRef(function Slider2(props, ref) {
|
|
4908
5131
|
const {
|
|
4909
5132
|
value,
|
|
4910
5133
|
onChange,
|
|
@@ -4924,9 +5147,9 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
4924
5147
|
sx
|
|
4925
5148
|
} = props;
|
|
4926
5149
|
const sxClass = useSx(sx);
|
|
4927
|
-
const trackRef = (0,
|
|
4928
|
-
const draggingThumb = (0,
|
|
4929
|
-
const [dragging, setDragging] = (0,
|
|
5150
|
+
const trackRef = (0, import_react25.useRef)(null);
|
|
5151
|
+
const draggingThumb = (0, import_react25.useRef)(null);
|
|
5152
|
+
const [dragging, setDragging] = (0, import_react25.useState)(null);
|
|
4930
5153
|
const isRange = range || Array.isArray(value);
|
|
4931
5154
|
const rawVal = value ?? (isRange ? [min, max] : min);
|
|
4932
5155
|
const vals = isRange ? Array.isArray(rawVal) ? [rawVal[0], rawVal[1]] : [rawVal, rawVal] : [rawVal, rawVal];
|
|
@@ -4937,7 +5160,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
4937
5160
|
computedMarks.push(...marks);
|
|
4938
5161
|
}
|
|
4939
5162
|
const hasLabelledMarks = computedMarks.some((m) => m.label);
|
|
4940
|
-
const getValueFromPointer = (0,
|
|
5163
|
+
const getValueFromPointer = (0, import_react25.useCallback)((e) => {
|
|
4941
5164
|
const track = trackRef.current;
|
|
4942
5165
|
if (!track) return min;
|
|
4943
5166
|
const rect = track.getBoundingClientRect();
|
|
@@ -4951,7 +5174,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
4951
5174
|
const raw = min + ratio * (max - min);
|
|
4952
5175
|
return clamp(snapToStep(raw, min, step), min, max);
|
|
4953
5176
|
}, [min, max, step, orientation]);
|
|
4954
|
-
(0,
|
|
5177
|
+
(0, import_react25.useEffect)(() => {
|
|
4955
5178
|
if (dragging === null) return;
|
|
4956
5179
|
const onMove = (e) => {
|
|
4957
5180
|
const newVal = getValueFromPointer(e);
|
|
@@ -5044,7 +5267,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
5044
5267
|
const val = vals[thumb];
|
|
5045
5268
|
const p = pct(val, min, max);
|
|
5046
5269
|
const thumbStyle = orientation === "vertical" ? { bottom: `${p}%`, transform: "translate(-50%, 50%)" } : { left: `${p}%` };
|
|
5047
|
-
return /* @__PURE__ */
|
|
5270
|
+
return /* @__PURE__ */ import_react25.default.createElement(
|
|
5048
5271
|
"div",
|
|
5049
5272
|
{
|
|
5050
5273
|
key: thumb,
|
|
@@ -5060,30 +5283,30 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
5060
5283
|
onPointerDown: (e) => handleThumbPointerDown(e, thumb),
|
|
5061
5284
|
onKeyDown: (e) => handleThumbKeyDown(e, thumb)
|
|
5062
5285
|
},
|
|
5063
|
-
valueLabelDisplay !== "off" && /* @__PURE__ */
|
|
5286
|
+
valueLabelDisplay !== "off" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__value-label", "aria-hidden": "true" }, val)
|
|
5064
5287
|
);
|
|
5065
5288
|
};
|
|
5066
|
-
return /* @__PURE__ */
|
|
5289
|
+
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
5290
|
"div",
|
|
5068
5291
|
{
|
|
5069
5292
|
ref: trackRef,
|
|
5070
5293
|
className: "rf-slider__track-container",
|
|
5071
5294
|
onPointerDown: handleTrackPointerDown
|
|
5072
5295
|
},
|
|
5073
|
-
/* @__PURE__ */
|
|
5074
|
-
/* @__PURE__ */
|
|
5296
|
+
/* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__rail", "aria-hidden": "true" }),
|
|
5297
|
+
/* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__track", style: trackStyle, "aria-hidden": "true" }),
|
|
5075
5298
|
computedMarks.map((mark) => {
|
|
5076
5299
|
const p = pct(mark.value, min, max);
|
|
5077
5300
|
const isActive = isRange ? mark.value >= vals[0] && mark.value <= vals[1] : mark.value <= vals[0];
|
|
5078
5301
|
const markStyle = orientation === "vertical" ? { bottom: `${p}%`, transform: "translate(-50%, 50%)" } : { left: `${p}%` };
|
|
5079
|
-
return /* @__PURE__ */
|
|
5302
|
+
return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, { key: mark.value }, /* @__PURE__ */ import_react25.default.createElement(
|
|
5080
5303
|
"div",
|
|
5081
5304
|
{
|
|
5082
5305
|
className: `rf-slider__mark${isActive ? " rf-slider__mark--active" : ""}`,
|
|
5083
5306
|
style: markStyle,
|
|
5084
5307
|
"aria-hidden": "true"
|
|
5085
5308
|
}
|
|
5086
|
-
), mark.label && orientation === "horizontal" && /* @__PURE__ */
|
|
5309
|
+
), mark.label && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement(
|
|
5087
5310
|
"div",
|
|
5088
5311
|
{
|
|
5089
5312
|
className: "rf-slider__mark-label",
|
|
@@ -5095,13 +5318,13 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
|
|
|
5095
5318
|
}),
|
|
5096
5319
|
renderThumb(0),
|
|
5097
5320
|
isRange && renderThumb(1)
|
|
5098
|
-
), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */
|
|
5321
|
+
), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__marks-labels", "aria-hidden": "true" }));
|
|
5099
5322
|
});
|
|
5100
5323
|
Slider.displayName = "Slider";
|
|
5101
5324
|
|
|
5102
5325
|
// lib/Switch/Switch.tsx
|
|
5103
|
-
var
|
|
5104
|
-
var Switch =
|
|
5326
|
+
var import_react26 = __toESM(require("react"), 1);
|
|
5327
|
+
var Switch = import_react26.default.forwardRef(function Switch2(props, ref) {
|
|
5105
5328
|
const {
|
|
5106
5329
|
checked = false,
|
|
5107
5330
|
onChange,
|
|
@@ -5116,8 +5339,8 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5116
5339
|
sx
|
|
5117
5340
|
} = props;
|
|
5118
5341
|
const sxClass = useSx(sx);
|
|
5119
|
-
const inputRef = (0,
|
|
5120
|
-
const inputId = (0,
|
|
5342
|
+
const inputRef = (0, import_react26.useRef)(null);
|
|
5343
|
+
const inputId = (0, import_react26.useRef)(`rf-sw-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
5121
5344
|
const handleChange = (e) => {
|
|
5122
5345
|
if (!disabled) onChange?.(e.target.checked);
|
|
5123
5346
|
};
|
|
@@ -5131,7 +5354,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5131
5354
|
sxClass,
|
|
5132
5355
|
className
|
|
5133
5356
|
].filter(Boolean).join(" ");
|
|
5134
|
-
return /* @__PURE__ */
|
|
5357
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
5135
5358
|
"label",
|
|
5136
5359
|
{
|
|
5137
5360
|
ref,
|
|
@@ -5139,7 +5362,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5139
5362
|
style,
|
|
5140
5363
|
htmlFor: inputId
|
|
5141
5364
|
},
|
|
5142
|
-
/* @__PURE__ */
|
|
5365
|
+
/* @__PURE__ */ import_react26.default.createElement(
|
|
5143
5366
|
"input",
|
|
5144
5367
|
{
|
|
5145
5368
|
ref: inputRef,
|
|
@@ -5154,17 +5377,17 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
|
|
|
5154
5377
|
"aria-checked": checked
|
|
5155
5378
|
}
|
|
5156
5379
|
),
|
|
5157
|
-
/* @__PURE__ */
|
|
5158
|
-
label && /* @__PURE__ */
|
|
5380
|
+
/* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__track", "aria-hidden": "true" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__thumb" })),
|
|
5381
|
+
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
5382
|
);
|
|
5160
5383
|
});
|
|
5161
5384
|
Switch.displayName = "Switch";
|
|
5162
5385
|
|
|
5163
5386
|
// lib/RadioGroup/RadioGroup.tsx
|
|
5164
|
-
var
|
|
5165
|
-
var RadioGroupContext = (0,
|
|
5166
|
-
var Radio =
|
|
5167
|
-
const ctx = (0,
|
|
5387
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
5388
|
+
var RadioGroupContext = (0, import_react27.createContext)({});
|
|
5389
|
+
var Radio = import_react27.default.forwardRef(function Radio2(props, ref) {
|
|
5390
|
+
const ctx = (0, import_react27.useContext)(RadioGroupContext);
|
|
5168
5391
|
const {
|
|
5169
5392
|
value,
|
|
5170
5393
|
label,
|
|
@@ -5176,7 +5399,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
|
|
|
5176
5399
|
sx
|
|
5177
5400
|
} = props;
|
|
5178
5401
|
const sxClass = useSx(sx);
|
|
5179
|
-
const inputId = (0,
|
|
5402
|
+
const inputId = (0, import_react27.useRef)(`rf-radio-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
5180
5403
|
const isChecked = checkedProp !== void 0 ? checkedProp : ctx.value === value;
|
|
5181
5404
|
const isDisabled = disabledProp !== void 0 ? disabledProp : ctx.disabled ?? false;
|
|
5182
5405
|
const size = sizeProp ?? ctx.size ?? "medium";
|
|
@@ -5194,7 +5417,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
|
|
|
5194
5417
|
isDisabled ? "rf-radio--disabled" : "",
|
|
5195
5418
|
sxClass
|
|
5196
5419
|
].filter(Boolean).join(" ");
|
|
5197
|
-
return /* @__PURE__ */
|
|
5420
|
+
return /* @__PURE__ */ import_react27.default.createElement("label", { ref, className: rootClasses, htmlFor: inputId }, /* @__PURE__ */ import_react27.default.createElement(
|
|
5198
5421
|
"input",
|
|
5199
5422
|
{
|
|
5200
5423
|
id: inputId,
|
|
@@ -5207,10 +5430,10 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
|
|
|
5207
5430
|
name,
|
|
5208
5431
|
"aria-checked": isChecked
|
|
5209
5432
|
}
|
|
5210
|
-
), /* @__PURE__ */
|
|
5433
|
+
), /* @__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
5434
|
});
|
|
5212
5435
|
Radio.displayName = "Radio";
|
|
5213
|
-
var RadioGroup =
|
|
5436
|
+
var RadioGroup = import_react27.default.forwardRef(function RadioGroup2(props, ref) {
|
|
5214
5437
|
const {
|
|
5215
5438
|
value,
|
|
5216
5439
|
onChange,
|
|
@@ -5226,7 +5449,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5226
5449
|
sx
|
|
5227
5450
|
} = props;
|
|
5228
5451
|
const sxClass = useSx(sx);
|
|
5229
|
-
const groupName = (0,
|
|
5452
|
+
const groupName = (0, import_react27.useRef)(name ?? `rf-rg-${Math.random().toString(36).slice(2, 9)}`).current;
|
|
5230
5453
|
const rootClasses = [
|
|
5231
5454
|
"rf-radio-group",
|
|
5232
5455
|
row ? "rf-radio-group--row" : "",
|
|
@@ -5234,7 +5457,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5234
5457
|
sxClass,
|
|
5235
5458
|
className
|
|
5236
5459
|
].filter(Boolean).join(" ");
|
|
5237
|
-
return /* @__PURE__ */
|
|
5460
|
+
return /* @__PURE__ */ import_react27.default.createElement(RadioGroupContext.Provider, { value: { value, onChange, name: groupName, disabled, size } }, /* @__PURE__ */ import_react27.default.createElement(
|
|
5238
5461
|
"div",
|
|
5239
5462
|
{
|
|
5240
5463
|
ref,
|
|
@@ -5243,8 +5466,8 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5243
5466
|
role: "radiogroup",
|
|
5244
5467
|
"aria-label": label
|
|
5245
5468
|
},
|
|
5246
|
-
label && /* @__PURE__ */
|
|
5247
|
-
options ? options.map((opt) => /* @__PURE__ */
|
|
5469
|
+
label && /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio-group__label" }, label),
|
|
5470
|
+
options ? options.map((opt) => /* @__PURE__ */ import_react27.default.createElement(
|
|
5248
5471
|
Radio,
|
|
5249
5472
|
{
|
|
5250
5473
|
key: opt.value,
|
|
@@ -5258,9 +5481,9 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
|
|
|
5258
5481
|
RadioGroup.displayName = "RadioGroup";
|
|
5259
5482
|
|
|
5260
5483
|
// lib/Rating/Rating.tsx
|
|
5261
|
-
var
|
|
5484
|
+
var import_react28 = __toESM(require("react"), 1);
|
|
5262
5485
|
var starSize = { small: 18, medium: 24, large: 32 };
|
|
5263
|
-
var FilledStarIcon = ({ size }) => /* @__PURE__ */
|
|
5486
|
+
var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
|
|
5264
5487
|
"svg",
|
|
5265
5488
|
{
|
|
5266
5489
|
width: size,
|
|
@@ -5269,9 +5492,9 @@ var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.create
|
|
|
5269
5492
|
fill: "currentColor",
|
|
5270
5493
|
"aria-hidden": "true"
|
|
5271
5494
|
},
|
|
5272
|
-
/* @__PURE__ */
|
|
5495
|
+
/* @__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
5496
|
);
|
|
5274
|
-
var EmptyStarIcon = ({ size }) => /* @__PURE__ */
|
|
5497
|
+
var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
|
|
5275
5498
|
"svg",
|
|
5276
5499
|
{
|
|
5277
5500
|
width: size,
|
|
@@ -5282,9 +5505,9 @@ var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createE
|
|
|
5282
5505
|
strokeWidth: "1.6",
|
|
5283
5506
|
"aria-hidden": "true"
|
|
5284
5507
|
},
|
|
5285
|
-
/* @__PURE__ */
|
|
5508
|
+
/* @__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
5509
|
);
|
|
5287
|
-
var Rating =
|
|
5510
|
+
var Rating = import_react28.default.forwardRef(function Rating2(props, ref) {
|
|
5288
5511
|
const {
|
|
5289
5512
|
value,
|
|
5290
5513
|
onChange,
|
|
@@ -5302,13 +5525,13 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5302
5525
|
sx
|
|
5303
5526
|
} = props;
|
|
5304
5527
|
const sxClass = useSx(sx);
|
|
5305
|
-
const [hoverValue, setHoverValue] = (0,
|
|
5306
|
-
const starsRef = (0,
|
|
5528
|
+
const [hoverValue, setHoverValue] = (0, import_react28.useState)(null);
|
|
5529
|
+
const starsRef = (0, import_react28.useRef)(null);
|
|
5307
5530
|
const currentValue = value ?? 0;
|
|
5308
5531
|
const displayValue = hoverValue !== null ? hoverValue : currentValue;
|
|
5309
5532
|
const iconSize = starSize[size] ?? 24;
|
|
5310
|
-
const renderedFilledIcon = icon ?? /* @__PURE__ */
|
|
5311
|
-
const renderedEmptyIcon = emptyIcon ?? /* @__PURE__ */
|
|
5533
|
+
const renderedFilledIcon = icon ?? /* @__PURE__ */ import_react28.default.createElement(FilledStarIcon, { size: iconSize });
|
|
5534
|
+
const renderedEmptyIcon = emptyIcon ?? /* @__PURE__ */ import_react28.default.createElement(EmptyStarIcon, { size: iconSize });
|
|
5312
5535
|
const isFilled = (pos) => {
|
|
5313
5536
|
if (highlightSelectedOnly) return displayValue === pos;
|
|
5314
5537
|
return displayValue >= pos - (precision < 1 ? 0.25 : 0);
|
|
@@ -5369,7 +5592,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5369
5592
|
sxClass,
|
|
5370
5593
|
className
|
|
5371
5594
|
].filter(Boolean).join(" ");
|
|
5372
|
-
return /* @__PURE__ */
|
|
5595
|
+
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
5596
|
"div",
|
|
5374
5597
|
{
|
|
5375
5598
|
ref: starsRef,
|
|
@@ -5386,7 +5609,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5386
5609
|
"rf-rating__item",
|
|
5387
5610
|
isHovered ? "rf-rating__item--hovered" : ""
|
|
5388
5611
|
].filter(Boolean).join(" ");
|
|
5389
|
-
return /* @__PURE__ */
|
|
5612
|
+
return /* @__PURE__ */ import_react28.default.createElement(
|
|
5390
5613
|
"button",
|
|
5391
5614
|
{
|
|
5392
5615
|
key: pos,
|
|
@@ -5401,15 +5624,15 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5401
5624
|
},
|
|
5402
5625
|
halfFilled ? (
|
|
5403
5626
|
// Half-star: show half filled + half empty
|
|
5404
|
-
/* @__PURE__ */
|
|
5627
|
+
/* @__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
5628
|
"span",
|
|
5406
5629
|
{
|
|
5407
5630
|
className: "rf-rating__half-left",
|
|
5408
5631
|
style: { position: "absolute", inset: 0, width: "50%", overflow: "hidden" }
|
|
5409
5632
|
},
|
|
5410
|
-
/* @__PURE__ */
|
|
5633
|
+
/* @__PURE__ */ import_react28.default.createElement("span", { className: "rf-rating__icon--filled" }, renderedFilledIcon)
|
|
5411
5634
|
))
|
|
5412
|
-
) : /* @__PURE__ */
|
|
5635
|
+
) : /* @__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
5636
|
);
|
|
5414
5637
|
})
|
|
5415
5638
|
));
|
|
@@ -5417,11 +5640,11 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
|
|
|
5417
5640
|
Rating.displayName = "Rating";
|
|
5418
5641
|
|
|
5419
5642
|
// lib/ToggleButton/ToggleButton.tsx
|
|
5420
|
-
var
|
|
5421
|
-
var ToggleGroupContext = (0,
|
|
5422
|
-
var ToggleButton =
|
|
5643
|
+
var import_react29 = __toESM(require("react"), 1);
|
|
5644
|
+
var ToggleGroupContext = (0, import_react29.createContext)({});
|
|
5645
|
+
var ToggleButton = import_react29.default.forwardRef(
|
|
5423
5646
|
function ToggleButton2(props, ref) {
|
|
5424
|
-
const ctx = (0,
|
|
5647
|
+
const ctx = (0, import_react29.useContext)(ToggleGroupContext);
|
|
5425
5648
|
const { value, children, disabled: disabledProp, selected: selectedProp, sx } = props;
|
|
5426
5649
|
const sxClass = useSx(sx);
|
|
5427
5650
|
let isSelected = false;
|
|
@@ -5452,7 +5675,7 @@ var ToggleButton = import_react28.default.forwardRef(
|
|
|
5452
5675
|
}
|
|
5453
5676
|
}
|
|
5454
5677
|
};
|
|
5455
|
-
const isIconOnly =
|
|
5678
|
+
const isIconOnly = import_react29.default.Children.count(children) === 1 && import_react29.default.isValidElement(children) && children.type === "svg";
|
|
5456
5679
|
const btnClasses = [
|
|
5457
5680
|
"rf-toggle-btn",
|
|
5458
5681
|
isSelected ? "rf-toggle-btn--selected" : "",
|
|
@@ -5460,7 +5683,7 @@ var ToggleButton = import_react28.default.forwardRef(
|
|
|
5460
5683
|
isIconOnly ? "rf-toggle-btn--icon-only" : "",
|
|
5461
5684
|
sxClass
|
|
5462
5685
|
].filter(Boolean).join(" ");
|
|
5463
|
-
return /* @__PURE__ */
|
|
5686
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
5464
5687
|
"button",
|
|
5465
5688
|
{
|
|
5466
5689
|
ref,
|
|
@@ -5475,7 +5698,7 @@ var ToggleButton = import_react28.default.forwardRef(
|
|
|
5475
5698
|
}
|
|
5476
5699
|
);
|
|
5477
5700
|
ToggleButton.displayName = "ToggleButton";
|
|
5478
|
-
var ToggleButtonGroup =
|
|
5701
|
+
var ToggleButtonGroup = import_react29.default.forwardRef(
|
|
5479
5702
|
function ToggleButtonGroup2(props, ref) {
|
|
5480
5703
|
const {
|
|
5481
5704
|
value,
|
|
@@ -5502,7 +5725,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
|
|
|
5502
5725
|
sxClass,
|
|
5503
5726
|
className
|
|
5504
5727
|
].filter(Boolean).join(" ");
|
|
5505
|
-
return /* @__PURE__ */
|
|
5728
|
+
return /* @__PURE__ */ import_react29.default.createElement(ToggleGroupContext.Provider, { value: { value, onChange, exclusive, size, disabled, color } }, /* @__PURE__ */ import_react29.default.createElement(
|
|
5506
5729
|
"div",
|
|
5507
5730
|
{
|
|
5508
5731
|
ref,
|
|
@@ -5518,7 +5741,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
|
|
|
5518
5741
|
ToggleButtonGroup.displayName = "ToggleButtonGroup";
|
|
5519
5742
|
|
|
5520
5743
|
// lib/Avatar/Avatar.tsx
|
|
5521
|
-
var
|
|
5744
|
+
var import_react30 = __toESM(require("react"), 1);
|
|
5522
5745
|
var DEFAULT_PALETTE = [
|
|
5523
5746
|
"#a41b06",
|
|
5524
5747
|
"#8b1605",
|
|
@@ -5553,7 +5776,7 @@ function getInitials(alt) {
|
|
|
5553
5776
|
}
|
|
5554
5777
|
return words[0][0].toUpperCase();
|
|
5555
5778
|
}
|
|
5556
|
-
var Avatar =
|
|
5779
|
+
var Avatar = import_react30.default.forwardRef(
|
|
5557
5780
|
({
|
|
5558
5781
|
src,
|
|
5559
5782
|
alt,
|
|
@@ -5568,7 +5791,7 @@ var Avatar = import_react29.default.forwardRef(
|
|
|
5568
5791
|
sx
|
|
5569
5792
|
}, ref) => {
|
|
5570
5793
|
const sxClass = useSx(sx);
|
|
5571
|
-
const [imgError, setImgError] = (0,
|
|
5794
|
+
const [imgError, setImgError] = (0, import_react30.useState)(false);
|
|
5572
5795
|
const { className: sizeClass, style: sizeStyle } = getSizeStyle(size);
|
|
5573
5796
|
const bgColor = color || DEFAULT_PALETTE[_avatarColorIndex % DEFAULT_PALETTE.length];
|
|
5574
5797
|
const classes = [
|
|
@@ -5588,7 +5811,7 @@ var Avatar = import_react29.default.forwardRef(
|
|
|
5588
5811
|
inlineStyle.backgroundColor = bgColor;
|
|
5589
5812
|
inlineStyle.color = "#ffffff";
|
|
5590
5813
|
}
|
|
5591
|
-
return /* @__PURE__ */
|
|
5814
|
+
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
5815
|
"img",
|
|
5593
5816
|
{
|
|
5594
5817
|
src,
|
|
@@ -5597,7 +5820,7 @@ var Avatar = import_react29.default.forwardRef(
|
|
|
5597
5820
|
onError: () => setImgError(true),
|
|
5598
5821
|
...imgProps
|
|
5599
5822
|
}
|
|
5600
|
-
) : /* @__PURE__ */
|
|
5823
|
+
) : /* @__PURE__ */ import_react30.default.createElement("span", { className: "rf-avatar__initials" }, content));
|
|
5601
5824
|
}
|
|
5602
5825
|
);
|
|
5603
5826
|
Avatar.displayName = "Avatar";
|
|
@@ -5610,7 +5833,7 @@ var AvatarGroup = ({
|
|
|
5610
5833
|
sx
|
|
5611
5834
|
}) => {
|
|
5612
5835
|
const sxClass = useSx(sx);
|
|
5613
|
-
const childArray =
|
|
5836
|
+
const childArray = import_react30.default.Children.toArray(children);
|
|
5614
5837
|
const totalCount = childArray.length;
|
|
5615
5838
|
const overflowCount = totalCount > max ? totalCount - (max - 1) : 0;
|
|
5616
5839
|
const visibleChildren = overflowCount > 0 ? childArray.slice(0, max - 1) : childArray;
|
|
@@ -5624,7 +5847,7 @@ var AvatarGroup = ({
|
|
|
5624
5847
|
}
|
|
5625
5848
|
const classes = ["rf-avatar-group", spacingClass, sxClass, className].filter(Boolean).join(" ");
|
|
5626
5849
|
const avatarsToRender = [...visibleChildren].reverse();
|
|
5627
|
-
return /* @__PURE__ */
|
|
5850
|
+
return /* @__PURE__ */ import_react30.default.createElement("div", { className: classes, style, role: "group" }, overflowCount > 0 && /* @__PURE__ */ import_react30.default.createElement(
|
|
5628
5851
|
Avatar,
|
|
5629
5852
|
{
|
|
5630
5853
|
className: "rf-avatar-group__overflow",
|
|
@@ -5636,7 +5859,7 @@ var AvatarGroup = ({
|
|
|
5636
5859
|
), avatarsToRender.map((child, i) => {
|
|
5637
5860
|
if (typeof spacing === "number") {
|
|
5638
5861
|
const typedChild = child;
|
|
5639
|
-
return
|
|
5862
|
+
return import_react30.default.cloneElement(typedChild, {
|
|
5640
5863
|
key: i,
|
|
5641
5864
|
style: {
|
|
5642
5865
|
marginLeft: i < avatarsToRender.length - 1 ? -spacing : 0,
|
|
@@ -5650,7 +5873,7 @@ var AvatarGroup = ({
|
|
|
5650
5873
|
AvatarGroup.displayName = "AvatarGroup";
|
|
5651
5874
|
|
|
5652
5875
|
// lib/Chip/Chip.tsx
|
|
5653
|
-
var
|
|
5876
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
5654
5877
|
var Chip = ({
|
|
5655
5878
|
label,
|
|
5656
5879
|
onDelete,
|
|
@@ -5688,7 +5911,7 @@ var Chip = ({
|
|
|
5688
5911
|
onDelete();
|
|
5689
5912
|
}
|
|
5690
5913
|
};
|
|
5691
|
-
return /* @__PURE__ */
|
|
5914
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
5692
5915
|
"div",
|
|
5693
5916
|
{
|
|
5694
5917
|
className: classes,
|
|
@@ -5699,10 +5922,10 @@ var Chip = ({
|
|
|
5699
5922
|
onKeyDown: !disabled ? handleKeyDown : void 0,
|
|
5700
5923
|
"aria-disabled": disabled || void 0
|
|
5701
5924
|
},
|
|
5702
|
-
avatar && /* @__PURE__ */
|
|
5703
|
-
!avatar && icon && /* @__PURE__ */
|
|
5704
|
-
/* @__PURE__ */
|
|
5705
|
-
onDelete && /* @__PURE__ */
|
|
5925
|
+
avatar && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__avatar" }, avatar),
|
|
5926
|
+
!avatar && icon && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__icon", "aria-hidden": "true" }, icon),
|
|
5927
|
+
/* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__label" }, label),
|
|
5928
|
+
onDelete && /* @__PURE__ */ import_react31.default.createElement(
|
|
5706
5929
|
"button",
|
|
5707
5930
|
{
|
|
5708
5931
|
className: "rf-chip__delete",
|
|
@@ -5723,7 +5946,7 @@ var Chip = ({
|
|
|
5723
5946
|
Chip.displayName = "Chip";
|
|
5724
5947
|
|
|
5725
5948
|
// lib/Divider/Divider.tsx
|
|
5726
|
-
var
|
|
5949
|
+
var import_react32 = __toESM(require("react"), 1);
|
|
5727
5950
|
var Divider = ({
|
|
5728
5951
|
orientation = "horizontal",
|
|
5729
5952
|
variant = "fullWidth",
|
|
@@ -5737,7 +5960,7 @@ var Divider = ({
|
|
|
5737
5960
|
sx
|
|
5738
5961
|
}) => {
|
|
5739
5962
|
const sxClass = useSx(sx);
|
|
5740
|
-
const hasChildren =
|
|
5963
|
+
const hasChildren = import_react32.default.Children.count(children) > 0;
|
|
5741
5964
|
const variantClass = variant === "inset" ? "rf-divider--inset" : variant === "middle" ? "rf-divider--middle" : "";
|
|
5742
5965
|
const classes = [
|
|
5743
5966
|
"rf-divider",
|
|
@@ -5753,7 +5976,7 @@ var Divider = ({
|
|
|
5753
5976
|
].filter(Boolean).join(" ");
|
|
5754
5977
|
const Tag = component || (hasChildren ? "div" : "hr");
|
|
5755
5978
|
if (!hasChildren) {
|
|
5756
|
-
return /* @__PURE__ */
|
|
5979
|
+
return /* @__PURE__ */ import_react32.default.createElement(
|
|
5757
5980
|
Tag,
|
|
5758
5981
|
{
|
|
5759
5982
|
className: classes,
|
|
@@ -5762,7 +5985,7 @@ var Divider = ({
|
|
|
5762
5985
|
}
|
|
5763
5986
|
);
|
|
5764
5987
|
}
|
|
5765
|
-
return /* @__PURE__ */
|
|
5988
|
+
return /* @__PURE__ */ import_react32.default.createElement(
|
|
5766
5989
|
Tag,
|
|
5767
5990
|
{
|
|
5768
5991
|
className: classes,
|
|
@@ -5770,13 +5993,13 @@ var Divider = ({
|
|
|
5770
5993
|
role: "separator",
|
|
5771
5994
|
"aria-orientation": orientation
|
|
5772
5995
|
},
|
|
5773
|
-
/* @__PURE__ */
|
|
5996
|
+
/* @__PURE__ */ import_react32.default.createElement("span", { className: "rf-divider__text" }, children)
|
|
5774
5997
|
);
|
|
5775
5998
|
};
|
|
5776
5999
|
Divider.displayName = "Divider";
|
|
5777
6000
|
|
|
5778
6001
|
// lib/List/List.tsx
|
|
5779
|
-
var
|
|
6002
|
+
var import_react33 = __toESM(require("react"), 1);
|
|
5780
6003
|
var List = ({
|
|
5781
6004
|
dense = false,
|
|
5782
6005
|
disablePadding = false,
|
|
@@ -5794,7 +6017,7 @@ var List = ({
|
|
|
5794
6017
|
sxClass,
|
|
5795
6018
|
className
|
|
5796
6019
|
].filter(Boolean).join(" ");
|
|
5797
|
-
return /* @__PURE__ */
|
|
6020
|
+
return /* @__PURE__ */ import_react33.default.createElement("ul", { className: classes, style }, subheader, children);
|
|
5798
6021
|
};
|
|
5799
6022
|
List.displayName = "List";
|
|
5800
6023
|
var ListItem = ({
|
|
@@ -5818,7 +6041,7 @@ var ListItem = ({
|
|
|
5818
6041
|
sxClass,
|
|
5819
6042
|
className
|
|
5820
6043
|
].filter(Boolean).join(" ");
|
|
5821
|
-
return /* @__PURE__ */
|
|
6044
|
+
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
6045
|
};
|
|
5823
6046
|
ListItem.displayName = "ListItem";
|
|
5824
6047
|
var ListItemText = ({
|
|
@@ -5835,12 +6058,12 @@ var ListItemText = ({
|
|
|
5835
6058
|
inset ? "rf-list-item-text--inset" : "",
|
|
5836
6059
|
sxClass
|
|
5837
6060
|
].filter(Boolean).join(" ");
|
|
5838
|
-
return /* @__PURE__ */
|
|
6061
|
+
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
6062
|
};
|
|
5840
6063
|
ListItemText.displayName = "ListItemText";
|
|
5841
6064
|
var ListItemIcon = ({ children, sx }) => {
|
|
5842
6065
|
const sxClass = useSx(sx);
|
|
5843
|
-
return /* @__PURE__ */
|
|
6066
|
+
return /* @__PURE__ */ import_react33.default.createElement("div", { className: ["rf-list-item-icon", sxClass].filter(Boolean).join(" "), "aria-hidden": "true" }, children);
|
|
5844
6067
|
};
|
|
5845
6068
|
ListItemIcon.displayName = "ListItemIcon";
|
|
5846
6069
|
var ListItemButton = ({
|
|
@@ -5872,7 +6095,7 @@ var ListItemButton = ({
|
|
|
5872
6095
|
"aria-disabled": disabled || void 0
|
|
5873
6096
|
};
|
|
5874
6097
|
if (href) {
|
|
5875
|
-
return /* @__PURE__ */
|
|
6098
|
+
return /* @__PURE__ */ import_react33.default.createElement(
|
|
5876
6099
|
"a",
|
|
5877
6100
|
{
|
|
5878
6101
|
href,
|
|
@@ -5883,7 +6106,7 @@ var ListItemButton = ({
|
|
|
5883
6106
|
children
|
|
5884
6107
|
);
|
|
5885
6108
|
}
|
|
5886
|
-
return /* @__PURE__ */
|
|
6109
|
+
return /* @__PURE__ */ import_react33.default.createElement(
|
|
5887
6110
|
"button",
|
|
5888
6111
|
{
|
|
5889
6112
|
type: "button",
|
|
@@ -5912,12 +6135,12 @@ var ListSubheader = ({
|
|
|
5912
6135
|
color !== "default" ? `rf-list-subheader--color-${color}` : "",
|
|
5913
6136
|
sxClass
|
|
5914
6137
|
].filter(Boolean).join(" ");
|
|
5915
|
-
return /* @__PURE__ */
|
|
6138
|
+
return /* @__PURE__ */ import_react33.default.createElement("li", { className: classes, role: "presentation", "aria-label": typeof children === "string" ? children : void 0 }, children);
|
|
5916
6139
|
};
|
|
5917
6140
|
ListSubheader.displayName = "ListSubheader";
|
|
5918
6141
|
|
|
5919
6142
|
// lib/Typography/Typography.tsx
|
|
5920
|
-
var
|
|
6143
|
+
var import_react34 = __toESM(require("react"), 1);
|
|
5921
6144
|
var VARIANT_ELEMENT_MAP = {
|
|
5922
6145
|
h1: "h1",
|
|
5923
6146
|
h2: "h2",
|
|
@@ -5925,349 +6148,124 @@ var VARIANT_ELEMENT_MAP = {
|
|
|
5925
6148
|
h4: "h4",
|
|
5926
6149
|
h5: "h5",
|
|
5927
6150
|
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,
|
|
6151
|
+
subtitle1: "h6",
|
|
6152
|
+
subtitle2: "h6",
|
|
6153
|
+
body1: "p",
|
|
6154
|
+
body2: "p",
|
|
6155
|
+
caption: "span",
|
|
6156
|
+
overline: "span",
|
|
6157
|
+
button: "span"
|
|
6158
|
+
};
|
|
6159
|
+
var COLOR_CLASSES = {
|
|
6160
|
+
primary: "rf-typography--color-primary",
|
|
6161
|
+
secondary: "rf-typography--color-secondary",
|
|
6162
|
+
textPrimary: "rf-typography--color-textPrimary",
|
|
6163
|
+
textSecondary: "rf-typography--color-textSecondary",
|
|
6164
|
+
error: "rf-typography--color-error"
|
|
6165
|
+
};
|
|
6166
|
+
var WEIGHT_CLASSES = {
|
|
6167
|
+
light: "rf-typography--weight-light",
|
|
6168
|
+
regular: "rf-typography--weight-regular",
|
|
6169
|
+
medium: "rf-typography--weight-medium",
|
|
6170
|
+
bold: "rf-typography--weight-bold"
|
|
6171
|
+
};
|
|
6172
|
+
var Typography = ({
|
|
6173
|
+
variant = "body1",
|
|
6174
|
+
component,
|
|
6175
|
+
align = "inherit",
|
|
6176
|
+
color,
|
|
6177
|
+
noWrap = false,
|
|
6178
|
+
gutterBottom = false,
|
|
6179
|
+
paragraph = false,
|
|
6180
|
+
fontWeight,
|
|
6138
6181
|
children,
|
|
6139
|
-
followCursor = false,
|
|
6140
6182
|
className = "",
|
|
6141
6183
|
style,
|
|
6142
6184
|
sx
|
|
6143
6185
|
}) => {
|
|
6144
6186
|
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);
|
|
6187
|
+
const Tag = component || (paragraph ? "p" : VARIANT_ELEMENT_MAP[variant] || "span");
|
|
6188
|
+
const colorClass = color ? COLOR_CLASSES[color] : "";
|
|
6189
|
+
const colorStyle = color && !COLOR_CLASSES[color] ? { color } : {};
|
|
6190
|
+
let weightClass = "";
|
|
6191
|
+
let weightStyle = {};
|
|
6192
|
+
if (fontWeight !== void 0) {
|
|
6193
|
+
if (typeof fontWeight === "string") {
|
|
6194
|
+
weightClass = WEIGHT_CLASSES[fontWeight] || "";
|
|
6201
6195
|
} else {
|
|
6202
|
-
|
|
6196
|
+
weightStyle = { fontWeight };
|
|
6203
6197
|
}
|
|
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
6198
|
}
|
|
6227
|
-
const
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6199
|
+
const alignClass = align !== "inherit" ? `rf-typography--align-${align}` : "";
|
|
6200
|
+
const classes = [
|
|
6201
|
+
"rf-typography",
|
|
6202
|
+
`rf-typography--${variant}`,
|
|
6203
|
+
alignClass,
|
|
6204
|
+
colorClass,
|
|
6205
|
+
weightClass,
|
|
6206
|
+
noWrap ? "rf-typography--no-wrap" : "",
|
|
6207
|
+
gutterBottom ? "rf-typography--gutter-bottom" : "",
|
|
6208
|
+
paragraph ? "rf-typography--paragraph" : "",
|
|
6231
6209
|
sxClass,
|
|
6232
6210
|
className
|
|
6233
6211
|
].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
|
-
|
|
6212
|
+
const inlineStyle = {
|
|
6213
|
+
...colorStyle,
|
|
6214
|
+
...weightStyle,
|
|
6215
|
+
...style
|
|
6216
|
+
};
|
|
6217
|
+
return /* @__PURE__ */ import_react34.default.createElement(Tag, { className: classes, style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0 }, children);
|
|
6218
|
+
};
|
|
6219
|
+
Typography.displayName = "Typography";
|
|
6220
|
+
|
|
6221
|
+
// lib/Skeleton/Skeleton.tsx
|
|
6222
|
+
var import_react35 = __toESM(require("react"), 1);
|
|
6223
|
+
var Skeleton = ({
|
|
6224
|
+
variant = "text",
|
|
6225
|
+
width,
|
|
6226
|
+
height,
|
|
6227
|
+
animation = "pulse",
|
|
6228
|
+
className = "",
|
|
6229
|
+
style,
|
|
6230
|
+
sx
|
|
6231
|
+
}) => {
|
|
6232
|
+
const sxClass = useSx(sx);
|
|
6233
|
+
const animationClass = animation === "pulse" ? "rf-skeleton--pulse" : animation === "wave" ? "rf-skeleton--wave" : "rf-skeleton--no-animation";
|
|
6234
|
+
const classes = [
|
|
6235
|
+
"rf-skeleton",
|
|
6236
|
+
`rf-skeleton--${variant}`,
|
|
6237
|
+
animationClass,
|
|
6238
|
+
sxClass,
|
|
6239
|
+
className
|
|
6240
|
+
].filter(Boolean).join(" ");
|
|
6241
|
+
const inlineStyle = {
|
|
6242
|
+
...width !== void 0 ? { width: typeof width === "number" ? width : width } : {},
|
|
6243
|
+
...height !== void 0 ? { height: typeof height === "number" ? height : height } : {},
|
|
6244
|
+
...style
|
|
6245
|
+
};
|
|
6246
|
+
if (variant === "text" && !height) {
|
|
6247
|
+
}
|
|
6248
|
+
if (variant === "circular" && !width && !height) {
|
|
6249
|
+
inlineStyle.width = 40;
|
|
6250
|
+
inlineStyle.height = 40;
|
|
6251
|
+
}
|
|
6252
|
+
if (variant === "rectangular" && !height) {
|
|
6253
|
+
inlineStyle.height = 140;
|
|
6254
|
+
}
|
|
6255
|
+
if (variant === "rounded" && !height) {
|
|
6256
|
+
inlineStyle.height = 140;
|
|
6257
|
+
}
|
|
6258
|
+
return /* @__PURE__ */ import_react35.default.createElement(
|
|
6260
6259
|
"span",
|
|
6261
6260
|
{
|
|
6262
|
-
|
|
6263
|
-
style:
|
|
6264
|
-
"aria-
|
|
6265
|
-
|
|
6266
|
-
}
|
|
6267
|
-
|
|
6268
|
-
), import_react_dom5.default.createPortal(tooltipElement, document.body));
|
|
6261
|
+
className: classes,
|
|
6262
|
+
style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0,
|
|
6263
|
+
"aria-busy": "true",
|
|
6264
|
+
"aria-live": "polite"
|
|
6265
|
+
}
|
|
6266
|
+
);
|
|
6269
6267
|
};
|
|
6270
|
-
|
|
6268
|
+
Skeleton.displayName = "Skeleton";
|
|
6271
6269
|
|
|
6272
6270
|
// lib/Box/Box.tsx
|
|
6273
6271
|
var React88 = __toESM(require("react"), 1);
|
|
@@ -8712,7 +8710,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
|
|
|
8712
8710
|
setPaused(false);
|
|
8713
8711
|
}, []);
|
|
8714
8712
|
(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(
|
|
8713
|
+
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
8714
|
"button",
|
|
8717
8715
|
{
|
|
8718
8716
|
className: `toolbar-btn ${speaking ? "is-active" : ""}`,
|
|
@@ -8722,11 +8720,10 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
|
|
|
8722
8720
|
} else {
|
|
8723
8721
|
setShowPanel(!showPanel);
|
|
8724
8722
|
}
|
|
8725
|
-
}
|
|
8726
|
-
title: "Text to Speech"
|
|
8723
|
+
}
|
|
8727
8724
|
},
|
|
8728
8725
|
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(
|
|
8726
|
+
)), 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
8727
|
"select",
|
|
8731
8728
|
{
|
|
8732
8729
|
className: "tts-select",
|
|
@@ -8748,7 +8745,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
|
|
|
8748
8745
|
), /* @__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
8746
|
handleSpeak();
|
|
8750
8747
|
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: "
|
|
8748
|
+
} }, "\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
8749
|
});
|
|
8753
8750
|
var TextToSpeech_default = TextToSpeech;
|
|
8754
8751
|
|
|
@@ -8867,7 +8864,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
|
|
|
8867
8864
|
}, []);
|
|
8868
8865
|
(0, import_react52.useImperativeHandle)(ref, () => ({ stop: stopListening }), [stopListening]);
|
|
8869
8866
|
if (!supported) {
|
|
8870
|
-
return /* @__PURE__ */ import_react52.default.createElement(
|
|
8867
|
+
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
8868
|
}
|
|
8872
8869
|
const LANGUAGES2 = [
|
|
8873
8870
|
{ code: "en-US", label: "English (US)" },
|
|
@@ -8889,7 +8886,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
|
|
|
8889
8886
|
{ code: "kn-IN", label: "Kannada" },
|
|
8890
8887
|
{ code: "ml-IN", label: "Malayalam" }
|
|
8891
8888
|
];
|
|
8892
|
-
return /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-wrapper", ref: panelRef }, /* @__PURE__ */ import_react52.default.createElement(
|
|
8889
|
+
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
8890
|
"button",
|
|
8894
8891
|
{
|
|
8895
8892
|
className: `toolbar-btn ${listening ? "is-active stt-recording" : ""}`,
|
|
@@ -8899,11 +8896,10 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
|
|
|
8899
8896
|
} else {
|
|
8900
8897
|
setShowPanel(!showPanel);
|
|
8901
8898
|
}
|
|
8902
|
-
}
|
|
8903
|
-
title: listening ? "Stop recording" : "Speech to Text"
|
|
8899
|
+
}
|
|
8904
8900
|
},
|
|
8905
8901
|
"\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(
|
|
8902
|
+
)), 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
8903
|
"select",
|
|
8908
8904
|
{
|
|
8909
8905
|
className: "stt-select",
|
|
@@ -9057,16 +9053,15 @@ var AICommands = ({ editor, onAICommand }) => {
|
|
|
9057
9053
|
setPreviousResults([]);
|
|
9058
9054
|
}, []);
|
|
9059
9055
|
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(
|
|
9056
|
+
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
9057
|
"button",
|
|
9062
9058
|
{
|
|
9063
9059
|
className: `toolbar-btn ${open ? "is-active" : ""}`,
|
|
9064
|
-
onClick: () => setOpen(!open)
|
|
9065
|
-
title: "AI Commands"
|
|
9060
|
+
onClick: () => setOpen(!open)
|
|
9066
9061
|
},
|
|
9067
9062
|
/* @__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
9063
|
/* @__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(
|
|
9064
|
+
)), 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
9065
|
"button",
|
|
9071
9066
|
{
|
|
9072
9067
|
key: cmd.id,
|
|
@@ -9083,16 +9078,15 @@ var AICommands = ({ editor, onAICommand }) => {
|
|
|
9083
9078
|
onChange: (e) => setPromptText(e.target.value),
|
|
9084
9079
|
rows: 3
|
|
9085
9080
|
}
|
|
9086
|
-
), /* @__PURE__ */ import_react53.default.createElement(
|
|
9081
|
+
), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Run with custom prompt", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9087
9082
|
"button",
|
|
9088
9083
|
{
|
|
9089
9084
|
className: "ai-modal-robot-btn",
|
|
9090
9085
|
onClick: () => fetchAIResult(promptText, originalText),
|
|
9091
|
-
disabled: loading
|
|
9092
|
-
title: "Run with custom prompt"
|
|
9086
|
+
disabled: loading
|
|
9093
9087
|
},
|
|
9094
9088
|
/* @__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(
|
|
9089
|
+
)))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9096
9090
|
"button",
|
|
9097
9091
|
{
|
|
9098
9092
|
className: "ai-modal-action-btn ai-modal-insert-btn",
|
|
@@ -9108,16 +9102,15 @@ var AICommands = ({ editor, onAICommand }) => {
|
|
|
9108
9102
|
disabled: loading || !resultText
|
|
9109
9103
|
},
|
|
9110
9104
|
"Insert After"
|
|
9111
|
-
), /* @__PURE__ */ import_react53.default.createElement(
|
|
9105
|
+
), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Generate another response", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
9112
9106
|
"button",
|
|
9113
9107
|
{
|
|
9114
9108
|
className: "ai-modal-action-btn ai-modal-refresh-btn",
|
|
9115
9109
|
onClick: handleRefresh,
|
|
9116
|
-
disabled: loading
|
|
9117
|
-
title: "Generate another response"
|
|
9110
|
+
disabled: loading
|
|
9118
9111
|
},
|
|
9119
9112
|
/* @__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")))),
|
|
9113
|
+
))), /* @__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
9114
|
document.body
|
|
9122
9115
|
));
|
|
9123
9116
|
};
|
|
@@ -9335,7 +9328,7 @@ var TranslateModal = ({ editor, onClose, onTranslate, initialSource, initialTarg
|
|
|
9335
9328
|
},
|
|
9336
9329
|
/* @__PURE__ */ import_react54.default.createElement("span", { className: "translate-code" }, lang.code),
|
|
9337
9330
|
/* @__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
|
|
9331
|
+
)))), /* @__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
9332
|
"input",
|
|
9340
9333
|
{
|
|
9341
9334
|
type: "text",
|
|
@@ -10217,16 +10210,15 @@ var Dropdown = ({ trigger, children, className = "", keepOpen = false }) => {
|
|
|
10217
10210
|
};
|
|
10218
10211
|
position();
|
|
10219
10212
|
}, [open]);
|
|
10220
|
-
return /* @__PURE__ */ import_react55.default.createElement("div", { className: `dropdown ${className}`, ref }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10213
|
+
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
10214
|
"button",
|
|
10222
10215
|
{
|
|
10223
10216
|
className: `toolbar-btn ${trigger.className || ""}`,
|
|
10224
|
-
onClick: () => setOpen(!open)
|
|
10225
|
-
title: trigger.title
|
|
10217
|
+
onClick: () => setOpen(!open)
|
|
10226
10218
|
},
|
|
10227
10219
|
trigger.label,
|
|
10228
10220
|
/* @__PURE__ */ import_react55.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")
|
|
10229
|
-
), open && (0, import_react_dom13.createPortal)(
|
|
10221
|
+
)), open && (0, import_react_dom13.createPortal)(
|
|
10230
10222
|
/* @__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
10223
|
document.body
|
|
10232
10224
|
));
|
|
@@ -10472,16 +10464,14 @@ var ColorPickerPanel = ({ editor, onClose }) => {
|
|
|
10472
10464
|
onClick: () => setTab("text")
|
|
10473
10465
|
},
|
|
10474
10466
|
"Text"
|
|
10475
|
-
)), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-grid" }, COLOR_PALETTE.map((color, i) => /* @__PURE__ */ import_react55.default.createElement(
|
|
10467
|
+
)), /* @__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
10468
|
"button",
|
|
10477
10469
|
{
|
|
10478
|
-
key: i,
|
|
10479
10470
|
className: `color-picker-swatch ${color === "#ffffff" ? "white-swatch" : ""}${activeColor && activeColor.toLowerCase() === color.toLowerCase() ? " swatch-active" : ""}`,
|
|
10480
10471
|
style: { background: color },
|
|
10481
|
-
onClick: () => applyColor(color)
|
|
10482
|
-
title: color
|
|
10472
|
+
onClick: () => applyColor(color)
|
|
10483
10473
|
}
|
|
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
|
|
10474
|
+
)))), /* @__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
10475
|
};
|
|
10486
10476
|
var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTextToSpeech, onClose, onImageUpload, visibleButtons, isFullscreen, onToggleFullscreen }) => {
|
|
10487
10477
|
const [, setEditorState] = (0, import_react55.useState)(0);
|
|
@@ -10562,25 +10552,23 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10562
10552
|
setTimeout(() => setTranslateStatus(""), 2e3);
|
|
10563
10553
|
}, [editor, translateSource, translateTarget, onTranslate]);
|
|
10564
10554
|
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(
|
|
10555
|
+
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
10556
|
"button",
|
|
10567
10557
|
{
|
|
10568
10558
|
className: "toolbar-btn",
|
|
10569
10559
|
onClick: () => editor.chain().focus().undo().run(),
|
|
10570
|
-
disabled: !editor.can().undo()
|
|
10571
|
-
title: "Undo (Ctrl+Z)"
|
|
10560
|
+
disabled: !editor.can().undo()
|
|
10572
10561
|
},
|
|
10573
10562
|
/* @__PURE__ */ import_react55.default.createElement(IconUndo, null)
|
|
10574
|
-
), show("redo") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10563
|
+
)), show("redo") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Redo (Ctrl+Y)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10575
10564
|
"button",
|
|
10576
10565
|
{
|
|
10577
10566
|
className: "toolbar-btn",
|
|
10578
10567
|
onClick: () => editor.chain().focus().redo().run(),
|
|
10579
|
-
disabled: !editor.can().redo()
|
|
10580
|
-
title: "Redo (Ctrl+Y)"
|
|
10568
|
+
disabled: !editor.can().redo()
|
|
10581
10569
|
},
|
|
10582
10570
|
/* @__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(
|
|
10571
|
+
))), 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
10572
|
Dropdown,
|
|
10585
10573
|
{
|
|
10586
10574
|
trigger: {
|
|
@@ -10711,23 +10699,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10711
10699
|
keepOpen: true
|
|
10712
10700
|
},
|
|
10713
10701
|
(close) => /* @__PURE__ */ import_react55.default.createElement(ColorPickerPanel, { editor, onClose: close })
|
|
10714
|
-
), show("bold") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10702
|
+
), show("bold") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Bold (Ctrl+B)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10715
10703
|
"button",
|
|
10716
10704
|
{
|
|
10717
10705
|
className: `toolbar-btn ${editor.isActive("bold") ? "is-active" : ""}`,
|
|
10718
|
-
onClick: () => editor.chain().focus().toggleBold().run()
|
|
10719
|
-
title: "Bold (Ctrl+B)"
|
|
10706
|
+
onClick: () => editor.chain().focus().toggleBold().run()
|
|
10720
10707
|
},
|
|
10721
10708
|
/* @__PURE__ */ import_react55.default.createElement(IconBold, null)
|
|
10722
|
-
), show("italic") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10709
|
+
)), show("italic") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Italic (Ctrl+I)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10723
10710
|
"button",
|
|
10724
10711
|
{
|
|
10725
10712
|
className: `toolbar-btn ${editor.isActive("italic") ? "is-active" : ""}`,
|
|
10726
|
-
onClick: () => editor.chain().focus().toggleItalic().run()
|
|
10727
|
-
title: "Italic (Ctrl+I)"
|
|
10713
|
+
onClick: () => editor.chain().focus().toggleItalic().run()
|
|
10728
10714
|
},
|
|
10729
10715
|
/* @__PURE__ */ import_react55.default.createElement(IconItalic, null)
|
|
10730
|
-
), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10716
|
+
)), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10731
10717
|
Dropdown,
|
|
10732
10718
|
{
|
|
10733
10719
|
trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconStrike, null), title: "Text decoration", className: editor.isActive("strike") ? "is-active" : "" }
|
|
@@ -10752,15 +10738,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10752
10738
|
c.run();
|
|
10753
10739
|
}
|
|
10754
10740
|
} }, "\u2715 Clear formatting")
|
|
10755
|
-
), show("link") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10741
|
+
), show("link") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Insert Link", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10756
10742
|
"button",
|
|
10757
10743
|
{
|
|
10758
10744
|
className: `toolbar-btn ${editor.isActive("link") ? "is-active" : ""}`,
|
|
10759
|
-
onClick: setLink
|
|
10760
|
-
title: "Insert Link"
|
|
10745
|
+
onClick: setLink
|
|
10761
10746
|
},
|
|
10762
10747
|
/* @__PURE__ */ import_react55.default.createElement(IconLink, null)
|
|
10763
|
-
), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10748
|
+
)), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10764
10749
|
Dropdown,
|
|
10765
10750
|
{
|
|
10766
10751
|
trigger: {
|
|
@@ -10787,15 +10772,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10787
10772
|
lh
|
|
10788
10773
|
);
|
|
10789
10774
|
})
|
|
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(
|
|
10775
|
+
)), (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
10776
|
"button",
|
|
10792
10777
|
{
|
|
10793
10778
|
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"
|
|
10779
|
+
onClick: () => editor.chain().focus().toggleBulletList().run()
|
|
10796
10780
|
},
|
|
10797
10781
|
/* @__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 }, [
|
|
10782
|
+
)), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
|
|
10799
10783
|
{ label: "Default", style: null, icon: "\u2022" },
|
|
10800
10784
|
{ label: "Circle", style: "circle", icon: "\u25CB" },
|
|
10801
10785
|
{ label: "Dot", style: "disc", icon: "\u2219" },
|
|
@@ -10828,15 +10812,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10828
10812
|
/* @__PURE__ */ import_react55.default.createElement("span", { className: "bullet-style-icon" }, item.icon),
|
|
10829
10813
|
" ",
|
|
10830
10814
|
item.label
|
|
10831
|
-
)))), show("ol") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10815
|
+
)))), 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
10816
|
"button",
|
|
10833
10817
|
{
|
|
10834
10818
|
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"
|
|
10819
|
+
onClick: () => editor.chain().focus().toggleOrderedList().run()
|
|
10837
10820
|
},
|
|
10838
10821
|
/* @__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 }, [
|
|
10822
|
+
)), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
|
|
10840
10823
|
{ label: "Default", style: "decimal", icon: "1." },
|
|
10841
10824
|
{ label: "Lower Alpha", style: "lower-alpha", icon: "a." },
|
|
10842
10825
|
{ label: "Lower Greek", style: "lower-greek", icon: "\u03B1." },
|
|
@@ -10896,7 +10879,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10896
10879
|
" ",
|
|
10897
10880
|
item.label
|
|
10898
10881
|
))
|
|
10899
|
-
), show("indent") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10882
|
+
), show("indent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Increase Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10900
10883
|
"button",
|
|
10901
10884
|
{
|
|
10902
10885
|
className: "toolbar-btn",
|
|
@@ -10913,11 +10896,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10913
10896
|
});
|
|
10914
10897
|
return true;
|
|
10915
10898
|
}).run();
|
|
10916
|
-
}
|
|
10917
|
-
title: "Increase Indent"
|
|
10899
|
+
}
|
|
10918
10900
|
},
|
|
10919
10901
|
/* @__PURE__ */ import_react55.default.createElement(IconIndentIncrease, null)
|
|
10920
|
-
), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10902
|
+
)), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Decrease Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10921
10903
|
"button",
|
|
10922
10904
|
{
|
|
10923
10905
|
className: "toolbar-btn",
|
|
@@ -10934,35 +10916,31 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10934
10916
|
});
|
|
10935
10917
|
return true;
|
|
10936
10918
|
}).run();
|
|
10937
|
-
}
|
|
10938
|
-
title: "Decrease Indent"
|
|
10919
|
+
}
|
|
10939
10920
|
},
|
|
10940
10921
|
/* @__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(
|
|
10922
|
+
))), 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
10923
|
"button",
|
|
10943
10924
|
{
|
|
10944
10925
|
className: "toolbar-btn",
|
|
10945
|
-
onClick: () => document.execCommand("cut")
|
|
10946
|
-
title: "Cut (Ctrl+X)"
|
|
10926
|
+
onClick: () => document.execCommand("cut")
|
|
10947
10927
|
},
|
|
10948
10928
|
/* @__PURE__ */ import_react55.default.createElement(IconCut, null)
|
|
10949
|
-
), show("copy") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10929
|
+
)), show("copy") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Copy selected text", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10950
10930
|
"button",
|
|
10951
10931
|
{
|
|
10952
10932
|
className: "toolbar-btn",
|
|
10953
|
-
onClick: handleCopy
|
|
10954
|
-
title: "Copy selected text"
|
|
10933
|
+
onClick: handleCopy
|
|
10955
10934
|
},
|
|
10956
10935
|
copySuccess ? /* @__PURE__ */ import_react55.default.createElement(IconCheck, null) : /* @__PURE__ */ import_react55.default.createElement(IconCopy, null)
|
|
10957
|
-
), show("paste") && /* @__PURE__ */ import_react55.default.createElement(
|
|
10936
|
+
)), show("paste") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Paste (Ctrl+V)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10958
10937
|
"button",
|
|
10959
10938
|
{
|
|
10960
10939
|
className: "toolbar-btn",
|
|
10961
|
-
onClick: handlePaste
|
|
10962
|
-
title: "Paste (Ctrl+V)"
|
|
10940
|
+
onClick: handlePaste
|
|
10963
10941
|
},
|
|
10964
10942
|
/* @__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(
|
|
10943
|
+
)), 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
10944
|
"button",
|
|
10967
10945
|
{
|
|
10968
10946
|
key: char,
|
|
@@ -10994,23 +10972,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
10994
10972
|
}
|
|
10995
10973
|
} }, "</>", " Inline Code"),
|
|
10996
10974
|
/* @__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(
|
|
10975
|
+
), show("fullscreen") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Toggle Fullscreen", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
10998
10976
|
"button",
|
|
10999
10977
|
{
|
|
11000
10978
|
className: `toolbar-btn ${isFullscreen ? "is-active" : ""}`,
|
|
11001
|
-
onClick: onToggleFullscreen
|
|
11002
|
-
title: "Toggle Fullscreen"
|
|
10979
|
+
onClick: onToggleFullscreen
|
|
11003
10980
|
},
|
|
11004
10981
|
/* @__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(
|
|
10982
|
+
)), 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
10983
|
"button",
|
|
11007
10984
|
{
|
|
11008
10985
|
className: "toolbar-btn",
|
|
11009
|
-
onClick: handleQuickTranslate
|
|
11010
|
-
title: "Translate selected text"
|
|
10986
|
+
onClick: handleQuickTranslate
|
|
11011
10987
|
},
|
|
11012
10988
|
/* @__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(
|
|
10989
|
+
)), /* @__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
10990
|
"button",
|
|
11015
10991
|
{
|
|
11016
10992
|
className: `toolbar-btn ${todoEnabled ? "is-active" : ""}`,
|
|
@@ -11051,11 +11027,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
11051
11027
|
}).run();
|
|
11052
11028
|
}
|
|
11053
11029
|
}
|
|
11054
|
-
}
|
|
11055
|
-
title: todoEnabled ? "Disable Task List" : "Enable Task List"
|
|
11030
|
+
}
|
|
11056
11031
|
},
|
|
11057
11032
|
/* @__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) => {
|
|
11033
|
+
)), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Task status", className: "todo-arrow-btn" }, keepOpen: true }, ["todo", "working", "blocked", "resolved"].map((status) => {
|
|
11059
11034
|
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
11035
|
const labels = { todo: "Todo", working: "Working", blocked: "Blocked", resolved: "Resolved" };
|
|
11061
11036
|
return /* @__PURE__ */ import_react55.default.createElement("button", { key: status, className: "dropdown-item task-status-item", onClick: () => {
|
|
@@ -11092,7 +11067,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
11092
11067
|
return true;
|
|
11093
11068
|
}).run();
|
|
11094
11069
|
} }, /* @__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(
|
|
11070
|
+
})))), 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
11071
|
"button",
|
|
11097
11072
|
{
|
|
11098
11073
|
className: "toolbar-btn btn-cross",
|
|
@@ -11106,11 +11081,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
|
|
|
11106
11081
|
} catch {
|
|
11107
11082
|
}
|
|
11108
11083
|
onClose();
|
|
11109
|
-
}
|
|
11110
|
-
title: "Close"
|
|
11084
|
+
}
|
|
11111
11085
|
},
|
|
11112
11086
|
/* @__PURE__ */ import_react55.default.createElement(closeIcon_default, { color: "#a81c08" })
|
|
11113
|
-
)), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
|
|
11087
|
+
))), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
|
|
11114
11088
|
TranslateModal_default,
|
|
11115
11089
|
{
|
|
11116
11090
|
editor,
|
|
@@ -11194,15 +11168,14 @@ var ImagePropertiesModal = ({ editor, node, onClose }) => {
|
|
|
11194
11168
|
value: width,
|
|
11195
11169
|
onChange: (e) => handleWidthChange(e.target.value)
|
|
11196
11170
|
}
|
|
11197
|
-
), /* @__PURE__ */ import_react56.default.createElement(
|
|
11171
|
+
), /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement(
|
|
11198
11172
|
"button",
|
|
11199
11173
|
{
|
|
11200
11174
|
className: `lock-btn ${lockRatio ? "locked" : ""}`,
|
|
11201
|
-
onClick: () => setLockRatio(!lockRatio)
|
|
11202
|
-
title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
|
|
11175
|
+
onClick: () => setLockRatio(!lockRatio)
|
|
11203
11176
|
},
|
|
11204
11177
|
lockRatio ? "\u{1F512}" : "\u{1F513}"
|
|
11205
|
-
), /* @__PURE__ */ import_react56.default.createElement(
|
|
11178
|
+
)), /* @__PURE__ */ import_react56.default.createElement(
|
|
11206
11179
|
"input",
|
|
11207
11180
|
{
|
|
11208
11181
|
type: "number",
|
|
@@ -11387,13 +11360,13 @@ var ImageToolbar = ({ editor }) => {
|
|
|
11387
11360
|
style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
|
|
11388
11361
|
onMouseDown: (e) => e.preventDefault()
|
|
11389
11362
|
},
|
|
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: () => {
|
|
11363
|
+
/* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
|
|
11364
|
+
/* @__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")),
|
|
11365
|
+
/* @__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)),
|
|
11366
|
+
/* @__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
11367
|
setShowAlign(!showAlign);
|
|
11395
11368
|
setShowVAlign(false);
|
|
11396
|
-
}
|
|
11369
|
+
} }, "\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
11370
|
), showModal && /* @__PURE__ */ import_react56.default.createElement(
|
|
11398
11371
|
ImagePropertiesModal,
|
|
11399
11372
|
{
|
|
@@ -11476,15 +11449,14 @@ var VideoPropertiesModal = ({ editor, node, nodeType, onClose }) => {
|
|
|
11476
11449
|
value: width,
|
|
11477
11450
|
onChange: (e) => handleWidthChange(e.target.value)
|
|
11478
11451
|
}
|
|
11479
|
-
), /* @__PURE__ */ import_react57.default.createElement(
|
|
11452
|
+
), /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
11480
11453
|
"button",
|
|
11481
11454
|
{
|
|
11482
11455
|
className: `lock-btn ${lockRatio ? "locked" : ""}`,
|
|
11483
|
-
onClick: () => setLockRatio(!lockRatio)
|
|
11484
|
-
title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
|
|
11456
|
+
onClick: () => setLockRatio(!lockRatio)
|
|
11485
11457
|
},
|
|
11486
11458
|
lockRatio ? "\u{1F512}" : "\u{1F513}"
|
|
11487
|
-
), /* @__PURE__ */ import_react57.default.createElement(
|
|
11459
|
+
)), /* @__PURE__ */ import_react57.default.createElement(
|
|
11488
11460
|
"input",
|
|
11489
11461
|
{
|
|
11490
11462
|
type: "number",
|
|
@@ -11611,13 +11583,13 @@ var VideoToolbar = ({ editor }) => {
|
|
|
11611
11583
|
style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
|
|
11612
11584
|
onMouseDown: (e) => e.preventDefault()
|
|
11613
11585
|
},
|
|
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: () => {
|
|
11586
|
+
/* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
|
|
11587
|
+
/* @__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")),
|
|
11588
|
+
/* @__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)),
|
|
11589
|
+
/* @__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
11590
|
setShowSize(!showSize);
|
|
11619
11591
|
setShowAlign(false);
|
|
11620
|
-
}
|
|
11592
|
+
} }, /* @__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
11593
|
handleResize("small");
|
|
11622
11594
|
setShowSize(false);
|
|
11623
11595
|
} }, "Small (320x180)"), /* @__PURE__ */ import_react57.default.createElement("button", { className: "dropdown-item", onClick: () => {
|
|
@@ -11630,10 +11602,10 @@ var VideoToolbar = ({ editor }) => {
|
|
|
11630
11602
|
handleResize("full");
|
|
11631
11603
|
setShowSize(false);
|
|
11632
11604
|
} }, "Full (854x480)"))),
|
|
11633
|
-
/* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
|
|
11605
|
+
/* @__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
11606
|
setShowAlign(!showAlign);
|
|
11635
11607
|
setShowSize(false);
|
|
11636
|
-
}
|
|
11608
|
+
} }, "\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
11609
|
), showModal && /* @__PURE__ */ import_react57.default.createElement(
|
|
11638
11610
|
VideoPropertiesModal,
|
|
11639
11611
|
{
|
|
@@ -11716,101 +11688,19 @@ var TableToolbar = ({ editor }) => {
|
|
|
11716
11688
|
style: { top: pos.top, left: pos.left },
|
|
11717
11689
|
onMouseDown: prevent
|
|
11718
11690
|
},
|
|
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
|
-
),
|
|
11691
|
+
/* @__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))),
|
|
11692
|
+
/* @__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))),
|
|
11693
|
+
/* @__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
11694
|
/* @__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
|
-
),
|
|
11695
|
+
/* @__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))),
|
|
11696
|
+
/* @__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))),
|
|
11697
|
+
/* @__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
11698
|
/* @__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
|
-
),
|
|
11699
|
+
/* @__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))),
|
|
11700
|
+
/* @__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
11701
|
/* @__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
|
-
)
|
|
11702
|
+
/* @__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))),
|
|
11703
|
+
/* @__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
11704
|
),
|
|
11815
11705
|
document.body
|
|
11816
11706
|
);
|