remoraid 2.19.4 → 2.20.2
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/core/index.cjs +281 -251
- package/dist/core/index.d.ts +153 -133
- package/dist/core/index.js +268 -243
- package/dist/core/styles.css +6 -1
- package/dist/jsonforms/index.cjs +20 -11
- package/dist/jsonforms/index.js +57 -17
- package/dist/server/index.d.ts +45 -6
- package/package.json +3 -2
package/dist/core/index.cjs
CHANGED
|
@@ -1001,7 +1001,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1001
1001
|
}
|
|
1002
1002
|
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
|
|
1003
1003
|
SetCache.prototype.has = setCacheHas;
|
|
1004
|
-
function
|
|
1004
|
+
function Stack(entries) {
|
|
1005
1005
|
var data = this.__data__ = new ListCache(entries);
|
|
1006
1006
|
this.size = data.size;
|
|
1007
1007
|
}
|
|
@@ -1035,11 +1035,11 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1035
1035
|
this.size = data.size;
|
|
1036
1036
|
return this;
|
|
1037
1037
|
}
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1038
|
+
Stack.prototype.clear = stackClear;
|
|
1039
|
+
Stack.prototype["delete"] = stackDelete;
|
|
1040
|
+
Stack.prototype.get = stackGet;
|
|
1041
|
+
Stack.prototype.has = stackHas;
|
|
1042
|
+
Stack.prototype.set = stackSet;
|
|
1043
1043
|
function arrayLikeKeys(value, inherited) {
|
|
1044
1044
|
var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String) : [], length = result2.length;
|
|
1045
1045
|
for (var key in value) {
|
|
@@ -1155,7 +1155,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1155
1155
|
result2 = initCloneByTag(value, tag, isDeep);
|
|
1156
1156
|
}
|
|
1157
1157
|
}
|
|
1158
|
-
stack || (stack = new
|
|
1158
|
+
stack || (stack = new Stack);
|
|
1159
1159
|
var stacked = stack.get(value);
|
|
1160
1160
|
if (stacked) {
|
|
1161
1161
|
return stacked;
|
|
@@ -1424,21 +1424,21 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1424
1424
|
objIsObj = false;
|
|
1425
1425
|
}
|
|
1426
1426
|
if (isSameTag && !objIsObj) {
|
|
1427
|
-
stack || (stack = new
|
|
1427
|
+
stack || (stack = new Stack);
|
|
1428
1428
|
return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
|
|
1429
1429
|
}
|
|
1430
1430
|
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
|
|
1431
1431
|
var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
|
|
1432
1432
|
if (objIsWrapped || othIsWrapped) {
|
|
1433
1433
|
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
|
|
1434
|
-
stack || (stack = new
|
|
1434
|
+
stack || (stack = new Stack);
|
|
1435
1435
|
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
|
|
1436
1436
|
}
|
|
1437
1437
|
}
|
|
1438
1438
|
if (!isSameTag) {
|
|
1439
1439
|
return false;
|
|
1440
1440
|
}
|
|
1441
|
-
stack || (stack = new
|
|
1441
|
+
stack || (stack = new Stack);
|
|
1442
1442
|
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
|
|
1443
1443
|
}
|
|
1444
1444
|
function baseIsMap(value) {
|
|
@@ -1464,7 +1464,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1464
1464
|
return false;
|
|
1465
1465
|
}
|
|
1466
1466
|
} else {
|
|
1467
|
-
var stack = new
|
|
1467
|
+
var stack = new Stack;
|
|
1468
1468
|
if (customizer) {
|
|
1469
1469
|
var result2 = customizer(objValue, srcValue, key, object, source, stack);
|
|
1470
1470
|
}
|
|
@@ -1560,7 +1560,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1560
1560
|
return;
|
|
1561
1561
|
}
|
|
1562
1562
|
baseFor(source, function(srcValue, key) {
|
|
1563
|
-
stack || (stack = new
|
|
1563
|
+
stack || (stack = new Stack);
|
|
1564
1564
|
if (isObject(srcValue)) {
|
|
1565
1565
|
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
|
|
1566
1566
|
} else {
|
|
@@ -5476,6 +5476,7 @@ __export(exports_core, {
|
|
|
5476
5476
|
isValidElementOfType: () => isValidElementOfType,
|
|
5477
5477
|
getElementTypeName: () => getElementTypeName,
|
|
5478
5478
|
getDefaultWidgetContext: () => getDefaultWidgetContext,
|
|
5479
|
+
getDefaultButtonIconSize: () => getDefaultButtonIconSize,
|
|
5479
5480
|
defaultUserExperienceCookieName: () => defaultUserExperienceCookieName,
|
|
5480
5481
|
defaultUserExperience: () => defaultUserExperience,
|
|
5481
5482
|
defaultSettingsWidgetOptions: () => defaultSettingsWidgetContext,
|
|
@@ -5515,6 +5516,7 @@ __export(exports_core, {
|
|
|
5515
5516
|
FrameLayoutSection: () => FrameLayoutSection,
|
|
5516
5517
|
FrameLayout: () => FrameLayout_default,
|
|
5517
5518
|
FooterVariant: () => FooterVariant,
|
|
5519
|
+
EnvironmentShellVariant: () => EnvironmentShellVariant,
|
|
5518
5520
|
EnvironmentShell: () => EnvironmentShell,
|
|
5519
5521
|
Controls: () => Controls,
|
|
5520
5522
|
ControlButton: () => ControlButton,
|
|
@@ -5529,13 +5531,10 @@ __export(exports_core, {
|
|
|
5529
5531
|
module.exports = __toCommonJS(exports_core);
|
|
5530
5532
|
|
|
5531
5533
|
// src/core/components/RemoraidProvider/WidgetsProvider/index.tsx
|
|
5534
|
+
var import_lodash = __toESM(require_lodash());
|
|
5532
5535
|
var import_react = __toESM(require("react"));
|
|
5533
5536
|
var jsx_dev_runtime = require("react/jsx-dev-runtime");
|
|
5534
|
-
var getDefaultWidgetContext = (configuration) => ({
|
|
5535
|
-
name: configuration.widgetId,
|
|
5536
|
-
selected: true,
|
|
5537
|
-
...configuration.initialValues
|
|
5538
|
-
});
|
|
5537
|
+
var getDefaultWidgetContext = (configuration) => import_lodash.merge({ name: configuration.widgetId, selected: true }, configuration.initialValues);
|
|
5539
5538
|
var widgetsContext = import_react.default.createContext({
|
|
5540
5539
|
widgets: {},
|
|
5541
5540
|
activeWidget: null,
|
|
@@ -5692,6 +5691,7 @@ var RemoraidBreakpoint;
|
|
|
5692
5691
|
var RemoraidIconSize;
|
|
5693
5692
|
((RemoraidIconSize2) => {
|
|
5694
5693
|
RemoraidIconSize2["Tiny"] = "tiny";
|
|
5694
|
+
RemoraidIconSize2["Small"] = "small";
|
|
5695
5695
|
RemoraidIconSize2["Medium"] = "medium";
|
|
5696
5696
|
})(RemoraidIconSize ||= {});
|
|
5697
5697
|
var LayoutType;
|
|
@@ -5743,6 +5743,12 @@ var asElementOrPropsOfType = (type, elementOrProps, additionalErrorMessage) => {
|
|
|
5743
5743
|
}
|
|
5744
5744
|
return elementOrProps;
|
|
5745
5745
|
};
|
|
5746
|
+
var getDefaultButtonIconSize = (buttonSize) => {
|
|
5747
|
+
if (buttonSize === "xs") {
|
|
5748
|
+
return "small" /* Small */;
|
|
5749
|
+
}
|
|
5750
|
+
return "medium" /* Medium */;
|
|
5751
|
+
};
|
|
5746
5752
|
|
|
5747
5753
|
// src/core/components/RemoraidProvider/ThemeProvider/index.tsx
|
|
5748
5754
|
var import_core2 = require("@mantine/core");
|
|
@@ -5785,22 +5791,18 @@ function HydrationStatusProvider({
|
|
|
5785
5791
|
}
|
|
5786
5792
|
|
|
5787
5793
|
// src/core/components/RemoraidProvider/ThemeProvider/index.tsx
|
|
5794
|
+
var import_lodash2 = __toESM(require_lodash());
|
|
5788
5795
|
var jsx_dev_runtime3 = require("react/jsx-dev-runtime");
|
|
5789
|
-
var isMantinePrimaryShade = (primaryShade) => {
|
|
5790
|
-
if (isNaN(Number(primaryShade))) {
|
|
5791
|
-
return true;
|
|
5792
|
-
}
|
|
5793
|
-
return false;
|
|
5794
|
-
};
|
|
5795
5796
|
var createRemoraidTheme = (customTheme, dependencies) => {
|
|
5796
5797
|
const { mantineTheme, colorScheme } = dependencies ?? {};
|
|
5797
|
-
const
|
|
5798
|
-
|
|
5799
|
-
|
|
5798
|
+
const transitionDurations = import_lodash2.merge({
|
|
5799
|
+
["short" /* Short */]: 200,
|
|
5800
|
+
["medium" /* Medium */]: 350,
|
|
5801
|
+
["long" /* Long */]: 500
|
|
5802
|
+
}, customTheme?.transitionDurations);
|
|
5803
|
+
const transparentBackground = customTheme?.transparentBackground ?? (mantineTheme && colorScheme ? colorScheme === "dark" ? import_core2.rgba(mantineTheme.colors.dark[8], 0.8) : import_core2.rgba(mantineTheme.white, 0.8) : undefined);
|
|
5800
5804
|
let spacingPx;
|
|
5801
5805
|
if (mantineTheme && colorScheme) {
|
|
5802
|
-
transparentBackground = colorScheme === "dark" ? import_core2.rgba(mantineTheme.colors.dark[8], 0.8) : import_core2.rgba(mantineTheme.white, 0.8);
|
|
5803
|
-
primaryColor = mantineTheme.colors[mantineTheme.primaryColor][isMantinePrimaryShade(mantineTheme.primaryShade) ? mantineTheme.primaryShade[colorScheme === "auto" ? "light" : colorScheme] : mantineTheme.primaryShade];
|
|
5804
5806
|
spacingPx = {
|
|
5805
5807
|
xs: Number(co((v) => !Number.isNaN(v), Number(import_core2.px(mantineTheme.spacing.xs)), 0)),
|
|
5806
5808
|
sm: Number(co((v) => !Number.isNaN(v), Number(import_core2.px(mantineTheme.spacing.sm)), 0)),
|
|
@@ -5809,72 +5811,72 @@ var createRemoraidTheme = (customTheme, dependencies) => {
|
|
|
5809
5811
|
xl: Number(co((v) => !Number.isNaN(v), Number(import_core2.px(mantineTheme.spacing.xl)), 0))
|
|
5810
5812
|
};
|
|
5811
5813
|
}
|
|
5812
|
-
|
|
5814
|
+
const defaultTheme = {
|
|
5813
5815
|
containerSize: 1300,
|
|
5814
5816
|
jsonStringifySpace: 2,
|
|
5815
5817
|
transparentBackground,
|
|
5816
|
-
primaryColor,
|
|
5817
5818
|
spacingPx,
|
|
5818
|
-
|
|
5819
|
-
transitionDurations: {
|
|
5820
|
-
["short" /* Short */]: 200,
|
|
5821
|
-
["medium" /* Medium */]: 350,
|
|
5822
|
-
["long" /* Long */]: 500,
|
|
5823
|
-
...customTheme?.transitionDurations
|
|
5824
|
-
},
|
|
5819
|
+
transitionDurations,
|
|
5825
5820
|
breakpoints: {
|
|
5826
5821
|
["buttonCollapse" /* ButtonCollapse */]: "md",
|
|
5827
|
-
["badgeGroupCollapse" /* BadgeGroupCollapse */]: "md"
|
|
5828
|
-
...customTheme?.breakpoints
|
|
5829
|
-
},
|
|
5830
|
-
scrollAreaProps: {
|
|
5831
|
-
scrollbarSize: 8,
|
|
5832
|
-
scrollHideDelay: 20,
|
|
5833
|
-
type: "hover",
|
|
5834
|
-
...customTheme?.scrollAreaProps
|
|
5822
|
+
["badgeGroupCollapse" /* BadgeGroupCollapse */]: "md"
|
|
5835
5823
|
},
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5824
|
+
primaryGutter: "md",
|
|
5825
|
+
componentsProps: {
|
|
5826
|
+
alerts: {
|
|
5827
|
+
["negative" /* Negative */]: {
|
|
5828
|
+
icon: import_icons_react.IconAlertCircle,
|
|
5829
|
+
color: "red",
|
|
5830
|
+
title: "Attention!"
|
|
5831
|
+
},
|
|
5832
|
+
["neutral" /* Neutral */]: {
|
|
5833
|
+
icon: import_icons_react.IconInfoCircle,
|
|
5834
|
+
color: mantineTheme?.primaryColor,
|
|
5835
|
+
title: "Information"
|
|
5836
|
+
},
|
|
5837
|
+
["positive" /* Positive */]: {
|
|
5838
|
+
icon: import_icons_react.IconCircleCheck,
|
|
5839
|
+
color: "green",
|
|
5840
|
+
title: "Success"
|
|
5841
|
+
}
|
|
5845
5842
|
},
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5850
|
-
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5843
|
+
icons: {
|
|
5844
|
+
["medium" /* Medium */]: {
|
|
5845
|
+
size: 20,
|
|
5846
|
+
stroke: 2
|
|
5847
|
+
},
|
|
5848
|
+
["small" /* Small */]: {
|
|
5849
|
+
size: 16,
|
|
5850
|
+
stroke: 2.3
|
|
5851
|
+
},
|
|
5852
|
+
["tiny" /* Tiny */]: {
|
|
5853
|
+
size: 12,
|
|
5854
|
+
stroke: 2.6
|
|
5855
|
+
}
|
|
5854
5856
|
},
|
|
5855
|
-
|
|
5856
|
-
|
|
5857
|
-
|
|
5858
|
-
|
|
5859
|
-
variant: "light",
|
|
5860
|
-
color: "green",
|
|
5861
|
-
title: "Success",
|
|
5862
|
-
...customTheme?.alertProps?.positive
|
|
5863
|
-
}
|
|
5864
|
-
},
|
|
5865
|
-
iconProps: {
|
|
5866
|
-
["medium" /* Medium */]: {
|
|
5867
|
-
...defaultMediumIconProps,
|
|
5868
|
-
...customTheme?.iconProps?.medium
|
|
5857
|
+
ScrollArea: {
|
|
5858
|
+
scrollbarSize: 8,
|
|
5859
|
+
scrollHideDelay: 20,
|
|
5860
|
+
type: "hover"
|
|
5869
5861
|
},
|
|
5870
|
-
|
|
5871
|
-
|
|
5872
|
-
|
|
5873
|
-
|
|
5862
|
+
HoverCard: {
|
|
5863
|
+
shadow: "md",
|
|
5864
|
+
withArrow: true,
|
|
5865
|
+
transitionProps: {
|
|
5866
|
+
transition: "pop",
|
|
5867
|
+
duration: transitionDurations.short
|
|
5868
|
+
},
|
|
5869
|
+
styles: {
|
|
5870
|
+
dropdown: { border: "none", background: transparentBackground },
|
|
5871
|
+
arrow: { border: "none" }
|
|
5872
|
+
}
|
|
5873
|
+
},
|
|
5874
|
+
Tooltip: {
|
|
5875
|
+
withArrow: true
|
|
5874
5876
|
}
|
|
5875
|
-
}
|
|
5876
|
-
primaryGutter: "md"
|
|
5877
|
+
}
|
|
5877
5878
|
};
|
|
5879
|
+
return import_lodash2.merge(defaultTheme, customTheme);
|
|
5878
5880
|
};
|
|
5879
5881
|
var themeContext = import_react4.default.createContext(createRemoraidTheme());
|
|
5880
5882
|
var useRemoraidTheme = () => {
|
|
@@ -5906,6 +5908,7 @@ var import_react_cookie2 = require("react-cookie");
|
|
|
5906
5908
|
var import_react6 = require("react");
|
|
5907
5909
|
|
|
5908
5910
|
// src/core/components/UserExperienceProviderWrapper/index.tsx
|
|
5911
|
+
var import_lodash3 = __toESM(require_lodash());
|
|
5909
5912
|
var import_react5 = require("react");
|
|
5910
5913
|
var import_react_cookie = require("react-cookie");
|
|
5911
5914
|
var jsx_dev_runtime4 = require("react/jsx-dev-runtime");
|
|
@@ -5924,10 +5927,7 @@ function UserExperienceProviderWrapper({
|
|
|
5924
5927
|
initialValue
|
|
5925
5928
|
}) {
|
|
5926
5929
|
const [cookies, setCookie] = import_react_cookie.useCookies();
|
|
5927
|
-
|
|
5928
|
-
if (typeof initialValue === "object" && typeof initialUserExperience === "object") {
|
|
5929
|
-
initialUserExperience = { ...initialUserExperience, ...initialValue };
|
|
5930
|
-
}
|
|
5930
|
+
const initialUserExperience = import_lodash3.merge(defaultUserExperience, initialValue);
|
|
5931
5931
|
const [userExperience, setUserExperience] = import_react5.useState(initialUserExperience);
|
|
5932
5932
|
const [processedCookie, setProcessedCookie] = import_react5.useState(false);
|
|
5933
5933
|
const updateUserExperience = (p) => {
|
|
@@ -6089,6 +6089,7 @@ function NavbarLink({
|
|
|
6089
6089
|
href,
|
|
6090
6090
|
indicator
|
|
6091
6091
|
}) {
|
|
6092
|
+
const theme = useRemoraidTheme();
|
|
6092
6093
|
const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = import_react9.useState(false);
|
|
6093
6094
|
const iconProps = {
|
|
6094
6095
|
size: iconSize,
|
|
@@ -6097,9 +6098,9 @@ function NavbarLink({
|
|
|
6097
6098
|
const Icon2 = icon ?? import_icons_react2.IconLink;
|
|
6098
6099
|
if (!href) {
|
|
6099
6100
|
return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(import_core3.Tooltip, {
|
|
6101
|
+
...theme.componentsProps.Tooltip,
|
|
6100
6102
|
label,
|
|
6101
6103
|
position: "right",
|
|
6102
|
-
transitionProps: { duration: 0 },
|
|
6103
6104
|
children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(import_core3.UnstyledButton, {
|
|
6104
6105
|
onClick,
|
|
6105
6106
|
className: "remoraid-navbar-minimal-link",
|
|
@@ -6125,9 +6126,9 @@ function NavbarLink({
|
|
|
6125
6126
|
}, undefined, false, undefined, this)
|
|
6126
6127
|
}, undefined, false, undefined, this);
|
|
6127
6128
|
return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(import_core3.Tooltip, {
|
|
6129
|
+
...theme.componentsProps.Tooltip,
|
|
6128
6130
|
label,
|
|
6129
6131
|
position: "right",
|
|
6130
|
-
transitionProps: { duration: 0 },
|
|
6131
6132
|
children: indicator === undefined ? button : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(import_core3.Indicator, {
|
|
6132
6133
|
withBorder: true,
|
|
6133
6134
|
size: 13,
|
|
@@ -6324,7 +6325,7 @@ function PageContainer({
|
|
|
6324
6325
|
}
|
|
6325
6326
|
|
|
6326
6327
|
// src/core/components/FrameLayout/Element/index.tsx
|
|
6327
|
-
var
|
|
6328
|
+
var import_lodash4 = __toESM(require_lodash());
|
|
6328
6329
|
var jsx_dev_runtime12 = require("react/jsx-dev-runtime");
|
|
6329
6330
|
function Element2({
|
|
6330
6331
|
section,
|
|
@@ -6364,7 +6365,7 @@ function Element2({
|
|
|
6364
6365
|
target: layout.sections[section],
|
|
6365
6366
|
children: includeContainer ? /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(import_core6.Box, {
|
|
6366
6367
|
"data-hidden": hidden,
|
|
6367
|
-
...
|
|
6368
|
+
...import_lodash4.merge(containerProps, componentsProps?.container),
|
|
6368
6369
|
className: clsx_default("remoraid-frame-layout-element", containerProps?.className, componentsProps?.container?.className),
|
|
6369
6370
|
children: element
|
|
6370
6371
|
}, undefined, false, undefined, this) : element
|
|
@@ -6372,6 +6373,7 @@ function Element2({
|
|
|
6372
6373
|
}
|
|
6373
6374
|
|
|
6374
6375
|
// src/core/components/FrameLayout/index.tsx
|
|
6376
|
+
var import_lodash5 = __toESM(require_lodash());
|
|
6375
6377
|
var jsx_dev_runtime13 = require("react/jsx-dev-runtime");
|
|
6376
6378
|
var layoutContext = import_react10.createContext(null);
|
|
6377
6379
|
var useFrameLayout = () => {
|
|
@@ -6486,8 +6488,7 @@ function FrameLayout({
|
|
|
6486
6488
|
}, undefined, false, undefined, this),
|
|
6487
6489
|
includeScrollArea ? /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(import_core7.ScrollArea, {
|
|
6488
6490
|
flex: 1,
|
|
6489
|
-
...theme.
|
|
6490
|
-
...componentsProps?.ScrollArea,
|
|
6491
|
+
...import_lodash5.merge({}, theme.componentsProps.ScrollArea, componentsProps?.ScrollArea),
|
|
6491
6492
|
children: contentSection
|
|
6492
6493
|
}, undefined, false, undefined, this) : contentSection,
|
|
6493
6494
|
/* @__PURE__ */ jsx_dev_runtime13.jsxDEV(import_core7.Stack, {
|
|
@@ -6517,7 +6518,7 @@ var FrameLayout_default = Object.assign(FrameLayout, {
|
|
|
6517
6518
|
});
|
|
6518
6519
|
|
|
6519
6520
|
// src/core/components/AppShell/index.tsx
|
|
6520
|
-
var
|
|
6521
|
+
var import_lodash6 = __toESM(require_lodash());
|
|
6521
6522
|
var jsx_dev_runtime14 = require("react/jsx-dev-runtime");
|
|
6522
6523
|
var remoraidAppShellLayoutId = "remoraid-app-shell";
|
|
6523
6524
|
var defaultAppShellNavbarPositions = { ["minimal" /* Minimal */]: "left" /* Left */ };
|
|
@@ -6570,13 +6571,13 @@ function AppShell({
|
|
|
6570
6571
|
navbarPosition !== null && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(FrameLayout_default.Element, {
|
|
6571
6572
|
section: navbarPosition,
|
|
6572
6573
|
includeContainer: false,
|
|
6573
|
-
...
|
|
6574
|
+
...import_lodash6.merge(navbarLayoutElementProps, componentsProps?.navbarLayoutElement),
|
|
6574
6575
|
children: navbar
|
|
6575
6576
|
}, undefined, false, undefined, this),
|
|
6576
6577
|
children,
|
|
6577
6578
|
footerPosition !== null && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(FrameLayout_default.Element, {
|
|
6578
6579
|
section: footerPosition,
|
|
6579
|
-
...
|
|
6580
|
+
...import_lodash6.merge(footerLayoutElementProps, componentsProps?.footerLayoutElement),
|
|
6580
6581
|
children: footer
|
|
6581
6582
|
}, undefined, false, undefined, this)
|
|
6582
6583
|
]
|
|
@@ -6637,6 +6638,7 @@ var import_icons_react4 = require("@tabler/icons-react");
|
|
|
6637
6638
|
|
|
6638
6639
|
// src/core/components/ScrollableChipGroup/index.tsx
|
|
6639
6640
|
var import_core10 = require("@mantine/core");
|
|
6641
|
+
var import_lodash7 = __toESM(require_lodash());
|
|
6640
6642
|
var jsx_dev_runtime16 = require("react/jsx-dev-runtime");
|
|
6641
6643
|
function ScrollableChipGroup({
|
|
6642
6644
|
value,
|
|
@@ -6648,8 +6650,7 @@ function ScrollableChipGroup({
|
|
|
6648
6650
|
const children = asChildrenOfType(import_core10.Chip, childrenProp, "Check children passed to 'ScrollableChipGroup' component.");
|
|
6649
6651
|
const theme = useRemoraidTheme();
|
|
6650
6652
|
return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(import_core10.ScrollArea, {
|
|
6651
|
-
...theme.
|
|
6652
|
-
...componentsProps?.scrollArea,
|
|
6653
|
+
...import_lodash7.merge({}, theme.componentsProps.ScrollArea, componentsProps?.ScrollArea),
|
|
6653
6654
|
children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(import_core10.Chip.Group, {
|
|
6654
6655
|
value,
|
|
6655
6656
|
onChange,
|
|
@@ -6700,7 +6701,7 @@ function WidgetSelectionHeader({
|
|
|
6700
6701
|
onChange: (value) => {
|
|
6701
6702
|
updateWidgetSelectionBulk(page.pageId, value);
|
|
6702
6703
|
},
|
|
6703
|
-
componentsProps: {
|
|
6704
|
+
componentsProps: { ScrollArea: { flex: 1 } },
|
|
6704
6705
|
children: Object.keys(widgets).map((widgetId) => {
|
|
6705
6706
|
const widget = widgets[widgetId] ?? getDefaultWidgetContext({ widgetId });
|
|
6706
6707
|
return /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(import_core11.Chip, {
|
|
@@ -6708,7 +6709,7 @@ function WidgetSelectionHeader({
|
|
|
6708
6709
|
size: "sm",
|
|
6709
6710
|
disabled: disabledWidgets && disabledWidgets.includes(widgetId),
|
|
6710
6711
|
icon: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(import_icons_react4.IconCheck, {
|
|
6711
|
-
...theme.
|
|
6712
|
+
...theme.componentsProps.icons.small
|
|
6712
6713
|
}, undefined, false, undefined, this),
|
|
6713
6714
|
children: widget.name
|
|
6714
6715
|
}, widgetId, false, undefined, this);
|
|
@@ -6723,6 +6724,7 @@ var import_react12 = __toESM(require("react"));
|
|
|
6723
6724
|
|
|
6724
6725
|
// src/core/components/BadgeMinimal/index.tsx
|
|
6725
6726
|
var import_core12 = require("@mantine/core");
|
|
6727
|
+
var import_lodash8 = __toESM(require_lodash());
|
|
6726
6728
|
var jsx_dev_runtime18 = require("react/jsx-dev-runtime");
|
|
6727
6729
|
function BadgeMinimal({
|
|
6728
6730
|
label,
|
|
@@ -6738,9 +6740,7 @@ function BadgeMinimal({
|
|
|
6738
6740
|
timingFunction: "ease",
|
|
6739
6741
|
...componentsProps?.transition,
|
|
6740
6742
|
children: (transitionStyle) => /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(import_core12.Tooltip, {
|
|
6741
|
-
disabled: !tooltip,
|
|
6742
|
-
label: tooltip,
|
|
6743
|
-
...componentsProps?.tooltip,
|
|
6743
|
+
...import_lodash8.merge({}, theme.componentsProps.Tooltip, { label: tooltip, disabled: !Boolean(tooltip) }, componentsProps?.tooltip),
|
|
6744
6744
|
children: /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(import_core12.Badge, {
|
|
6745
6745
|
variant: "default",
|
|
6746
6746
|
...componentsProps?.badge,
|
|
@@ -6756,84 +6756,112 @@ function BadgeMinimal({
|
|
|
6756
6756
|
}
|
|
6757
6757
|
|
|
6758
6758
|
// src/core/components/BadgeGroup/index.tsx
|
|
6759
|
+
var import_lodash9 = __toESM(require_lodash());
|
|
6759
6760
|
var jsx_dev_runtime19 = require("react/jsx-dev-runtime");
|
|
6760
6761
|
var react = require("react");
|
|
6761
6762
|
function BadgeGroup({
|
|
6762
6763
|
badges: badgesProp,
|
|
6763
|
-
gap,
|
|
6764
|
-
breakpoint,
|
|
6764
|
+
gap = "xs",
|
|
6765
|
+
breakpoint: breakpointProp,
|
|
6765
6766
|
componentsProps
|
|
6766
6767
|
}) {
|
|
6767
|
-
const theme = useRemoraidTheme();
|
|
6768
6768
|
const badges = badgesProp.map((badge) => asElementOrPropsOfType(BadgeMinimal, badge, "Check 'badges' property passed to 'BadgeGroup'."));
|
|
6769
|
+
const theme = useRemoraidTheme();
|
|
6770
|
+
const breakpoint = breakpointProp ?? theme.breakpoints.badgeGroupCollapse;
|
|
6769
6771
|
const numVisibleBadges = badges.filter((badge) => isValidElementOfType(BadgeMinimal, badge) ? badge.props.mounted : badge.mounted !== false).length;
|
|
6772
|
+
const badgesElement = badges.map((badge, i) => {
|
|
6773
|
+
if (isValidElementOfType(BadgeMinimal, badge)) {
|
|
6774
|
+
return badge;
|
|
6775
|
+
}
|
|
6776
|
+
return /* @__PURE__ */ react.createElement(BadgeMinimal, {
|
|
6777
|
+
...badge,
|
|
6778
|
+
key: i
|
|
6779
|
+
});
|
|
6780
|
+
});
|
|
6770
6781
|
return /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(jsx_dev_runtime19.Fragment, {
|
|
6771
6782
|
children: [
|
|
6772
6783
|
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.Group, {
|
|
6773
|
-
gap
|
|
6784
|
+
gap,
|
|
6774
6785
|
wrap: "nowrap",
|
|
6775
|
-
visibleFrom: breakpoint
|
|
6776
|
-
|
|
6777
|
-
|
|
6778
|
-
|
|
6779
|
-
} else if (import_react12.isValidElement(badge)) {
|
|
6780
|
-
throw new TypeError(`Expected React element of type ${BadgeMinimal.name}, but received type: ${typeof badge.type === "string" ? badge.type : badge.type?.name ?? "unknown"}. Check the 'badges' property of this widget.`);
|
|
6781
|
-
}
|
|
6782
|
-
return /* @__PURE__ */ react.createElement(BadgeMinimal, {
|
|
6783
|
-
...badge,
|
|
6784
|
-
key: i
|
|
6785
|
-
});
|
|
6786
|
-
})
|
|
6786
|
+
visibleFrom: numVisibleBadges > 1 ? breakpoint : undefined,
|
|
6787
|
+
...componentsProps?.container,
|
|
6788
|
+
className: clsx_default("remoraid-badge-group", componentsProps?.container?.className),
|
|
6789
|
+
children: badgesElement
|
|
6787
6790
|
}, undefined, false, undefined, this),
|
|
6788
|
-
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.
|
|
6789
|
-
|
|
6790
|
-
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
|
|
6791
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.Transition, {
|
|
6792
|
+
mounted: numVisibleBadges > 1,
|
|
6793
|
+
transition: "fade",
|
|
6794
|
+
duration: theme.transitionDurations.short,
|
|
6795
|
+
timingFunction: "ease",
|
|
6796
|
+
...componentsProps?.cumulativeBadgeTransition,
|
|
6797
|
+
children: (transitionStyle) => /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.HoverCard, {
|
|
6798
|
+
...import_lodash9.merge({}, theme.componentsProps.HoverCard, componentsProps?.HoverCard),
|
|
6799
|
+
children: [
|
|
6800
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.HoverCard.Target, {
|
|
6801
|
+
children: /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.Badge, {
|
|
6802
|
+
hiddenFrom: breakpoint,
|
|
6803
|
+
variant: "dot",
|
|
6804
|
+
...componentsProps?.cumulativeBadge,
|
|
6805
|
+
style: {
|
|
6806
|
+
cursor: "pointer",
|
|
6807
|
+
...import_lodash9.merge(transitionStyle, componentsProps?.cumulativeBadge?.style)
|
|
6808
|
+
},
|
|
6809
|
+
children: [
|
|
6810
|
+
numVisibleBadges,
|
|
6811
|
+
" badges"
|
|
6812
|
+
]
|
|
6813
|
+
}, undefined, true, undefined, this)
|
|
6814
|
+
}, undefined, false, undefined, this),
|
|
6815
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.HoverCard.Dropdown, {
|
|
6816
|
+
p: gap,
|
|
6817
|
+
children: /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(import_core13.Stack, {
|
|
6818
|
+
gap,
|
|
6819
|
+
...componentsProps?.hoverContainer,
|
|
6820
|
+
children: badgesElement
|
|
6821
|
+
}, undefined, false, undefined, this)
|
|
6822
|
+
}, undefined, false, undefined, this)
|
|
6823
|
+
]
|
|
6824
|
+
}, undefined, true, undefined, this)
|
|
6800
6825
|
}, undefined, false, undefined, this)
|
|
6801
6826
|
]
|
|
6802
6827
|
}, undefined, true, undefined, this);
|
|
6803
6828
|
}
|
|
6804
6829
|
// src/core/components/AlertMinimal/index.tsx
|
|
6805
6830
|
var import_core14 = require("@mantine/core");
|
|
6831
|
+
var import_lodash10 = __toESM(require_lodash());
|
|
6806
6832
|
var jsx_dev_runtime20 = require("react/jsx-dev-runtime");
|
|
6807
6833
|
function AlertMinimal({
|
|
6808
|
-
title,
|
|
6809
6834
|
category,
|
|
6810
|
-
|
|
6811
|
-
|
|
6812
|
-
mounted = true,
|
|
6813
|
-
mt,
|
|
6814
|
-
mb,
|
|
6815
|
-
componentsProps,
|
|
6816
|
-
children
|
|
6835
|
+
children,
|
|
6836
|
+
...props
|
|
6817
6837
|
}) {
|
|
6818
6838
|
const theme = useRemoraidTheme();
|
|
6839
|
+
const {
|
|
6840
|
+
title,
|
|
6841
|
+
text,
|
|
6842
|
+
color,
|
|
6843
|
+
onClose,
|
|
6844
|
+
mounted = true,
|
|
6845
|
+
icon: Icon2,
|
|
6846
|
+
iconSize = "medium" /* Medium */,
|
|
6847
|
+
componentsProps
|
|
6848
|
+
} = import_lodash10.merge({}, theme.componentsProps.alerts[category], props);
|
|
6819
6849
|
return /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(import_core14.Transition, {
|
|
6820
|
-
mounted
|
|
6850
|
+
mounted,
|
|
6821
6851
|
transition: "fade",
|
|
6822
6852
|
duration: theme.transitionDurations.short,
|
|
6823
6853
|
timingFunction: "ease",
|
|
6824
6854
|
...componentsProps?.transition,
|
|
6825
6855
|
children: (transitionStyle) => /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(import_core14.Alert, {
|
|
6826
|
-
|
|
6827
|
-
|
|
6828
|
-
|
|
6856
|
+
title,
|
|
6857
|
+
color,
|
|
6858
|
+
variant: "light",
|
|
6829
6859
|
onClose,
|
|
6830
|
-
|
|
6831
|
-
|
|
6832
|
-
|
|
6833
|
-
|
|
6834
|
-
|
|
6835
|
-
...componentsProps?.alert?.style ?? theme.alertProps[category].style
|
|
6836
|
-
},
|
|
6860
|
+
withCloseButton: onClose !== undefined,
|
|
6861
|
+
icon: Icon2 ? /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Icon2, {
|
|
6862
|
+
...import_lodash10.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
|
|
6863
|
+
}, undefined, false, undefined, this) : undefined,
|
|
6864
|
+
style: import_lodash10.merge(transitionStyle, componentsProps?.alert?.style),
|
|
6837
6865
|
children: [
|
|
6838
6866
|
text,
|
|
6839
6867
|
children
|
|
@@ -6844,30 +6872,32 @@ function AlertMinimal({
|
|
|
6844
6872
|
// src/core/components/RemoraidButton/index.tsx
|
|
6845
6873
|
var import_core15 = require("@mantine/core");
|
|
6846
6874
|
var import_icons_react5 = require("@tabler/icons-react");
|
|
6847
|
-
var
|
|
6875
|
+
var import_lodash11 = __toESM(require_lodash());
|
|
6848
6876
|
var jsx_dev_runtime21 = require("react/jsx-dev-runtime");
|
|
6849
6877
|
function RemoraidButton({
|
|
6850
6878
|
label,
|
|
6851
6879
|
responsive: ResponsiveProp,
|
|
6852
6880
|
breakpoint: breakpointProp,
|
|
6853
6881
|
collapsed: collapsedProp,
|
|
6854
|
-
size,
|
|
6882
|
+
size = "sm",
|
|
6855
6883
|
color,
|
|
6856
6884
|
onClick,
|
|
6857
6885
|
loading,
|
|
6858
6886
|
variant = "default",
|
|
6859
6887
|
mounted = true,
|
|
6860
6888
|
icon: iconProp,
|
|
6861
|
-
iconSize
|
|
6889
|
+
iconSize: iconSizeProp,
|
|
6862
6890
|
componentsProps
|
|
6863
6891
|
}) {
|
|
6864
6892
|
const responsive = ResponsiveProp ?? true;
|
|
6865
6893
|
const breakpoint = breakpointProp ?? "md";
|
|
6866
6894
|
const collapsed = collapsedProp ?? false;
|
|
6867
|
-
const
|
|
6895
|
+
const iconSize = iconSizeProp ?? getDefaultButtonIconSize(size);
|
|
6896
|
+
const Icon3 = iconProp ?? import_icons_react5.IconClick;
|
|
6868
6897
|
const theme = useRemoraidTheme();
|
|
6869
|
-
const
|
|
6870
|
-
|
|
6898
|
+
const iconElement = /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Icon3, {
|
|
6899
|
+
...import_lodash11.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
|
|
6900
|
+
}, undefined, false, undefined, this);
|
|
6871
6901
|
return /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(import_core15.Transition, {
|
|
6872
6902
|
mounted,
|
|
6873
6903
|
transition: "fade",
|
|
@@ -6877,8 +6907,7 @@ function RemoraidButton({
|
|
|
6877
6907
|
children: (transitionStyle) => /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(jsx_dev_runtime21.Fragment, {
|
|
6878
6908
|
children: [
|
|
6879
6909
|
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(import_core15.Tooltip, {
|
|
6880
|
-
label,
|
|
6881
|
-
...componentsProps?.tooltip,
|
|
6910
|
+
...import_lodash11.merge({}, theme.componentsProps.Tooltip, { label }, componentsProps?.tooltip),
|
|
6882
6911
|
children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(import_core15.ActionIcon, {
|
|
6883
6912
|
"aria-label": label,
|
|
6884
6913
|
variant,
|
|
@@ -6921,6 +6950,7 @@ function RemoraidButton({
|
|
|
6921
6950
|
// src/core/components/Controls/ControlButton/index.tsx
|
|
6922
6951
|
var import_core16 = require("@mantine/core");
|
|
6923
6952
|
var import_icons_react6 = require("@tabler/icons-react");
|
|
6953
|
+
var import_lodash12 = __toESM(require_lodash());
|
|
6924
6954
|
var jsx_dev_runtime22 = require("react/jsx-dev-runtime");
|
|
6925
6955
|
function ControlButton({
|
|
6926
6956
|
icon: Icon4 = import_icons_react6.IconClick,
|
|
@@ -6936,14 +6966,12 @@ function ControlButton({
|
|
|
6936
6966
|
const theme = useRemoraidTheme();
|
|
6937
6967
|
return /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(import_core16.Transition, {
|
|
6938
6968
|
mounted,
|
|
6939
|
-
transition: "
|
|
6969
|
+
transition: "fade",
|
|
6940
6970
|
duration: theme.transitionDurations.short,
|
|
6941
6971
|
timingFunction: "ease",
|
|
6942
6972
|
...componentsProps?.transition,
|
|
6943
6973
|
children: (transitionStyle) => /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(import_core16.Tooltip, {
|
|
6944
|
-
label: tooltip,
|
|
6945
|
-
disabled: !Boolean(tooltip),
|
|
6946
|
-
...componentsProps?.tooltip,
|
|
6974
|
+
...import_lodash12.merge({}, theme.componentsProps.Tooltip, { label: tooltip, disabled: !Boolean(tooltip) }, componentsProps?.tooltip),
|
|
6947
6975
|
children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(import_core16.ActionIcon, {
|
|
6948
6976
|
"data-control-button": true,
|
|
6949
6977
|
size,
|
|
@@ -6952,13 +6980,11 @@ function ControlButton({
|
|
|
6952
6980
|
radius: "xl",
|
|
6953
6981
|
...componentsProps?.button,
|
|
6954
6982
|
style: {
|
|
6955
|
-
...transitionStyle,
|
|
6956
6983
|
order,
|
|
6957
|
-
...componentsProps?.button?.style
|
|
6984
|
+
...import_lodash12.merge(transitionStyle, componentsProps?.button?.style)
|
|
6958
6985
|
},
|
|
6959
6986
|
children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Icon4, {
|
|
6960
|
-
...theme.
|
|
6961
|
-
...componentsProps?.icon
|
|
6987
|
+
...import_lodash12.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
|
|
6962
6988
|
}, undefined, false, undefined, this)
|
|
6963
6989
|
}, undefined, false, undefined, this)
|
|
6964
6990
|
}, undefined, false, undefined, this)
|
|
@@ -6966,10 +6992,10 @@ function ControlButton({
|
|
|
6966
6992
|
}
|
|
6967
6993
|
|
|
6968
6994
|
// src/core/components/Controls/index.tsx
|
|
6969
|
-
var
|
|
6995
|
+
var import_react13 = require("react");
|
|
6970
6996
|
var import_core17 = require("@mantine/core");
|
|
6971
6997
|
var import_icons_react7 = require("@tabler/icons-react");
|
|
6972
|
-
var
|
|
6998
|
+
var import_lodash13 = __toESM(require_lodash());
|
|
6973
6999
|
var jsx_dev_runtime23 = require("react/jsx-dev-runtime");
|
|
6974
7000
|
function Controls({
|
|
6975
7001
|
groupRef,
|
|
@@ -6984,12 +7010,12 @@ function Controls({
|
|
|
6984
7010
|
const additionalButtons = additionalButtonsProp?.map((additionalButton) => asElementOrPropsOfType(ControlButton, additionalButton, "Check the 'additionalButtons' property of 'Controls'."));
|
|
6985
7011
|
const children = asChildrenOfType(ControlButton, childrenProp, "Check children passed to 'Controls' component.");
|
|
6986
7012
|
const theme = useRemoraidTheme();
|
|
6987
|
-
const [pos, setPos] =
|
|
7013
|
+
const [pos, setPos] = import_react13.useState({
|
|
6988
7014
|
x: 0,
|
|
6989
7015
|
y: 0
|
|
6990
7016
|
});
|
|
6991
|
-
const offsetRef =
|
|
6992
|
-
const containerRef =
|
|
7017
|
+
const offsetRef = import_react13.useRef({ x: 0, y: 0 });
|
|
7018
|
+
const containerRef = import_react13.useRef(null);
|
|
6993
7019
|
const clamp = (v, min, max) => {
|
|
6994
7020
|
return Math.min(Math.max(v, min), max);
|
|
6995
7021
|
};
|
|
@@ -7048,7 +7074,7 @@ function Controls({
|
|
|
7048
7074
|
style: {
|
|
7049
7075
|
right: pos.x,
|
|
7050
7076
|
top: pos.y,
|
|
7051
|
-
...
|
|
7077
|
+
...import_lodash13.merge(transitionStyle, componentsProps?.container?.style)
|
|
7052
7078
|
},
|
|
7053
7079
|
className: clsx_default("remoraid-controls", componentsProps?.container?.className),
|
|
7054
7080
|
children: /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(import_core17.Group, {
|
|
@@ -7059,9 +7085,7 @@ function Controls({
|
|
|
7059
7085
|
className: clsx_default("remoraid-controls-group", componentsProps?.group?.className),
|
|
7060
7086
|
children: [
|
|
7061
7087
|
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(import_icons_react7.IconGripHorizontal, {
|
|
7062
|
-
order: -100,
|
|
7063
|
-
color: "var(--mantine-color-default-border)",
|
|
7064
|
-
...import_lodash3.merge(theme.iconProps[iconSize], componentsProps?.gripIcon)
|
|
7088
|
+
...import_lodash13.merge({}, theme.componentsProps.icons[iconSize], { order: -100, color: "var(--mantine-color-default-border)" }, componentsProps?.gripIcon)
|
|
7065
7089
|
}, undefined, false, undefined, this),
|
|
7066
7090
|
children,
|
|
7067
7091
|
additionalButtons && additionalButtons.map((button, i) => {
|
|
@@ -7079,11 +7103,11 @@ function Controls({
|
|
|
7079
7103
|
}
|
|
7080
7104
|
// src/core/components/Widget/WidgetWrapper/index.tsx
|
|
7081
7105
|
var import_core19 = require("@mantine/core");
|
|
7082
|
-
var
|
|
7106
|
+
var import_react15 = require("react");
|
|
7083
7107
|
var import_icons_react9 = require("@tabler/icons-react");
|
|
7084
7108
|
|
|
7085
7109
|
// src/core/components/Pinnable/index.tsx
|
|
7086
|
-
var
|
|
7110
|
+
var import_react14 = require("react");
|
|
7087
7111
|
var import_icons_react8 = require("@tabler/icons-react");
|
|
7088
7112
|
var import_core18 = require("@mantine/core");
|
|
7089
7113
|
var jsx_dev_runtime24 = require("react/jsx-dev-runtime");
|
|
@@ -7099,13 +7123,13 @@ function Pinnable({
|
|
|
7099
7123
|
}) {
|
|
7100
7124
|
const layoutType = layoutTypeProp ?? "frame" /* Frame */;
|
|
7101
7125
|
const { layouts } = useLayouts();
|
|
7102
|
-
const [pinned, setPinned] =
|
|
7103
|
-
const containerRef =
|
|
7126
|
+
const [pinned, setPinned] = import_react14.useState(initialValue);
|
|
7127
|
+
const containerRef = import_react14.useRef(null);
|
|
7104
7128
|
const layout = layouts[layoutId ?? remoraidAppShellLayoutId];
|
|
7105
7129
|
if (layout && layout.type !== layoutType) {
|
|
7106
7130
|
throw new TypeError(`Prop 'layoutId' in '${Pinnable.name}' refers to a layout of type ${layout.type}, expected ${layoutType}. Leave 'layoutId' undefined, if you want to use the layout in '${AppShell_default.name}' as reference layout.`);
|
|
7107
7131
|
}
|
|
7108
|
-
const controlButton =
|
|
7132
|
+
const controlButton = import_react14.useMemo(() => /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(ControlButton, {
|
|
7109
7133
|
icon: pinned ? import_icons_react8.IconPinnedOff : import_icons_react8.IconPin,
|
|
7110
7134
|
tooltip: pinned ? "Unpin" : "Pin",
|
|
7111
7135
|
color: "green",
|
|
@@ -7150,7 +7174,7 @@ function Pinnable({
|
|
|
7150
7174
|
}
|
|
7151
7175
|
|
|
7152
7176
|
// src/core/components/Widget/WidgetWrapper/index.tsx
|
|
7153
|
-
var
|
|
7177
|
+
var import_lodash14 = __toESM(require_lodash());
|
|
7154
7178
|
var jsx_dev_runtime25 = require("react/jsx-dev-runtime");
|
|
7155
7179
|
function WidgetWrapper({
|
|
7156
7180
|
config,
|
|
@@ -7172,11 +7196,11 @@ function WidgetWrapper({
|
|
|
7172
7196
|
const page = usePage();
|
|
7173
7197
|
const theme = useRemoraidTheme();
|
|
7174
7198
|
const mounted = page !== null && isWidgetSelected(page.pageId, config.widgetId);
|
|
7175
|
-
const [controlsContainer, setControlsContainer] =
|
|
7176
|
-
const [hidden, setHidden] =
|
|
7199
|
+
const [controlsContainer, setControlsContainer] = import_react15.useState(null);
|
|
7200
|
+
const [hidden, setHidden] = import_react15.useState(!mounted);
|
|
7177
7201
|
const pageRegistered = page ? isPageRegistered(page.pageId) : false;
|
|
7178
|
-
const containerRef =
|
|
7179
|
-
const controlsContainerRef =
|
|
7202
|
+
const containerRef = import_react15.useRef(null);
|
|
7203
|
+
const controlsContainerRef = import_react15.useCallback((n) => {
|
|
7180
7204
|
setControlsContainer(n);
|
|
7181
7205
|
}, [setControlsContainer]);
|
|
7182
7206
|
const handleEnter = () => {
|
|
@@ -7216,7 +7240,7 @@ function WidgetWrapper({
|
|
|
7216
7240
|
}
|
|
7217
7241
|
componentsProps?.container?.onMouseLeave?.(e);
|
|
7218
7242
|
},
|
|
7219
|
-
style:
|
|
7243
|
+
style: import_lodash14.merge(transitionStyle, componentsProps?.container?.style),
|
|
7220
7244
|
id: config.widgetId,
|
|
7221
7245
|
children: [
|
|
7222
7246
|
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Controls, {
|
|
@@ -7280,7 +7304,7 @@ function WidgetWrapper({
|
|
|
7280
7304
|
children: element
|
|
7281
7305
|
}, undefined, false, undefined, this);
|
|
7282
7306
|
}
|
|
7283
|
-
|
|
7307
|
+
import_react15.useEffect(() => {
|
|
7284
7308
|
if (!page) {
|
|
7285
7309
|
return;
|
|
7286
7310
|
}
|
|
@@ -7288,7 +7312,7 @@ function WidgetWrapper({
|
|
|
7288
7312
|
registerWidget(page.pageId, config);
|
|
7289
7313
|
}
|
|
7290
7314
|
}, [pageRegistered]);
|
|
7291
|
-
|
|
7315
|
+
import_react15.useEffect(() => {
|
|
7292
7316
|
if (mounted) {
|
|
7293
7317
|
const id = requestAnimationFrame(() => {
|
|
7294
7318
|
setHidden(false);
|
|
@@ -7347,8 +7371,9 @@ function Widget({
|
|
|
7347
7371
|
children: [
|
|
7348
7372
|
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(import_core20.Title, {
|
|
7349
7373
|
order: 1,
|
|
7350
|
-
size: "
|
|
7374
|
+
size: "h2",
|
|
7351
7375
|
lineClamp: 1,
|
|
7376
|
+
...componentsProps?.title,
|
|
7352
7377
|
children: title ?? id
|
|
7353
7378
|
}, undefined, false, undefined, this),
|
|
7354
7379
|
badges !== undefined && /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(BadgeGroup, {
|
|
@@ -7403,7 +7428,6 @@ function Widget({
|
|
|
7403
7428
|
}, undefined, true, undefined, this);
|
|
7404
7429
|
}
|
|
7405
7430
|
// src/core/components/NotFoundPage/index.tsx
|
|
7406
|
-
var import_core21 = require("@mantine/core");
|
|
7407
7431
|
var import_navigation3 = require("next/navigation");
|
|
7408
7432
|
var jsx_dev_runtime27 = require("react/jsx-dev-runtime");
|
|
7409
7433
|
function NotFoundPage({
|
|
@@ -7412,13 +7436,12 @@ function NotFoundPage({
|
|
|
7412
7436
|
componentsProps
|
|
7413
7437
|
}) {
|
|
7414
7438
|
const pathname = import_navigation3.usePathname();
|
|
7415
|
-
const theme = useRemoraidTheme();
|
|
7416
7439
|
return /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Page, {
|
|
7417
7440
|
name: "Not Found",
|
|
7418
7441
|
...componentsProps?.page,
|
|
7419
7442
|
children: [
|
|
7420
|
-
/* @__PURE__ */ jsx_dev_runtime27.jsxDEV(
|
|
7421
|
-
|
|
7443
|
+
/* @__PURE__ */ jsx_dev_runtime27.jsxDEV(AlertMinimal, {
|
|
7444
|
+
category: "negative" /* Negative */,
|
|
7422
7445
|
title: "404 - Page Not Found",
|
|
7423
7446
|
children: message ?? `Could not find page ${pathname}.`
|
|
7424
7447
|
}, undefined, false, undefined, this),
|
|
@@ -7427,48 +7450,54 @@ function NotFoundPage({
|
|
|
7427
7450
|
}, undefined, true, undefined, this);
|
|
7428
7451
|
}
|
|
7429
7452
|
// src/core/components/EnvironmentShell/index.tsx
|
|
7430
|
-
var import_core22 = require("@mantine/core");
|
|
7431
7453
|
var jsx_dev_runtime28 = require("react/jsx-dev-runtime");
|
|
7454
|
+
var EnvironmentShellVariant;
|
|
7455
|
+
((EnvironmentShellVariant2) => {
|
|
7456
|
+
EnvironmentShellVariant2["Alert"] = "alert";
|
|
7457
|
+
EnvironmentShellVariant2["Error"] = "error";
|
|
7458
|
+
EnvironmentShellVariant2["Silent"] = "silent";
|
|
7459
|
+
})(EnvironmentShellVariant ||= {});
|
|
7432
7460
|
function EnvironmentShell({
|
|
7433
|
-
children,
|
|
7434
7461
|
environment,
|
|
7462
|
+
variant = "alert" /* Alert */,
|
|
7435
7463
|
message,
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
componentsProps
|
|
7464
|
+
includeAlertContainer = false,
|
|
7465
|
+
componentsProps,
|
|
7466
|
+
children
|
|
7440
7467
|
}) {
|
|
7441
|
-
const theme = useRemoraidTheme();
|
|
7442
7468
|
const undefinedKeys = Object.keys(environment).filter((key) => environment[key] === undefined);
|
|
7443
|
-
const
|
|
7444
|
-
const
|
|
7445
|
-
|
|
7446
|
-
|
|
7447
|
-
|
|
7448
|
-
|
|
7449
|
-
|
|
7450
|
-
children: message ?? alertMessage
|
|
7469
|
+
const defaultMessage = `Components could not be rendered because the following environment variable${undefinedKeys.length > 1 ? "s" : ""} are not specified: ${undefinedKeys.join(", ")}.`;
|
|
7470
|
+
const alertElement = /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(AlertMinimal, {
|
|
7471
|
+
mounted: undefinedKeys.length > 0,
|
|
7472
|
+
title: `Please specify environment variable${undefinedKeys.length > 1 ? "s" : ""}`,
|
|
7473
|
+
category: "negative" /* Negative */,
|
|
7474
|
+
text: message ?? defaultMessage,
|
|
7475
|
+
...componentsProps?.alert
|
|
7451
7476
|
}, undefined, false, undefined, this);
|
|
7452
7477
|
if (undefinedKeys.length === 0) {
|
|
7453
|
-
return
|
|
7454
|
-
children
|
|
7455
|
-
}, undefined, false, undefined, this);
|
|
7478
|
+
return children;
|
|
7456
7479
|
}
|
|
7457
|
-
if (
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7480
|
+
if (variant === "alert" /* Alert */) {
|
|
7481
|
+
if (includeAlertContainer) {
|
|
7482
|
+
return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(PageContainer, {
|
|
7483
|
+
...componentsProps?.alertContainer,
|
|
7484
|
+
children: alertElement
|
|
7485
|
+
}, undefined, false, undefined, this);
|
|
7486
|
+
}
|
|
7487
|
+
return alertElement;
|
|
7488
|
+
}
|
|
7489
|
+
if (variant === "error" /* Error */) {
|
|
7490
|
+
throw new ReferenceError(message ?? defaultMessage);
|
|
7462
7491
|
}
|
|
7463
|
-
return
|
|
7492
|
+
return null;
|
|
7464
7493
|
}
|
|
7465
7494
|
// src/core/components/SettingsWidget/index.tsx
|
|
7466
|
-
var
|
|
7495
|
+
var import_react16 = require("react");
|
|
7467
7496
|
var import_icons_react11 = require("@tabler/icons-react");
|
|
7468
7497
|
|
|
7469
7498
|
// src/core/components/SettingsWidget/SaveButton/index.tsx
|
|
7470
7499
|
var import_icons_react10 = require("@tabler/icons-react");
|
|
7471
|
-
var
|
|
7500
|
+
var import_core21 = require("@mantine/core");
|
|
7472
7501
|
var jsx_dev_runtime29 = require("react/jsx-dev-runtime");
|
|
7473
7502
|
function SaveButton({
|
|
7474
7503
|
onSaveChanges,
|
|
@@ -7491,7 +7520,7 @@ function SaveButton({
|
|
|
7491
7520
|
}
|
|
7492
7521
|
}, undefined, false, undefined, this);
|
|
7493
7522
|
if (insideContainer !== false) {
|
|
7494
|
-
return /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(
|
|
7523
|
+
return /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(import_core21.Group, {
|
|
7495
7524
|
w: "100%",
|
|
7496
7525
|
justify: "flex-end",
|
|
7497
7526
|
mt: "md",
|
|
@@ -7505,9 +7534,9 @@ function SaveButton({
|
|
|
7505
7534
|
// src/core/components/SettingsWidget/index.tsx
|
|
7506
7535
|
var jsx_dev_runtime30 = require("react/jsx-dev-runtime");
|
|
7507
7536
|
var defaultSettingsWidgetContext = {};
|
|
7508
|
-
var settingsWidgetContext =
|
|
7537
|
+
var settingsWidgetContext = import_react16.createContext(defaultSettingsWidgetContext);
|
|
7509
7538
|
var useSettingsWidgetContext = () => {
|
|
7510
|
-
return
|
|
7539
|
+
return import_react16.useContext(settingsWidgetContext);
|
|
7511
7540
|
};
|
|
7512
7541
|
function SettingsWidget({
|
|
7513
7542
|
children,
|
|
@@ -7521,7 +7550,6 @@ function SettingsWidget({
|
|
|
7521
7550
|
children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Widget, {
|
|
7522
7551
|
title: "Settings",
|
|
7523
7552
|
id: "settings",
|
|
7524
|
-
mt: "md",
|
|
7525
7553
|
...widgetProps,
|
|
7526
7554
|
buttons: [
|
|
7527
7555
|
...onRestoreDefaultValues ? [
|
|
@@ -7554,27 +7582,27 @@ var SettingsWidget_default = Object.assign(SettingsWidget, {
|
|
|
7554
7582
|
SaveButton
|
|
7555
7583
|
});
|
|
7556
7584
|
// src/core/components/SettingsWidget/SettingsTable/index.tsx
|
|
7557
|
-
var
|
|
7558
|
-
var
|
|
7585
|
+
var import_react17 = require("react");
|
|
7586
|
+
var import_core23 = require("@mantine/core");
|
|
7559
7587
|
|
|
7560
7588
|
// src/core/components/SettingsWidget/SettingsTable/Row/index.tsx
|
|
7561
|
-
var
|
|
7589
|
+
var import_core22 = require("@mantine/core");
|
|
7562
7590
|
var jsx_dev_runtime31 = require("react/jsx-dev-runtime");
|
|
7563
7591
|
function Row({
|
|
7564
7592
|
children,
|
|
7565
7593
|
label
|
|
7566
7594
|
}) {
|
|
7567
7595
|
const options = useSettingsTableOptions();
|
|
7568
|
-
return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(
|
|
7596
|
+
return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(import_core22.Table.Tr, {
|
|
7569
7597
|
children: [
|
|
7570
|
-
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(
|
|
7598
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(import_core22.Table.Th, {
|
|
7571
7599
|
w: options.leftColumnWidth,
|
|
7572
|
-
children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(
|
|
7600
|
+
children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(import_core22.Text, {
|
|
7573
7601
|
size: "sm",
|
|
7574
7602
|
children: label
|
|
7575
7603
|
}, undefined, false, undefined, this)
|
|
7576
7604
|
}, undefined, false, undefined, this),
|
|
7577
|
-
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(
|
|
7605
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(import_core22.Table.Td, {
|
|
7578
7606
|
py: "xs",
|
|
7579
7607
|
children
|
|
7580
7608
|
}, undefined, false, undefined, this)
|
|
@@ -7587,9 +7615,9 @@ var jsx_dev_runtime32 = require("react/jsx-dev-runtime");
|
|
|
7587
7615
|
var defaultSettingsTableOptions = {
|
|
7588
7616
|
leftColumnWidth: "38.2%"
|
|
7589
7617
|
};
|
|
7590
|
-
var settingsTableOptionsContext =
|
|
7618
|
+
var settingsTableOptionsContext = import_react17.createContext(defaultSettingsTableOptions);
|
|
7591
7619
|
var useSettingsTableOptions = () => {
|
|
7592
|
-
return
|
|
7620
|
+
return import_react17.useContext(settingsTableOptionsContext);
|
|
7593
7621
|
};
|
|
7594
7622
|
function SettingsTable({
|
|
7595
7623
|
leftColumnWidth,
|
|
@@ -7601,12 +7629,12 @@ function SettingsTable({
|
|
|
7601
7629
|
value: {
|
|
7602
7630
|
leftColumnWidth: leftColumnWidth ?? defaultSettingsTableOptions.leftColumnWidth
|
|
7603
7631
|
},
|
|
7604
|
-
children: /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(
|
|
7632
|
+
children: /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(import_core23.Table, {
|
|
7605
7633
|
bg: theme.transparentBackground,
|
|
7606
7634
|
withTableBorder: true,
|
|
7607
7635
|
variant: "vertical",
|
|
7608
7636
|
layout: "fixed",
|
|
7609
|
-
children: /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(
|
|
7637
|
+
children: /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(import_core23.Table.Tbody, {
|
|
7610
7638
|
children
|
|
7611
7639
|
}, undefined, false, undefined, this)
|
|
7612
7640
|
}, undefined, false, undefined, this)
|
|
@@ -7616,8 +7644,8 @@ var SettingsTable_default = Object.assign(SettingsTable, {
|
|
|
7616
7644
|
Row
|
|
7617
7645
|
});
|
|
7618
7646
|
// src/core/components/NavbarSettingsWidget/index.tsx
|
|
7619
|
-
var
|
|
7620
|
-
var
|
|
7647
|
+
var import_lodash15 = __toESM(require_lodash());
|
|
7648
|
+
var import_core24 = require("@mantine/core");
|
|
7621
7649
|
var import_icons_react12 = require("@tabler/icons-react");
|
|
7622
7650
|
var jsx_dev_runtime33 = require("react/jsx-dev-runtime");
|
|
7623
7651
|
var defaultNavbarSettingsWidgetId = "navbar-settings";
|
|
@@ -7642,13 +7670,13 @@ function NavbarSettingsWidget({
|
|
|
7642
7670
|
navbar: initialUserExperience.navbar
|
|
7643
7671
|
}));
|
|
7644
7672
|
},
|
|
7645
|
-
custom: !
|
|
7673
|
+
custom: !import_lodash15.isEqual(userExperience.navbar, initialUserExperience.navbar),
|
|
7646
7674
|
children: /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(SettingsTable_default, {
|
|
7647
7675
|
...componentsProps?.table,
|
|
7648
7676
|
children: [
|
|
7649
7677
|
/* @__PURE__ */ jsx_dev_runtime33.jsxDEV(SettingsTable_default.Row, {
|
|
7650
7678
|
label: "Select which pages you want to display or hide",
|
|
7651
|
-
children: /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(
|
|
7679
|
+
children: /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(import_core24.Chip.Group, {
|
|
7652
7680
|
multiple: true,
|
|
7653
7681
|
value: app.navigablePages.filter((p) => !userExperience.navbar.hiddenPages.includes(p.href)).map((p) => p.href),
|
|
7654
7682
|
onChange: (newValue) => {
|
|
@@ -7660,18 +7688,20 @@ function NavbarSettingsWidget({
|
|
|
7660
7688
|
}
|
|
7661
7689
|
}));
|
|
7662
7690
|
},
|
|
7663
|
-
children: /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(
|
|
7691
|
+
children: /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(import_core24.Group, {
|
|
7664
7692
|
justify: "flex-start",
|
|
7665
7693
|
gap: "xs",
|
|
7666
|
-
children: app.navigablePages.map((
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
|
|
7694
|
+
children: app.navigablePages.map(({ label, href, icon: Icon4 = import_icons_react12.IconLink }, i) => {
|
|
7695
|
+
return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(import_core24.Chip, {
|
|
7696
|
+
value: href,
|
|
7697
|
+
icon: /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Icon4, {
|
|
7698
|
+
...theme.componentsProps.icons.small,
|
|
7699
|
+
color: "var(--mantine-primary-color-filled)"
|
|
7700
|
+
}, undefined, false, undefined, this),
|
|
7701
|
+
variant: "outline",
|
|
7702
|
+
children: label
|
|
7703
|
+
}, i, false, undefined, this);
|
|
7704
|
+
})
|
|
7675
7705
|
}, undefined, false, undefined, this)
|
|
7676
7706
|
}, undefined, false, undefined, this)
|
|
7677
7707
|
}, "select-hidden-pages", false, undefined, this),
|
|
@@ -7688,7 +7718,7 @@ function NavbarSettingsWidget({
|
|
|
7688
7718
|
}, undefined, false, undefined, this);
|
|
7689
7719
|
}
|
|
7690
7720
|
// src/core/components/ContextClusterProvider/index.tsx
|
|
7691
|
-
var
|
|
7721
|
+
var import_react18 = __toESM(require("react"));
|
|
7692
7722
|
var jsx_dev_runtime34 = require("react/jsx-dev-runtime");
|
|
7693
7723
|
var createContextCluster = (generalDefaultValue, staticIds) => {
|
|
7694
7724
|
const isStaticId = (id) => {
|
|
@@ -7700,16 +7730,16 @@ var createContextCluster = (generalDefaultValue, staticIds) => {
|
|
|
7700
7730
|
const contexts = {};
|
|
7701
7731
|
const defaultValues = {};
|
|
7702
7732
|
const createContext8 = (id, defaultValue) => {
|
|
7703
|
-
const context =
|
|
7733
|
+
const context = import_react18.default.createContext(defaultValue ?? generalDefaultValue);
|
|
7704
7734
|
contexts[id] = context;
|
|
7705
7735
|
defaultValues[id] = defaultValue ?? generalDefaultValue;
|
|
7706
7736
|
return context;
|
|
7707
7737
|
};
|
|
7708
7738
|
const useContext11 = (id) => {
|
|
7709
7739
|
if (isStaticId(id)) {
|
|
7710
|
-
return contexts[id] ?
|
|
7740
|
+
return contexts[id] ? import_react18.default.useContext(contexts[id]) : generalDefaultValue;
|
|
7711
7741
|
}
|
|
7712
|
-
return contexts[id] ?
|
|
7742
|
+
return contexts[id] ? import_react18.default.useContext(contexts[id]) : null;
|
|
7713
7743
|
};
|
|
7714
7744
|
return {
|
|
7715
7745
|
contexts,
|