@firecms/core 3.3.0-canary.1e1cce9 → 3.3.0-canary.289082f
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/app/useApp.d.ts +1 -0
- package/dist/core/DefaultDrawer.d.ts +10 -3
- package/dist/core/field_configs.d.ts +1 -1
- package/dist/form/field_bindings/GeopointFieldBinding.d.ts +5 -0
- package/dist/form/index.d.ts +1 -0
- package/dist/index.es.js +1741 -492
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1740 -491
- package/dist/index.umd.js.map +1 -1
- package/dist/locales/pl.d.ts +2 -0
- package/dist/preview/index.d.ts +1 -0
- package/dist/preview/property_previews/GeopointPropertyPreview.d.ts +4 -0
- package/dist/util/geopoint.d.ts +22 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_blocking.d.ts +22 -0
- package/dist/util/navigation_from_path.d.ts +10 -0
- package/dist/util/navigation_utils.d.ts +20 -0
- package/package.json +14 -7
- package/src/app/Scaffold.tsx +34 -44
- package/src/app/useApp.tsx +1 -0
- package/src/components/VirtualTable/VirtualTable.tsx +19 -8
- package/src/components/common/useDataSourceTableController.tsx +25 -6
- package/src/core/DefaultDrawer.tsx +150 -64
- package/src/core/DrawerNavigationGroup.tsx +27 -29
- package/src/core/DrawerNavigationItem.tsx +10 -12
- package/src/core/EntityEditView.tsx +57 -32
- package/src/core/field_configs.tsx +15 -0
- package/src/form/field_bindings/GeopointFieldBinding.tsx +139 -0
- package/src/form/index.tsx +1 -0
- package/src/i18n/FireCMSi18nProvider.tsx +2 -0
- package/src/internal/useBuildSideEntityController.tsx +2 -1
- package/src/locales/pl.ts +730 -0
- package/src/preview/PropertyPreview.tsx +12 -0
- package/src/preview/index.ts +1 -0
- package/src/preview/property_previews/GeopointPropertyPreview.tsx +23 -0
- package/src/routes/FireCMSRoute.tsx +44 -25
- package/src/util/entities.ts +2 -0
- package/src/util/geopoint.ts +81 -0
- package/src/util/index.ts +1 -0
- package/src/util/navigation_blocking.ts +45 -0
- package/src/util/navigation_from_path.ts +23 -6
- package/src/util/navigation_utils.ts +36 -2
- package/src/util/parent_references_from_path.ts +4 -2
package/dist/index.es.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import { c } from "react-compiler-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import React__default, { useState, useRef, useEffect, useContext, useCallback, useMemo, createElement, forwardRef, createRef, createContext, memo, useLayoutEffect } from "react";
|
|
5
|
-
import { getColorSchemeForSeed, CHIP_COLORS, FunctionsIcon, CircleIcon, iconKeys, coolIconKeys, Icon, Tooltip, ErrorIcon, Typography, IconButton, ContentCopyIcon, OpenInNewIcon, DescriptionIcon, cls, Skeleton, Chip, defaultBorderMixin, KeyboardTabIcon, Checkbox, AccountCircleIcon, Markdown, TextareaAutosize, focusedDisabled, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, paperMixin, EditIcon, DoNotDisturbOnIcon, InfoIcon, CloseIcon, Button, ExpandablePanel, fieldBackgroundMixin, RemoveIcon, fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, TextField, Collapse, BooleanSwitchWithLabel, AddIcon, ArrowDropDownIcon, MenuItem, Menu, CircularProgress, DialogActions, LoadingButton, WarningIcon, KeyboardArrowDownIcon, VisibilityIcon, CheckIcon, CancelIcon, DialogTitle, DialogContent, Dialog, Alert, NotesIcon, MoreVertIcon, Badge, SearchBar, ArrowUpwardIcon, Popover, FilterListIcon, CenteredView, AssignmentIcon, Label, useOutsideAlerter, FileCopyIcon, DeleteIcon, StarIcon, ArrowForwardIcon, Card, cardMixin, cardClickableMixin, Container, getColorSchemeForKey, RefreshIcon, ListIcon, AppsIcon, ViewKanbanIcon, ToggleButtonGroup, ViewColumnIcon, FilterListOffIcon, SearchIcon, DarkModeIcon, LightModeIcon, BrightnessMediumIcon, LogoutIcon, Avatar, HandleIcon, KeyboardArrowUpIcon, debounce, AutoAwesomeIcon, TranslateIcon, OpenInFullIcon, Sheet, Tab, ExpandMoreIcon, Tabs, CodeIcon, ViewStreamIcon, RepeatIcon, BallotIcon, ScheduleIcon, AddLinkIcon, LinkIcon, DriveFolderUploadIcon, UploadFileIcon, FormatListNumberedIcon, NumbersIcon, PersonIcon, ListAltIcon, FlagIcon, MailIcon, HttpIcon, FormatQuoteIcon, SubjectIcon, ShortTextIcon, MenuIcon,
|
|
5
|
+
import { getColorSchemeForSeed, CHIP_COLORS, FunctionsIcon, CircleIcon, iconKeys, coolIconKeys, Icon, Tooltip, ErrorIcon, Typography, IconButton, ContentCopyIcon, OpenInNewIcon, DescriptionIcon, cls, Skeleton, Chip, defaultBorderMixin, KeyboardTabIcon, Checkbox, AccountCircleIcon, Markdown, TextareaAutosize, focusedDisabled, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, paperMixin, EditIcon, DoNotDisturbOnIcon, InfoIcon, CloseIcon, Button, ExpandablePanel, fieldBackgroundMixin, RemoveIcon, fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, TextField, Collapse, BooleanSwitchWithLabel, AddIcon, ArrowDropDownIcon, MenuItem, Menu, CircularProgress, DialogActions, LoadingButton, WarningIcon, KeyboardArrowDownIcon, VisibilityIcon, CheckIcon, CancelIcon, DialogTitle, DialogContent, Dialog, Alert, NotesIcon, MoreVertIcon, Badge, SearchBar, ArrowUpwardIcon, Popover, FilterListIcon, CenteredView, AssignmentIcon, Label, useOutsideAlerter, FileCopyIcon, DeleteIcon, StarIcon, ArrowForwardIcon, Card, cardMixin, cardClickableMixin, Container, getColorSchemeForKey, RefreshIcon, ListIcon, AppsIcon, ViewKanbanIcon, ToggleButtonGroup, ViewColumnIcon, FilterListOffIcon, SearchIcon, DarkModeIcon, LightModeIcon, BrightnessMediumIcon, LogoutIcon, Avatar, HandleIcon, KeyboardArrowUpIcon, debounce, AutoAwesomeIcon, TranslateIcon, OpenInFullIcon, Sheet, Tab, ExpandMoreIcon, Tabs, CodeIcon, KeyboardDoubleArrowLeftIcon, KeyboardDoubleArrowRightIcon, ViewStreamIcon, RepeatIcon, BallotIcon, LocationOnIcon, ScheduleIcon, AddLinkIcon, LinkIcon, DriveFolderUploadIcon, UploadFileIcon, FormatListNumberedIcon, NumbersIcon, PersonIcon, ListAltIcon, FlagIcon, MailIcon, HttpIcon, FormatQuoteIcon, SubjectIcon, ShortTextIcon, MenuIcon, TextFieldsIcon, CheckBoxIcon, LooksOneIcon, LooksTwoIcon, Looks3Icon, FormatListBulletedIcon, ImageIcon, TableChartIcon, AutoFixHighIcon, FormatBoldIcon, FormatItalicIcon, FormatUnderlinedIcon, FormatStrikethroughIcon, useInjectStyles, Separator } from "@firecms/ui";
|
|
6
6
|
import { SnackbarProvider as SnackbarProvider$1, useSnackbar } from "notistack";
|
|
7
7
|
import hash from "object-hash";
|
|
8
8
|
import { getIn, Field, useFormex, setIn, useCreateFormex, Formex } from "@firecms/formex";
|
|
@@ -193,6 +193,12 @@ function addInitialSlash(s) {
|
|
|
193
193
|
if (s.startsWith("/")) return s;
|
|
194
194
|
else return `/${s}`;
|
|
195
195
|
}
|
|
196
|
+
function encodeEntityId(entityId) {
|
|
197
|
+
return entityId.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll("#", "%23").replaceAll("?", "%3F");
|
|
198
|
+
}
|
|
199
|
+
function decodeEntityId(encodedEntityId) {
|
|
200
|
+
return encodedEntityId.replaceAll("%2F", "/").replaceAll("%23", "#").replaceAll("%3F", "?").replaceAll("%25", "%");
|
|
201
|
+
}
|
|
196
202
|
function getLastSegment(path) {
|
|
197
203
|
const cleanPath = removeInitialAndTrailingSlashes(path);
|
|
198
204
|
if (cleanPath.includes("/")) {
|
|
@@ -286,7 +292,7 @@ function getCollectionByPathOrId(pathOrId, collections) {
|
|
|
286
292
|
return result;
|
|
287
293
|
}
|
|
288
294
|
function getCollectionPathsCombinations(subpaths) {
|
|
289
|
-
const entries = subpaths.length > 0 && subpaths.length % 2 === 0 ? subpaths.
|
|
295
|
+
const entries = subpaths.length > 0 && subpaths.length % 2 === 0 ? subpaths.slice(0, subpaths.length - 1) : subpaths;
|
|
290
296
|
const length = entries.length;
|
|
291
297
|
const result = [];
|
|
292
298
|
for (let i = length; i > 0; i = i - 2) {
|
|
@@ -318,7 +324,7 @@ function navigateToEntity({
|
|
|
318
324
|
onClose
|
|
319
325
|
});
|
|
320
326
|
} else {
|
|
321
|
-
let to = navigation.buildUrlCollectionPath(entityId ? `${fullIdPath ?? path}/${entityId}` : fullIdPath ?? path);
|
|
327
|
+
let to = navigation.buildUrlCollectionPath(entityId ? `${fullIdPath ?? path}/${encodeEntityId(entityId)}` : fullIdPath ?? path);
|
|
322
328
|
if (entityId && selectedTab) {
|
|
323
329
|
to += `/${selectedTab}`;
|
|
324
330
|
}
|
|
@@ -681,6 +687,8 @@ function getDefaultValueForDataType(dataType) {
|
|
|
681
687
|
return [];
|
|
682
688
|
} else if (dataType === "map") {
|
|
683
689
|
return {};
|
|
690
|
+
} else if (dataType === "geopoint") {
|
|
691
|
+
return null;
|
|
684
692
|
} else {
|
|
685
693
|
return null;
|
|
686
694
|
}
|
|
@@ -1140,7 +1148,8 @@ function getNavigationEntriesFromPath(props) {
|
|
|
1140
1148
|
path,
|
|
1141
1149
|
collections = [],
|
|
1142
1150
|
currentFullPath,
|
|
1143
|
-
currentFullIdPath
|
|
1151
|
+
currentFullIdPath,
|
|
1152
|
+
currentFullUrlPath
|
|
1144
1153
|
} = props;
|
|
1145
1154
|
const subpaths = removeInitialAndTrailingSlashes(path).split("/");
|
|
1146
1155
|
const subpathCombinations = getCollectionPathsCombinations(subpaths);
|
|
@@ -1154,26 +1163,29 @@ function getNavigationEntriesFromPath(props) {
|
|
|
1154
1163
|
}
|
|
1155
1164
|
if (collection) {
|
|
1156
1165
|
const collectionPath = currentFullPath && currentFullPath.length > 0 ? currentFullPath + "/" + collection.path : collection.path;
|
|
1166
|
+
const collectionUrlPath = currentFullUrlPath && currentFullUrlPath.length > 0 ? currentFullUrlPath + "/" + collection.path : collection.path;
|
|
1157
1167
|
const fullIdPath = currentFullIdPath && currentFullIdPath.length > 0 ? currentFullIdPath + "/" + collection.id : collection.id;
|
|
1158
1168
|
result.push({
|
|
1159
1169
|
type: "collection",
|
|
1160
1170
|
id: collection.id,
|
|
1161
1171
|
path: collectionPath,
|
|
1162
|
-
fullPath:
|
|
1172
|
+
fullPath: collectionUrlPath,
|
|
1163
1173
|
fullIdPath,
|
|
1164
1174
|
collection
|
|
1165
1175
|
});
|
|
1166
1176
|
const restOfThePath = removeInitialAndTrailingSlashes(removeInitialAndTrailingSlashes(path).replace(subpathCombination, ""));
|
|
1167
1177
|
const nextSegments = restOfThePath.length > 0 ? restOfThePath.split("/") : [];
|
|
1168
1178
|
if (nextSegments.length > 0) {
|
|
1169
|
-
const
|
|
1179
|
+
const encodedEntityId = nextSegments[0];
|
|
1180
|
+
const entityId = decodeEntityId(encodedEntityId);
|
|
1170
1181
|
const fullPath = collectionPath + "/" + entityId;
|
|
1182
|
+
const fullUrlPath = collectionUrlPath + "/" + encodedEntityId;
|
|
1171
1183
|
result.push({
|
|
1172
1184
|
type: "entity",
|
|
1173
1185
|
entityId,
|
|
1174
1186
|
path: collectionPath,
|
|
1175
1187
|
fullIdPath,
|
|
1176
|
-
fullPath,
|
|
1188
|
+
fullPath: fullUrlPath,
|
|
1177
1189
|
parentCollection: collection
|
|
1178
1190
|
});
|
|
1179
1191
|
if (nextSegments.length > 1) {
|
|
@@ -1189,7 +1201,7 @@ function getNavigationEntriesFromPath(props) {
|
|
|
1189
1201
|
path: collectionPath,
|
|
1190
1202
|
entityId,
|
|
1191
1203
|
fullIdPath,
|
|
1192
|
-
fullPath:
|
|
1204
|
+
fullPath: fullUrlPath + "/" + customView.key,
|
|
1193
1205
|
view: customView
|
|
1194
1206
|
});
|
|
1195
1207
|
} else if (collection.subcollections) {
|
|
@@ -1198,6 +1210,7 @@ function getNavigationEntriesFromPath(props) {
|
|
|
1198
1210
|
collections: collection.subcollections,
|
|
1199
1211
|
currentFullPath: fullPath,
|
|
1200
1212
|
currentFullIdPath: fullIdPath,
|
|
1213
|
+
currentFullUrlPath: fullUrlPath,
|
|
1201
1214
|
contextEntityViews: props.contextEntityViews
|
|
1202
1215
|
}));
|
|
1203
1216
|
}
|
|
@@ -1602,6 +1615,77 @@ function canCreateEntity(collection, authController, path, entity) {
|
|
|
1602
1615
|
function canDeleteEntity(collection, authController, path, entity) {
|
|
1603
1616
|
return resolvePermissions(collection, authController, path, entity)?.delete ?? DEFAULT_PERMISSIONS.delete;
|
|
1604
1617
|
}
|
|
1618
|
+
function toNumber(value) {
|
|
1619
|
+
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
1620
|
+
}
|
|
1621
|
+
function getGeoPointCoordinates(value) {
|
|
1622
|
+
if (!value) return void 0;
|
|
1623
|
+
if (value instanceof GeoPoint) {
|
|
1624
|
+
return {
|
|
1625
|
+
latitude: value.latitude,
|
|
1626
|
+
longitude: value.longitude
|
|
1627
|
+
};
|
|
1628
|
+
}
|
|
1629
|
+
if (typeof value !== "object") return void 0;
|
|
1630
|
+
const latitude = toNumber(value.latitude ?? value.lat ?? value._lat);
|
|
1631
|
+
const longitude = toNumber(value.longitude ?? value.lng ?? value._long);
|
|
1632
|
+
if (latitude === void 0 || longitude === void 0) return void 0;
|
|
1633
|
+
return {
|
|
1634
|
+
latitude,
|
|
1635
|
+
longitude
|
|
1636
|
+
};
|
|
1637
|
+
}
|
|
1638
|
+
function normalizeGeoPoint(value) {
|
|
1639
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
1640
|
+
if (!coordinates) return void 0;
|
|
1641
|
+
if (value instanceof GeoPoint) return value;
|
|
1642
|
+
return new GeoPoint(coordinates.latitude, coordinates.longitude);
|
|
1643
|
+
}
|
|
1644
|
+
function formatGeoPoint(value, options) {
|
|
1645
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
1646
|
+
if (!coordinates) return "";
|
|
1647
|
+
const maximumFractionDigits = options?.maximumFractionDigits ?? 6;
|
|
1648
|
+
const formatter = new Intl.NumberFormat("en-US", {
|
|
1649
|
+
maximumFractionDigits,
|
|
1650
|
+
minimumFractionDigits: Math.min(2, maximumFractionDigits),
|
|
1651
|
+
useGrouping: false
|
|
1652
|
+
});
|
|
1653
|
+
return `${formatter.format(coordinates.latitude)}, ${formatter.format(coordinates.longitude)}`;
|
|
1654
|
+
}
|
|
1655
|
+
function parseGeoPoint(input) {
|
|
1656
|
+
const trimmed = input.trim();
|
|
1657
|
+
if (!trimmed) return {
|
|
1658
|
+
point: null
|
|
1659
|
+
};
|
|
1660
|
+
const parts = trimmed.split(",").map((part) => part.trim()).filter((part) => part !== "");
|
|
1661
|
+
if (parts.length !== 2) return {
|
|
1662
|
+
point: null,
|
|
1663
|
+
error: 'Use "lat, lng" format'
|
|
1664
|
+
};
|
|
1665
|
+
const latitude = parseFloat(parts[0]);
|
|
1666
|
+
const longitude = parseFloat(parts[1]);
|
|
1667
|
+
if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {
|
|
1668
|
+
return {
|
|
1669
|
+
point: null,
|
|
1670
|
+
error: "Latitude and longitude must be numbers"
|
|
1671
|
+
};
|
|
1672
|
+
}
|
|
1673
|
+
if (latitude < -90 || latitude > 90) {
|
|
1674
|
+
return {
|
|
1675
|
+
point: null,
|
|
1676
|
+
error: "Latitude must be between -90 and 90"
|
|
1677
|
+
};
|
|
1678
|
+
}
|
|
1679
|
+
if (longitude < -180 || longitude > 180) {
|
|
1680
|
+
return {
|
|
1681
|
+
point: null,
|
|
1682
|
+
error: "Longitude must be between -180 and 180"
|
|
1683
|
+
};
|
|
1684
|
+
}
|
|
1685
|
+
return {
|
|
1686
|
+
point: new GeoPoint(latitude, longitude)
|
|
1687
|
+
};
|
|
1688
|
+
}
|
|
1605
1689
|
const iconSynonyms = {
|
|
1606
1690
|
abc: "alphabet character font letter symbol text type",
|
|
1607
1691
|
access_alarm: "clock time",
|
|
@@ -7255,6 +7339,59 @@ function _temp$x(t0) {
|
|
|
7255
7339
|
typeof childValue === "object" && !isTimestampObj && /* @__PURE__ */ jsx("div", { className: cls(defaultBorderMixin, "border-l pl-4"), children: /* @__PURE__ */ jsx(KeyValuePreview, { value: childValue }) })
|
|
7256
7340
|
] }, `map_preview_table_${key}}`);
|
|
7257
7341
|
}
|
|
7342
|
+
function GeopointPropertyPreview(t0) {
|
|
7343
|
+
const $ = c(10);
|
|
7344
|
+
const {
|
|
7345
|
+
value,
|
|
7346
|
+
size
|
|
7347
|
+
} = t0;
|
|
7348
|
+
let t1;
|
|
7349
|
+
let t2;
|
|
7350
|
+
let t3;
|
|
7351
|
+
if ($[0] !== size || $[1] !== value) {
|
|
7352
|
+
t3 = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
|
|
7353
|
+
bb0: {
|
|
7354
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
7355
|
+
if (!coordinates) {
|
|
7356
|
+
const t42 = size === "small" ? "text-sm text-text-secondary dark:text-text-secondary-dark" : "text-text-secondary dark:text-text-secondary-dark";
|
|
7357
|
+
let t5;
|
|
7358
|
+
if ($[5] !== t42) {
|
|
7359
|
+
t5 = /* @__PURE__ */ jsx("span", { className: t42, children: "—" });
|
|
7360
|
+
$[5] = t42;
|
|
7361
|
+
$[6] = t5;
|
|
7362
|
+
} else {
|
|
7363
|
+
t5 = $[6];
|
|
7364
|
+
}
|
|
7365
|
+
t3 = t5;
|
|
7366
|
+
break bb0;
|
|
7367
|
+
}
|
|
7368
|
+
t1 = size === "small" ? "text-sm font-mono" : "font-mono";
|
|
7369
|
+
t2 = formatGeoPoint(coordinates);
|
|
7370
|
+
}
|
|
7371
|
+
$[0] = size;
|
|
7372
|
+
$[1] = value;
|
|
7373
|
+
$[2] = t1;
|
|
7374
|
+
$[3] = t2;
|
|
7375
|
+
$[4] = t3;
|
|
7376
|
+
} else {
|
|
7377
|
+
t1 = $[2];
|
|
7378
|
+
t2 = $[3];
|
|
7379
|
+
t3 = $[4];
|
|
7380
|
+
}
|
|
7381
|
+
if (t3 !== /* @__PURE__ */ Symbol.for("react.early_return_sentinel")) {
|
|
7382
|
+
return t3;
|
|
7383
|
+
}
|
|
7384
|
+
let t4;
|
|
7385
|
+
if ($[7] !== t1 || $[8] !== t2) {
|
|
7386
|
+
t4 = /* @__PURE__ */ jsx("span", { className: t1, children: t2 });
|
|
7387
|
+
$[7] = t1;
|
|
7388
|
+
$[8] = t2;
|
|
7389
|
+
$[9] = t4;
|
|
7390
|
+
} else {
|
|
7391
|
+
t4 = $[9];
|
|
7392
|
+
}
|
|
7393
|
+
return t4;
|
|
7394
|
+
}
|
|
7258
7395
|
function BooleanPreview(t0) {
|
|
7259
7396
|
const $ = c(9);
|
|
7260
7397
|
const {
|
|
@@ -7682,47 +7819,56 @@ const PropertyPreview = React__default.memo(function PropertyPreview2(props) {
|
|
|
7682
7819
|
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7683
7820
|
}
|
|
7684
7821
|
} else {
|
|
7685
|
-
if (property.dataType === "
|
|
7686
|
-
|
|
7687
|
-
|
|
7688
|
-
|
|
7689
|
-
} else {
|
|
7690
|
-
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7691
|
-
}
|
|
7822
|
+
if (property.dataType === "geopoint") {
|
|
7823
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
7824
|
+
if (coordinates) {
|
|
7825
|
+
content = /* @__PURE__ */ jsx(GeopointPropertyPreview, { ...props, property, value });
|
|
7692
7826
|
} else {
|
|
7693
|
-
|
|
7694
|
-
if ($[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
7695
|
-
t02 = /* @__PURE__ */ jsx(EmptyValue, {});
|
|
7696
|
-
$[27] = t02;
|
|
7697
|
-
} else {
|
|
7698
|
-
t02 = $[27];
|
|
7699
|
-
}
|
|
7700
|
-
content = t02;
|
|
7827
|
+
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7701
7828
|
}
|
|
7702
7829
|
} else {
|
|
7703
|
-
if (property.dataType === "
|
|
7704
|
-
if (typeof
|
|
7705
|
-
|
|
7830
|
+
if (property.dataType === "reference") {
|
|
7831
|
+
if (typeof property.path === "string") {
|
|
7832
|
+
if (typeof value === "object" && "isEntityReference" in value && value.isEntityReference()) {
|
|
7833
|
+
content = /* @__PURE__ */ jsx(ReferencePreview, { disabled: !property.path, previewProperties: property.previewProperties, includeId: property.includeId, includeEntityLink: property.includeEntityLink, size: props.size, reference: value });
|
|
7834
|
+
} else {
|
|
7835
|
+
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7836
|
+
}
|
|
7706
7837
|
} else {
|
|
7707
|
-
|
|
7838
|
+
let t02;
|
|
7839
|
+
if ($[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
7840
|
+
t02 = /* @__PURE__ */ jsx(EmptyValue, {});
|
|
7841
|
+
$[27] = t02;
|
|
7842
|
+
} else {
|
|
7843
|
+
t02 = $[27];
|
|
7844
|
+
}
|
|
7845
|
+
content = t02;
|
|
7708
7846
|
}
|
|
7709
7847
|
} else {
|
|
7710
|
-
if (property.dataType === "
|
|
7711
|
-
if (typeof value === "
|
|
7712
|
-
content = /* @__PURE__ */ jsx(
|
|
7848
|
+
if (property.dataType === "boolean") {
|
|
7849
|
+
if (typeof value === "boolean") {
|
|
7850
|
+
content = /* @__PURE__ */ jsx(BooleanPreview, { value, size, property });
|
|
7713
7851
|
} else {
|
|
7714
7852
|
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7715
7853
|
}
|
|
7716
7854
|
} else {
|
|
7717
|
-
|
|
7718
|
-
|
|
7719
|
-
|
|
7720
|
-
|
|
7721
|
-
|
|
7855
|
+
if (property.dataType === "number") {
|
|
7856
|
+
if (typeof value === "number") {
|
|
7857
|
+
content = /* @__PURE__ */ jsx(NumberPropertyPreview, { ...props, value, property });
|
|
7858
|
+
} else {
|
|
7859
|
+
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7860
|
+
}
|
|
7722
7861
|
} else {
|
|
7723
|
-
t02
|
|
7862
|
+
let t02;
|
|
7863
|
+
if ($[28] !== value) {
|
|
7864
|
+
t02 = JSON.stringify(value, jsonStringifyReplacer);
|
|
7865
|
+
$[28] = value;
|
|
7866
|
+
$[29] = t02;
|
|
7867
|
+
} else {
|
|
7868
|
+
t02 = $[29];
|
|
7869
|
+
}
|
|
7870
|
+
content = t02;
|
|
7724
7871
|
}
|
|
7725
|
-
content = t02;
|
|
7726
7872
|
}
|
|
7727
7873
|
}
|
|
7728
7874
|
}
|
|
@@ -12959,6 +13105,260 @@ function DateTimeFieldBinding(t0) {
|
|
|
12959
13105
|
}
|
|
12960
13106
|
return t13;
|
|
12961
13107
|
}
|
|
13108
|
+
function GeopointFieldBinding(t0) {
|
|
13109
|
+
const $ = c(66);
|
|
13110
|
+
const {
|
|
13111
|
+
propertyKey,
|
|
13112
|
+
value,
|
|
13113
|
+
setValue,
|
|
13114
|
+
error,
|
|
13115
|
+
showError,
|
|
13116
|
+
disabled,
|
|
13117
|
+
autoFocus,
|
|
13118
|
+
property,
|
|
13119
|
+
includeDescription,
|
|
13120
|
+
size: t1
|
|
13121
|
+
} = t0;
|
|
13122
|
+
const size = t1 === void 0 ? "large" : t1;
|
|
13123
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
13124
|
+
const canClear = Boolean(property.clearable);
|
|
13125
|
+
const [latitude, setLatitude] = useState(coordinates ? coordinates.latitude.toString() : "");
|
|
13126
|
+
const [longitude, setLongitude] = useState(coordinates ? coordinates.longitude.toString() : "");
|
|
13127
|
+
const [localError, setLocalError] = useState();
|
|
13128
|
+
const skipSyncRef = useRef(false);
|
|
13129
|
+
let t2;
|
|
13130
|
+
if ($[0] !== property || $[1] !== setValue || $[2] !== value) {
|
|
13131
|
+
t2 = {
|
|
13132
|
+
property,
|
|
13133
|
+
value,
|
|
13134
|
+
setValue
|
|
13135
|
+
};
|
|
13136
|
+
$[0] = property;
|
|
13137
|
+
$[1] = setValue;
|
|
13138
|
+
$[2] = value;
|
|
13139
|
+
$[3] = t2;
|
|
13140
|
+
} else {
|
|
13141
|
+
t2 = $[3];
|
|
13142
|
+
}
|
|
13143
|
+
useClearRestoreValue(t2);
|
|
13144
|
+
let t3;
|
|
13145
|
+
if ($[4] !== setLatitude || $[5] !== value) {
|
|
13146
|
+
t3 = () => {
|
|
13147
|
+
if (skipSyncRef.current) {
|
|
13148
|
+
skipSyncRef.current = false;
|
|
13149
|
+
return;
|
|
13150
|
+
}
|
|
13151
|
+
const nextCoordinates = getGeoPointCoordinates(value);
|
|
13152
|
+
setLatitude(nextCoordinates ? nextCoordinates.latitude.toString() : "");
|
|
13153
|
+
setLongitude(nextCoordinates ? nextCoordinates.longitude.toString() : "");
|
|
13154
|
+
};
|
|
13155
|
+
$[4] = setLatitude;
|
|
13156
|
+
$[5] = value;
|
|
13157
|
+
$[6] = t3;
|
|
13158
|
+
} else {
|
|
13159
|
+
t3 = $[6];
|
|
13160
|
+
}
|
|
13161
|
+
let t4;
|
|
13162
|
+
if ($[7] !== value) {
|
|
13163
|
+
t4 = [value];
|
|
13164
|
+
$[7] = value;
|
|
13165
|
+
$[8] = t4;
|
|
13166
|
+
} else {
|
|
13167
|
+
t4 = $[8];
|
|
13168
|
+
}
|
|
13169
|
+
useEffect(t3, t4);
|
|
13170
|
+
let t5;
|
|
13171
|
+
if ($[9] !== setLatitude || $[10] !== setValue) {
|
|
13172
|
+
t5 = (nextLatitude, nextLongitude) => {
|
|
13173
|
+
skipSyncRef.current = true;
|
|
13174
|
+
setLatitude(nextLatitude);
|
|
13175
|
+
setLongitude(nextLongitude);
|
|
13176
|
+
const trimmedLatitude = nextLatitude.trim();
|
|
13177
|
+
const trimmedLongitude = nextLongitude.trim();
|
|
13178
|
+
if (!trimmedLatitude && !trimmedLongitude) {
|
|
13179
|
+
setLocalError(void 0);
|
|
13180
|
+
setValue(null);
|
|
13181
|
+
return;
|
|
13182
|
+
}
|
|
13183
|
+
const parsed = parseGeoPoint(`${trimmedLatitude}, ${trimmedLongitude}`);
|
|
13184
|
+
if (parsed.error) {
|
|
13185
|
+
setLocalError(parsed.error);
|
|
13186
|
+
setValue(null);
|
|
13187
|
+
return;
|
|
13188
|
+
}
|
|
13189
|
+
setLocalError(void 0);
|
|
13190
|
+
setValue(parsed.point);
|
|
13191
|
+
};
|
|
13192
|
+
$[9] = setLatitude;
|
|
13193
|
+
$[10] = setValue;
|
|
13194
|
+
$[11] = t5;
|
|
13195
|
+
} else {
|
|
13196
|
+
t5 = $[11];
|
|
13197
|
+
}
|
|
13198
|
+
const updateGeoPoint = t5;
|
|
13199
|
+
let t6;
|
|
13200
|
+
if ($[12] !== updateGeoPoint) {
|
|
13201
|
+
t6 = (event) => {
|
|
13202
|
+
if (event) {
|
|
13203
|
+
event.preventDefault();
|
|
13204
|
+
event.stopPropagation();
|
|
13205
|
+
}
|
|
13206
|
+
updateGeoPoint("", "");
|
|
13207
|
+
};
|
|
13208
|
+
$[12] = updateGeoPoint;
|
|
13209
|
+
$[13] = t6;
|
|
13210
|
+
} else {
|
|
13211
|
+
t6 = $[13];
|
|
13212
|
+
}
|
|
13213
|
+
const handleClear = t6;
|
|
13214
|
+
const resolvedError = localError ?? error;
|
|
13215
|
+
const shouldShowError = Boolean(resolvedError) || Boolean(showError && error);
|
|
13216
|
+
let t7;
|
|
13217
|
+
if ($[14] !== property) {
|
|
13218
|
+
t7 = getIconForProperty(property, "small");
|
|
13219
|
+
$[14] = property;
|
|
13220
|
+
$[15] = t7;
|
|
13221
|
+
} else {
|
|
13222
|
+
t7 = $[15];
|
|
13223
|
+
}
|
|
13224
|
+
const t8 = property.validation?.required;
|
|
13225
|
+
const t9 = shouldShowError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark";
|
|
13226
|
+
let t10;
|
|
13227
|
+
if ($[16] !== property.name || $[17] !== t7 || $[18] !== t8 || $[19] !== t9) {
|
|
13228
|
+
t10 = /* @__PURE__ */ jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsx(LabelWithIcon, { icon: t7, required: t8, title: property.name, className: t9 }) });
|
|
13229
|
+
$[16] = property.name;
|
|
13230
|
+
$[17] = t7;
|
|
13231
|
+
$[18] = t8;
|
|
13232
|
+
$[19] = t9;
|
|
13233
|
+
$[20] = t10;
|
|
13234
|
+
} else {
|
|
13235
|
+
t10 = $[20];
|
|
13236
|
+
}
|
|
13237
|
+
let t11;
|
|
13238
|
+
if ($[21] !== longitude || $[22] !== updateGeoPoint) {
|
|
13239
|
+
t11 = (event_0) => updateGeoPoint(event_0.target.value, longitude);
|
|
13240
|
+
$[21] = longitude;
|
|
13241
|
+
$[22] = updateGeoPoint;
|
|
13242
|
+
$[23] = t11;
|
|
13243
|
+
} else {
|
|
13244
|
+
t11 = $[23];
|
|
13245
|
+
}
|
|
13246
|
+
let t12;
|
|
13247
|
+
if ($[24] !== canClear || $[25] !== handleClear) {
|
|
13248
|
+
t12 = canClear ? /* @__PURE__ */ jsx(IconButton, { onClick: handleClear, children: /* @__PURE__ */ jsx(CloseIcon, {}) }) : void 0;
|
|
13249
|
+
$[24] = canClear;
|
|
13250
|
+
$[25] = handleClear;
|
|
13251
|
+
$[26] = t12;
|
|
13252
|
+
} else {
|
|
13253
|
+
t12 = $[26];
|
|
13254
|
+
}
|
|
13255
|
+
const t13 = shouldShowError && Boolean(resolvedError);
|
|
13256
|
+
let t14;
|
|
13257
|
+
if ($[27] !== autoFocus || $[28] !== disabled || $[29] !== latitude || $[30] !== size || $[31] !== t11 || $[32] !== t12 || $[33] !== t13) {
|
|
13258
|
+
t14 = /* @__PURE__ */ jsx(TextField, { size, value: latitude, onChange: t11, autoFocus, label: "Latitude", type: "number", disabled, endAdornment: t12, error: t13 });
|
|
13259
|
+
$[27] = autoFocus;
|
|
13260
|
+
$[28] = disabled;
|
|
13261
|
+
$[29] = latitude;
|
|
13262
|
+
$[30] = size;
|
|
13263
|
+
$[31] = t11;
|
|
13264
|
+
$[32] = t12;
|
|
13265
|
+
$[33] = t13;
|
|
13266
|
+
$[34] = t14;
|
|
13267
|
+
} else {
|
|
13268
|
+
t14 = $[34];
|
|
13269
|
+
}
|
|
13270
|
+
let t15;
|
|
13271
|
+
if ($[35] !== latitude || $[36] !== updateGeoPoint) {
|
|
13272
|
+
t15 = (event_1) => updateGeoPoint(latitude, event_1.target.value);
|
|
13273
|
+
$[35] = latitude;
|
|
13274
|
+
$[36] = updateGeoPoint;
|
|
13275
|
+
$[37] = t15;
|
|
13276
|
+
} else {
|
|
13277
|
+
t15 = $[37];
|
|
13278
|
+
}
|
|
13279
|
+
const t16 = shouldShowError && Boolean(resolvedError);
|
|
13280
|
+
let t17;
|
|
13281
|
+
if ($[38] !== disabled || $[39] !== longitude || $[40] !== size || $[41] !== t15 || $[42] !== t16) {
|
|
13282
|
+
t17 = /* @__PURE__ */ jsx(TextField, { size, value: longitude, onChange: t15, label: "Longitude", type: "number", disabled, error: t16 });
|
|
13283
|
+
$[38] = disabled;
|
|
13284
|
+
$[39] = longitude;
|
|
13285
|
+
$[40] = size;
|
|
13286
|
+
$[41] = t15;
|
|
13287
|
+
$[42] = t16;
|
|
13288
|
+
$[43] = t17;
|
|
13289
|
+
} else {
|
|
13290
|
+
t17 = $[43];
|
|
13291
|
+
}
|
|
13292
|
+
let t18;
|
|
13293
|
+
if ($[44] !== t14 || $[45] !== t17) {
|
|
13294
|
+
t18 = /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-2 md:grid-cols-2", children: [
|
|
13295
|
+
t14,
|
|
13296
|
+
t17
|
|
13297
|
+
] });
|
|
13298
|
+
$[44] = t14;
|
|
13299
|
+
$[45] = t17;
|
|
13300
|
+
$[46] = t18;
|
|
13301
|
+
} else {
|
|
13302
|
+
t18 = $[46];
|
|
13303
|
+
}
|
|
13304
|
+
let t19;
|
|
13305
|
+
if ($[47] !== resolvedError || $[48] !== value) {
|
|
13306
|
+
t19 = value && !resolvedError && /* @__PURE__ */ jsx("div", { className: "text-xs text-text-secondary dark:text-text-secondary-dark font-mono", children: formatGeoPoint(value) });
|
|
13307
|
+
$[47] = resolvedError;
|
|
13308
|
+
$[48] = value;
|
|
13309
|
+
$[49] = t19;
|
|
13310
|
+
} else {
|
|
13311
|
+
t19 = $[49];
|
|
13312
|
+
}
|
|
13313
|
+
let t20;
|
|
13314
|
+
if ($[50] !== t10 || $[51] !== t18 || $[52] !== t19) {
|
|
13315
|
+
t20 = /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
13316
|
+
t10,
|
|
13317
|
+
t18,
|
|
13318
|
+
t19
|
|
13319
|
+
] });
|
|
13320
|
+
$[50] = t10;
|
|
13321
|
+
$[51] = t18;
|
|
13322
|
+
$[52] = t19;
|
|
13323
|
+
$[53] = t20;
|
|
13324
|
+
} else {
|
|
13325
|
+
t20 = $[53];
|
|
13326
|
+
}
|
|
13327
|
+
let t21;
|
|
13328
|
+
if ($[54] !== propertyKey || $[55] !== t20) {
|
|
13329
|
+
t21 = /* @__PURE__ */ jsx(PropertyIdCopyTooltip, { propertyKey, children: t20 });
|
|
13330
|
+
$[54] = propertyKey;
|
|
13331
|
+
$[55] = t20;
|
|
13332
|
+
$[56] = t21;
|
|
13333
|
+
} else {
|
|
13334
|
+
t21 = $[56];
|
|
13335
|
+
}
|
|
13336
|
+
let t22;
|
|
13337
|
+
if ($[57] !== disabled || $[58] !== includeDescription || $[59] !== property || $[60] !== resolvedError || $[61] !== shouldShowError) {
|
|
13338
|
+
t22 = /* @__PURE__ */ jsx(FieldHelperText, { includeDescription, showError: shouldShowError, error: resolvedError, disabled, property });
|
|
13339
|
+
$[57] = disabled;
|
|
13340
|
+
$[58] = includeDescription;
|
|
13341
|
+
$[59] = property;
|
|
13342
|
+
$[60] = resolvedError;
|
|
13343
|
+
$[61] = shouldShowError;
|
|
13344
|
+
$[62] = t22;
|
|
13345
|
+
} else {
|
|
13346
|
+
t22 = $[62];
|
|
13347
|
+
}
|
|
13348
|
+
let t23;
|
|
13349
|
+
if ($[63] !== t21 || $[64] !== t22) {
|
|
13350
|
+
t23 = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
13351
|
+
t21,
|
|
13352
|
+
t22
|
|
13353
|
+
] });
|
|
13354
|
+
$[63] = t21;
|
|
13355
|
+
$[64] = t22;
|
|
13356
|
+
$[65] = t23;
|
|
13357
|
+
} else {
|
|
13358
|
+
t23 = $[65];
|
|
13359
|
+
}
|
|
13360
|
+
return t23;
|
|
13361
|
+
}
|
|
12962
13362
|
function ReadOnlyFieldBinding(t0) {
|
|
12963
13363
|
const $ = c(18);
|
|
12964
13364
|
const {
|
|
@@ -18109,7 +18509,7 @@ const VirtualTable = React__default.memo(function VirtualTable2({
|
|
|
18109
18509
|
const currentSort = sortBy ? sortBy[1] : void 0;
|
|
18110
18510
|
const [columns, setColumns] = useState(columnsProp);
|
|
18111
18511
|
const tableRef = useRef(null);
|
|
18112
|
-
const
|
|
18512
|
+
const lastEndReachedDataLength = useRef(void 0);
|
|
18113
18513
|
const debouncedScroll = useDebounceCallback(onScrollProp, 200);
|
|
18114
18514
|
const [draggingColumnId, setDraggingColumnId] = useState(null);
|
|
18115
18515
|
const sensors = useSensors(useSensor(PointerSensor, {
|
|
@@ -18188,7 +18588,7 @@ const VirtualTable = React__default.memo(function VirtualTable2({
|
|
|
18188
18588
|
filterRef.current = filterInput;
|
|
18189
18589
|
}, [filterInput]);
|
|
18190
18590
|
const scrollToTop = useCallback(() => {
|
|
18191
|
-
|
|
18591
|
+
lastEndReachedDataLength.current = void 0;
|
|
18192
18592
|
if (tableRef.current) {
|
|
18193
18593
|
tableRef.current.scrollTo(tableRef.current?.scrollLeft, 0);
|
|
18194
18594
|
}
|
|
@@ -18214,28 +18614,37 @@ const VirtualTable = React__default.memo(function VirtualTable2({
|
|
|
18214
18614
|
scrollToTop();
|
|
18215
18615
|
}, [checkFilterCombination, currentSort, onFilterUpdate, onResetPagination, onSortByUpdate, scrollToTop, sortByProperty]);
|
|
18216
18616
|
const maxScroll = Math.max((data?.length ?? 0) * rowHeight - bounds.height, 0);
|
|
18217
|
-
const onEndReachedInternal = useCallback((
|
|
18218
|
-
|
|
18219
|
-
|
|
18617
|
+
const onEndReachedInternal = useCallback(() => {
|
|
18618
|
+
const dataLength = data?.length ?? 0;
|
|
18619
|
+
if (onEndReached && dataLength > 0 && lastEndReachedDataLength.current !== dataLength) {
|
|
18620
|
+
lastEndReachedDataLength.current = dataLength;
|
|
18220
18621
|
onEndReached();
|
|
18221
18622
|
}
|
|
18222
18623
|
}, [data?.length, onEndReached]);
|
|
18624
|
+
useEffect(() => {
|
|
18625
|
+
if (!onEndReached || loading || !data?.length || !bounds.height || !tableRef.current) {
|
|
18626
|
+
return;
|
|
18627
|
+
}
|
|
18628
|
+
if (tableRef.current.scrollHeight <= tableRef.current.clientHeight) {
|
|
18629
|
+
onEndReachedInternal();
|
|
18630
|
+
}
|
|
18631
|
+
}, [bounds.height, data?.length, loading, onEndReached, onEndReachedInternal]);
|
|
18223
18632
|
const onScroll = useCallback(({
|
|
18224
18633
|
scrollDirection,
|
|
18225
|
-
scrollOffset
|
|
18634
|
+
scrollOffset,
|
|
18226
18635
|
scrollUpdateWasRequested
|
|
18227
18636
|
}) => {
|
|
18228
18637
|
if (onScrollProp) {
|
|
18229
18638
|
debouncedScroll({
|
|
18230
18639
|
scrollDirection,
|
|
18231
|
-
scrollOffset
|
|
18640
|
+
scrollOffset,
|
|
18232
18641
|
scrollUpdateWasRequested
|
|
18233
18642
|
});
|
|
18234
18643
|
}
|
|
18235
|
-
if (!scrollUpdateWasRequested &&
|
|
18236
|
-
}, [maxScroll, onEndReachedInternal]);
|
|
18644
|
+
if (!scrollUpdateWasRequested && scrollOffset >= maxScroll - endOffset) onEndReachedInternal();
|
|
18645
|
+
}, [endOffset, maxScroll, onEndReachedInternal]);
|
|
18237
18646
|
const onFilterUpdateInternal = useCallback((column_1, filterForProperty) => {
|
|
18238
|
-
|
|
18647
|
+
lastEndReachedDataLength.current = void 0;
|
|
18239
18648
|
const filter_0 = filterRef.current;
|
|
18240
18649
|
let newFilterValue = filter_0 ? {
|
|
18241
18650
|
...filter_0
|
|
@@ -19642,7 +20051,7 @@ function encodeFilterAndSort(filterValues, sortBy) {
|
|
|
19642
20051
|
}
|
|
19643
20052
|
if (encodedValue !== void 0) {
|
|
19644
20053
|
entries[encodeURIComponent(`${key}_op`)] = encodeURIComponent(op);
|
|
19645
|
-
entries[encodeURIComponent(`${key}_value`)] = encodedValue ? encodeURIComponent(encodedValue.toString()) : "null";
|
|
20054
|
+
entries[encodeURIComponent(`${key}_value`)] = encodedValue !== null && encodedValue !== void 0 ? encodeURIComponent(encodedValue.toString()) : "null";
|
|
19646
20055
|
}
|
|
19647
20056
|
}
|
|
19648
20057
|
});
|
|
@@ -19682,7 +20091,12 @@ function isDate(dateString) {
|
|
|
19682
20091
|
return date.toISOString() === dateString;
|
|
19683
20092
|
}
|
|
19684
20093
|
function encodeRef(val) {
|
|
19685
|
-
return `ref::${val.path}/${val.id}`;
|
|
20094
|
+
return `ref::${val.path}/${encodeEntityId(val.id)}`;
|
|
20095
|
+
}
|
|
20096
|
+
function decodeRef(encoded) {
|
|
20097
|
+
const separatorIndex = encoded.lastIndexOf("/");
|
|
20098
|
+
if (separatorIndex < 0) return new EntityReference(encoded, "");
|
|
20099
|
+
return new EntityReference(decodeEntityId(encoded.substring(separatorIndex + 1)), encoded.substring(0, separatorIndex));
|
|
19686
20100
|
}
|
|
19687
20101
|
function decodeString(val) {
|
|
19688
20102
|
let parsedFilterVal = val;
|
|
@@ -19696,8 +20110,7 @@ function decodeString(val) {
|
|
|
19696
20110
|
try {
|
|
19697
20111
|
parsedFilterVal = JSON.parse(parsedFilterVal, (key, value) => {
|
|
19698
20112
|
if (typeof value === "string" && value.startsWith("ref::")) {
|
|
19699
|
-
|
|
19700
|
-
return new EntityReference(id, path);
|
|
20113
|
+
return decodeRef(value.substring(5));
|
|
19701
20114
|
}
|
|
19702
20115
|
return value;
|
|
19703
20116
|
});
|
|
@@ -19705,8 +20118,7 @@ function decodeString(val) {
|
|
|
19705
20118
|
}
|
|
19706
20119
|
}
|
|
19707
20120
|
if (typeof parsedFilterVal === "string" && parsedFilterVal.startsWith("ref::")) {
|
|
19708
|
-
|
|
19709
|
-
return new EntityReference(id, path);
|
|
20121
|
+
return decodeRef(parsedFilterVal.substring(5));
|
|
19710
20122
|
}
|
|
19711
20123
|
return parsedFilterVal;
|
|
19712
20124
|
}
|
|
@@ -27897,7 +28309,7 @@ function getParentReferencesFromPath(props) {
|
|
|
27897
28309
|
const restOfThePath = removeInitialAndTrailingSlashes(removeInitialAndTrailingSlashes(path).replace(subpathCombination, ""));
|
|
27898
28310
|
const nextSegments = restOfThePath.length > 0 ? restOfThePath.split("/") : [];
|
|
27899
28311
|
if (nextSegments.length > 0) {
|
|
27900
|
-
const entityId = nextSegments[0];
|
|
28312
|
+
const entityId = decodeEntityId(nextSegments[0]);
|
|
27901
28313
|
const fullPath = collectionPath + "/" + entityId;
|
|
27902
28314
|
result.push(new EntityReference(entityId, collectionPath));
|
|
27903
28315
|
if (nextSegments.length > 1) {
|
|
@@ -29643,18 +30055,15 @@ function EntityEditViewInner({
|
|
|
29643
30055
|
const actionsAtTheBottom = !largeLayout || layout === "side_panel" || selectedEntityView?.includeActions === "bottom";
|
|
29644
30056
|
const mainViewVisible = selectedTab === MAIN_TAB_VALUE || Boolean(selectedSecondaryForm);
|
|
29645
30057
|
const authController = useAuthController();
|
|
29646
|
-
const
|
|
29647
|
-
|
|
29648
|
-
|
|
29649
|
-
|
|
29650
|
-
|
|
29651
|
-
|
|
29652
|
-
|
|
29653
|
-
if (!entityId) {
|
|
29654
|
-
return null;
|
|
29655
|
-
}
|
|
30058
|
+
const mountedTabsRef = useRef(/* @__PURE__ */ new Set());
|
|
30059
|
+
if (selectedTab) {
|
|
30060
|
+
mountedTabsRef.current.add(selectedTab);
|
|
30061
|
+
}
|
|
30062
|
+
const readOnlyFormContext = useMemo(() => {
|
|
30063
|
+
if (formContext) return void 0;
|
|
30064
|
+
if (!entityId) return void 0;
|
|
29656
30065
|
const formexStub = createFormexStub(usedEntity?.values ?? {});
|
|
29657
|
-
|
|
30066
|
+
return {
|
|
29658
30067
|
entityId,
|
|
29659
30068
|
disabled: false,
|
|
29660
30069
|
openEntityMode: layout,
|
|
@@ -29680,18 +30089,34 @@ function EntityEditViewInner({
|
|
|
29680
30089
|
savingError: void 0,
|
|
29681
30090
|
formex: formexStub
|
|
29682
30091
|
};
|
|
30092
|
+
}, [formContext, entityId, layout, status, usedEntity, collection, path, customizationController.propertyConfigs, authController]);
|
|
30093
|
+
const customViewsView = customViews && resolvedEntityViews.filter((e) => !e.includeActions).map((customView) => {
|
|
30094
|
+
if (!customView) return null;
|
|
30095
|
+
const Builder = customView.Builder;
|
|
30096
|
+
if (!Builder) {
|
|
30097
|
+
console.error("INTERNAL: customView.Builder is not defined");
|
|
30098
|
+
return null;
|
|
30099
|
+
}
|
|
30100
|
+
if (!entityId) {
|
|
30101
|
+
return null;
|
|
30102
|
+
}
|
|
30103
|
+
const isActive = selectedTab === customView.key;
|
|
30104
|
+
if (!isActive && !mountedTabsRef.current.has(customView.key)) {
|
|
30105
|
+
return null;
|
|
30106
|
+
}
|
|
30107
|
+
const usedFormContext = formContext ?? readOnlyFormContext;
|
|
29683
30108
|
return /* @__PURE__ */ jsx("div", { className: cls(defaultBorderMixin, "relative flex-1 w-full h-full overflow-auto", {
|
|
29684
|
-
"hidden":
|
|
30109
|
+
"hidden": !isActive
|
|
29685
30110
|
}), role: "tabpanel", children: /* @__PURE__ */ jsx(ErrorBoundary, { children: usedFormContext && /* @__PURE__ */ jsx(Builder, { collection, parentCollectionIds, entity: usedEntity, modifiedValues: usedFormContext?.formex?.values ?? usedEntity?.values, formContext: usedFormContext }) }) }, `custom_view_${customView.key}`);
|
|
29686
30111
|
}).filter(Boolean);
|
|
29687
30112
|
const globalLoading = dataLoading && !usedEntity;
|
|
29688
|
-
const jsonView = /* @__PURE__ */ jsx("div", { className: cls("relative flex-1 h-full overflow-auto w-full", {
|
|
30113
|
+
const jsonView = selectedTab === JSON_TAB_VALUE || mountedTabsRef.current.has(JSON_TAB_VALUE) ? /* @__PURE__ */ jsx("div", { className: cls("relative flex-1 h-full overflow-auto w-full", {
|
|
29689
30114
|
"hidden": selectedTab !== JSON_TAB_VALUE
|
|
29690
|
-
}), role: "tabpanel", children: /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(EntityJsonPreview, { values: formContext?.values ?? entity?.values ?? {} }) }) }, "json_view");
|
|
30115
|
+
}), role: "tabpanel", children: /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(EntityJsonPreview, { values: formContext?.values ?? entity?.values ?? {} }) }) }, "json_view") : null;
|
|
29691
30116
|
const subCollectionsViews = subcollections && subcollections.map((subcollection) => {
|
|
29692
30117
|
const subcollectionId = subcollection.id ?? subcollection.path;
|
|
29693
30118
|
const newFullPath = usedEntity ? `${path}/${usedEntity?.id}/${removeInitialAndTrailingSlashes(subcollection.path)}` : void 0;
|
|
29694
|
-
const newFullIdPath = fullIdPath ? `${fullIdPath}/${usedEntity
|
|
30119
|
+
const newFullIdPath = fullIdPath && usedEntity ? `${fullIdPath}/${encodeEntityId(usedEntity.id)}/${removeInitialAndTrailingSlashes(subcollectionId)}` : void 0;
|
|
29695
30120
|
if (selectedTab !== subcollectionId) return null;
|
|
29696
30121
|
return /* @__PURE__ */ jsxs("div", { className: "relative flex-1 h-full overflow-auto w-full", role: "tabpanel", children: [
|
|
29697
30122
|
globalLoading && /* @__PURE__ */ jsx(CircularProgressCenter, {}),
|
|
@@ -29735,8 +30160,8 @@ function EntityEditViewInner({
|
|
|
29735
30160
|
const customViewTabsStart = resolvedEntityViews.filter((view) => view.position === "start" && !groupedViews.includes(view.key)).map((view_0) => /* @__PURE__ */ jsx(Tab, { className: !view_0.tabComponent ? "text-sm min-w-[120px]" : void 0, value: view_0.key, children: view_0.tabComponent ?? view_0.name }, `entity_detail_collection_tab_${view_0.name}`));
|
|
29736
30161
|
const customViewTabsEnd = resolvedEntityViews.filter((view_1) => (!view_1.position || view_1.position === "end") && !groupedViews.includes(view_1.key)).map((view_2) => /* @__PURE__ */ jsx(Tab, { className: !view_2.tabComponent ? "text-sm min-w-[120px]" : void 0, value: view_2.key, children: view_2.tabComponent ?? view_2.name }, `entity_detail_collection_tab_${view_2.name}`));
|
|
29737
30162
|
const viewGroupMenus = collection.viewGroups?.map((group) => {
|
|
29738
|
-
const
|
|
29739
|
-
return /* @__PURE__ */ jsx(Menu, { trigger: /* @__PURE__ */ jsxs("button", { type: "button", className: cls("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-surface-400 focus-visible:ring-offset-2", "disabled:pointer-events-none disabled:opacity-50",
|
|
30163
|
+
const isActive_0 = group.views.includes(selectedTab);
|
|
30164
|
+
return /* @__PURE__ */ jsx(Menu, { trigger: /* @__PURE__ */ jsxs("button", { type: "button", className: cls("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-surface-400 focus-visible:ring-offset-2", "disabled:pointer-events-none disabled:opacity-50", isActive_0 ? "bg-white text-surface-900 dark:bg-surface-950 dark:text-surface-50" : "text-surface-600 dark:text-surface-400 hover:bg-surface-200 dark:hover:bg-surface-800"), children: [
|
|
29740
30165
|
group.name,
|
|
29741
30166
|
/* @__PURE__ */ jsx(ExpandMoreIcon, { className: "ml-1 -mr-1", size: "small" })
|
|
29742
30167
|
] }), children: group.views.map((viewId) => {
|
|
@@ -29980,7 +30405,7 @@ function buildSidePanelsFromUrl(path, collections, newFlag) {
|
|
|
29980
30405
|
}
|
|
29981
30406
|
const propsToSidePanel = (props, buildUrlCollectionPath, resolveIdsFrom, smallLayout, customizationController, authController, locationSearch) => {
|
|
29982
30407
|
const collectionPath = removeInitialAndTrailingSlashes(props.path);
|
|
29983
|
-
const urlPath = props.entityId ? buildUrlCollectionPath(`${collectionPath}/${props.entityId}${props.selectedTab ? "/" + props.selectedTab : ""}${locationSearch}#${SIDE_URL_HASH}`) : buildUrlCollectionPath(`${collectionPath}${locationSearch}#${NEW_URL_HASH}`);
|
|
30408
|
+
const urlPath = props.entityId ? buildUrlCollectionPath(`${collectionPath}/${encodeEntityId(props.entityId)}${props.selectedTab ? "/" + props.selectedTab : ""}${locationSearch}#${SIDE_URL_HASH}`) : buildUrlCollectionPath(`${collectionPath}${locationSearch}#${NEW_URL_HASH}`);
|
|
29984
30409
|
const resolvedPanelProps = {
|
|
29985
30410
|
...props,
|
|
29986
30411
|
formProps: props.formProps
|
|
@@ -30694,7 +31119,7 @@ function FireCMSInternal(t0) {
|
|
|
30694
31119
|
return t1;
|
|
30695
31120
|
}
|
|
30696
31121
|
function DrawerNavigationItem(t0) {
|
|
30697
|
-
const $ = c(
|
|
31122
|
+
const $ = c(22);
|
|
30698
31123
|
const {
|
|
30699
31124
|
name,
|
|
30700
31125
|
icon,
|
|
@@ -30706,7 +31131,7 @@ function DrawerNavigationItem(t0) {
|
|
|
30706
31131
|
} = t0;
|
|
30707
31132
|
let t1;
|
|
30708
31133
|
if ($[0] !== icon) {
|
|
30709
|
-
t1 = /* @__PURE__ */ jsx("div", { className: "
|
|
31134
|
+
t1 = /* @__PURE__ */ jsx("div", { className: "shrink-0 flex items-center justify-center w-[44px] h-[30px] text-surface-500 dark:text-text-secondary-dark group-hover/nav:text-primary transition-colors duration-150", children: icon });
|
|
30710
31135
|
$[0] = icon;
|
|
30711
31136
|
$[1] = t1;
|
|
30712
31137
|
} else {
|
|
@@ -30731,7 +31156,7 @@ function DrawerNavigationItem(t0) {
|
|
|
30731
31156
|
const {
|
|
30732
31157
|
isActive
|
|
30733
31158
|
} = t52;
|
|
30734
|
-
return cls("rounded-lg truncate", "hover:bg-
|
|
31159
|
+
return cls("rounded-lg truncate group/nav", "hover:bg-primary/5 dark:hover:bg-primary/5 text-surface-700 dark:text-surface-300 hover:text-surface-900 dark:hover:text-white", "flex flex-row items-center", drawerOpen ? "pr-4 h-[30px]" : "h-[30px]", "font-medium text-[13px]", isActive ? "bg-primary/8 dark:bg-primary/10 text-primary dark:text-primary [&_div]:text-primary" : "");
|
|
30735
31160
|
};
|
|
30736
31161
|
$[4] = drawerOpen;
|
|
30737
31162
|
$[5] = t4;
|
|
@@ -30741,61 +31166,53 @@ function DrawerNavigationItem(t0) {
|
|
|
30741
31166
|
const t5 = drawerOpen ? "opacity-100" : "opacity-0 hidden";
|
|
30742
31167
|
let t6;
|
|
30743
31168
|
if ($[6] !== t5) {
|
|
30744
|
-
t6 = cls("text-
|
|
31169
|
+
t6 = cls("text-surface-700 dark:text-surface-300", t5, "font-inherit truncate space-x-2");
|
|
30745
31170
|
$[6] = t5;
|
|
30746
31171
|
$[7] = t6;
|
|
30747
31172
|
} else {
|
|
30748
31173
|
t6 = $[7];
|
|
30749
31174
|
}
|
|
30750
31175
|
let t7;
|
|
30751
|
-
if ($[8] !== name) {
|
|
30752
|
-
t7 = name
|
|
31176
|
+
if ($[8] !== name || $[9] !== t6) {
|
|
31177
|
+
t7 = /* @__PURE__ */ jsx("div", { className: t6, children: name });
|
|
30753
31178
|
$[8] = name;
|
|
30754
|
-
$[9] =
|
|
31179
|
+
$[9] = t6;
|
|
31180
|
+
$[10] = t7;
|
|
30755
31181
|
} else {
|
|
30756
|
-
t7 = $[
|
|
31182
|
+
t7 = $[10];
|
|
30757
31183
|
}
|
|
30758
31184
|
let t8;
|
|
30759
|
-
if ($[
|
|
30760
|
-
t8 = /* @__PURE__ */ jsx("div", { className:
|
|
30761
|
-
$[10] = t6;
|
|
30762
|
-
$[11] = t7;
|
|
30763
|
-
$[12] = t8;
|
|
30764
|
-
} else {
|
|
30765
|
-
t8 = $[12];
|
|
30766
|
-
}
|
|
30767
|
-
let t9;
|
|
30768
|
-
if ($[13] !== iconWrap || $[14] !== onClick || $[15] !== t3 || $[16] !== t4 || $[17] !== t8 || $[18] !== url) {
|
|
30769
|
-
t9 = /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(NavLink, { onClick, style: t3, className: t4, to: url, children: [
|
|
31185
|
+
if ($[11] !== iconWrap || $[12] !== onClick || $[13] !== t3 || $[14] !== t4 || $[15] !== t7 || $[16] !== url) {
|
|
31186
|
+
t8 = /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(NavLink, { onClick, style: t3, className: t4, to: url, children: [
|
|
30770
31187
|
iconWrap,
|
|
30771
|
-
|
|
31188
|
+
t7
|
|
30772
31189
|
] }) });
|
|
30773
|
-
$[
|
|
30774
|
-
$[
|
|
30775
|
-
$[
|
|
30776
|
-
$[
|
|
31190
|
+
$[11] = iconWrap;
|
|
31191
|
+
$[12] = onClick;
|
|
31192
|
+
$[13] = t3;
|
|
31193
|
+
$[14] = t4;
|
|
31194
|
+
$[15] = t7;
|
|
31195
|
+
$[16] = url;
|
|
30777
31196
|
$[17] = t8;
|
|
30778
|
-
$[18] = url;
|
|
30779
|
-
$[19] = t9;
|
|
30780
31197
|
} else {
|
|
30781
|
-
|
|
31198
|
+
t8 = $[17];
|
|
30782
31199
|
}
|
|
30783
|
-
const listItem =
|
|
30784
|
-
const
|
|
30785
|
-
let
|
|
30786
|
-
if ($[
|
|
30787
|
-
|
|
30788
|
-
$[
|
|
30789
|
-
$[
|
|
30790
|
-
$[
|
|
30791
|
-
$[
|
|
31200
|
+
const listItem = t8;
|
|
31201
|
+
const t9 = drawerOpen || adminMenuOpen ? false : tooltipsOpen;
|
|
31202
|
+
let t10;
|
|
31203
|
+
if ($[18] !== listItem || $[19] !== name || $[20] !== t9) {
|
|
31204
|
+
t10 = /* @__PURE__ */ jsx(Tooltip, { open: t9, side: "right", title: name, children: listItem });
|
|
31205
|
+
$[18] = listItem;
|
|
31206
|
+
$[19] = name;
|
|
31207
|
+
$[20] = t9;
|
|
31208
|
+
$[21] = t10;
|
|
30792
31209
|
} else {
|
|
30793
|
-
|
|
31210
|
+
t10 = $[21];
|
|
30794
31211
|
}
|
|
30795
|
-
return
|
|
31212
|
+
return t10;
|
|
30796
31213
|
}
|
|
30797
31214
|
function DrawerNavigationGroup(t0) {
|
|
30798
|
-
const $ = c(
|
|
31215
|
+
const $ = c(41);
|
|
30799
31216
|
const {
|
|
30800
31217
|
group,
|
|
30801
31218
|
entries,
|
|
@@ -30811,86 +31228,137 @@ function DrawerNavigationGroup(t0) {
|
|
|
30811
31228
|
t
|
|
30812
31229
|
} = useTranslation();
|
|
30813
31230
|
const t1 = `drawer_group_${group}`;
|
|
30814
|
-
|
|
30815
|
-
|
|
30816
|
-
|
|
30817
|
-
|
|
30818
|
-
|
|
30819
|
-
|
|
30820
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "w-full" });
|
|
30821
|
-
$[0] = collapsed;
|
|
30822
|
-
$[1] = drawerOpen;
|
|
30823
|
-
$[2] = group;
|
|
30824
|
-
$[3] = headerActions;
|
|
30825
|
-
$[4] = onToggleCollapsed;
|
|
30826
|
-
$[5] = t;
|
|
30827
|
-
$[6] = t2;
|
|
31231
|
+
const t2 = drawerOpen ? "cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-800/40 rounded-lg" : "opacity-0 invisible pointer-events-none";
|
|
31232
|
+
let t3;
|
|
31233
|
+
if ($[0] !== t2) {
|
|
31234
|
+
t3 = cls("pl-3 pr-2 py-0.5 flex flex-row items-center transition-colors", t2);
|
|
31235
|
+
$[0] = t2;
|
|
31236
|
+
$[1] = t3;
|
|
30828
31237
|
} else {
|
|
30829
|
-
|
|
31238
|
+
t3 = $[1];
|
|
30830
31239
|
}
|
|
30831
|
-
const
|
|
30832
|
-
|
|
30833
|
-
|
|
30834
|
-
|
|
30835
|
-
|
|
30836
|
-
$[
|
|
31240
|
+
const t4 = drawerOpen ? onToggleCollapsed : void 0;
|
|
31241
|
+
const t5 = collapsed ? "-rotate-90" : "rotate-0";
|
|
31242
|
+
let t6;
|
|
31243
|
+
if ($[2] !== t5) {
|
|
31244
|
+
t6 = cls("text-surface-400 dark:text-surface-400 transition-transform duration-200 mr-1", t5);
|
|
31245
|
+
$[2] = t5;
|
|
31246
|
+
$[3] = t6;
|
|
30837
31247
|
} else {
|
|
30838
|
-
|
|
31248
|
+
t6 = $[3];
|
|
30839
31249
|
}
|
|
30840
|
-
let
|
|
30841
|
-
if ($[
|
|
30842
|
-
|
|
30843
|
-
|
|
30844
|
-
|
|
30845
|
-
|
|
30846
|
-
|
|
30847
|
-
|
|
30848
|
-
|
|
30849
|
-
|
|
30850
|
-
|
|
31250
|
+
let t7;
|
|
31251
|
+
if ($[4] !== t6) {
|
|
31252
|
+
t7 = /* @__PURE__ */ jsx(ExpandMoreIcon, { size: "smallest", className: t6 });
|
|
31253
|
+
$[4] = t6;
|
|
31254
|
+
$[5] = t7;
|
|
31255
|
+
} else {
|
|
31256
|
+
t7 = $[5];
|
|
31257
|
+
}
|
|
31258
|
+
let t8;
|
|
31259
|
+
if ($[6] !== group || $[7] !== t) {
|
|
31260
|
+
t8 = group && group !== "__default__" ? group : t("views_group");
|
|
31261
|
+
$[6] = group;
|
|
31262
|
+
$[7] = t;
|
|
31263
|
+
$[8] = t8;
|
|
31264
|
+
} else {
|
|
31265
|
+
t8 = $[8];
|
|
31266
|
+
}
|
|
31267
|
+
let t9;
|
|
31268
|
+
if ($[9] !== t8) {
|
|
31269
|
+
t9 = /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", className: "font-semibold text-[11px] uppercase tracking-wider flex-grow line-clamp-1 text-surface-400 dark:text-surface-400", children: t8 });
|
|
31270
|
+
$[9] = t8;
|
|
31271
|
+
$[10] = t9;
|
|
31272
|
+
} else {
|
|
31273
|
+
t9 = $[10];
|
|
31274
|
+
}
|
|
31275
|
+
let t10;
|
|
31276
|
+
if ($[11] !== headerActions) {
|
|
31277
|
+
t10 = headerActions && /* @__PURE__ */ jsx("div", { onClick: _temp$a, children: headerActions });
|
|
31278
|
+
$[11] = headerActions;
|
|
31279
|
+
$[12] = t10;
|
|
31280
|
+
} else {
|
|
31281
|
+
t10 = $[12];
|
|
31282
|
+
}
|
|
31283
|
+
let t11;
|
|
31284
|
+
if ($[13] !== t10 || $[14] !== t3 || $[15] !== t4 || $[16] !== t7 || $[17] !== t9) {
|
|
31285
|
+
t11 = /* @__PURE__ */ jsxs("div", { className: t3, onClick: t4, children: [
|
|
31286
|
+
t7,
|
|
31287
|
+
t9,
|
|
31288
|
+
t10
|
|
31289
|
+
] });
|
|
31290
|
+
$[13] = t10;
|
|
31291
|
+
$[14] = t3;
|
|
31292
|
+
$[15] = t4;
|
|
31293
|
+
$[16] = t7;
|
|
31294
|
+
$[17] = t9;
|
|
31295
|
+
$[18] = t11;
|
|
31296
|
+
} else {
|
|
31297
|
+
t11 = $[18];
|
|
31298
|
+
}
|
|
31299
|
+
const t12 = collapsed ? "max-h-0 opacity-0" : "max-h-[2000px] opacity-100";
|
|
31300
|
+
let t13;
|
|
31301
|
+
if ($[19] !== t12) {
|
|
31302
|
+
t13 = cls("transition-all duration-200 ease-in-out overflow-hidden rounded-lg", t12);
|
|
31303
|
+
$[19] = t12;
|
|
31304
|
+
$[20] = t13;
|
|
31305
|
+
} else {
|
|
31306
|
+
t13 = $[20];
|
|
31307
|
+
}
|
|
31308
|
+
let t14;
|
|
31309
|
+
if ($[21] !== adminMenuOpen || $[22] !== collapsed || $[23] !== drawerOpen || $[24] !== entries || $[25] !== onItemClick || $[26] !== tooltipsOpen) {
|
|
31310
|
+
let t152;
|
|
31311
|
+
if ($[28] !== adminMenuOpen || $[29] !== collapsed || $[30] !== drawerOpen || $[31] !== onItemClick || $[32] !== tooltipsOpen) {
|
|
31312
|
+
t152 = (entry) => /* @__PURE__ */ jsx(DrawerNavigationItem, { icon: /* @__PURE__ */ jsx(IconForView, { collectionOrView: entry.collection ?? entry.view, size: 18 }), tooltipsOpen: !collapsed && tooltipsOpen, adminMenuOpen, drawerOpen, onClick: () => onItemClick?.(entry), url: entry.url, name: entry.name }, entry.id);
|
|
31313
|
+
$[28] = adminMenuOpen;
|
|
31314
|
+
$[29] = collapsed;
|
|
31315
|
+
$[30] = drawerOpen;
|
|
31316
|
+
$[31] = onItemClick;
|
|
31317
|
+
$[32] = tooltipsOpen;
|
|
31318
|
+
$[33] = t152;
|
|
30851
31319
|
} else {
|
|
30852
|
-
|
|
30853
|
-
}
|
|
30854
|
-
|
|
30855
|
-
$[
|
|
30856
|
-
$[
|
|
30857
|
-
$[
|
|
30858
|
-
$[
|
|
30859
|
-
$[
|
|
30860
|
-
$[
|
|
30861
|
-
$[
|
|
31320
|
+
t152 = $[33];
|
|
31321
|
+
}
|
|
31322
|
+
t14 = entries.map(t152);
|
|
31323
|
+
$[21] = adminMenuOpen;
|
|
31324
|
+
$[22] = collapsed;
|
|
31325
|
+
$[23] = drawerOpen;
|
|
31326
|
+
$[24] = entries;
|
|
31327
|
+
$[25] = onItemClick;
|
|
31328
|
+
$[26] = tooltipsOpen;
|
|
31329
|
+
$[27] = t14;
|
|
30862
31330
|
} else {
|
|
30863
|
-
|
|
31331
|
+
t14 = $[27];
|
|
30864
31332
|
}
|
|
30865
|
-
let
|
|
30866
|
-
if ($[
|
|
30867
|
-
|
|
30868
|
-
$[
|
|
30869
|
-
$[
|
|
30870
|
-
$[
|
|
31333
|
+
let t15;
|
|
31334
|
+
if ($[34] !== t13 || $[35] !== t14) {
|
|
31335
|
+
t15 = /* @__PURE__ */ jsx("div", { className: t13, children: t14 });
|
|
31336
|
+
$[34] = t13;
|
|
31337
|
+
$[35] = t14;
|
|
31338
|
+
$[36] = t15;
|
|
30871
31339
|
} else {
|
|
30872
|
-
|
|
31340
|
+
t15 = $[36];
|
|
30873
31341
|
}
|
|
30874
|
-
let
|
|
30875
|
-
if ($[
|
|
30876
|
-
|
|
30877
|
-
|
|
30878
|
-
|
|
31342
|
+
let t16;
|
|
31343
|
+
if ($[37] !== t1 || $[38] !== t11 || $[39] !== t15) {
|
|
31344
|
+
t16 = /* @__PURE__ */ jsxs("div", { className: "my-2 mx-2 flex flex-col", children: [
|
|
31345
|
+
t11,
|
|
31346
|
+
t15
|
|
30879
31347
|
] }, t1);
|
|
30880
|
-
$[
|
|
30881
|
-
$[
|
|
30882
|
-
$[
|
|
30883
|
-
$[
|
|
31348
|
+
$[37] = t1;
|
|
31349
|
+
$[38] = t11;
|
|
31350
|
+
$[39] = t15;
|
|
31351
|
+
$[40] = t16;
|
|
30884
31352
|
} else {
|
|
30885
|
-
|
|
31353
|
+
t16 = $[40];
|
|
30886
31354
|
}
|
|
30887
|
-
return
|
|
31355
|
+
return t16;
|
|
30888
31356
|
}
|
|
30889
31357
|
function _temp$a(e) {
|
|
30890
31358
|
return e.stopPropagation();
|
|
30891
31359
|
}
|
|
30892
31360
|
function DefaultDrawer(t0) {
|
|
30893
|
-
const $ = c(
|
|
31361
|
+
const $ = c(40);
|
|
30894
31362
|
const {
|
|
30895
31363
|
className,
|
|
30896
31364
|
style
|
|
@@ -30902,6 +31370,20 @@ function DefaultDrawer(t0) {
|
|
|
30902
31370
|
logo
|
|
30903
31371
|
} = useApp();
|
|
30904
31372
|
const [adminMenuOpen, setAdminMenuOpen] = React__default.useState(false);
|
|
31373
|
+
const scrollRef = React__default.useRef(null);
|
|
31374
|
+
const [scrolled, setScrolled] = React__default.useState(false);
|
|
31375
|
+
let t1;
|
|
31376
|
+
if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
31377
|
+
t1 = () => {
|
|
31378
|
+
if (scrollRef.current) {
|
|
31379
|
+
setScrolled(scrollRef.current.scrollTop > 0);
|
|
31380
|
+
}
|
|
31381
|
+
};
|
|
31382
|
+
$[0] = t1;
|
|
31383
|
+
} else {
|
|
31384
|
+
t1 = $[0];
|
|
31385
|
+
}
|
|
31386
|
+
const handleScroll = t1;
|
|
30905
31387
|
const analyticsController = useAnalyticsController();
|
|
30906
31388
|
const navigation = useNavigationController();
|
|
30907
31389
|
const {
|
|
@@ -30918,22 +31400,23 @@ function DefaultDrawer(t0) {
|
|
|
30918
31400
|
groups
|
|
30919
31401
|
} = navigation.topLevelNavigation;
|
|
30920
31402
|
const adminViews = navigationEntries.filter(_temp$9) ?? [];
|
|
30921
|
-
let
|
|
30922
|
-
if ($[
|
|
30923
|
-
|
|
30924
|
-
$[
|
|
30925
|
-
$[
|
|
31403
|
+
let t2;
|
|
31404
|
+
if ($[1] !== groups) {
|
|
31405
|
+
t2 = groups.filter(_temp2$3);
|
|
31406
|
+
$[1] = groups;
|
|
31407
|
+
$[2] = t2;
|
|
30926
31408
|
} else {
|
|
30927
|
-
|
|
31409
|
+
t2 = $[2];
|
|
30928
31410
|
}
|
|
30929
|
-
const groupsWithoutAdmin =
|
|
31411
|
+
const groupsWithoutAdmin = t2;
|
|
30930
31412
|
const {
|
|
30931
31413
|
isGroupCollapsed,
|
|
30932
31414
|
toggleGroupCollapsed
|
|
30933
31415
|
} = useCollapsedGroups(groupsWithoutAdmin, "drawer");
|
|
30934
|
-
|
|
30935
|
-
|
|
30936
|
-
|
|
31416
|
+
const drawerVisuallyOpen = drawerOpen || drawerHovered;
|
|
31417
|
+
let t3;
|
|
31418
|
+
if ($[3] !== analyticsController || $[4] !== closeDrawer || $[5] !== largeLayout) {
|
|
31419
|
+
t3 = (view) => {
|
|
30937
31420
|
const eventName = view.type === "collection" ? "drawer_navigate_to_collection" : view.type === "view" ? "drawer_navigate_to_view" : "unmapped_event";
|
|
30938
31421
|
analyticsController.onAnalyticsEvent?.(eventName, {
|
|
30939
31422
|
url: view.url
|
|
@@ -30942,106 +31425,119 @@ function DefaultDrawer(t0) {
|
|
|
30942
31425
|
closeDrawer();
|
|
30943
31426
|
}
|
|
30944
31427
|
};
|
|
30945
|
-
$[
|
|
30946
|
-
$[
|
|
30947
|
-
$[
|
|
30948
|
-
$[
|
|
31428
|
+
$[3] = analyticsController;
|
|
31429
|
+
$[4] = closeDrawer;
|
|
31430
|
+
$[5] = largeLayout;
|
|
31431
|
+
$[6] = t3;
|
|
30949
31432
|
} else {
|
|
30950
|
-
|
|
31433
|
+
t3 = $[6];
|
|
30951
31434
|
}
|
|
30952
|
-
const onItemClick =
|
|
30953
|
-
|
|
30954
|
-
|
|
30955
|
-
|
|
30956
|
-
|
|
30957
|
-
|
|
31435
|
+
const onItemClick = t3;
|
|
31436
|
+
const t4 = "navigation";
|
|
31437
|
+
const t5 = "Main navigation";
|
|
31438
|
+
let t6;
|
|
31439
|
+
if ($[7] !== className) {
|
|
31440
|
+
t6 = cls("flex flex-col h-full relative grow w-full", className);
|
|
31441
|
+
$[7] = className;
|
|
31442
|
+
$[8] = t6;
|
|
30958
31443
|
} else {
|
|
30959
|
-
|
|
31444
|
+
t6 = $[8];
|
|
30960
31445
|
}
|
|
30961
|
-
let
|
|
30962
|
-
if ($[
|
|
30963
|
-
|
|
30964
|
-
$[
|
|
30965
|
-
$[
|
|
31446
|
+
let t7;
|
|
31447
|
+
if ($[9] !== logo) {
|
|
31448
|
+
t7 = /* @__PURE__ */ jsx(DrawerLogo, { logo });
|
|
31449
|
+
$[9] = logo;
|
|
31450
|
+
$[10] = t7;
|
|
30966
31451
|
} else {
|
|
30967
|
-
|
|
31452
|
+
t7 = $[10];
|
|
30968
31453
|
}
|
|
30969
|
-
|
|
30970
|
-
|
|
30971
|
-
|
|
30972
|
-
|
|
31454
|
+
const t8 = scrolled ? "linear-gradient(to bottom, transparent 0, black 20px, black calc(100% - 20px), transparent 100%)" : "linear-gradient(to bottom, black 0, black calc(100% - 20px), transparent 100%)";
|
|
31455
|
+
let t9;
|
|
31456
|
+
if ($[11] !== t8) {
|
|
31457
|
+
t9 = {
|
|
31458
|
+
maskImage: t8
|
|
30973
31459
|
};
|
|
30974
|
-
$[
|
|
31460
|
+
$[11] = t8;
|
|
31461
|
+
$[12] = t9;
|
|
30975
31462
|
} else {
|
|
30976
|
-
|
|
31463
|
+
t9 = $[12];
|
|
30977
31464
|
}
|
|
30978
|
-
let
|
|
30979
|
-
if ($[
|
|
30980
|
-
let
|
|
30981
|
-
if ($[
|
|
30982
|
-
|
|
31465
|
+
let t10;
|
|
31466
|
+
if ($[13] !== adminMenuOpen || $[14] !== drawerVisuallyOpen || $[15] !== groupsWithoutAdmin || $[16] !== isGroupCollapsed || $[17] !== navigationEntries || $[18] !== onItemClick || $[19] !== toggleGroupCollapsed || $[20] !== tooltipsOpen) {
|
|
31467
|
+
let t112;
|
|
31468
|
+
if ($[22] !== adminMenuOpen || $[23] !== drawerVisuallyOpen || $[24] !== isGroupCollapsed || $[25] !== navigationEntries || $[26] !== onItemClick || $[27] !== toggleGroupCollapsed || $[28] !== tooltipsOpen) {
|
|
31469
|
+
t112 = (group) => {
|
|
30983
31470
|
const entriesInGroup = Object.values(navigationEntries).filter((e_0) => e_0.group === group);
|
|
30984
|
-
return /* @__PURE__ */ jsx(DrawerNavigationGroup, { group, entries: entriesInGroup, collapsed: isGroupCollapsed(group), onToggleCollapsed: () => toggleGroupCollapsed(group), drawerOpen, tooltipsOpen, adminMenuOpen, onItemClick }, `drawer_group_${group}`);
|
|
31471
|
+
return /* @__PURE__ */ jsx(DrawerNavigationGroup, { group, entries: entriesInGroup, collapsed: isGroupCollapsed(group), onToggleCollapsed: () => toggleGroupCollapsed(group), drawerOpen: drawerVisuallyOpen, tooltipsOpen, adminMenuOpen, onItemClick }, `drawer_group_${group}`);
|
|
30985
31472
|
};
|
|
30986
|
-
$[
|
|
30987
|
-
$[
|
|
30988
|
-
$[
|
|
30989
|
-
$[
|
|
30990
|
-
$[
|
|
30991
|
-
$[
|
|
30992
|
-
$[
|
|
30993
|
-
$[
|
|
31473
|
+
$[22] = adminMenuOpen;
|
|
31474
|
+
$[23] = drawerVisuallyOpen;
|
|
31475
|
+
$[24] = isGroupCollapsed;
|
|
31476
|
+
$[25] = navigationEntries;
|
|
31477
|
+
$[26] = onItemClick;
|
|
31478
|
+
$[27] = toggleGroupCollapsed;
|
|
31479
|
+
$[28] = tooltipsOpen;
|
|
31480
|
+
$[29] = t112;
|
|
30994
31481
|
} else {
|
|
30995
|
-
|
|
30996
|
-
}
|
|
30997
|
-
|
|
30998
|
-
$[
|
|
30999
|
-
$[
|
|
31000
|
-
$[
|
|
31001
|
-
$[
|
|
31002
|
-
$[
|
|
31003
|
-
$[
|
|
31004
|
-
$[
|
|
31005
|
-
$[
|
|
31006
|
-
$[
|
|
31482
|
+
t112 = $[29];
|
|
31483
|
+
}
|
|
31484
|
+
t10 = groupsWithoutAdmin.map(t112);
|
|
31485
|
+
$[13] = adminMenuOpen;
|
|
31486
|
+
$[14] = drawerVisuallyOpen;
|
|
31487
|
+
$[15] = groupsWithoutAdmin;
|
|
31488
|
+
$[16] = isGroupCollapsed;
|
|
31489
|
+
$[17] = navigationEntries;
|
|
31490
|
+
$[18] = onItemClick;
|
|
31491
|
+
$[19] = toggleGroupCollapsed;
|
|
31492
|
+
$[20] = tooltipsOpen;
|
|
31493
|
+
$[21] = t10;
|
|
31007
31494
|
} else {
|
|
31008
|
-
|
|
31495
|
+
t10 = $[21];
|
|
31009
31496
|
}
|
|
31010
|
-
let
|
|
31011
|
-
if ($[
|
|
31012
|
-
|
|
31013
|
-
$[
|
|
31014
|
-
$[
|
|
31497
|
+
let t11;
|
|
31498
|
+
if ($[30] !== t10 || $[31] !== t9) {
|
|
31499
|
+
t11 = /* @__PURE__ */ jsx("div", { ref: scrollRef, onScroll: handleScroll, className: "flex-grow min-h-0 overflow-y-auto overflow-x-hidden no-scrollbar px-2", style: t9, children: t10 });
|
|
31500
|
+
$[30] = t10;
|
|
31501
|
+
$[31] = t9;
|
|
31502
|
+
$[32] = t11;
|
|
31015
31503
|
} else {
|
|
31016
|
-
|
|
31504
|
+
t11 = $[32];
|
|
31017
31505
|
}
|
|
31018
|
-
const
|
|
31019
|
-
/* @__PURE__ */ jsx(Tooltip, { title: "Admin", open: tooltipsOpen, side: "right", sideOffset: 28, children: /* @__PURE__ */ jsx(MoreVertIcon, {}) }),
|
|
31020
|
-
|
|
31506
|
+
const t12 = adminViews.length > 0 && /* @__PURE__ */ jsx("div", { className: "shrink-0 px-4", children: /* @__PURE__ */ jsx(Menu, { side: "right", open: adminMenuOpen, onOpenChange: setAdminMenuOpen, trigger: /* @__PURE__ */ jsxs("div", { className: cls("flex flex-row items-center rounded-lg cursor-pointer w-full", "hover:bg-surface-accent-100 dark:hover:bg-surface-800 transition-colors duration-150 h-[30px]"), children: [
|
|
31507
|
+
/* @__PURE__ */ jsx("div", { className: "shrink-0 flex items-center justify-center w-[44px] h-[30px] text-surface-500 dark:text-surface-400", children: /* @__PURE__ */ jsx(Tooltip, { title: "Admin", open: drawerVisuallyOpen || adminMenuOpen ? false : tooltipsOpen, side: "right", sideOffset: 28, children: /* @__PURE__ */ jsx(MoreVertIcon, { size: "small" }) }) }),
|
|
31508
|
+
drawerVisuallyOpen && /* @__PURE__ */ jsx("div", { className: cls("font-semibold text-[11px] uppercase tracking-wider text-surface-400"), children: t("admin") })
|
|
31021
31509
|
] }), children: adminViews.map((entry) => /* @__PURE__ */ jsxs(MenuItem, { onClick: (event) => {
|
|
31022
31510
|
event.preventDefault();
|
|
31023
31511
|
navigate(entry.url);
|
|
31024
31512
|
}, children: [
|
|
31025
31513
|
/* @__PURE__ */ jsx(IconForView, { collectionOrView: entry.view }),
|
|
31026
31514
|
t(entry.name)
|
|
31027
|
-
] }, entry.id)) });
|
|
31028
|
-
let
|
|
31029
|
-
if ($[
|
|
31030
|
-
|
|
31031
|
-
|
|
31515
|
+
] }, entry.id)) }) });
|
|
31516
|
+
let t13;
|
|
31517
|
+
if ($[33] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
31518
|
+
t13 = /* @__PURE__ */ jsx(DrawerToggle, {});
|
|
31519
|
+
$[33] = t13;
|
|
31520
|
+
} else {
|
|
31521
|
+
t13 = $[33];
|
|
31522
|
+
}
|
|
31523
|
+
let t14;
|
|
31524
|
+
if ($[34] !== style || $[35] !== t11 || $[36] !== t12 || $[37] !== t6 || $[38] !== t7) {
|
|
31525
|
+
t14 = /* @__PURE__ */ jsxs("div", { role: t4, "aria-label": t5, className: t6, style, children: [
|
|
31032
31526
|
t7,
|
|
31033
|
-
|
|
31034
|
-
|
|
31035
|
-
|
|
31036
|
-
|
|
31037
|
-
$[
|
|
31038
|
-
$[
|
|
31039
|
-
$[
|
|
31040
|
-
$[
|
|
31527
|
+
t11,
|
|
31528
|
+
t12,
|
|
31529
|
+
t13
|
|
31530
|
+
] });
|
|
31531
|
+
$[34] = style;
|
|
31532
|
+
$[35] = t11;
|
|
31533
|
+
$[36] = t12;
|
|
31534
|
+
$[37] = t6;
|
|
31535
|
+
$[38] = t7;
|
|
31536
|
+
$[39] = t14;
|
|
31041
31537
|
} else {
|
|
31042
|
-
|
|
31538
|
+
t14 = $[39];
|
|
31043
31539
|
}
|
|
31044
|
-
return
|
|
31540
|
+
return t14;
|
|
31045
31541
|
}
|
|
31046
31542
|
function _temp2$3(g) {
|
|
31047
31543
|
return g !== "Admin";
|
|
@@ -31049,62 +31545,133 @@ function _temp2$3(g) {
|
|
|
31049
31545
|
function _temp$9(e) {
|
|
31050
31546
|
return e.type === "admin";
|
|
31051
31547
|
}
|
|
31052
|
-
function
|
|
31053
|
-
const $ = c(
|
|
31054
|
-
const {
|
|
31055
|
-
logo
|
|
31056
|
-
} = t0;
|
|
31057
|
-
const navigation = useNavigationController();
|
|
31548
|
+
function DrawerToggle() {
|
|
31549
|
+
const $ = c(26);
|
|
31058
31550
|
const {
|
|
31059
|
-
drawerOpen
|
|
31551
|
+
drawerOpen,
|
|
31552
|
+
drawerHovered,
|
|
31553
|
+
openDrawer,
|
|
31554
|
+
closeDrawer
|
|
31060
31555
|
} = useApp();
|
|
31061
|
-
const
|
|
31556
|
+
const isExpanded = drawerOpen;
|
|
31557
|
+
const isHovered = drawerHovered && !drawerOpen;
|
|
31558
|
+
const showFullContent = isExpanded || isHovered;
|
|
31559
|
+
const t0 = isExpanded ? "Collapse" : "Expand";
|
|
31560
|
+
const t1 = isHovered ? false : void 0;
|
|
31062
31561
|
let t2;
|
|
31063
|
-
if ($[0]
|
|
31064
|
-
t2 =
|
|
31065
|
-
|
|
31066
|
-
|
|
31562
|
+
if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
31563
|
+
t2 = cls("flex flex-row items-center rounded-lg cursor-pointer", "hover:bg-surface-accent-100 dark:hover:bg-surface-800", "transition-colors duration-150 h-[30px]");
|
|
31564
|
+
$[0] = t2;
|
|
31565
|
+
} else {
|
|
31566
|
+
t2 = $[0];
|
|
31567
|
+
}
|
|
31568
|
+
const t3 = isExpanded ? "Collapse" : "Expand";
|
|
31569
|
+
let t4;
|
|
31570
|
+
let t5;
|
|
31571
|
+
if ($[1] !== closeDrawer || $[2] !== isExpanded || $[3] !== openDrawer) {
|
|
31572
|
+
t4 = () => isExpanded ? closeDrawer() : openDrawer();
|
|
31573
|
+
t5 = (e) => {
|
|
31574
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
31575
|
+
e.preventDefault();
|
|
31576
|
+
isExpanded ? closeDrawer() : openDrawer();
|
|
31577
|
+
}
|
|
31067
31578
|
};
|
|
31068
|
-
$[
|
|
31069
|
-
$[
|
|
31579
|
+
$[1] = closeDrawer;
|
|
31580
|
+
$[2] = isExpanded;
|
|
31581
|
+
$[3] = openDrawer;
|
|
31582
|
+
$[4] = t4;
|
|
31583
|
+
$[5] = t5;
|
|
31070
31584
|
} else {
|
|
31071
|
-
|
|
31585
|
+
t4 = $[4];
|
|
31586
|
+
t5 = $[5];
|
|
31072
31587
|
}
|
|
31073
|
-
let
|
|
31074
|
-
if ($[
|
|
31075
|
-
|
|
31076
|
-
$[
|
|
31588
|
+
let t6;
|
|
31589
|
+
if ($[6] !== isExpanded) {
|
|
31590
|
+
t6 = /* @__PURE__ */ jsx("div", { className: "shrink-0 flex items-center justify-center w-[44px] h-[30px] text-surface-500 dark:text-surface-400", children: isExpanded ? /* @__PURE__ */ jsx(KeyboardDoubleArrowLeftIcon, { size: "small" }) : /* @__PURE__ */ jsx(KeyboardDoubleArrowRightIcon, { size: "small" }) });
|
|
31591
|
+
$[6] = isExpanded;
|
|
31592
|
+
$[7] = t6;
|
|
31077
31593
|
} else {
|
|
31078
|
-
|
|
31594
|
+
t6 = $[7];
|
|
31079
31595
|
}
|
|
31080
|
-
|
|
31081
|
-
|
|
31082
|
-
|
|
31083
|
-
|
|
31084
|
-
$[
|
|
31085
|
-
$[
|
|
31596
|
+
const t7 = showFullContent ? "opacity-100 w-auto" : "opacity-0 w-0";
|
|
31597
|
+
let t8;
|
|
31598
|
+
if ($[8] !== t7) {
|
|
31599
|
+
t8 = cls("overflow-hidden transition-all duration-200 ease-in-out", t7);
|
|
31600
|
+
$[8] = t7;
|
|
31601
|
+
$[9] = t8;
|
|
31086
31602
|
} else {
|
|
31087
|
-
|
|
31603
|
+
t8 = $[9];
|
|
31088
31604
|
}
|
|
31089
|
-
|
|
31090
|
-
|
|
31091
|
-
|
|
31092
|
-
|
|
31093
|
-
$[
|
|
31094
|
-
$[
|
|
31605
|
+
const t9 = isExpanded ? "Collapse" : "Expand";
|
|
31606
|
+
let t10;
|
|
31607
|
+
if ($[10] !== t9) {
|
|
31608
|
+
t10 = /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-surface-500 dark:text-surface-400 select-none whitespace-nowrap", children: t9 });
|
|
31609
|
+
$[10] = t9;
|
|
31610
|
+
$[11] = t10;
|
|
31095
31611
|
} else {
|
|
31096
|
-
|
|
31612
|
+
t10 = $[11];
|
|
31097
31613
|
}
|
|
31098
|
-
let
|
|
31099
|
-
if ($[
|
|
31100
|
-
|
|
31101
|
-
$[
|
|
31102
|
-
$[
|
|
31103
|
-
$[
|
|
31614
|
+
let t11;
|
|
31615
|
+
if ($[12] !== t10 || $[13] !== t8) {
|
|
31616
|
+
t11 = /* @__PURE__ */ jsx("div", { className: t8, children: t10 });
|
|
31617
|
+
$[12] = t10;
|
|
31618
|
+
$[13] = t8;
|
|
31619
|
+
$[14] = t11;
|
|
31104
31620
|
} else {
|
|
31105
|
-
|
|
31621
|
+
t11 = $[14];
|
|
31106
31622
|
}
|
|
31107
|
-
|
|
31623
|
+
let t12;
|
|
31624
|
+
if ($[15] !== isExpanded || $[16] !== t11 || $[17] !== t3 || $[18] !== t4 || $[19] !== t5 || $[20] !== t6) {
|
|
31625
|
+
t12 = /* @__PURE__ */ jsxs("div", { className: t2, role: "button", tabIndex: 0, "aria-expanded": isExpanded, "aria-label": t3, onClick: t4, onKeyDown: t5, children: [
|
|
31626
|
+
t6,
|
|
31627
|
+
t11
|
|
31628
|
+
] });
|
|
31629
|
+
$[15] = isExpanded;
|
|
31630
|
+
$[16] = t11;
|
|
31631
|
+
$[17] = t3;
|
|
31632
|
+
$[18] = t4;
|
|
31633
|
+
$[19] = t5;
|
|
31634
|
+
$[20] = t6;
|
|
31635
|
+
$[21] = t12;
|
|
31636
|
+
} else {
|
|
31637
|
+
t12 = $[21];
|
|
31638
|
+
}
|
|
31639
|
+
let t13;
|
|
31640
|
+
if ($[22] !== t0 || $[23] !== t1 || $[24] !== t12) {
|
|
31641
|
+
t13 = /* @__PURE__ */ jsx("div", { className: "shrink-0 mt-auto px-4 pt-0.5 pb-2", children: /* @__PURE__ */ jsx(Tooltip, { title: t0, side: "right", sideOffset: 12, open: t1, children: t12 }) });
|
|
31642
|
+
$[22] = t0;
|
|
31643
|
+
$[23] = t1;
|
|
31644
|
+
$[24] = t12;
|
|
31645
|
+
$[25] = t13;
|
|
31646
|
+
} else {
|
|
31647
|
+
t13 = $[25];
|
|
31648
|
+
}
|
|
31649
|
+
return t13;
|
|
31650
|
+
}
|
|
31651
|
+
function DrawerLogo(t0) {
|
|
31652
|
+
const $ = c(5);
|
|
31653
|
+
const {
|
|
31654
|
+
logo
|
|
31655
|
+
} = t0;
|
|
31656
|
+
const navigation = useNavigationController();
|
|
31657
|
+
let t1;
|
|
31658
|
+
if ($[0] !== logo) {
|
|
31659
|
+
t1 = logo ? /* @__PURE__ */ jsx("img", { src: logo, alt: "Logo", className: "w-[28px] h-[28px] object-contain" }) : /* @__PURE__ */ jsx(FireCMSLogo, { width: "28px", height: "28px" });
|
|
31660
|
+
$[0] = logo;
|
|
31661
|
+
$[1] = t1;
|
|
31662
|
+
} else {
|
|
31663
|
+
t1 = $[1];
|
|
31664
|
+
}
|
|
31665
|
+
let t2;
|
|
31666
|
+
if ($[2] !== navigation.basePath || $[3] !== t1) {
|
|
31667
|
+
t2 = /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center shrink-0 pt-4 pb-0 px-2", children: /* @__PURE__ */ jsx(Tooltip, { title: "Home", sideOffset: 20, side: "right", children: /* @__PURE__ */ jsx(Link, { className: "shrink-0 flex items-center justify-center w-[56px] h-[40px]", to: navigation.basePath, children: t1 }) }) });
|
|
31668
|
+
$[2] = navigation.basePath;
|
|
31669
|
+
$[3] = t1;
|
|
31670
|
+
$[4] = t2;
|
|
31671
|
+
} else {
|
|
31672
|
+
t2 = $[4];
|
|
31673
|
+
}
|
|
31674
|
+
return t2;
|
|
31108
31675
|
}
|
|
31109
31676
|
function UserSelectFieldBinding(t0) {
|
|
31110
31677
|
const $ = c(44);
|
|
@@ -31495,6 +32062,17 @@ const DEFAULT_FIELD_CONFIGS = {
|
|
|
31495
32062
|
Field: DateTimeFieldBinding
|
|
31496
32063
|
}
|
|
31497
32064
|
},
|
|
32065
|
+
geopoint: {
|
|
32066
|
+
key: "geopoint",
|
|
32067
|
+
name: "Geopoint",
|
|
32068
|
+
description: "Latitude and longitude pair",
|
|
32069
|
+
Icon: LocationOnIcon,
|
|
32070
|
+
color: "#0ea5e9",
|
|
32071
|
+
property: {
|
|
32072
|
+
dataType: "geopoint",
|
|
32073
|
+
Field: GeopointFieldBinding
|
|
32074
|
+
}
|
|
32075
|
+
},
|
|
31498
32076
|
group: {
|
|
31499
32077
|
key: "group",
|
|
31500
32078
|
name: "Group",
|
|
@@ -31637,6 +32215,8 @@ function getDefaultFieldId(property) {
|
|
|
31637
32215
|
return "switch";
|
|
31638
32216
|
} else if (property.dataType === "date") {
|
|
31639
32217
|
return "date_time";
|
|
32218
|
+
} else if (property.dataType === "geopoint") {
|
|
32219
|
+
return "geopoint";
|
|
31640
32220
|
} else if (property.dataType === "reference") {
|
|
31641
32221
|
return "reference";
|
|
31642
32222
|
}
|
|
@@ -31647,6 +32227,20 @@ function getFieldId(property) {
|
|
|
31647
32227
|
if (property.propertyConfig) return property.propertyConfig;
|
|
31648
32228
|
return getDefaultFieldId(property);
|
|
31649
32229
|
}
|
|
32230
|
+
const SIDE_PANEL_HASHES = ["#side", "#new_side"];
|
|
32231
|
+
function shouldBlockEntityNavigation(params) {
|
|
32232
|
+
const {
|
|
32233
|
+
currentLocation,
|
|
32234
|
+
nextLocation,
|
|
32235
|
+
entityPath,
|
|
32236
|
+
basePath,
|
|
32237
|
+
blocked
|
|
32238
|
+
} = params;
|
|
32239
|
+
if (nextLocation.pathname.startsWith(entityPath)) return false;
|
|
32240
|
+
if (SIDE_PANEL_HASHES.includes(nextLocation.hash)) return false;
|
|
32241
|
+
if (SIDE_PANEL_HASHES.includes(currentLocation.hash) && nextLocation.pathname === basePath) return false;
|
|
32242
|
+
return blocked;
|
|
32243
|
+
}
|
|
31650
32244
|
const EntityEditView = lazyEager(() => Promise.resolve().then(() => EntityEditView$2), "EntityEditView");
|
|
31651
32245
|
const EntityCollectionView = lazyEager(() => Promise.resolve().then(() => EntityCollectionView$2), "EntityCollectionView");
|
|
31652
32246
|
function FireCMSRoute() {
|
|
@@ -32025,19 +32619,31 @@ function EntityFullScreenRoute({
|
|
|
32025
32619
|
setSelectedTab(urlTab);
|
|
32026
32620
|
}
|
|
32027
32621
|
}, [urlTab]);
|
|
32028
|
-
const
|
|
32029
|
-
const
|
|
32622
|
+
const lastCollectionEntry = navigationEntries.findLast((entry_1) => entry_1.type === "collection");
|
|
32623
|
+
const entityEntryIndex = lastEntityEntry ? navigationEntries.indexOf(lastEntityEntry) : -1;
|
|
32624
|
+
const parentCollectionEntry = entityEntryIndex > 0 ? navigationEntries[entityEntryIndex - 1] : void 0;
|
|
32625
|
+
const buildUrl = (escapedPath) => addInitialSlash(navigation.buildUrlCollectionPath(escapedPath));
|
|
32626
|
+
const basePath = !entityId || isNew || !parentCollectionEntry ? pathname : buildUrl(parentCollectionEntry.fullPath);
|
|
32627
|
+
const entityPath = lastEntityEntry ? buildUrl(lastEntityEntry.fullPath) : basePath;
|
|
32628
|
+
const buildEntityUrl = (id, tab) => {
|
|
32629
|
+
const parentPath = parentCollectionEntry?.fullPath ?? lastCollectionEntry?.fullPath;
|
|
32630
|
+
if (!parentPath) return pathname;
|
|
32631
|
+
return buildUrl(`${parentPath}/${encodeEntityId(id)}${tab ? "/" + tab : ""}`);
|
|
32632
|
+
};
|
|
32030
32633
|
let blocker = void 0;
|
|
32031
32634
|
try {
|
|
32032
32635
|
blocker = useBlocker(({
|
|
32636
|
+
currentLocation,
|
|
32033
32637
|
nextLocation
|
|
32034
|
-
}) => {
|
|
32035
|
-
|
|
32036
|
-
|
|
32037
|
-
|
|
32638
|
+
}) => shouldBlockEntityNavigation({
|
|
32639
|
+
currentLocation,
|
|
32640
|
+
nextLocation,
|
|
32641
|
+
entityPath,
|
|
32642
|
+
basePath,
|
|
32643
|
+
blocked: blocked.current
|
|
32644
|
+
}));
|
|
32038
32645
|
} catch (e) {
|
|
32039
32646
|
}
|
|
32040
|
-
const lastCollectionEntry = navigationEntries.findLast((entry_1) => entry_1.type === "collection");
|
|
32041
32647
|
if (isNew && !lastCollectionEntry) {
|
|
32042
32648
|
throw new Error("INTERNAL: No collection found in the navigation");
|
|
32043
32649
|
}
|
|
@@ -32045,36 +32651,23 @@ function EntityFullScreenRoute({
|
|
|
32045
32651
|
return /* @__PURE__ */ jsx(NotFoundPage, {});
|
|
32046
32652
|
}
|
|
32047
32653
|
const collection = isNew ? lastCollectionEntry.collection : lastEntityEntry.parentCollection;
|
|
32048
|
-
const fullIdPath = isNew ? lastCollectionEntry.
|
|
32049
|
-
const collectionPath = navigation.resolveIdsFrom(
|
|
32654
|
+
const fullIdPath = isNew ? lastCollectionEntry.fullPath : parentCollectionEntry?.fullPath ?? lastEntityEntry.fullPath;
|
|
32655
|
+
const collectionPath = navigation.resolveIdsFrom(isNew ? lastCollectionEntry.path : lastEntityEntry.path);
|
|
32050
32656
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32051
32657
|
/* @__PURE__ */ jsx(React__default.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(EntityEditView, { entityId: isNew ? void 0 : entityId, fullIdPath, collection, layout: "full_screen", path: collectionPath, copy: isCopy, selectedTab: selectedTab ?? void 0, onValuesModified: (modified) => blocked.current = modified, onSaved: (params) => {
|
|
32052
|
-
const newSelectedTab = params.selectedTab;
|
|
32053
32658
|
const newEntityId = params.entityId;
|
|
32054
|
-
if (
|
|
32055
|
-
|
|
32056
|
-
|
|
32057
|
-
|
|
32058
|
-
} else {
|
|
32059
|
-
navigate(`${basePath}/${newEntityId}`, {
|
|
32060
|
-
replace: true
|
|
32061
|
-
});
|
|
32062
|
-
}
|
|
32659
|
+
if (!newEntityId) return;
|
|
32660
|
+
navigate(buildEntityUrl(newEntityId, params.selectedTab), {
|
|
32661
|
+
replace: true
|
|
32662
|
+
});
|
|
32063
32663
|
}, onTabChange: (params_0) => {
|
|
32064
32664
|
setSelectedTab(params_0.selectedTab);
|
|
32065
|
-
if (isNew) {
|
|
32665
|
+
if (isNew || !entityId) {
|
|
32066
32666
|
return;
|
|
32067
32667
|
}
|
|
32068
|
-
|
|
32069
|
-
|
|
32070
|
-
|
|
32071
|
-
replace: true
|
|
32072
|
-
});
|
|
32073
|
-
} else {
|
|
32074
|
-
navigate(`${basePath}/${entityId}`, {
|
|
32075
|
-
replace: true
|
|
32076
|
-
});
|
|
32077
|
-
}
|
|
32668
|
+
navigate(buildEntityUrl(entityId, params_0.selectedTab), {
|
|
32669
|
+
replace: true
|
|
32670
|
+
});
|
|
32078
32671
|
}, parentCollectionIds }, collection.id + "_" + (isNew ? "new" : isCopy ? entityId + "_copy" : entityId)) }),
|
|
32079
32672
|
/* @__PURE__ */ jsx(UnsavedChangesDialog, { open: blocker?.state === "blocked", handleOk: () => blocker?.proceed?.(), handleCancel: () => blocker?.reset?.(), body: "You have unsaved changes in this entity." })
|
|
32080
32673
|
] });
|
|
@@ -32332,7 +32925,12 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32332
32925
|
const setOnHoverTrue = t4;
|
|
32333
32926
|
let t5;
|
|
32334
32927
|
if ($[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32335
|
-
t5 = () =>
|
|
32928
|
+
t5 = () => {
|
|
32929
|
+
if (typeof document !== "undefined" && document.querySelector("[data-radix-popper-content-wrapper]")) {
|
|
32930
|
+
return;
|
|
32931
|
+
}
|
|
32932
|
+
setOnHover(false);
|
|
32933
|
+
};
|
|
32336
32934
|
$[7] = t5;
|
|
32337
32935
|
} else {
|
|
32338
32936
|
t5 = $[7];
|
|
@@ -32366,24 +32964,26 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32366
32964
|
t7 = $[9];
|
|
32367
32965
|
}
|
|
32368
32966
|
const handleDrawerClose = t7;
|
|
32369
|
-
const computedDrawerOpen = drawerOpen
|
|
32967
|
+
const computedDrawerOpen = drawerOpen;
|
|
32968
|
+
const computedDrawerHovered = Boolean(largeLayout && onHover);
|
|
32370
32969
|
const hasAppBar = Boolean(appBarChildren.length > 0);
|
|
32371
32970
|
let t8;
|
|
32372
|
-
if ($[10] !== autoOpenDrawer || $[11] !==
|
|
32971
|
+
if ($[10] !== autoOpenDrawer || $[11] !== computedDrawerHovered || $[12] !== computedDrawerOpen || $[13] !== includeDrawer || $[14] !== logo) {
|
|
32373
32972
|
t8 = {
|
|
32374
32973
|
logo,
|
|
32375
32974
|
hasDrawer: includeDrawer,
|
|
32376
|
-
drawerHovered:
|
|
32975
|
+
drawerHovered: computedDrawerHovered,
|
|
32377
32976
|
drawerOpen: computedDrawerOpen,
|
|
32378
32977
|
closeDrawer: handleDrawerClose,
|
|
32379
32978
|
openDrawer: handleDrawerOpen,
|
|
32979
|
+
closeHover: setOnHoverFalse,
|
|
32380
32980
|
autoOpenDrawer
|
|
32381
32981
|
};
|
|
32382
32982
|
$[10] = autoOpenDrawer;
|
|
32383
|
-
$[11] =
|
|
32384
|
-
$[12] =
|
|
32385
|
-
$[13] =
|
|
32386
|
-
$[14] =
|
|
32983
|
+
$[11] = computedDrawerHovered;
|
|
32984
|
+
$[12] = computedDrawerOpen;
|
|
32985
|
+
$[13] = includeDrawer;
|
|
32986
|
+
$[14] = logo;
|
|
32387
32987
|
$[15] = t8;
|
|
32388
32988
|
} else {
|
|
32389
32989
|
t8 = $[15];
|
|
@@ -32413,11 +33013,11 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32413
33013
|
}
|
|
32414
33014
|
const t11 = includeDrawer && drawerChildren;
|
|
32415
33015
|
let t12;
|
|
32416
|
-
if ($[20] !==
|
|
32417
|
-
t12 = /* @__PURE__ */ jsx(DrawerWrapper, { displayed: includeDrawer, onMouseEnter: setOnHoverTrue, onMouseMove: setOnHoverTrue, onMouseLeave: setOnHoverFalse, open: computedDrawerOpen, hovered:
|
|
32418
|
-
$[20] =
|
|
32419
|
-
$[21] =
|
|
32420
|
-
$[22] =
|
|
33016
|
+
if ($[20] !== computedDrawerHovered || $[21] !== computedDrawerOpen || $[22] !== includeDrawer || $[23] !== t11) {
|
|
33017
|
+
t12 = /* @__PURE__ */ jsx(DrawerWrapper, { displayed: includeDrawer, onMouseEnter: setOnHoverTrue, onMouseMove: setOnHoverTrue, onMouseLeave: setOnHoverFalse, open: computedDrawerOpen, hovered: computedDrawerHovered, setDrawerOpen, children: t11 });
|
|
33018
|
+
$[20] = computedDrawerHovered;
|
|
33019
|
+
$[21] = computedDrawerOpen;
|
|
33020
|
+
$[22] = includeDrawer;
|
|
32421
33021
|
$[23] = t11;
|
|
32422
33022
|
$[24] = t12;
|
|
32423
33023
|
} else {
|
|
@@ -32515,193 +33115,149 @@ const DrawerHeader = () => {
|
|
|
32515
33115
|
return t0;
|
|
32516
33116
|
};
|
|
32517
33117
|
function DrawerWrapper(props) {
|
|
32518
|
-
const $ = c(
|
|
33118
|
+
const $ = c(36);
|
|
32519
33119
|
const {
|
|
32520
33120
|
t
|
|
32521
33121
|
} = useTranslation();
|
|
32522
|
-
const
|
|
32523
|
-
|
|
32524
|
-
|
|
32525
|
-
|
|
32526
|
-
|
|
32527
|
-
|
|
32528
|
-
|
|
32529
|
-
$[0] =
|
|
32530
|
-
$[1] =
|
|
33122
|
+
const layoutWidth = !props.displayed ? 0 : props.open ? DRAWER_WIDTH : 72;
|
|
33123
|
+
const visualWidth = !props.displayed ? 0 : props.open || props.hovered ? DRAWER_WIDTH : 72;
|
|
33124
|
+
const isFloating = props.hovered && !props.open;
|
|
33125
|
+
const t0 = isFloating ? "absolute top-0 left-0 bottom-0 z-30 bg-surface-50 dark:bg-surface-900 shadow-lg border-r" : "relative bg-surface-50 dark:bg-surface-900";
|
|
33126
|
+
let t1;
|
|
33127
|
+
if ($[0] !== t0) {
|
|
33128
|
+
t1 = cls("h-full overflow-hidden", defaultBorderMixin, t0);
|
|
33129
|
+
$[0] = t0;
|
|
33130
|
+
$[1] = t1;
|
|
32531
33131
|
} else {
|
|
32532
|
-
|
|
33132
|
+
t1 = $[1];
|
|
32533
33133
|
}
|
|
32534
|
-
let
|
|
32535
|
-
if ($[2] !==
|
|
32536
|
-
|
|
32537
|
-
|
|
32538
|
-
|
|
32539
|
-
|
|
33134
|
+
let t2;
|
|
33135
|
+
if ($[2] !== visualWidth) {
|
|
33136
|
+
t2 = {
|
|
33137
|
+
width: visualWidth,
|
|
33138
|
+
transition: "left 75ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, opacity 75ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, width 75ms cubic-bezier(0.4, 0, 0.6, 1) 0ms"
|
|
33139
|
+
};
|
|
33140
|
+
$[2] = visualWidth;
|
|
33141
|
+
$[3] = t2;
|
|
32540
33142
|
} else {
|
|
32541
|
-
|
|
33143
|
+
t2 = $[3];
|
|
32542
33144
|
}
|
|
32543
|
-
const t2 = `z-20 absolute right-0 top-4 ${props.open ? "opacity-100" : "opacity-0 invisible"} transition-opacity duration-200 ease-in-out`;
|
|
32544
33145
|
let t3;
|
|
32545
|
-
if ($[
|
|
32546
|
-
t3 =
|
|
32547
|
-
$[
|
|
32548
|
-
$[
|
|
33146
|
+
if ($[4] !== props.children) {
|
|
33147
|
+
t3 = /* @__PURE__ */ jsx("div", { className: "flex flex-col h-full", children: props.children });
|
|
33148
|
+
$[4] = props.children;
|
|
33149
|
+
$[5] = t3;
|
|
32549
33150
|
} else {
|
|
32550
|
-
t3 = $[
|
|
33151
|
+
t3 = $[5];
|
|
32551
33152
|
}
|
|
32552
33153
|
let t4;
|
|
32553
|
-
if ($[7] !==
|
|
32554
|
-
t4 = (
|
|
32555
|
-
$[
|
|
32556
|
-
$[
|
|
32557
|
-
|
|
32558
|
-
|
|
32559
|
-
}
|
|
32560
|
-
let t5;
|
|
32561
|
-
if ($[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32562
|
-
t5 = /* @__PURE__ */ jsx(ChevronLeftIcon, {});
|
|
32563
|
-
$[9] = t5;
|
|
32564
|
-
} else {
|
|
32565
|
-
t5 = $[9];
|
|
32566
|
-
}
|
|
32567
|
-
let t6;
|
|
32568
|
-
if ($[10] !== t3 || $[11] !== t4) {
|
|
32569
|
-
t6 = /* @__PURE__ */ jsx(IconButton, { "aria-label": t3, onClick: t4, children: t5 });
|
|
32570
|
-
$[10] = t3;
|
|
32571
|
-
$[11] = t4;
|
|
32572
|
-
$[12] = t6;
|
|
32573
|
-
} else {
|
|
32574
|
-
t6 = $[12];
|
|
32575
|
-
}
|
|
32576
|
-
let t7;
|
|
32577
|
-
if ($[13] !== t2 || $[14] !== t6) {
|
|
32578
|
-
t7 = /* @__PURE__ */ jsx("div", { className: t2, children: t6 });
|
|
32579
|
-
$[13] = t2;
|
|
32580
|
-
$[14] = t6;
|
|
32581
|
-
$[15] = t7;
|
|
32582
|
-
} else {
|
|
32583
|
-
t7 = $[15];
|
|
32584
|
-
}
|
|
32585
|
-
let t8;
|
|
32586
|
-
if ($[16] !== props.children) {
|
|
32587
|
-
t8 = /* @__PURE__ */ jsx("div", { className: "flex flex-col h-full", children: props.children });
|
|
32588
|
-
$[16] = props.children;
|
|
32589
|
-
$[17] = t8;
|
|
32590
|
-
} else {
|
|
32591
|
-
t8 = $[17];
|
|
32592
|
-
}
|
|
32593
|
-
let t9;
|
|
32594
|
-
if ($[18] !== t0 || $[19] !== t1 || $[20] !== t7 || $[21] !== t8) {
|
|
32595
|
-
t9 = /* @__PURE__ */ jsxs("div", { className: "relative h-full no-scrollbar overflow-y-auto overflow-x-hidden", style: t0, children: [
|
|
32596
|
-
t1,
|
|
32597
|
-
t7,
|
|
32598
|
-
t8
|
|
32599
|
-
] });
|
|
32600
|
-
$[18] = t0;
|
|
32601
|
-
$[19] = t1;
|
|
32602
|
-
$[20] = t7;
|
|
32603
|
-
$[21] = t8;
|
|
32604
|
-
$[22] = t9;
|
|
33154
|
+
if ($[6] !== t1 || $[7] !== t2 || $[8] !== t3) {
|
|
33155
|
+
t4 = /* @__PURE__ */ jsx("div", { className: t1, style: t2, children: t3 });
|
|
33156
|
+
$[6] = t1;
|
|
33157
|
+
$[7] = t2;
|
|
33158
|
+
$[8] = t3;
|
|
33159
|
+
$[9] = t4;
|
|
32605
33160
|
} else {
|
|
32606
|
-
|
|
33161
|
+
t4 = $[9];
|
|
32607
33162
|
}
|
|
32608
|
-
const innerDrawer =
|
|
33163
|
+
const innerDrawer = t4;
|
|
32609
33164
|
const largeLayout = useLargeLayout();
|
|
32610
33165
|
if (!largeLayout) {
|
|
32611
33166
|
if (!props.displayed) {
|
|
32612
33167
|
return null;
|
|
32613
33168
|
}
|
|
32614
|
-
let
|
|
32615
|
-
if ($[
|
|
32616
|
-
|
|
32617
|
-
$[
|
|
32618
|
-
$[
|
|
33169
|
+
let t52;
|
|
33170
|
+
if ($[10] !== t) {
|
|
33171
|
+
t52 = t("open_menu");
|
|
33172
|
+
$[10] = t;
|
|
33173
|
+
$[11] = t52;
|
|
32619
33174
|
} else {
|
|
32620
|
-
|
|
33175
|
+
t52 = $[11];
|
|
32621
33176
|
}
|
|
32622
|
-
let
|
|
32623
|
-
if ($[
|
|
32624
|
-
|
|
32625
|
-
$[
|
|
32626
|
-
$[
|
|
33177
|
+
let t62;
|
|
33178
|
+
if ($[12] !== props) {
|
|
33179
|
+
t62 = () => props.setDrawerOpen(true);
|
|
33180
|
+
$[12] = props;
|
|
33181
|
+
$[13] = t62;
|
|
32627
33182
|
} else {
|
|
32628
|
-
|
|
33183
|
+
t62 = $[13];
|
|
32629
33184
|
}
|
|
32630
|
-
let
|
|
32631
|
-
if ($[
|
|
32632
|
-
|
|
32633
|
-
$[
|
|
33185
|
+
let t7;
|
|
33186
|
+
if ($[14] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
33187
|
+
t7 = /* @__PURE__ */ jsx(MenuIcon, {});
|
|
33188
|
+
$[14] = t7;
|
|
32634
33189
|
} else {
|
|
32635
|
-
|
|
33190
|
+
t7 = $[14];
|
|
32636
33191
|
}
|
|
32637
|
-
let
|
|
32638
|
-
if ($[
|
|
32639
|
-
|
|
32640
|
-
$[
|
|
32641
|
-
$[
|
|
32642
|
-
$[
|
|
33192
|
+
let t8;
|
|
33193
|
+
if ($[15] !== t52 || $[16] !== t62) {
|
|
33194
|
+
t8 = /* @__PURE__ */ jsx(IconButton, { color: "inherit", "aria-label": t52, onClick: t62, size: "large", className: "absolute sm:top-2 sm:left-4 top-1 left-2", children: t7 });
|
|
33195
|
+
$[15] = t52;
|
|
33196
|
+
$[16] = t62;
|
|
33197
|
+
$[17] = t8;
|
|
32643
33198
|
} else {
|
|
32644
|
-
|
|
33199
|
+
t8 = $[17];
|
|
32645
33200
|
}
|
|
32646
|
-
const
|
|
32647
|
-
const
|
|
32648
|
-
let
|
|
32649
|
-
if ($[
|
|
32650
|
-
|
|
32651
|
-
$[
|
|
32652
|
-
$[
|
|
33201
|
+
const t9 = props.open;
|
|
33202
|
+
const t10 = props.setDrawerOpen;
|
|
33203
|
+
let t11;
|
|
33204
|
+
if ($[18] !== t) {
|
|
33205
|
+
t11 = t("navigation_drawer");
|
|
33206
|
+
$[18] = t;
|
|
33207
|
+
$[19] = t11;
|
|
32653
33208
|
} else {
|
|
32654
|
-
|
|
33209
|
+
t11 = $[19];
|
|
32655
33210
|
}
|
|
32656
|
-
let
|
|
32657
|
-
if ($[
|
|
32658
|
-
|
|
32659
|
-
$[
|
|
32660
|
-
$[
|
|
32661
|
-
$[
|
|
32662
|
-
$[
|
|
32663
|
-
$[
|
|
33211
|
+
let t12;
|
|
33212
|
+
if ($[20] !== innerDrawer || $[21] !== props.open || $[22] !== props.setDrawerOpen || $[23] !== t11) {
|
|
33213
|
+
t12 = /* @__PURE__ */ jsx(Sheet, { side: "left", transparent: true, open: t9, onOpenChange: t10, title: t11, overlayClassName: "bg-white bg-opacity-80 bg-white/80", children: innerDrawer });
|
|
33214
|
+
$[20] = innerDrawer;
|
|
33215
|
+
$[21] = props.open;
|
|
33216
|
+
$[22] = props.setDrawerOpen;
|
|
33217
|
+
$[23] = t11;
|
|
33218
|
+
$[24] = t12;
|
|
32664
33219
|
} else {
|
|
32665
|
-
|
|
33220
|
+
t12 = $[24];
|
|
32666
33221
|
}
|
|
32667
|
-
let
|
|
32668
|
-
if ($[
|
|
32669
|
-
|
|
32670
|
-
|
|
32671
|
-
|
|
33222
|
+
let t13;
|
|
33223
|
+
if ($[25] !== t12 || $[26] !== t8) {
|
|
33224
|
+
t13 = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
33225
|
+
t8,
|
|
33226
|
+
t12
|
|
32672
33227
|
] });
|
|
32673
|
-
$[
|
|
32674
|
-
$[
|
|
32675
|
-
$[
|
|
33228
|
+
$[25] = t12;
|
|
33229
|
+
$[26] = t8;
|
|
33230
|
+
$[27] = t13;
|
|
32676
33231
|
} else {
|
|
32677
|
-
|
|
33232
|
+
t13 = $[27];
|
|
32678
33233
|
}
|
|
32679
|
-
return
|
|
33234
|
+
return t13;
|
|
32680
33235
|
}
|
|
32681
|
-
let
|
|
32682
|
-
if ($[
|
|
32683
|
-
|
|
32684
|
-
width,
|
|
32685
|
-
|
|
33236
|
+
let t5;
|
|
33237
|
+
if ($[28] !== layoutWidth) {
|
|
33238
|
+
t5 = {
|
|
33239
|
+
width: layoutWidth,
|
|
33240
|
+
minWidth: layoutWidth,
|
|
33241
|
+
transition: "left 75ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, opacity 75ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, width 75ms cubic-bezier(0.4, 0, 0.6, 1) 0ms"
|
|
32686
33242
|
};
|
|
32687
|
-
$[
|
|
32688
|
-
$[
|
|
33243
|
+
$[28] = layoutWidth;
|
|
33244
|
+
$[29] = t5;
|
|
32689
33245
|
} else {
|
|
32690
|
-
|
|
33246
|
+
t5 = $[29];
|
|
32691
33247
|
}
|
|
32692
|
-
let
|
|
32693
|
-
if ($[
|
|
32694
|
-
|
|
32695
|
-
$[
|
|
32696
|
-
$[
|
|
32697
|
-
$[
|
|
32698
|
-
$[
|
|
32699
|
-
$[
|
|
32700
|
-
$[
|
|
33248
|
+
let t6;
|
|
33249
|
+
if ($[30] !== innerDrawer || $[31] !== props.onMouseEnter || $[32] !== props.onMouseLeave || $[33] !== props.onMouseMove || $[34] !== t5) {
|
|
33250
|
+
t6 = /* @__PURE__ */ jsx("div", { className: "z-20 relative flex-shrink-0 overflow-visible", onMouseEnter: props.onMouseEnter, onMouseMove: props.onMouseMove, onMouseLeave: props.onMouseLeave, style: t5, children: innerDrawer });
|
|
33251
|
+
$[30] = innerDrawer;
|
|
33252
|
+
$[31] = props.onMouseEnter;
|
|
33253
|
+
$[32] = props.onMouseLeave;
|
|
33254
|
+
$[33] = props.onMouseMove;
|
|
33255
|
+
$[34] = t5;
|
|
33256
|
+
$[35] = t6;
|
|
32701
33257
|
} else {
|
|
32702
|
-
|
|
33258
|
+
t6 = $[35];
|
|
32703
33259
|
}
|
|
32704
|
-
return
|
|
33260
|
+
return t6;
|
|
32705
33261
|
}
|
|
32706
33262
|
function _temp$6(child) {
|
|
32707
33263
|
return child.type.componentType === "Drawer";
|
|
@@ -37464,6 +38020,685 @@ const pt = {
|
|
|
37464
38020
|
marketplace_link_error: "Erro ao vincular o projeto. Por favor, tente novamente.",
|
|
37465
38021
|
marketplace_no_account_id: "Nenhum ID de conta do GCP Marketplace encontrado. Por favor, comece pelo GCP Marketplace."
|
|
37466
38022
|
};
|
|
38023
|
+
const pl = {
|
|
38024
|
+
// ─── Form actions ────────────────────────────────────────────
|
|
38025
|
+
save: "Zapisz",
|
|
38026
|
+
create: "Utwórz",
|
|
38027
|
+
create_copy: "Utwórz kopię",
|
|
38028
|
+
save_and_close: "Zapisz i zamknij",
|
|
38029
|
+
create_copy_and_close: "Utwórz kopię i zamknij",
|
|
38030
|
+
create_and_close: "Utwórz i zamknij",
|
|
38031
|
+
discard: "Odrzuć",
|
|
38032
|
+
clear: "Wyczyść",
|
|
38033
|
+
cancel: "Anuluj",
|
|
38034
|
+
// ─── Entity actions ──────────────────────────────────────────
|
|
38035
|
+
edit: "Edytuj",
|
|
38036
|
+
copy: "Kopiuj",
|
|
38037
|
+
delete: "Usuń",
|
|
38038
|
+
// ─── Delete dialog ───────────────────────────────────────────
|
|
38039
|
+
delete_confirmation_title: "Usunąć?",
|
|
38040
|
+
delete_confirmation_body: "Spowoduje to usunięcie encji. Czy na pewno chcesz kontynuować?",
|
|
38041
|
+
delete_multiple_confirmation_body: "Spowoduje to usunięcie zaznaczonych encji. Czy na pewno chcesz kontynuować?",
|
|
38042
|
+
// ─── Unsaved-changes dialog ───────────────────────────────────
|
|
38043
|
+
unsaved_changes_title: "Niezapisane zmiany",
|
|
38044
|
+
unsaved_changes_body: "Masz niezapisane zmiany. Czy chcesz je odrzucić?",
|
|
38045
|
+
discard_changes: "Odrzuć zmiany",
|
|
38046
|
+
keep_editing: "Kontynuuj edycję",
|
|
38047
|
+
// ─── Collection table / toolbar ──────────────────────────────
|
|
38048
|
+
search: "Szukaj",
|
|
38049
|
+
find_by_id: "Znajdź po ID",
|
|
38050
|
+
find_entity_by_id: "Znajdź encję po ID",
|
|
38051
|
+
filter: "Filtr",
|
|
38052
|
+
filters: "Filtry",
|
|
38053
|
+
clear_filter: "Wyczyść filtr",
|
|
38054
|
+
clear_filter_sort: "Wyczyść filtr/sortowanie",
|
|
38055
|
+
clear_sort: "Wyczyść sortowanie",
|
|
38056
|
+
no_items: "Brak elementów",
|
|
38057
|
+
no_entries_found: "Nie znaleziono wpisów",
|
|
38058
|
+
all_entries_loaded: "Wczytano wszystkie wpisy ({{count}})",
|
|
38059
|
+
create_your_first_entry: "Utwórz swój pierwszy wpis",
|
|
38060
|
+
no_results_filter_sort: "Brak wyników dla zastosowanego filtra/sortowania",
|
|
38061
|
+
add: "Dodaj",
|
|
38062
|
+
remove: "Usuń",
|
|
38063
|
+
multiple_entities: "Wiele encji",
|
|
38064
|
+
unsaved_changes: "Masz niezapisane zmiany w kolekcji {{collectionName}}.",
|
|
38065
|
+
so_empty: "Tak pusto...",
|
|
38066
|
+
no_results: "Brak wyników dla zastosowanego filtra/sortowania",
|
|
38067
|
+
refresh_data: "Odśwież dane",
|
|
38068
|
+
dark_mode: "Ciemny",
|
|
38069
|
+
light_mode: "Jasny",
|
|
38070
|
+
system_mode: "Systemowy",
|
|
38071
|
+
ok: "Ok",
|
|
38072
|
+
save_collection_config: "Zapisz strukturę kolekcji",
|
|
38073
|
+
search_for_more_icons: "Szukaj więcej ikon…",
|
|
38074
|
+
ai_modified: "Zmodyfikowane przez AI",
|
|
38075
|
+
size_label: "Rozmiar",
|
|
38076
|
+
group_by: "Grupuj według",
|
|
38077
|
+
initialize_kanban_order: "Zainicjuj kolejność Kanban",
|
|
38078
|
+
copy_id: "Kopiuj ID",
|
|
38079
|
+
add_specific: "Dodaj {{name}}",
|
|
38080
|
+
select_specific: "Wybierz {{name}}",
|
|
38081
|
+
select_from: "Wybierz z {{name}}",
|
|
38082
|
+
done: "Gotowe",
|
|
38083
|
+
log_out: "Wyloguj się",
|
|
38084
|
+
license_needed: "Wymagana licencja",
|
|
38085
|
+
license_description: "Aby korzystać z FireCMS PRO, potrzebujesz ważnej licencji. Skontaktuj się z nami pod adresem {{email}}, aby uzyskać więcej informacji.",
|
|
38086
|
+
column_cannot_be_edited: "Ta kolumna nie może być edytowana bezpośrednio",
|
|
38087
|
+
close: "Zamknij",
|
|
38088
|
+
unsaved_local_changes: "Niezapisane zmiany lokalne",
|
|
38089
|
+
unsaved_local_changes_description: "Ten dokument został zmodyfikowany lokalnie i zawiera niezapisane zmiany. Zmiany te zostaną utracone, jeśli ich nie zastosujesz.",
|
|
38090
|
+
preview_changes: "Podgląd zmian",
|
|
38091
|
+
apply_changes: "Zastosuj zmiany",
|
|
38092
|
+
discard_local_changes: "Odrzuć zmiany lokalne",
|
|
38093
|
+
preview_local_changes: "Podgląd zmian lokalnych",
|
|
38094
|
+
preview_local_changes_description: "To są zmiany lokalne, które zostaną zastosowane do formularza.",
|
|
38095
|
+
type: "Typ",
|
|
38096
|
+
string: "tekst",
|
|
38097
|
+
number: "liczba",
|
|
38098
|
+
boolean: "wartość logiczna",
|
|
38099
|
+
date: "data",
|
|
38100
|
+
map: "mapa",
|
|
38101
|
+
array: "tablica",
|
|
38102
|
+
arrays_of_arrays_not_supported: "Tablice tablic nie są obsługiwane.",
|
|
38103
|
+
data_type_not_supported: "Typ danych {{dataType}} nie jest jeszcze obsługiwany",
|
|
38104
|
+
passkey_error_unsupported: "Twoje urządzenie lub przeglądarka nie obsługuje kluczy dostępu (passkeys).",
|
|
38105
|
+
admin: "Administrator",
|
|
38106
|
+
home: "Strona główna",
|
|
38107
|
+
this_form_has_errors: "Ten formularz zawiera błędy",
|
|
38108
|
+
error_loading_navigation: "Błąd wczytywania nawigacji",
|
|
38109
|
+
error_loading_auth: "Błąd wczytywania uwierzytelniania",
|
|
38110
|
+
this_form_has_been_modified: "Ten formularz został zmodyfikowany",
|
|
38111
|
+
current_form_in_sync: "Bieżący formularz jest zsynchronizowany z bazą danych",
|
|
38112
|
+
open_in_console: "Otwórz w konsoli",
|
|
38113
|
+
collection_does_not_exist: "Podana kolekcja nie istnieje. Sprawdź konsolę",
|
|
38114
|
+
unexpected_value: "Nieoczekiwana wartość",
|
|
38115
|
+
unexpected_value_click_to_edit: "Nieoczekiwana wartość. Kliknij, aby edytować",
|
|
38116
|
+
unexpected_reference_value: "Nieoczekiwana wartość referencji. Kliknij, aby edytować",
|
|
38117
|
+
copy_url_to_clipboard: "Kopiuj adres URL do schowka",
|
|
38118
|
+
open_image_in_new_tab: "Otwórz obraz w nowej karcie",
|
|
38119
|
+
reference_not_set: "Referencja nie ustawiona",
|
|
38120
|
+
reference_does_not_exist: "Referencja nie istnieje",
|
|
38121
|
+
entity_not_found: "Nie znaleziono encji",
|
|
38122
|
+
file_not_found: "Nie znaleziono pliku",
|
|
38123
|
+
unsaved_changes_in_entity: "Masz niezapisane zmiany w tej encji.",
|
|
38124
|
+
delete_this_role: "Usuń tę rolę",
|
|
38125
|
+
no_roles_yet: "Nie masz jeszcze żadnych ról.",
|
|
38126
|
+
create_default_roles: "Utwórz domyślne role",
|
|
38127
|
+
delete_role_confirmation: "Czy na pewno chcesz usunąć tę rolę?",
|
|
38128
|
+
delete_this_user: "Usuń tego użytkownika",
|
|
38129
|
+
no_users_yet: "Nie ma jeszcze żadnych użytkowników",
|
|
38130
|
+
add_logged_user_as_admin: "Dodaj zalogowanego użytkownika jako administratora",
|
|
38131
|
+
add_current_user_as_admin: "Dodaj bieżącego użytkownika jako administratora",
|
|
38132
|
+
create_default_roles_and_add_admin: "Utwórz domyślne role i dodaj bieżącego użytkownika jako administratora",
|
|
38133
|
+
delete_user_confirmation: "Czy na pewno chcesz usunąć tego użytkownika?",
|
|
38134
|
+
create_your_users_and_roles: "Utwórz użytkowników i role",
|
|
38135
|
+
no_users_or_roles_defined: "Nie masz zdefiniowanych użytkowników ani ról. Możesz utworzyć domyślne role i dodać bieżącego użytkownika jako administratora.",
|
|
38136
|
+
save_before_changing_schema: "Musisz zapisać dokument przed zmianą schematu",
|
|
38137
|
+
edit_schema_for_this_form: "Edytuj schemat tego formularza",
|
|
38138
|
+
no_permissions_to_edit_collection: "Nie masz uprawnień do edycji tej kolekcji",
|
|
38139
|
+
browser_does_not_support_audio: "Twoja przeglądarka nie obsługuje elementu audio.",
|
|
38140
|
+
user_not_found: "Nie znaleziono użytkownika: {{value}}",
|
|
38141
|
+
// ─── Collection view actions ──────────────────────────────────
|
|
38142
|
+
delete_selected: "Usuń",
|
|
38143
|
+
cannot_delete_selected: "Zaznaczono co najmniej jedną encję, której nie można usunąć",
|
|
38144
|
+
// ─── Array / field containers ─────────────────────────────────
|
|
38145
|
+
add_entry: "Dodaj",
|
|
38146
|
+
add_on_top: "Dodaj na górze",
|
|
38147
|
+
add_below: "Dodaj poniżej",
|
|
38148
|
+
add_to_field: "Dodaj do {{fieldName}}",
|
|
38149
|
+
value: "Wartość",
|
|
38150
|
+
key: "Klucz",
|
|
38151
|
+
drag_drop_multiple: "Przeciągnij i upuść pliki tutaj lub kliknij, aby je wybrać. Przeciągnij, aby zmienić kolejność.",
|
|
38152
|
+
drag_drop_single: "Przeciągnij i upuść plik tutaj lub kliknij, aby go wybrać",
|
|
38153
|
+
// ─── Navigation / scaffold ────────────────────────────────────
|
|
38154
|
+
open_menu: "Otwórz menu",
|
|
38155
|
+
close_drawer: "Zamknij panel boczny",
|
|
38156
|
+
navigation_drawer: "Panel nawigacyjny",
|
|
38157
|
+
// ─── Error states ─────────────────────────────────────────────
|
|
38158
|
+
error: "Błąd",
|
|
38159
|
+
error_uploading_file: "Błąd przesyłania pliku",
|
|
38160
|
+
error_deleting: "Błąd podczas usuwania: {{message}}",
|
|
38161
|
+
error_before_delete: "Błąd przed usunięciem: {{message}}",
|
|
38162
|
+
error_updating_asset: "Błąd aktualizacji zasobu",
|
|
38163
|
+
error_deleting_asset: "Błąd usuwania zasobu",
|
|
38164
|
+
error_firestore_index: "Dla tego zapytania wymagany jest indeks Firestore.",
|
|
38165
|
+
create_index: "Utwórz indeks",
|
|
38166
|
+
value_is_not_reference: "Wartość nie jest referencją.",
|
|
38167
|
+
click_to_edit: "Kliknij, aby edytować",
|
|
38168
|
+
data_is_not_array_of_references: "Dane nie są tablicą referencji",
|
|
38169
|
+
// ─── Misc ─────────────────────────────────────────────────────
|
|
38170
|
+
loading: "Wczytywanie",
|
|
38171
|
+
local_changes_applied: "Zmiany lokalne zastosowane w formularzu",
|
|
38172
|
+
local_changes_discarded: "Zmiany lokalne odrzucone",
|
|
38173
|
+
are_you_sure_leave: "Czy na pewno chcesz opuścić tę stronę?",
|
|
38174
|
+
see_console_details: "Więcej informacji w konsoli.",
|
|
38175
|
+
drop_here_create_group: "Upuść tutaj, aby utworzyć nową grupę",
|
|
38176
|
+
filter_for_null_values: "Filtruj puste wartości",
|
|
38177
|
+
value_updated_elsewhere: "Ta wartość została zaktualizowana gdzie indziej",
|
|
38178
|
+
add_property: "Dodaj właściwość",
|
|
38179
|
+
edit_name: "Edytuj {{name}}",
|
|
38180
|
+
this_entity_not_exist: "Ta encja nie istnieje w bazie danych",
|
|
38181
|
+
internal_error: "BŁĄD wewnętrzny",
|
|
38182
|
+
// ─── Rename group dialog ──────────────────────────────────────
|
|
38183
|
+
rename_group: "Zmień nazwę grupy",
|
|
38184
|
+
group_name_label: "Nazwa grupy",
|
|
38185
|
+
group_name_empty_error: "Nazwa grupy nie może być pusta.",
|
|
38186
|
+
group_name_exists_error: "Taka nazwa grupy już istnieje.",
|
|
38187
|
+
// ─── Search ───────────────────────────────────────────────────
|
|
38188
|
+
search_collections: "Szukaj kolekcji",
|
|
38189
|
+
// ─── Navigation groups ────────────────────────────────────────
|
|
38190
|
+
views_group: "Widoki",
|
|
38191
|
+
// ─── Entity Edit View ─────────────────────────────────────────
|
|
38192
|
+
youd_need_to_save_before_additional_collections: "Musisz zapisać encję przed dodaniem kolejnych kolekcji",
|
|
38193
|
+
// ─── Not Found Page ───────────────────────────────────────────
|
|
38194
|
+
page_not_found: "Nie znaleziono strony",
|
|
38195
|
+
page_not_found_body: "Ta strona nie istnieje lub nie masz do niej dostępu",
|
|
38196
|
+
back_to_home: "Wróć do strony głównej",
|
|
38197
|
+
// ─── Collection Editor ─────────────────────────────────────────
|
|
38198
|
+
default_collection_view: "Domyślny widok kolekcji",
|
|
38199
|
+
table_view: "Tabela",
|
|
38200
|
+
cards_view: "Karty",
|
|
38201
|
+
kanban_view: "Kanban",
|
|
38202
|
+
choose_how_entities_displayed_default: "Wybierz, jak encje mają być domyślnie wyświetlane",
|
|
38203
|
+
document_view: "Widok dokumentu",
|
|
38204
|
+
side_panel: "Panel boczny",
|
|
38205
|
+
full_screen: "Pełny ekran",
|
|
38206
|
+
should_documents_opened_full_screen: "Czy dokumenty mają być otwierane na pełnym ekranie, czy w bocznym oknie dialogowym",
|
|
38207
|
+
select_custom_view: "Wybierz widok niestandardowy",
|
|
38208
|
+
no_custom_views_defined: "Nie zdefiniowano żadnych widoków niestandardowych. Zdefiniuj je w ustawieniach dostosowywania przed użyciem tego okna dialogowego.",
|
|
38209
|
+
select_custom_action: "Wybierz akcję niestandardową",
|
|
38210
|
+
no_custom_actions_defined: "Nie zdefiniowano żadnych akcji niestandardowych. Zdefiniuj je w ustawieniach dostosowywania przed użyciem tego okna dialogowego.",
|
|
38211
|
+
no_collections_found: "Nie znaleziono kolekcji",
|
|
38212
|
+
start_building_collections: "Twórz kolekcje w FireCMS bez trudu. Zmapuj je z istniejącymi danymi w bazie, zaimportuj z plików lub skorzystaj z naszych szablonów.",
|
|
38213
|
+
create_first_collection: "Utwórz swoją pierwszą kolekcję",
|
|
38214
|
+
define_collections_programmatically: "Kolekcje możesz też definiować programistycznie.",
|
|
38215
|
+
edit_collection: "Edytuj kolekcję",
|
|
38216
|
+
no_permissions_edit_collection: "Nie masz uprawnień do edycji tej kolekcji",
|
|
38217
|
+
no_permissions_create_collection: "Nie masz uprawnień do tworzenia kolekcji",
|
|
38218
|
+
create_collection: "Utwórz kolekcję",
|
|
38219
|
+
update_collection: "Zaktualizuj kolekcję",
|
|
38220
|
+
new_collection: "Nowa kolekcja",
|
|
38221
|
+
add_new_collection: "Dodaj nową kolekcję",
|
|
38222
|
+
collection_with_name: "Kolekcja {{name}}",
|
|
38223
|
+
change_icon: "Zmień ikonę",
|
|
38224
|
+
is_subcollection_of: "To jest podkolekcja",
|
|
38225
|
+
name: "Nazwa",
|
|
38226
|
+
collection_name_description: "Nazwa tej kolekcji, zwykle w liczbie mnogiej (np. Produkty)",
|
|
38227
|
+
path: "Ścieżka",
|
|
38228
|
+
relative_path_to_parent: "Ścieżka względna do elementu nadrzędnego (nie trzeba podawać ścieżki nadrzędnej)",
|
|
38229
|
+
path_in_database: "Ścieżka, pod którą ta kolekcja jest przechowywana w bazie danych",
|
|
38230
|
+
singular_name: "Nazwa w liczbie pojedynczej",
|
|
38231
|
+
singular_name_description: "Opcjonalnie zdefiniuj nazwę pojedynczą dla encji tej kolekcji",
|
|
38232
|
+
description: "Opis",
|
|
38233
|
+
description_of_collection: "Opis kolekcji, możesz użyć formatowania markdown",
|
|
38234
|
+
collection_id: "ID kolekcji",
|
|
38235
|
+
collection_id_description: "To ID identyfikuje tę kolekcję. Zazwyczaj jest takie samo jak ścieżka.",
|
|
38236
|
+
collection_group: "Grupa kolekcji",
|
|
38237
|
+
collection_group_description: "Grupa kolekcji obejmuje wszystkie kolekcje o tej samej ścieżce. Pozwala to na wykonywanie zapytań w wielu kolekcjach jednocześnie.",
|
|
38238
|
+
advanced_settings: "Ustawienia zaawansowane",
|
|
38239
|
+
doc_history_global: "Historia zmian dokumentu włączona, jeśli jest włączona globalnie",
|
|
38240
|
+
doc_history_enabled: "Historia zmian dokumentu WŁĄCZONA",
|
|
38241
|
+
doc_history_not_enabled: "Historia zmian dokumentu NIE jest włączona",
|
|
38242
|
+
doc_history_description: "Po włączeniu każdy dokument w tej kolekcji będzie miał historię zmian. Jest to przydatne do celów audytowych. Dane są przechowywane w podkolekcji dokumentu w bazie danych o nazwie __history.",
|
|
38243
|
+
document_id_generation: "Generowanie ID dokumentów",
|
|
38244
|
+
code_defined: "Zdefiniowane w kodzie",
|
|
38245
|
+
users_must_define_id: "Użytkownicy muszą podać ID",
|
|
38246
|
+
users_can_define_id: "Użytkownicy mogą podać ID, ale nie jest to wymagane",
|
|
38247
|
+
doc_id_auto_generated: "ID dokumentu generowane jest automatycznie",
|
|
38248
|
+
config_doc_id_generation: "Skonfiguruj sposób generowania ID dokumentów podczas tworzenia nowych encji.",
|
|
38249
|
+
enable_text_search: "Włącz wyszukiwanie tekstowe dla tej kolekcji",
|
|
38250
|
+
text_search_description: "Zezwól na wyszukiwanie tekstowe w tej kolekcji. Jeśli nie określono delegata wyszukiwania tekstowego, użyte zostanie wbudowane lokalne wyszukiwanie tekstowe. Nie jest to zalecane w przypadku dużych kolekcji, ponieważ może powodować problemy z wydajnością i kosztami.",
|
|
38251
|
+
database_id: "ID bazy danych",
|
|
38252
|
+
default_text: "(domyślnie)",
|
|
38253
|
+
custom_actions: "Akcje niestandardowe",
|
|
38254
|
+
more_info: "Więcej informacji",
|
|
38255
|
+
define_custom_actions_cli: "Zdefiniuj własne akcje niestandardowe, przesyłając je za pomocą CLI.",
|
|
38256
|
+
action_defined_in_code: "Ta akcja jest zdefiniowana w kodzie pod kluczem",
|
|
38257
|
+
add_custom_entity_action: "Dodaj niestandardową akcję encji",
|
|
38258
|
+
remove_this_action: "Usunąć tę akcję?",
|
|
38259
|
+
remove_action_warning: "To nie usunie żadnych danych, tylko akcję w CMS",
|
|
38260
|
+
subcollections_of: "Podkolekcje kolekcji",
|
|
38261
|
+
add_subcollection: "Dodaj podkolekcję",
|
|
38262
|
+
custom_views: "Widoki niestandardowe",
|
|
38263
|
+
define_custom_views_cli: "Zdefiniuj własne widoki niestandardowe, przesyłając je za pomocą CLI.",
|
|
38264
|
+
view_defined_in_code: "Ten widok jest zdefiniowany w kodzie pod kluczem",
|
|
38265
|
+
add_custom_entity_view: "Dodaj niestandardowy widok encji",
|
|
38266
|
+
delete_this_subcollection: "Usunąć tę podkolekcję?",
|
|
38267
|
+
remove_collection_warning: "To nie usunie żadnych danych, tylko kolekcję w CMS",
|
|
38268
|
+
remove_this_view: "Usunąć ten widok?",
|
|
38269
|
+
remove_view_warning: "To nie usunie żadnych danych, tylko widok w CMS",
|
|
38270
|
+
no_collection_selected: "Nie wybrano kolekcji",
|
|
38271
|
+
code_for_collection: "Kod dla",
|
|
38272
|
+
use_config_define_json: "Użyj tej konfiguracji, aby zdefiniować kolekcję w formacie JSON.",
|
|
38273
|
+
customise_collection_code: "Jeśli chcesz dostosować kolekcję w kodzie, możesz dodać ten kod kolekcji do konfiguracji swojej aplikacji CMS.",
|
|
38274
|
+
copied: "Skopiowano",
|
|
38275
|
+
property_cant_be_edited: "Tej właściwości nie można edytować",
|
|
38276
|
+
property_not_editable_description: "Możesz nie mieć uprawnień do jej edycji lub jest ona zdefiniowana w kodzie z flagą editable ustawioną na false.",
|
|
38277
|
+
delete_this_property: "Usunąć tę właściwość?",
|
|
38278
|
+
delete_property_warning: "To nie usunie żadnych danych, tylko zmodyfikuje kolekcję.",
|
|
38279
|
+
error_must_specify_id: "Musisz podać ID dla tego pola",
|
|
38280
|
+
error_id_format: "ID może zawierać tylko litery, cyfry i podkreślenia (_) i nie może zaczynać się od cyfry",
|
|
38281
|
+
error_id_already_exists: "Istnieje już inne pole z tym ID",
|
|
38282
|
+
error_must_specify_title: "Musisz podać tytuł dla tego pola",
|
|
38283
|
+
custom_or_other: "Niestandardowe/Inne",
|
|
38284
|
+
select_property_widget: "Wybierz widżet właściwości",
|
|
38285
|
+
error_changing_data_type: "Ten widżet używa innego typu danych niż pierwotnie wybrany widżet. Może to powodować błędy z istniejącymi danymi.",
|
|
38286
|
+
required: "Wymagane",
|
|
38287
|
+
enum_form_dialog: "Okno dialogowe formularza wyliczeniowego",
|
|
38288
|
+
imported_data_preview: "Podgląd zaimportowanych danych",
|
|
38289
|
+
entities_with_same_id_overwritten: "Encje o tym samym ID zostaną nadpisane",
|
|
38290
|
+
collection_editor: "Edytor kolekcji",
|
|
38291
|
+
properties_in_this_group: "Właściwości w tej grupie",
|
|
38292
|
+
data_property_mapping: "Mapowanie danych na właściwości",
|
|
38293
|
+
property_edit_view: "Widok edycji właściwości",
|
|
38294
|
+
all_of_these: "Wszystkie z nich",
|
|
38295
|
+
any_of_these: "Dowolna z nich",
|
|
38296
|
+
only_admins_edit_roles: "Tylko administratorzy mogą edytować role",
|
|
38297
|
+
error_user_not_found: "Nie znaleziono użytkownika",
|
|
38298
|
+
role: "Rola",
|
|
38299
|
+
name_of_this_role: "Nazwa tej roli",
|
|
38300
|
+
id_of_this_role: "ID tej roli",
|
|
38301
|
+
create_entities: "Tworzenie encji",
|
|
38302
|
+
read_entities: "Odczyt encji",
|
|
38303
|
+
update_entities: "Aktualizacja encji",
|
|
38304
|
+
delete_entities: "Usuwanie encji",
|
|
38305
|
+
all_collections: "Wszystkie kolekcje",
|
|
38306
|
+
create_entities_in_collections: "Tworzenie encji w kolekcjach",
|
|
38307
|
+
access_all_data_in_every_collection: "Dostęp do wszystkich danych w każdej kolekcji",
|
|
38308
|
+
update_data_in_any_collection: "Aktualizacja danych w dowolnej kolekcji",
|
|
38309
|
+
delete_data_in_any_collection: "Usuwanie danych w dowolnej kolekcji",
|
|
38310
|
+
allow_all_permissions_in_this_collections: "Zezwól na wszystkie uprawnienia w tych kolekcjach",
|
|
38311
|
+
all: "Wszystkie",
|
|
38312
|
+
customise_permissions_description: "Możesz dostosować uprawnienia, jakie użytkownicy z tą rolą mają w encjach każdej kolekcji",
|
|
38313
|
+
create_collections: "Tworzenie kolekcji",
|
|
38314
|
+
yes: "Tak",
|
|
38315
|
+
no: "Nie",
|
|
38316
|
+
can_user_create_collections: "Czy użytkownik może tworzyć kolekcje",
|
|
38317
|
+
edit_collections: "Edycja kolekcji",
|
|
38318
|
+
only_own_collections: "Tylko swoje",
|
|
38319
|
+
own: "Własne",
|
|
38320
|
+
can_user_edit_collections: "Czy użytkownik może edytować kolekcje",
|
|
38321
|
+
delete_collections: "Usuwanie kolekcji",
|
|
38322
|
+
can_user_delete_collections: "Czy użytkownik może usuwać kolekcje",
|
|
38323
|
+
error_saving_role: "Wystąpił błąd podczas zapisywania tej roli",
|
|
38324
|
+
create_role: "Utwórz rolę",
|
|
38325
|
+
update: "Aktualizuj",
|
|
38326
|
+
only_admins_change_roles: "Tylko administratorzy mogą zmieniać role",
|
|
38327
|
+
must_be_at_least_one_admin: "Musi istnieć co najmniej jeden administrator",
|
|
38328
|
+
logged_user_not_found: "Nie znaleziono zalogowanego użytkownika",
|
|
38329
|
+
user: "Użytkownik",
|
|
38330
|
+
user_id: "ID użytkownika",
|
|
38331
|
+
name_of_this_user: "Nazwa tego użytkownika",
|
|
38332
|
+
email_of_this_user: "Adres e-mail tego użytkownika",
|
|
38333
|
+
roles: "Role",
|
|
38334
|
+
create_user: "Utwórz użytkownika",
|
|
38335
|
+
users: "Użytkownicy",
|
|
38336
|
+
add_user: "Dodaj użytkownika",
|
|
38337
|
+
add_role: "Dodaj rolę",
|
|
38338
|
+
is_admin: "Jest administratorem",
|
|
38339
|
+
default_permissions: "Domyślne uprawnienia",
|
|
38340
|
+
created_on: "Utworzono",
|
|
38341
|
+
email: "E-mail",
|
|
38342
|
+
id: "ID",
|
|
38343
|
+
read: "Odczyt",
|
|
38344
|
+
column_in_file: "Kolumna w pliku",
|
|
38345
|
+
map_to_property: "Zmapuj na właściwość",
|
|
38346
|
+
default_values: "Wartości domyślne",
|
|
38347
|
+
default_values_description: "Możesz wybrać wartość domyślną dla niezmapowanych kolumn i pustych wartości:",
|
|
38348
|
+
property: "Właściwość",
|
|
38349
|
+
default_value: "Wartość domyślna",
|
|
38350
|
+
autogenerate_id: "Generuj ID automatycznie",
|
|
38351
|
+
id_column_description: "Kolumna, która będzie używana jako ID dla każdego dokumentu",
|
|
38352
|
+
do_not_set_value: "Nie ustawiaj wartości",
|
|
38353
|
+
set_value_to_true: "Ustaw wartość na true",
|
|
38354
|
+
set_value_to_false: "Ustaw wartość na false",
|
|
38355
|
+
drag_and_drop_file: "Przeciągnij i upuść plik tutaj lub kliknij, aby go przesłać",
|
|
38356
|
+
error_saving_data: "Błąd zapisywania danych",
|
|
38357
|
+
retry: "Spróbuj ponownie",
|
|
38358
|
+
saving_data: "Zapisywanie danych",
|
|
38359
|
+
entities_saved: "zapisanych encji",
|
|
38360
|
+
do_not_close_tab: "Nie zamykaj tej karty, w przeciwnym razie import zostanie przerwany",
|
|
38361
|
+
import: "Importuj",
|
|
38362
|
+
import_data: "Importuj dane",
|
|
38363
|
+
upload_file_description: "Prześlij plik CSV, Excel lub JSON i zmapuj go do istniejącego schematu",
|
|
38364
|
+
back: "Wstecz",
|
|
38365
|
+
next: "Dalej",
|
|
38366
|
+
save_data: "Zapisz dane",
|
|
38367
|
+
use_column_as_id: "Użyj tej kolumny jako ID",
|
|
38368
|
+
do_not_import_property: "Nie importuj tej właściwości",
|
|
38369
|
+
entities_will_be_overwritten: "Encje o tym samym ID zostaną nadpisane",
|
|
38370
|
+
data_imported_successfully: "Dane zostały pomyślnie zaimportowane",
|
|
38371
|
+
export: "Eksportuj",
|
|
38372
|
+
export_data: "Eksportuj dane",
|
|
38373
|
+
download_table_csv: "Pobierz zawartość tej tabeli jako plik CSV",
|
|
38374
|
+
csv: "CSV",
|
|
38375
|
+
json: "JSON",
|
|
38376
|
+
dates_as_timestamps: "Daty jako znaczniki czasu",
|
|
38377
|
+
dates_as_strings: "Daty jako ciągi znaków",
|
|
38378
|
+
flatten_arrays: "Spłaszcz tablice",
|
|
38379
|
+
download: "Pobierz",
|
|
38380
|
+
large_number_of_documents: "Ta kolekcja zawiera dużą liczbę dokumentów ({{count}}).",
|
|
38381
|
+
include_undefined_values: "Uwzględnij niezdefiniowane wartości",
|
|
38382
|
+
submit: "Wyślij",
|
|
38383
|
+
no_filterable_properties: "Brak dostępnych właściwości do filtrowania",
|
|
38384
|
+
apply_filters: "Zastosuj filtry",
|
|
38385
|
+
list: "Lista",
|
|
38386
|
+
cards: "Karty",
|
|
38387
|
+
board: "Tablica",
|
|
38388
|
+
initialize_kanban_order_desc: "Spowoduje to przypisanie sekwencyjnych wartości kolejności wszystkim elementom, które ich nie mają. Elementy zachowają swoją bieżącą kolejność w ramach każdej kolumny.",
|
|
38389
|
+
kanban_view_not_available: "Widok Kanban jest niedostępny",
|
|
38390
|
+
kanban_view_requires_enum: "Widok Kanban wymaga właściwości tekstowej z wartościami wyliczeniowymi, aby grupować encje w kolumny. Dodaj właściwość wyliczeniową do schematu swojej kolekcji, aby użyć tego widoku.",
|
|
38391
|
+
no_enum_values_configured: "Nie skonfigurowano wartości wyliczeniowych dla właściwości „{{property}}”",
|
|
38392
|
+
items_need_backfill: "Niektóre elementy nie mają ustawionych wartości kolejności. Zainicjuj je, aby włączyć zmianę kolejności metodą przeciągnij i upuść.",
|
|
38393
|
+
initialize: "Zainicjuj",
|
|
38394
|
+
confirm_multiple_delete: "Potwierdzić wielokrotne usunięcie?",
|
|
38395
|
+
delete_entity_confirm_title: "Czy chcesz usunąć ten element: {{entityName}}?",
|
|
38396
|
+
/** AI Collection Generator Popover */
|
|
38397
|
+
generate_collection_with_ai: "Wygeneruj kolekcję za pomocą AI",
|
|
38398
|
+
modify_collection_with_ai: "Zmodyfikuj kolekcję za pomocą AI",
|
|
38399
|
+
describe_collection_to_create: "Opisz kolekcję, którą chcesz utworzyć.",
|
|
38400
|
+
describe_changes_to_make: "Opisz zmiany, które chcesz wprowadzić w tej kolekcji.",
|
|
38401
|
+
ai_placeholder_create: "np. Utwórz kolekcję produktów z nazwą, ceną, opisem i kategorią...",
|
|
38402
|
+
ai_placeholder_modify: "np. Dodaj pole obrazu miniatury z przechowywaniem, ustaw cenę jako wymaganą...",
|
|
38403
|
+
ai_assist: "Asystent AI",
|
|
38404
|
+
generating: "Generowanie...",
|
|
38405
|
+
/** Recently extracted strings for collection editor */
|
|
38406
|
+
this_is_subcollection_of: "To jest podkolekcja",
|
|
38407
|
+
use_existing_paths_database: "Użyj jednej z istniejących ścieżek w swojej bazie danych:",
|
|
38408
|
+
describe_collection_ai: "Opisz swoją kolekcję dla AI:",
|
|
38409
|
+
generate_with_ai: "Generuj za pomocą AI",
|
|
38410
|
+
create_from_json_config: "Utwórz z konfiguracji JSON:",
|
|
38411
|
+
paste_json_config: "Wklej konfigurację JSON",
|
|
38412
|
+
create_collection_from_file_formats: "Utwórz kolekcję z pliku (csv, json, xls, xlsx...)",
|
|
38413
|
+
select_template: "Wybierz szablon:",
|
|
38414
|
+
products: "Produkty",
|
|
38415
|
+
collection_products_subtitle: "Kolekcja produktów ze zdjęciami, cenami i stanem magazynowym",
|
|
38416
|
+
collection_users_subtitle: "Kolekcja użytkowników z adresami e-mail, imionami i rolami",
|
|
38417
|
+
blog_posts: "Wpisy na blogu",
|
|
38418
|
+
collection_blog_posts_subtitle: "Kolekcja wpisów na blogu ze zdjęciami, autorami i rozbudowaną treścią",
|
|
38419
|
+
pages: "Strony",
|
|
38420
|
+
collection_pages_subtitle: "Kolekcja stron ze zdjęciami, autorami i rozbudowaną treścią",
|
|
38421
|
+
continue_from_scratch: "Kontynuuj od zera",
|
|
38422
|
+
/** Admin views config */
|
|
38423
|
+
cms_users: "Użytkownicy CMS",
|
|
38424
|
+
roles_menu: "Role",
|
|
38425
|
+
project_settings: "Ustawienia projektu",
|
|
38426
|
+
firestore_manager: "Menedżer Firestore",
|
|
38427
|
+
manage_your_firestore_data: "Zarządzaj danymi w Firestore",
|
|
38428
|
+
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
38429
|
+
build_admin_panel_in_minutes: "Zbuduj panel administracyjny Firebase w kilka minut",
|
|
38430
|
+
go_live_instantly: "Uruchom natychmiast:",
|
|
38431
|
+
create_production_ready_back_offices: "Twórz gotowe do wdrożenia panele administracyjne",
|
|
38432
|
+
without_the_frontend_hassle: "bez kłopotów z frontendem.",
|
|
38433
|
+
automatic_setup: "Automatyczna konfiguracja",
|
|
38434
|
+
from_your_existing_firestore_data: "na podstawie Twoich istniejących danych w Firestore.",
|
|
38435
|
+
seamless_real_time_firebase_integration: "Płynna integracja z Firebase w czasie rzeczywistym.",
|
|
38436
|
+
intuitive_spreadsheet_like_ui: "Intuicyjny interfejs przypominający arkusz kalkulacyjny,",
|
|
38437
|
+
your_whole_team_can_use: "z którego może korzystać cały Twój zespół.",
|
|
38438
|
+
focus_on_your_app: "Skup się na swojej aplikacji,",
|
|
38439
|
+
not_the_admin_panel: "a nie na panelu administracyjnym.",
|
|
38440
|
+
join_our_newsletter: "Dołącz do naszego newslettera. Bez spamu, tylko ważne aktualizacje!",
|
|
38441
|
+
by_signing_in_you_agree_to_our: "Logując się, akceptujesz nasz",
|
|
38442
|
+
terms_and_conditions: "Regulamin",
|
|
38443
|
+
and_our: "oraz naszą",
|
|
38444
|
+
privacy_policy: "Politykę prywatności",
|
|
38445
|
+
firecms_cloud_google_disclosure: "Korzystanie i przekazywanie przez FireCMS Cloud informacji uzyskanych z API Google do jakiejkolwiek innej aplikacji będzie zgodne z",
|
|
38446
|
+
google_api_services_user_data_policy: "Polityką dotyczącą danych użytkowników usług API Google",
|
|
38447
|
+
including_the_limited_use_requirements: "w tym z wymaganiami dotyczącymi ograniczonego użytkowania.",
|
|
38448
|
+
email_password: "E-mail/hasło",
|
|
38449
|
+
sign_in_with_google: "Zaloguj się przez Google",
|
|
38450
|
+
// --- Auth error messages ---
|
|
38451
|
+
auth_user_not_found: "Nie znaleziono użytkownika",
|
|
38452
|
+
auth_wrong_password: "Nieprawidłowe hasło. Spróbuj ponownie.",
|
|
38453
|
+
auth_user_disabled: "Użytkownik jest zablokowany. Skontaktuj się z pomocą techniczną.",
|
|
38454
|
+
auth_account_exists_with_different_credential: "Konto istnieje z inną metodą logowania",
|
|
38455
|
+
auth_email_already_in_use: "Ten adres e-mail jest już używany",
|
|
38456
|
+
auth_google_permissions_required: "Musisz przyznać dodatkowe uprawnienia, aby zarządzać swoimi projektami Google Cloud",
|
|
38457
|
+
auth_invalid_email_password: "Podaj zarówno adres e-mail, jak i hasło",
|
|
38458
|
+
auth_enter_email_first: "Najpierw podaj swój adres e-mail",
|
|
38459
|
+
auth_password_reset_sent: "Wysłano e-mail resetujący hasło",
|
|
38460
|
+
auth_sign_in_account: "Zaloguj się do swojego konta",
|
|
38461
|
+
auth_create_new_account: "Utwórz nowe konto",
|
|
38462
|
+
auth_password: "Hasło",
|
|
38463
|
+
auth_reset_password: "Zresetuj hasło",
|
|
38464
|
+
auth_new_user: "Nowy użytkownik?",
|
|
38465
|
+
auth_have_account: "Masz już konto?",
|
|
38466
|
+
auth_sign_in: "Zaloguj się",
|
|
38467
|
+
auth_sign_up: "Zarejestruj się",
|
|
38468
|
+
// --- SaaS Subscriptions ---
|
|
38469
|
+
subscriptions: "Subskrypcje",
|
|
38470
|
+
manage_your_subscriptions_in_stripe: "Zarządzaj swoimi subskrypcjami w Stripe",
|
|
38471
|
+
go_to_your_stripe_portal: "Przejdź do swojego portalu Stripe, aby zobaczyć historię płatności. Możesz tam również zarządzać subskrypcjami powiązanymi z zalogowanym użytkownikiem.",
|
|
38472
|
+
your_pro_licenses: "Twoje licencje PRO",
|
|
38473
|
+
create_new_license: "Utwórz nową licencję",
|
|
38474
|
+
create_subscriptions_in_this_section: "Twórz subskrypcje w tej sekcji tylko w przypadku samodzielnie hostowanego FireCMS PRO. Jeśli korzystasz z FireCMS Cloud, możesz zaktualizować swój projekt w ustawieniach projektu.",
|
|
38475
|
+
if_you_are_an_agency: "Jeśli jesteś agencją, możesz swobodnie odsprzedawać swoją licencję swoim klientom.",
|
|
38476
|
+
if_you_have_any_questions: "Jeśli masz pytania lub potrzebujesz pomocy, skontaktuj się z nami pod adresem",
|
|
38477
|
+
you_have_not_created_any_pro_licenses: "Nie masz jeszcze żadnych licencji FireCMS PRO",
|
|
38478
|
+
archive: "Archiwizuj",
|
|
38479
|
+
licensed_projects_lowercase: "licencjonowanych projektów",
|
|
38480
|
+
manage: "Zarządzaj",
|
|
38481
|
+
update_payment_method: "Zaktualizuj metodę płatności",
|
|
38482
|
+
your_firecms_cloud_projects: "Twoje projekty FireCMS Cloud",
|
|
38483
|
+
status_active: "Aktywna",
|
|
38484
|
+
status_trialing: "Okres próbny",
|
|
38485
|
+
status_past_due: "Zaległa płatność",
|
|
38486
|
+
status_canceled: "Anulowana",
|
|
38487
|
+
status_unpaid: "Nieopłacona",
|
|
38488
|
+
status_incomplete: "Niekompletna",
|
|
38489
|
+
status_incomplete_expired: "Niekompletna, wygasła",
|
|
38490
|
+
status_unknown: "Nieznany",
|
|
38491
|
+
plan_free: "Brak subskrypcji",
|
|
38492
|
+
plan_cloud_plus: "Subskrybowany",
|
|
38493
|
+
plan_pro: "Pro",
|
|
38494
|
+
plan_unknown: "Nieznany plan",
|
|
38495
|
+
auto_setup_collections_button: "Automatycznie skonfiguruj kolekcje",
|
|
38496
|
+
auto_setup_collections_title: "Automatycznie skonfigurować kolekcje?",
|
|
38497
|
+
auto_setup_collections_desc: "Spowoduje to automatyczne utworzenie konfiguracji kolekcji dla kolekcji, które <b>NIE</b> są jeszcze zmapowane",
|
|
38498
|
+
setting_up_collections: "Konfigurowanie kolekcji",
|
|
38499
|
+
setting_up_collection: "Konfigurowanie {{name}}",
|
|
38500
|
+
no_collections_found_to_setup: "Nie znaleziono kolekcji do skonfigurowania.",
|
|
38501
|
+
collections_have_been_setup: "Kolekcje zostały automatycznie skonfigurowane.",
|
|
38502
|
+
error_setting_up_collections: "Błąd podczas automatycznej konfiguracji kolekcji",
|
|
38503
|
+
setup_collections_title: "Skonfiguruj kolekcje",
|
|
38504
|
+
setup_collections_select_desc: "Wybierz kolekcje do automatycznej konfiguracji:",
|
|
38505
|
+
select_all: "Zaznacz wszystkie",
|
|
38506
|
+
deselect_all: "Odznacz wszystkie",
|
|
38507
|
+
setup_collections_confirm: "Skonfiguruj ({{count}})",
|
|
38508
|
+
collection_setup_success: "{{name}} została skonfigurowana",
|
|
38509
|
+
go_to_collection: "Przejdź do kolekcji",
|
|
38510
|
+
// --- Home Suggestions ---
|
|
38511
|
+
add_your: "Dodaj swoje",
|
|
38512
|
+
database_collections: "kolekcje bazy danych",
|
|
38513
|
+
to_firecms: "do FireCMS",
|
|
38514
|
+
no_unmapped_collections: "Brak niezmapowanych kolekcji w bazie danych",
|
|
38515
|
+
query_and_update_with_datatalk: "Odpytuj i aktualizuj swoje dane w języku naturalnym za pomocą",
|
|
38516
|
+
// --- SaaS Welcome ---
|
|
38517
|
+
welcome_to_firecms: "Witamy w FireCMS Cloud",
|
|
38518
|
+
admin_panel_ready_bring_data: "Twój panel administracyjny jest gotowy. Wprowadźmy Twoje dane.",
|
|
38519
|
+
admin_panel_ready_get_started: "Twój panel administracyjny jest gotowy. Oto jak zacząć.",
|
|
38520
|
+
auto_detect_collections: "Automatyczne wykrywanie kolekcji",
|
|
38521
|
+
auto_detect_collections_desc: "Pozwól AI przeskanować Twoją bazę danych i automatycznie wygenerować schematy kolekcji.",
|
|
38522
|
+
create_a_collection: "Utwórz kolekcję",
|
|
38523
|
+
create_collection_desc: "Ręcznie zdefiniuj swoją pierwszą kolekcję od podstaw za pomocą edytora wizualnego.",
|
|
38524
|
+
read_the_docs: "Przeczytaj dokumentację",
|
|
38525
|
+
read_the_docs_desc: "Dowiedz się, jak dostosowywać pola, widoki, akcje i więcej.",
|
|
38526
|
+
explore_docs: "Poznaj dokumentację",
|
|
38527
|
+
want_to_customize_with_code: "Chcesz dostosować za pomocą kodu? Uruchom",
|
|
38528
|
+
to_scaffold_a_local_project: "aby wygenerować lokalny projekt.",
|
|
38529
|
+
// ─── Collection Editor — Validation ──────────────────────────
|
|
38530
|
+
validation: "Walidacja",
|
|
38531
|
+
unique: "Unikalne",
|
|
38532
|
+
required_message: "Treść komunikatu o wymaganym polu",
|
|
38533
|
+
required_tooltip: "Nie będzie można zapisać tej encji, jeśli ta wartość nie jest ustawiona",
|
|
38534
|
+
unique_tooltip: "Nie może istnieć wiele encji z tą samą wartością",
|
|
38535
|
+
lowercase: "Małe litery",
|
|
38536
|
+
uppercase: "Wielkie litery",
|
|
38537
|
+
trim: "Przytnij",
|
|
38538
|
+
exact_length: "Dokładna długość",
|
|
38539
|
+
min_length: "Minimalna długość",
|
|
38540
|
+
max_length: "Maksymalna długość",
|
|
38541
|
+
matches_regex: "Pasuje do wyrażenia regularnego",
|
|
38542
|
+
not_valid_regexp: "Nieprawidłowe wyrażenie regularne",
|
|
38543
|
+
regex_helper: "np. /^\\d+$/ tylko dla cyfr",
|
|
38544
|
+
min_value: "Wartość minimalna",
|
|
38545
|
+
max_value: "Wartość maksymalna",
|
|
38546
|
+
less_than: "Mniejsza niż",
|
|
38547
|
+
more_than: "Większa niż",
|
|
38548
|
+
positive_value: "Wartość dodatnia",
|
|
38549
|
+
negative_value: "Wartość ujemna",
|
|
38550
|
+
integer_value: "Wartość całkowita",
|
|
38551
|
+
// ─── Collection Editor — Property Edit ───────────────────────
|
|
38552
|
+
invalid_regular_expression: "Nieprawidłowe wyrażenie regularne",
|
|
38553
|
+
must_specify_target_collection: "Musisz określić docelową kolekcję dla tego pola",
|
|
38554
|
+
need_specify_repeat_field: "Musisz określić pole powtarzalne",
|
|
38555
|
+
need_specify_block_properties: "Musisz określić właściwości tego bloku",
|
|
38556
|
+
incomplete_condition: "Niekompletny warunek – wybierz pole",
|
|
38557
|
+
field_name: "Nazwa pola",
|
|
38558
|
+
// ─── Collection Editor — Display & Config ────────────────────
|
|
38559
|
+
kanban_column_property: "Właściwość kolumny Kanban",
|
|
38560
|
+
select_a_property: "Wybierz właściwość",
|
|
38561
|
+
kanban_property_not_found: "Właściwość „{{property}}” nie istnieje lub nie jest tekstową właściwością wyliczeniową. Wybierz prawidłową właściwość lub wyczyść wybór.",
|
|
38562
|
+
no_enum_string_properties: "Nie znaleziono tekstowych właściwości wyliczeniowych. Dodaj właściwość tekstową z enumValues, aby użyć widoku Kanban.",
|
|
38563
|
+
kanban_column_description: "Wybierz właściwość tekstową z wartościami wyliczeniowymi, aby grupować encje w kolumny",
|
|
38564
|
+
create_property: "+ Utwórz właściwość „{{property}}”",
|
|
38565
|
+
order_property: "Właściwość kolejności",
|
|
38566
|
+
order_property_not_found: "Właściwość „{{property}}” nie istnieje lub nie jest właściwością liczbową. Wybierz prawidłową właściwość lub wyczyść wybór.",
|
|
38567
|
+
no_number_properties: "Nie znaleziono właściwości liczbowych. Dodaj właściwość liczbową, aby włączyć sortowanie.",
|
|
38568
|
+
order_property_description: "Wybierz właściwość liczbową, aby zachować kolejność elementów",
|
|
38569
|
+
display_settings: "Ustawienia wyświetlania",
|
|
38570
|
+
default_row_size: "Domyślny rozmiar wiersza",
|
|
38571
|
+
side_dialog_width: "Szerokość okna bocznego",
|
|
38572
|
+
side_dialog_width_description: "Opcjonalnie zdefiniuj szerokość (w pikselach) bocznego okna encji. Wartość domyślna to 768px",
|
|
38573
|
+
inline_editing_enabled: "Dane można edytować bezpośrednio w widoku tabeli",
|
|
38574
|
+
inline_editing_disabled: "Dane można edytować tylko w widoku formularza",
|
|
38575
|
+
inline_editing_description: "Zezwól na edycję danych bezpośrednio w widoku tabeli, bez otwierania widoku formularza.",
|
|
38576
|
+
include_json_view: "Uwzględnij widok JSON",
|
|
38577
|
+
no_json_view: "Nie uwzględniaj widoku JSON",
|
|
38578
|
+
json_view_description: "Uwzględnij reprezentację JSON dokumentu.",
|
|
38579
|
+
not_found_suffix: "nie znaleziono",
|
|
38580
|
+
// ─── Editor ─────────────────────────────────────────────────
|
|
38581
|
+
editor_text: "Tekst",
|
|
38582
|
+
editor_text_description: "Po prostu zacznij pisać zwykły tekst.",
|
|
38583
|
+
editor_heading_1: "Nagłówek 1",
|
|
38584
|
+
editor_heading_1_description: "Duży nagłówek sekcji.",
|
|
38585
|
+
editor_heading_2: "Nagłówek 2",
|
|
38586
|
+
editor_heading_2_description: "Średni nagłówek sekcji.",
|
|
38587
|
+
editor_heading_3: "Nagłówek 3",
|
|
38588
|
+
editor_heading_3_description: "Mały nagłówek sekcji.",
|
|
38589
|
+
editor_todo_list: "Lista zadań",
|
|
38590
|
+
editor_todo_list_description: "Śledź zadania za pomocą listy do zrobienia.",
|
|
38591
|
+
editor_bullet_list: "Lista punktowana",
|
|
38592
|
+
editor_bullet_list_description: "Utwórz prostą listę punktowaną.",
|
|
38593
|
+
editor_numbered_list: "Lista numerowana",
|
|
38594
|
+
editor_numbered_list_description: "Utwórz listę z numeracją.",
|
|
38595
|
+
editor_quote: "Cytat",
|
|
38596
|
+
editor_quote_description: "Uchwyć cytat.",
|
|
38597
|
+
editor_code: "Kod",
|
|
38598
|
+
editor_code_description: "Wstaw fragment kodu.",
|
|
38599
|
+
editor_image: "Obraz",
|
|
38600
|
+
editor_image_description: "Prześlij obraz ze swojego komputera.",
|
|
38601
|
+
editor_multiple: "Wielokrotne",
|
|
38602
|
+
editor_link: "Link",
|
|
38603
|
+
editor_save: "Zapisz",
|
|
38604
|
+
editor_cancel: "Anuluj",
|
|
38605
|
+
editor_remove_link: "Usuń link",
|
|
38606
|
+
editor_paste_or_type_link: "Wklej lub wpisz link",
|
|
38607
|
+
editor_open_in_new_window: "Otwórz w nowym oknie",
|
|
38608
|
+
editor_bold: "Pogrubienie",
|
|
38609
|
+
editor_italic: "Kursywa",
|
|
38610
|
+
editor_underline: "Podkreślenie",
|
|
38611
|
+
editor_strikethrough: "Przekreślenie",
|
|
38612
|
+
editor_autocomplete: "Autouzupełnianie",
|
|
38613
|
+
editor_autocomplete_description: "Dodaj tekst na podstawie kontekstu.",
|
|
38614
|
+
// ─── Text Search Dialog ─────────────────────────────────────
|
|
38615
|
+
text_search_dialog_title: "Włącz wyszukiwanie tekstowe",
|
|
38616
|
+
text_search_local_not_recommended: "Lokalne wyszukiwanie tekstowe nie jest zalecane dla dużych kolekcji.",
|
|
38617
|
+
text_search_local_fetch_warning: "Pamiętaj, że włączenie lokalnego wyszukiwania tekstowego wymaga pobrania wszystkich dokumentów z kolekcji i zapisania ich w przeglądarce. Może to być nieefektywne w przypadku dużych kolekcji, a także może wiązać się z dodatkowymi kosztami.",
|
|
38618
|
+
text_search_external_suggestion: "W przypadku większych kolekcji zalecamy użycie zewnętrznej wyszukiwarki, takiej jak Algolia lub Elastic Search, oraz przypisanie delegata wyszukiwania do swojej konfiguracji.",
|
|
38619
|
+
text_search_local_description: "Lokalne wyszukiwanie tekstowe to najprostszy sposób na włączenie wyszukiwania tekstowego w kolekcji. Wczytuje wszystkie dokumenty kolekcji w przeglądarce i przeprowadza wyszukiwanie lokalnie. Jest to zalecana opcja dla małych kolekcji.",
|
|
38620
|
+
text_search_own_implementation: "Zaimplementowano własny kontroler wyszukiwania tekstowego. Możesz włączyć wyszukiwanie tekstowe dla swojej kolekcji.",
|
|
38621
|
+
text_search_enable_for_collection: "Włącz dla tej kolekcji",
|
|
38622
|
+
text_search_enable_for_project: "Włącz dla projektu",
|
|
38623
|
+
text_search_enabled_snackbar: "Lokalne wyszukiwanie tekstowe włączone",
|
|
38624
|
+
// ─── Cloud Project Settings ──────────────────────────────────
|
|
38625
|
+
settings_subscription_plan: "Plan subskrypcji",
|
|
38626
|
+
settings_subscribed_to: "Obecnie subskrybujesz",
|
|
38627
|
+
settings_no_active_subscription: "Obecnie ten projekt nie ma aktywnej subskrypcji.",
|
|
38628
|
+
settings_trial_valid_until: "Twój okres próbny jest ważny do {{date}}.",
|
|
38629
|
+
settings_features_intro: "Oto niektóre z funkcji, z których już korzystasz, używając FireCMS Cloud",
|
|
38630
|
+
settings_feature_managed_service: "Zarządzana, zawsze aktualna usługa",
|
|
38631
|
+
settings_feature_local_text_search: "Lokalne wyszukiwanie tekstowe",
|
|
38632
|
+
settings_feature_unlimited_users_roles: "Nieograniczona liczba użytkowników i ról",
|
|
38633
|
+
settings_feature_theme_logo: "Dostosowywanie motywu i logo",
|
|
38634
|
+
settings_feature_custom_fields_views: "Niestandardowe pola formularzy i widoki",
|
|
38635
|
+
settings_feature_secondary_databases: "Dodatkowe bazy danych",
|
|
38636
|
+
settings_feature_ai_content: "Generowanie treści AI za pomocą OpenAI i Google",
|
|
38637
|
+
settings_feature_unlimited_export: "Nieograniczony eksport danych",
|
|
38638
|
+
settings_feature_appcheck: "AppCheck",
|
|
38639
|
+
settings_heading: "Ustawienia",
|
|
38640
|
+
settings_project_name: "Nazwa projektu",
|
|
38641
|
+
settings_default_language: "Język domyślny",
|
|
38642
|
+
settings_default_language_caption: "Wybierz język bazowy dla tego projektu. Użytkownicy mogą zmienić tę preferencję w swoich ustawieniach osobistych.",
|
|
38643
|
+
settings_enable_local_text_search: "Włącz lokalne wyszukiwanie tekstowe",
|
|
38644
|
+
settings_local_text_search_caption: "Włącz lokalne wyszukiwanie tekstowe dla wszystkich kolekcji. Pozwoli to na wyszukiwanie pól tekstowych w kolekcjach za pomocą paska wyszukiwania FireCMS. Pamiętaj, że ta funkcja może wiązać się z wyższą liczbą odczytów, ponieważ indeksuje wszystkie pola tekstowe w kolekcjach.",
|
|
38645
|
+
settings_doc_history_all_collections: "Historia dokumentów włączona dla wszystkich kolekcji",
|
|
38646
|
+
settings_doc_history_caption: "Gdy ta opcja jest włączona, wszystkie kolekcje będą miały domyślnie włączoną historię. To ustawienie można zastąpić dla każdej kolekcji osobno. Historia jest zapisywana w podkolekcji __history każdego dokumentu.",
|
|
38647
|
+
settings_theme: "Motyw",
|
|
38648
|
+
settings_primary_color: "Kolor podstawowy",
|
|
38649
|
+
settings_secondary_color: "Kolor dodatkowy",
|
|
38650
|
+
settings_sample_theme_components: "Przykładowe komponenty motywu",
|
|
38651
|
+
settings_drag_drop_logo: "Przeciągnij i upuść tutaj swoje logo",
|
|
38652
|
+
settings_create_subscription: "Utwórz subskrypcję",
|
|
38653
|
+
settings_stripe_disclaimer: "Zostaniesz przekierowany do Stripe, aby dokończyć subskrypcję. Rozliczenie miesięczne na podstawie maksymalnej liczby użytkowników w danym miesiącu. Anuluj w dowolnym momencie – bieżący okres rozliczeniowy jest już opłacony, więc po anulowaniu nie zostaną naliczone żadne dodatkowe opłaty.",
|
|
38654
|
+
settings_subscription_is: "Subskrypcja jest",
|
|
38655
|
+
settings_next_payment_on: "Następna płatność nastąpi {{date}}.",
|
|
38656
|
+
settings_seats_count: "Masz",
|
|
38657
|
+
settings_seat: "miejsce",
|
|
38658
|
+
settings_seats: "miejsc",
|
|
38659
|
+
settings_per_seat: "po {{price}}/miejsce/{{interval}}",
|
|
38660
|
+
settings_current_price: "Aktualna cena to",
|
|
38661
|
+
settings_per_user_usage: "na użytkownika (zależnie od zużycia).",
|
|
38662
|
+
settings_cancelled_active_until: "Ta subskrypcja została anulowana i będzie aktywna do {{date}}.",
|
|
38663
|
+
settings_no_additional_charges: "Po anulowaniu nie zostaną naliczone żadne dodatkowe opłaty.",
|
|
38664
|
+
settings_manage_subscription: "Zarządzaj subskrypcją",
|
|
38665
|
+
settings_security_rules: "Reguły bezpieczeństwa",
|
|
38666
|
+
settings_security_rules_description: "FireCMS wykorzystuje reguły bezpieczeństwa Firebase do ograniczania dostępu do danych. Podczas tworzenia nowego użytkownika za pomocą FireCMS do użytkownika w projekcie klienckim dodawane jest niestandardowe roszczenie fireCMSUser. Dodając poniższe reguły bezpieczeństwa do swojego projektu, zapewniasz użytkownikom FireCMS dostęp do danych za pośrednictwem FireCMS.",
|
|
38667
|
+
settings_security_rules_add_domain: "Pamiętaj, aby dodać domenę {{domain}} do listy dozwolonych domen u swojego dostawcy",
|
|
38668
|
+
settings_security_rules_caption: "Te reguły ograniczają dostęp do danych wyłącznie do użytkowników FireCMS, ale nie wymuszają uprawnień na poziomie bazy danych. Uprawnienia są jednak egzekwowane po stronie frontendu, co w większości projektów sprawdzi się dobrze. Jeśli potrzebujesz wymuszać uprawnienia na poziomie bazy danych, możesz samodzielnie zmodyfikować te reguły bezpieczeństwa według swoich potrzeb. Role przypisane użytkownikowi są ustawiane jako niestandardowe roszczenie w tokenie uwierzytelniania Firebase, więc możesz ich użyć w regułach bezpieczeństwa.",
|
|
38669
|
+
settings_appcheck: "AppCheck",
|
|
38670
|
+
settings_appcheck_description: "Możesz włączyć AppCheck, aby chronić swoje usługi Firebase przed nadużyciami. Sprawdź, jak go skonfigurować, w dokumentacji Firebase. Gdy masz ustawionego dostawcę, możesz go tutaj włączyć. Będziesz musiał podać sekret w ustawieniach projektu Firebase oraz klucz witryny w konfiguracji FireCMS.",
|
|
38671
|
+
settings_appcheck_add_domain: "Pamiętaj, aby dodać domenę {{domain}} do listy dozwolonych domen u swojego dostawcy",
|
|
38672
|
+
settings_appcheck_enable: "Włącz AppCheck",
|
|
38673
|
+
settings_appcheck_site_key: "Klucz witryny",
|
|
38674
|
+
settings_appcheck_update: "Zaktualizuj AppCheck",
|
|
38675
|
+
settings_appcheck_refresh_note: "Po zapisaniu może być konieczne odświeżenie strony, aby zobaczyć zmiany.",
|
|
38676
|
+
settings_appcheck_updated: "AppCheck zaktualizowany",
|
|
38677
|
+
settings_appcheck_error: "Błąd podczas aktualizacji AppCheck",
|
|
38678
|
+
// --- Permission Error View ---
|
|
38679
|
+
missing_firestore_security_rules: "Brak reguł bezpieczeństwa Firestore",
|
|
38680
|
+
firecms_cloud_requires_security_rule: "FireCMS Cloud wymaga określonej reguły bezpieczeństwa w Twoim Firestore, aby przyznać dostęp uwierzytelnionym użytkownikom. Kolekcja",
|
|
38681
|
+
cannot_be_accessed_without_it: "nie może być dostępna bez tej reguły.",
|
|
38682
|
+
required_security_rule: "Wymagana reguła bezpieczeństwa",
|
|
38683
|
+
fix_automatically: "Napraw automatycznie",
|
|
38684
|
+
open_firebase_rules: "Otwórz reguły Firebase",
|
|
38685
|
+
security_rules_updated_successfully: "Reguły bezpieczeństwa zostały pomyślnie zaktualizowane! Odśwież stronę, aby wczytać dane.",
|
|
38686
|
+
sec_rules_fixing: "Naprawianie...",
|
|
38687
|
+
sec_rules_fixed: "Naprawiono!",
|
|
38688
|
+
// ─── GCP Marketplace ─────────────────────────────────────────
|
|
38689
|
+
marketplace_managed_by_gcp: "Zarządzane przez GCP Marketplace",
|
|
38690
|
+
marketplace_billing_note: "Twoja subskrypcja jest zarządzana przez Google Cloud Marketplace. Zmiany planu, rozliczenia i anulowanie są obsługiwane w konsoli GCP.",
|
|
38691
|
+
marketplace_manage_in_gcp_console: "Zarządzaj w konsoli GCP",
|
|
38692
|
+
marketplace_plan_changes_note: "Aby zmienić plan lub anulować subskrypcję, odwiedź swoje zamówienia w GCP Marketplace.",
|
|
38693
|
+
marketplace_welcome_title: "Witamy z GCP Marketplace!",
|
|
38694
|
+
marketplace_welcome_subtitle: "Twoja subskrypcja Google Cloud Marketplace jest aktywna. Wybierz istniejący projekt lub utwórz nowy, aby go połączyć.",
|
|
38695
|
+
marketplace_select_or_create_project: "Wybierz lub utwórz projekt",
|
|
38696
|
+
marketplace_link_project: "Połącz projekt",
|
|
38697
|
+
marketplace_linking: "Łączenie projektu…",
|
|
38698
|
+
marketplace_link_success: "Projekt został pomyślnie połączony! Przekierowywanie…",
|
|
38699
|
+
marketplace_link_error: "Błąd podczas łączenia projektu. Spróbuj ponownie.",
|
|
38700
|
+
marketplace_no_account_id: "Nie znaleziono ID konta GCP Marketplace. Rozpocznij od GCP Marketplace."
|
|
38701
|
+
};
|
|
37467
38702
|
const FIRECMS_NS = "firecms_core";
|
|
37468
38703
|
const FIRECMS_LOCALE_STORAGE_KEY = "firecms_locale";
|
|
37469
38704
|
function FireCMSi18nProvider({
|
|
@@ -37563,6 +38798,11 @@ function buildResources(translations) {
|
|
|
37563
38798
|
[FIRECMS_NS]: {
|
|
37564
38799
|
...pt
|
|
37565
38800
|
}
|
|
38801
|
+
},
|
|
38802
|
+
pl: {
|
|
38803
|
+
[FIRECMS_NS]: {
|
|
38804
|
+
...pl
|
|
38805
|
+
}
|
|
37566
38806
|
}
|
|
37567
38807
|
};
|
|
37568
38808
|
if (!translations) return resources;
|
|
@@ -42159,6 +43399,7 @@ export {
|
|
|
42159
43399
|
DrawerLogo,
|
|
42160
43400
|
DrawerNavigationGroup,
|
|
42161
43401
|
DrawerNavigationItem,
|
|
43402
|
+
DrawerToggle,
|
|
42162
43403
|
EmptyValue,
|
|
42163
43404
|
EntityCard,
|
|
42164
43405
|
EntityCollectionCardView,
|
|
@@ -42185,6 +43426,8 @@ export {
|
|
|
42185
43426
|
FormEntry,
|
|
42186
43427
|
FormLayout,
|
|
42187
43428
|
GeoPoint,
|
|
43429
|
+
GeopointFieldBinding,
|
|
43430
|
+
GeopointPropertyPreview,
|
|
42188
43431
|
IconForView,
|
|
42189
43432
|
ImagePreview,
|
|
42190
43433
|
InternalUserManagementContext,
|
|
@@ -42262,15 +43505,18 @@ export {
|
|
|
42262
43505
|
canDeleteEntity,
|
|
42263
43506
|
canEditEntity,
|
|
42264
43507
|
copyEntityAction,
|
|
43508
|
+
decodeEntityId,
|
|
42265
43509
|
defaultDateFormat,
|
|
42266
43510
|
deleteEntityAction,
|
|
42267
43511
|
deleteEntityWithCallbacks,
|
|
42268
43512
|
editEntityAction,
|
|
42269
43513
|
en,
|
|
43514
|
+
encodeEntityId,
|
|
42270
43515
|
enumToObjectEntries,
|
|
42271
43516
|
es,
|
|
42272
43517
|
evaluateCondition,
|
|
42273
43518
|
flattenObject,
|
|
43519
|
+
formatGeoPoint,
|
|
42274
43520
|
fullPathToCollectionSegments,
|
|
42275
43521
|
getArrayResolvedProperties,
|
|
42276
43522
|
getArrayValuesCount,
|
|
@@ -42292,6 +43538,7 @@ export {
|
|
|
42292
43538
|
getFieldConfig,
|
|
42293
43539
|
getFieldId,
|
|
42294
43540
|
getFormFieldKeys,
|
|
43541
|
+
getGeoPointCoordinates,
|
|
42295
43542
|
getHashValue,
|
|
42296
43543
|
getIcon,
|
|
42297
43544
|
getIconForProperty,
|
|
@@ -42329,6 +43576,8 @@ export {
|
|
|
42329
43576
|
mergeDeep,
|
|
42330
43577
|
mergeEntityActions,
|
|
42331
43578
|
navigateToEntity,
|
|
43579
|
+
normalizeGeoPoint,
|
|
43580
|
+
parseGeoPoint,
|
|
42332
43581
|
pick,
|
|
42333
43582
|
plural,
|
|
42334
43583
|
prettifyIdentifier,
|