@firecms/core 3.3.0-canary.451aa49 → 3.3.0-canary.5906216
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/AppBar.d.ts +1 -1
- package/dist/app/Drawer.d.ts +1 -1
- package/dist/app/useApp.d.ts +1 -0
- package/dist/components/AIIcon.d.ts +3 -2
- package/dist/components/ArrayContainer.d.ts +3 -3
- package/dist/components/CircularProgressCenter.d.ts +2 -1
- package/dist/components/ClearFilterSortButton.d.ts +1 -1
- package/dist/components/ConfirmationDialog.d.ts +1 -1
- package/dist/components/DeleteEntityDialog.d.ts +2 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -1
- package/dist/components/EntityCollectionTable/column_utils.d.ts +4 -3
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
- package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +4 -3
- package/dist/components/EntityCollectionView/Board.d.ts +2 -1
- package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +1 -1
- package/dist/components/EntityCollectionView/BoardSortableList.d.ts +1 -1
- package/dist/components/EntityCollectionView/CollectionDataErrorBanner.d.ts +2 -1
- package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +1 -1
- package/dist/components/EntityCollectionView/EntityCard.d.ts +2 -1
- package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +1 -1
- package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +1 -1
- package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +2 -1
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +2 -1
- package/dist/components/EntityCollectionView/FiltersDialog.d.ts +3 -1
- package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +2 -1
- package/dist/components/EntityJsonPreview.d.ts +2 -1
- package/dist/components/EntityPreview.d.ts +4 -2
- package/dist/components/EntityView.d.ts +2 -1
- package/dist/components/ErrorBoundary.d.ts +1 -1
- package/dist/components/ErrorTooltip.d.ts +2 -1
- package/dist/components/FieldCaption.d.ts +1 -1
- package/dist/components/FireCMSLogo.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/FavouritesView.d.ts +1 -1
- package/dist/components/HomePage/HomePageDnD.d.ts +4 -4
- package/dist/components/HomePage/NavigationCardBinding.d.ts +2 -1
- package/dist/components/HomePage/NavigationGroup.d.ts +2 -2
- package/dist/components/HomePage/RenameGroupDialog.d.ts +2 -1
- package/dist/components/HomePage/SmallNavigationCard.d.ts +1 -1
- package/dist/components/LanguageToggle.d.ts +2 -1
- package/dist/components/NotFoundPage.d.ts +2 -1
- package/dist/components/PropertyCollectionView.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +2 -2
- package/dist/components/ReferenceTable/ReferenceSelectionTable.d.ts +1 -1
- package/dist/components/ReferenceWidget.d.ts +2 -1
- package/dist/components/SearchIconsView.d.ts +2 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
- package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +2 -1
- package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -1
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +1 -1
- package/dist/components/UserDisplay.d.ts +1 -1
- package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -1
- package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +1 -1
- package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +2 -1
- package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +2 -1
- package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +1 -1
- package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +2 -1
- package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +1 -1
- package/dist/core/DefaultAppBar.d.ts +1 -1
- package/dist/core/DefaultDrawer.d.ts +12 -5
- package/dist/core/DrawerNavigationGroup.d.ts +1 -1
- package/dist/core/DrawerNavigationItem.d.ts +1 -1
- package/dist/core/EntityEditView.d.ts +2 -2
- package/dist/core/EntityEditViewFormActions.d.ts +2 -1
- package/dist/core/EntitySidePanel.d.ts +2 -1
- package/dist/core/FireCMS.d.ts +2 -1
- package/dist/core/FireCMSRouter.d.ts +1 -1
- package/dist/core/SideDialogs.d.ts +1 -1
- package/dist/core/field_configs.d.ts +1 -1
- package/dist/editor/components/SlashCommandMenu.d.ts +2 -1
- package/dist/editor/editor.d.ts +1 -1
- package/dist/editor/selectors/color-selector.d.ts +1 -1
- package/dist/editor/selectors/link-selector.d.ts +1 -1
- package/dist/editor/selectors/node-selector.d.ts +1 -1
- package/dist/editor/selectors/text-buttons.d.ts +1 -1
- package/dist/form/EntityForm.d.ts +1 -1
- package/dist/form/EntityFormActions.d.ts +1 -1
- package/dist/form/components/CustomIdField.d.ts +2 -1
- package/dist/form/components/FieldHelperText.d.ts +1 -1
- package/dist/form/components/FormEntry.d.ts +1 -1
- package/dist/form/components/FormLayout.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +1 -1
- package/dist/form/components/LocalChangesMenu.d.ts +2 -1
- package/dist/form/components/StorageItemPreview.d.ts +2 -1
- package/dist/form/components/StorageUploadProgress.d.ts +2 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/GeopointFieldBinding.d.ts +5 -0
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -2
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -1
- package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +2 -1
- package/dist/form/index.d.ts +1 -0
- package/dist/i18n/FireCMSi18nProvider.d.ts +2 -2
- package/dist/index.es.js +2409 -965
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +2408 -964
- package/dist/index.umd.js.map +1 -1
- package/dist/locales/pl.d.ts +2 -0
- package/dist/preview/components/ArrayEnumPreview.d.ts +2 -1
- package/dist/preview/components/AsyncPreviewComponent.d.ts +1 -1
- package/dist/preview/components/EmptyValue.d.ts +2 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ImagePreview.d.ts +2 -1
- package/dist/preview/components/ReferencePreview.d.ts +1 -1
- package/dist/preview/components/StorageThumbnail.d.ts +1 -1
- package/dist/preview/components/UserPreview.d.ts +2 -1
- package/dist/preview/index.d.ts +1 -0
- package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +2 -1
- package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +1 -1
- package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +2 -1
- package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +2 -1
- package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +2 -1
- package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +1 -1
- package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +2 -1
- package/dist/preview/property_previews/GeopointPropertyPreview.d.ts +4 -0
- package/dist/preview/property_previews/MapPropertyPreview.d.ts +3 -2
- package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +5 -4
- package/dist/routes/FireCMSRoute.d.ts +2 -1
- package/dist/types/collections.d.ts +17 -0
- package/dist/types/translations.d.ts +11 -3
- package/dist/util/entities.d.ts +1 -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/dist/util/property_utils.d.ts +1 -1
- package/package.json +18 -11
- package/src/app/Scaffold.tsx +47 -45
- package/src/app/useApp.tsx +1 -0
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +2 -1
- package/src/components/EntityCollectionTable/column_utils.tsx +11 -19
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/common.tsx +2 -2
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +5 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +4 -1
- package/src/components/EntityCollectionView/FiltersDialog.tsx +39 -28
- package/src/components/EntityPreview.tsx +41 -40
- package/src/components/HomePage/NavigationCardBinding.tsx +6 -3
- package/src/components/ReferenceWidget.tsx +1 -1
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +2 -2
- package/src/components/VirtualTable/VirtualTable.tsx +19 -8
- package/src/components/common/useDataSourceTableController.tsx +66 -10
- package/src/core/DefaultDrawer.tsx +151 -65
- 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/editor/editor.tsx +20 -1
- package/src/editor/markdown.ts +89 -1
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +1 -1
- package/src/form/field_bindings/GeopointFieldBinding.tsx +139 -0
- package/src/form/index.tsx +1 -0
- package/src/hooks/useBuildNavigationController.tsx +5 -1
- package/src/i18n/FireCMSi18nProvider.tsx +2 -0
- package/src/internal/useBuildSideEntityController.tsx +3 -2
- package/src/locales/de.ts +13 -5
- package/src/locales/en.ts +13 -5
- package/src/locales/es.ts +13 -5
- package/src/locales/fr.ts +13 -5
- package/src/locales/hi.ts +13 -5
- package/src/locales/it.ts +13 -5
- package/src/locales/pl.ts +730 -0
- package/src/locales/pt.ts +13 -5
- package/src/preview/PropertyPreview.tsx +15 -3
- 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/types/collections.ts +18 -0
- package/src/types/translations.ts +11 -3
- package/src/util/entities.ts +13 -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/src/util/resolutions.ts +3 -0
package/dist/index.umd.js
CHANGED
|
@@ -170,6 +170,12 @@
|
|
|
170
170
|
if (s.startsWith("/")) return s;
|
|
171
171
|
else return `/${s}`;
|
|
172
172
|
}
|
|
173
|
+
function encodeEntityId(entityId) {
|
|
174
|
+
return entityId.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll("#", "%23").replaceAll("?", "%3F");
|
|
175
|
+
}
|
|
176
|
+
function decodeEntityId(encodedEntityId) {
|
|
177
|
+
return encodedEntityId.replaceAll("%2F", "/").replaceAll("%23", "#").replaceAll("%3F", "?").replaceAll("%25", "%");
|
|
178
|
+
}
|
|
173
179
|
function getLastSegment(path) {
|
|
174
180
|
const cleanPath = removeInitialAndTrailingSlashes(path);
|
|
175
181
|
if (cleanPath.includes("/")) {
|
|
@@ -263,7 +269,7 @@
|
|
|
263
269
|
return result;
|
|
264
270
|
}
|
|
265
271
|
function getCollectionPathsCombinations(subpaths) {
|
|
266
|
-
const entries = subpaths.length > 0 && subpaths.length % 2 === 0 ? subpaths.
|
|
272
|
+
const entries = subpaths.length > 0 && subpaths.length % 2 === 0 ? subpaths.slice(0, subpaths.length - 1) : subpaths;
|
|
267
273
|
const length = entries.length;
|
|
268
274
|
const result = [];
|
|
269
275
|
for (let i = length; i > 0; i = i - 2) {
|
|
@@ -295,7 +301,7 @@
|
|
|
295
301
|
onClose
|
|
296
302
|
});
|
|
297
303
|
} else {
|
|
298
|
-
let to = navigation.buildUrlCollectionPath(entityId ? `${fullIdPath ?? path}/${entityId}` : fullIdPath ?? path);
|
|
304
|
+
let to = navigation.buildUrlCollectionPath(entityId ? `${fullIdPath ?? path}/${encodeEntityId(entityId)}` : fullIdPath ?? path);
|
|
299
305
|
if (entityId && selectedTab) {
|
|
300
306
|
to += `/${selectedTab}`;
|
|
301
307
|
}
|
|
@@ -658,6 +664,8 @@
|
|
|
658
664
|
return [];
|
|
659
665
|
} else if (dataType === "map") {
|
|
660
666
|
return {};
|
|
667
|
+
} else if (dataType === "geopoint") {
|
|
668
|
+
return null;
|
|
661
669
|
} else {
|
|
662
670
|
return null;
|
|
663
671
|
}
|
|
@@ -691,6 +699,9 @@
|
|
|
691
699
|
return result;
|
|
692
700
|
}
|
|
693
701
|
function getReferenceFrom(entity) {
|
|
702
|
+
if (!entity) {
|
|
703
|
+
throw new Error("getReferenceFrom: entity is null or undefined");
|
|
704
|
+
}
|
|
694
705
|
return new EntityReference(entity.id, entity.path, entity.databaseId);
|
|
695
706
|
}
|
|
696
707
|
function traverseValuesProperties(inputValues, properties, operation) {
|
|
@@ -740,6 +751,12 @@
|
|
|
740
751
|
}
|
|
741
752
|
return value;
|
|
742
753
|
}
|
|
754
|
+
function isDataTypeFilterable(dataType, isPartOfArray = false) {
|
|
755
|
+
if (isPartOfArray) {
|
|
756
|
+
return ["string", "number", "date", "reference"].includes(dataType);
|
|
757
|
+
}
|
|
758
|
+
return ["string", "number", "boolean", "date", "reference", "array"].includes(dataType);
|
|
759
|
+
}
|
|
743
760
|
function enumToObjectEntries(enumValues) {
|
|
744
761
|
if (Array.isArray(enumValues)) {
|
|
745
762
|
return enumValues;
|
|
@@ -826,8 +843,13 @@
|
|
|
826
843
|
...a,
|
|
827
844
|
...b
|
|
828
845
|
}), {});
|
|
846
|
+
const {
|
|
847
|
+
properties: overrideProps,
|
|
848
|
+
...restOverrides
|
|
849
|
+
} = collectionOverride ?? {};
|
|
829
850
|
return {
|
|
830
851
|
...collection,
|
|
852
|
+
...restOverrides,
|
|
831
853
|
properties: cleanedProperties,
|
|
832
854
|
originalCollection: collection
|
|
833
855
|
};
|
|
@@ -1103,7 +1125,8 @@
|
|
|
1103
1125
|
path,
|
|
1104
1126
|
collections = [],
|
|
1105
1127
|
currentFullPath,
|
|
1106
|
-
currentFullIdPath
|
|
1128
|
+
currentFullIdPath,
|
|
1129
|
+
currentFullUrlPath
|
|
1107
1130
|
} = props;
|
|
1108
1131
|
const subpaths = removeInitialAndTrailingSlashes(path).split("/");
|
|
1109
1132
|
const subpathCombinations = getCollectionPathsCombinations(subpaths);
|
|
@@ -1117,26 +1140,29 @@
|
|
|
1117
1140
|
}
|
|
1118
1141
|
if (collection) {
|
|
1119
1142
|
const collectionPath = currentFullPath && currentFullPath.length > 0 ? currentFullPath + "/" + collection.path : collection.path;
|
|
1143
|
+
const collectionUrlPath = currentFullUrlPath && currentFullUrlPath.length > 0 ? currentFullUrlPath + "/" + collection.path : collection.path;
|
|
1120
1144
|
const fullIdPath = currentFullIdPath && currentFullIdPath.length > 0 ? currentFullIdPath + "/" + collection.id : collection.id;
|
|
1121
1145
|
result.push({
|
|
1122
1146
|
type: "collection",
|
|
1123
1147
|
id: collection.id,
|
|
1124
1148
|
path: collectionPath,
|
|
1125
|
-
fullPath:
|
|
1149
|
+
fullPath: collectionUrlPath,
|
|
1126
1150
|
fullIdPath,
|
|
1127
1151
|
collection
|
|
1128
1152
|
});
|
|
1129
1153
|
const restOfThePath = removeInitialAndTrailingSlashes(removeInitialAndTrailingSlashes(path).replace(subpathCombination, ""));
|
|
1130
1154
|
const nextSegments = restOfThePath.length > 0 ? restOfThePath.split("/") : [];
|
|
1131
1155
|
if (nextSegments.length > 0) {
|
|
1132
|
-
const
|
|
1156
|
+
const encodedEntityId = nextSegments[0];
|
|
1157
|
+
const entityId = decodeEntityId(encodedEntityId);
|
|
1133
1158
|
const fullPath = collectionPath + "/" + entityId;
|
|
1159
|
+
const fullUrlPath = collectionUrlPath + "/" + encodedEntityId;
|
|
1134
1160
|
result.push({
|
|
1135
1161
|
type: "entity",
|
|
1136
1162
|
entityId,
|
|
1137
1163
|
path: collectionPath,
|
|
1138
1164
|
fullIdPath,
|
|
1139
|
-
fullPath,
|
|
1165
|
+
fullPath: fullUrlPath,
|
|
1140
1166
|
parentCollection: collection
|
|
1141
1167
|
});
|
|
1142
1168
|
if (nextSegments.length > 1) {
|
|
@@ -1152,7 +1178,7 @@
|
|
|
1152
1178
|
path: collectionPath,
|
|
1153
1179
|
entityId,
|
|
1154
1180
|
fullIdPath,
|
|
1155
|
-
fullPath:
|
|
1181
|
+
fullPath: fullUrlPath + "/" + customView.key,
|
|
1156
1182
|
view: customView
|
|
1157
1183
|
});
|
|
1158
1184
|
} else if (collection.subcollections) {
|
|
@@ -1161,6 +1187,7 @@
|
|
|
1161
1187
|
collections: collection.subcollections,
|
|
1162
1188
|
currentFullPath: fullPath,
|
|
1163
1189
|
currentFullIdPath: fullIdPath,
|
|
1190
|
+
currentFullUrlPath: fullUrlPath,
|
|
1164
1191
|
contextEntityViews: props.contextEntityViews
|
|
1165
1192
|
}));
|
|
1166
1193
|
}
|
|
@@ -1565,6 +1592,77 @@
|
|
|
1565
1592
|
function canDeleteEntity(collection, authController, path, entity) {
|
|
1566
1593
|
return resolvePermissions(collection, authController, path, entity)?.delete ?? DEFAULT_PERMISSIONS.delete;
|
|
1567
1594
|
}
|
|
1595
|
+
function toNumber(value) {
|
|
1596
|
+
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
1597
|
+
}
|
|
1598
|
+
function getGeoPointCoordinates(value) {
|
|
1599
|
+
if (!value) return void 0;
|
|
1600
|
+
if (value instanceof GeoPoint) {
|
|
1601
|
+
return {
|
|
1602
|
+
latitude: value.latitude,
|
|
1603
|
+
longitude: value.longitude
|
|
1604
|
+
};
|
|
1605
|
+
}
|
|
1606
|
+
if (typeof value !== "object") return void 0;
|
|
1607
|
+
const latitude = toNumber(value.latitude ?? value.lat ?? value._lat);
|
|
1608
|
+
const longitude = toNumber(value.longitude ?? value.lng ?? value._long);
|
|
1609
|
+
if (latitude === void 0 || longitude === void 0) return void 0;
|
|
1610
|
+
return {
|
|
1611
|
+
latitude,
|
|
1612
|
+
longitude
|
|
1613
|
+
};
|
|
1614
|
+
}
|
|
1615
|
+
function normalizeGeoPoint(value) {
|
|
1616
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
1617
|
+
if (!coordinates) return void 0;
|
|
1618
|
+
if (value instanceof GeoPoint) return value;
|
|
1619
|
+
return new GeoPoint(coordinates.latitude, coordinates.longitude);
|
|
1620
|
+
}
|
|
1621
|
+
function formatGeoPoint(value, options) {
|
|
1622
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
1623
|
+
if (!coordinates) return "";
|
|
1624
|
+
const maximumFractionDigits = options?.maximumFractionDigits ?? 6;
|
|
1625
|
+
const formatter = new Intl.NumberFormat("en-US", {
|
|
1626
|
+
maximumFractionDigits,
|
|
1627
|
+
minimumFractionDigits: Math.min(2, maximumFractionDigits),
|
|
1628
|
+
useGrouping: false
|
|
1629
|
+
});
|
|
1630
|
+
return `${formatter.format(coordinates.latitude)}, ${formatter.format(coordinates.longitude)}`;
|
|
1631
|
+
}
|
|
1632
|
+
function parseGeoPoint(input) {
|
|
1633
|
+
const trimmed = input.trim();
|
|
1634
|
+
if (!trimmed) return {
|
|
1635
|
+
point: null
|
|
1636
|
+
};
|
|
1637
|
+
const parts = trimmed.split(",").map((part) => part.trim()).filter((part) => part !== "");
|
|
1638
|
+
if (parts.length !== 2) return {
|
|
1639
|
+
point: null,
|
|
1640
|
+
error: 'Use "lat, lng" format'
|
|
1641
|
+
};
|
|
1642
|
+
const latitude = parseFloat(parts[0]);
|
|
1643
|
+
const longitude = parseFloat(parts[1]);
|
|
1644
|
+
if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {
|
|
1645
|
+
return {
|
|
1646
|
+
point: null,
|
|
1647
|
+
error: "Latitude and longitude must be numbers"
|
|
1648
|
+
};
|
|
1649
|
+
}
|
|
1650
|
+
if (latitude < -90 || latitude > 90) {
|
|
1651
|
+
return {
|
|
1652
|
+
point: null,
|
|
1653
|
+
error: "Latitude must be between -90 and 90"
|
|
1654
|
+
};
|
|
1655
|
+
}
|
|
1656
|
+
if (longitude < -180 || longitude > 180) {
|
|
1657
|
+
return {
|
|
1658
|
+
point: null,
|
|
1659
|
+
error: "Longitude must be between -180 and 180"
|
|
1660
|
+
};
|
|
1661
|
+
}
|
|
1662
|
+
return {
|
|
1663
|
+
point: new GeoPoint(latitude, longitude)
|
|
1664
|
+
};
|
|
1665
|
+
}
|
|
1568
1666
|
const iconSynonyms = {
|
|
1569
1667
|
abc: "alphabet character font letter symbol text type",
|
|
1570
1668
|
access_alarm: "clock time",
|
|
@@ -4513,7 +4611,7 @@
|
|
|
4513
4611
|
}
|
|
4514
4612
|
setDataLoading(false);
|
|
4515
4613
|
setDataLoadingError(void 0);
|
|
4516
|
-
setData(entities.map(_temp$
|
|
4614
|
+
setData(entities.map(_temp$D));
|
|
4517
4615
|
setNoMoreToLoad(!itemCount || entities.length < itemCount);
|
|
4518
4616
|
};
|
|
4519
4617
|
const onError = (error) => {
|
|
@@ -4596,7 +4694,7 @@
|
|
|
4596
4694
|
}
|
|
4597
4695
|
function _temp2$f() {
|
|
4598
4696
|
}
|
|
4599
|
-
function _temp$
|
|
4697
|
+
function _temp$D(e_0) {
|
|
4600
4698
|
return {
|
|
4601
4699
|
...e_0
|
|
4602
4700
|
};
|
|
@@ -4661,7 +4759,7 @@
|
|
|
4661
4759
|
setEntity(CACHE[`${path}/${entityId}`]);
|
|
4662
4760
|
setDataLoading(false);
|
|
4663
4761
|
setDataLoadingError(void 0);
|
|
4664
|
-
return _temp$
|
|
4762
|
+
return _temp$C;
|
|
4665
4763
|
} else {
|
|
4666
4764
|
if (entityId && path && collection) {
|
|
4667
4765
|
if (dataSource.listenEntity) {
|
|
@@ -4729,7 +4827,7 @@
|
|
|
4729
4827
|
}
|
|
4730
4828
|
function _temp2$e() {
|
|
4731
4829
|
}
|
|
4732
|
-
function _temp$
|
|
4830
|
+
function _temp$C() {
|
|
4733
4831
|
}
|
|
4734
4832
|
async function saveEntityWithCallbacks({
|
|
4735
4833
|
collection,
|
|
@@ -5373,7 +5471,7 @@
|
|
|
5373
5471
|
}
|
|
5374
5472
|
let t9;
|
|
5375
5473
|
if ($[19] !== url) {
|
|
5376
|
-
t9 = /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$
|
|
5474
|
+
t9 = /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$B, children: t8 }) });
|
|
5377
5475
|
$[19] = url;
|
|
5378
5476
|
$[20] = t9;
|
|
5379
5477
|
} else {
|
|
@@ -5407,7 +5505,7 @@
|
|
|
5407
5505
|
}
|
|
5408
5506
|
return t11;
|
|
5409
5507
|
}
|
|
5410
|
-
function _temp$
|
|
5508
|
+
function _temp$B(e_0) {
|
|
5411
5509
|
return e_0.stopPropagation();
|
|
5412
5510
|
}
|
|
5413
5511
|
const FIRECMS_NS$1 = "firecms_core";
|
|
@@ -5474,7 +5572,7 @@
|
|
|
5474
5572
|
}
|
|
5475
5573
|
let t3;
|
|
5476
5574
|
if ($[2] !== url) {
|
|
5477
|
-
t3 = /* @__PURE__ */ jsxRuntime.jsxs("a", { className: "flex gap-4 break-words items-center font-medium text-primary visited:text-primary dark:visited:text-primary dark:text-primary", href: url, rel: "noopener noreferrer", onMouseDown: _temp$
|
|
5575
|
+
t3 = /* @__PURE__ */ jsxRuntime.jsxs("a", { className: "flex gap-4 break-words items-center font-medium text-primary visited:text-primary dark:visited:text-primary dark:text-primary", href: url, rel: "noopener noreferrer", onMouseDown: _temp$A, target: "_blank", children: [
|
|
5478
5576
|
t2,
|
|
5479
5577
|
url
|
|
5480
5578
|
] });
|
|
@@ -5604,7 +5702,7 @@
|
|
|
5604
5702
|
function _temp2$d(e_0) {
|
|
5605
5703
|
return e_0.stopPropagation();
|
|
5606
5704
|
}
|
|
5607
|
-
function _temp$
|
|
5705
|
+
function _temp$A(e) {
|
|
5608
5706
|
e.preventDefault();
|
|
5609
5707
|
}
|
|
5610
5708
|
function VideoPreview(t0) {
|
|
@@ -5738,7 +5836,7 @@
|
|
|
5738
5836
|
if (Array.isArray(arrayProperty.of)) {
|
|
5739
5837
|
let t1;
|
|
5740
5838
|
if ($[6] !== arrayProperty.of) {
|
|
5741
|
-
t1 = arrayProperty.of.map(_temp$
|
|
5839
|
+
t1 = arrayProperty.of.map(_temp$z);
|
|
5742
5840
|
$[6] = arrayProperty.of;
|
|
5743
5841
|
$[7] = t1;
|
|
5744
5842
|
} else {
|
|
@@ -5876,7 +5974,7 @@
|
|
|
5876
5974
|
}
|
|
5877
5975
|
return content || null;
|
|
5878
5976
|
}
|
|
5879
|
-
function _temp$
|
|
5977
|
+
function _temp$z(p, i) {
|
|
5880
5978
|
return renderGenericArrayCell(p, i);
|
|
5881
5979
|
}
|
|
5882
5980
|
function renderMap(property, size) {
|
|
@@ -6320,104 +6418,77 @@
|
|
|
6320
6418
|
actions
|
|
6321
6419
|
] });
|
|
6322
6420
|
}
|
|
6323
|
-
|
|
6324
|
-
const $ = reactCompilerRuntime.c(
|
|
6325
|
-
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
|
|
6335
|
-
children,
|
|
6336
|
-
hover,
|
|
6337
|
-
onClick,
|
|
6338
|
-
size: t1,
|
|
6339
|
-
style,
|
|
6340
|
-
className,
|
|
6341
|
-
fullwidth: t2,
|
|
6342
|
-
...props
|
|
6343
|
-
} = t0);
|
|
6344
|
-
$[0] = t0;
|
|
6345
|
-
$[1] = children;
|
|
6346
|
-
$[2] = className;
|
|
6347
|
-
$[3] = hover;
|
|
6348
|
-
$[4] = onClick;
|
|
6349
|
-
$[5] = props;
|
|
6350
|
-
$[6] = style;
|
|
6351
|
-
$[7] = t1;
|
|
6352
|
-
$[8] = t2;
|
|
6353
|
-
} else {
|
|
6354
|
-
children = $[1];
|
|
6355
|
-
className = $[2];
|
|
6356
|
-
hover = $[3];
|
|
6357
|
-
onClick = $[4];
|
|
6358
|
-
props = $[5];
|
|
6359
|
-
style = $[6];
|
|
6360
|
-
t1 = $[7];
|
|
6361
|
-
t2 = $[8];
|
|
6362
|
-
}
|
|
6421
|
+
function EntityPreviewContainer(t0) {
|
|
6422
|
+
const $ = reactCompilerRuntime.c(15);
|
|
6423
|
+
const {
|
|
6424
|
+
children,
|
|
6425
|
+
hover,
|
|
6426
|
+
onClick,
|
|
6427
|
+
size: t1,
|
|
6428
|
+
style,
|
|
6429
|
+
className,
|
|
6430
|
+
fullwidth: t2,
|
|
6431
|
+
ref
|
|
6432
|
+
} = t0;
|
|
6363
6433
|
const size = t1 === void 0 ? "medium" : t1;
|
|
6364
6434
|
const fullwidth = t2 === void 0 ? true : t2;
|
|
6365
|
-
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
$[
|
|
6435
|
+
const t3 = fullwidth ? "w-full" : "";
|
|
6436
|
+
const t4 = hover ? "hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800" : "";
|
|
6437
|
+
const t5 = size === "small" ? "p-1" : "px-2 py-1";
|
|
6438
|
+
const t6 = onClick ? "cursor-pointer" : "";
|
|
6439
|
+
let t7;
|
|
6440
|
+
if ($[0] !== className || $[1] !== t3 || $[2] !== t4 || $[3] !== t5 || $[4] !== t6) {
|
|
6441
|
+
t7 = ui.cls("bg-white dark:bg-surface-900", "min-h-[44px]", t3, "items-center", t4, t5, "flex border rounded-lg", t6, ui.defaultBorderMixin, className);
|
|
6442
|
+
$[0] = className;
|
|
6443
|
+
$[1] = t3;
|
|
6444
|
+
$[2] = t4;
|
|
6445
|
+
$[3] = t5;
|
|
6446
|
+
$[4] = t6;
|
|
6447
|
+
$[5] = t7;
|
|
6373
6448
|
} else {
|
|
6374
|
-
|
|
6449
|
+
t7 = $[5];
|
|
6375
6450
|
}
|
|
6376
|
-
const
|
|
6377
|
-
const t5 = hover ? "hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800" : "";
|
|
6378
|
-
const t6 = size === "small" ? "p-1" : "px-2 py-1";
|
|
6379
|
-
const t7 = onClick ? "cursor-pointer" : "";
|
|
6451
|
+
const divClassName = t7;
|
|
6380
6452
|
let t8;
|
|
6381
|
-
if ($[
|
|
6382
|
-
t8 =
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
$[
|
|
6387
|
-
$[
|
|
6388
|
-
$[16] = t8;
|
|
6453
|
+
if ($[6] !== onClick) {
|
|
6454
|
+
t8 = onClick ? (event) => {
|
|
6455
|
+
event.preventDefault();
|
|
6456
|
+
onClick(event);
|
|
6457
|
+
} : void 0;
|
|
6458
|
+
$[6] = onClick;
|
|
6459
|
+
$[7] = t8;
|
|
6389
6460
|
} else {
|
|
6390
|
-
t8 = $[
|
|
6461
|
+
t8 = $[7];
|
|
6391
6462
|
}
|
|
6463
|
+
const handleClick = t8;
|
|
6392
6464
|
let t9;
|
|
6393
|
-
if ($[
|
|
6394
|
-
t9 =
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
6465
|
+
if ($[8] !== divClassName || $[9] !== handleClick || $[10] !== style) {
|
|
6466
|
+
t9 = {
|
|
6467
|
+
ref,
|
|
6468
|
+
tabIndex: 0,
|
|
6469
|
+
style,
|
|
6470
|
+
className: divClassName,
|
|
6471
|
+
onClick: handleClick
|
|
6399
6472
|
};
|
|
6400
|
-
$[
|
|
6401
|
-
$[
|
|
6473
|
+
$[8] = divClassName;
|
|
6474
|
+
$[9] = handleClick;
|
|
6475
|
+
$[10] = style;
|
|
6476
|
+
$[11] = t9;
|
|
6402
6477
|
} else {
|
|
6403
|
-
t9 = $[
|
|
6478
|
+
t9 = $[11];
|
|
6404
6479
|
}
|
|
6480
|
+
const divProps = t9;
|
|
6405
6481
|
let t10;
|
|
6406
|
-
if ($[
|
|
6407
|
-
t10 = /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
6408
|
-
$[
|
|
6409
|
-
$[
|
|
6410
|
-
$[
|
|
6411
|
-
$[22] = t3;
|
|
6412
|
-
$[23] = t8;
|
|
6413
|
-
$[24] = t9;
|
|
6414
|
-
$[25] = t10;
|
|
6482
|
+
if ($[12] !== children || $[13] !== divProps) {
|
|
6483
|
+
t10 = /* @__PURE__ */ jsxRuntime.jsx("div", { ...divProps, children });
|
|
6484
|
+
$[12] = children;
|
|
6485
|
+
$[13] = divProps;
|
|
6486
|
+
$[14] = t10;
|
|
6415
6487
|
} else {
|
|
6416
|
-
t10 = $[
|
|
6488
|
+
t10 = $[14];
|
|
6417
6489
|
}
|
|
6418
6490
|
return t10;
|
|
6419
|
-
}
|
|
6420
|
-
EntityPreviewContainer.displayName = "EntityPreviewContainer";
|
|
6491
|
+
}
|
|
6421
6492
|
const ReferencePreview = function ReferencePreview2(props) {
|
|
6422
6493
|
const $ = reactCompilerRuntime.c(10);
|
|
6423
6494
|
const reference = props.reference;
|
|
@@ -7051,7 +7122,7 @@
|
|
|
7051
7122
|
timeZoneName: "short"
|
|
7052
7123
|
});
|
|
7053
7124
|
const parts = tzFormatter.formatToParts(date);
|
|
7054
|
-
t32 = parts.find(_temp$
|
|
7125
|
+
t32 = parts.find(_temp$y)?.value ?? "";
|
|
7055
7126
|
$[6] = date;
|
|
7056
7127
|
$[7] = timezone;
|
|
7057
7128
|
$[8] = t32;
|
|
@@ -7122,7 +7193,7 @@
|
|
|
7122
7193
|
}
|
|
7123
7194
|
return t3;
|
|
7124
7195
|
}
|
|
7125
|
-
function _temp$
|
|
7196
|
+
function _temp$y(p) {
|
|
7126
7197
|
return p.type === "timeZoneName";
|
|
7127
7198
|
}
|
|
7128
7199
|
function MapPropertyPreview(t0) {
|
|
@@ -7217,7 +7288,7 @@
|
|
|
7217
7288
|
}
|
|
7218
7289
|
let t1;
|
|
7219
7290
|
if ($[1] !== value) {
|
|
7220
|
-
t1 = Object.entries(value).map(_temp$
|
|
7291
|
+
t1 = Object.entries(value).map(_temp$x);
|
|
7221
7292
|
$[1] = value;
|
|
7222
7293
|
$[2] = t1;
|
|
7223
7294
|
} else {
|
|
@@ -7233,7 +7304,7 @@
|
|
|
7233
7304
|
}
|
|
7234
7305
|
return t2;
|
|
7235
7306
|
}
|
|
7236
|
-
function _temp$
|
|
7307
|
+
function _temp$x(t0) {
|
|
7237
7308
|
const [key, childValue] = t0;
|
|
7238
7309
|
const isTimestampObj = childValue && typeof childValue === "object" && (childValue instanceof Date || "_seconds" in childValue && "_nanoseconds" in childValue && typeof childValue._seconds === "number" && typeof childValue._nanoseconds === "number" || "seconds" in childValue && "nanoseconds" in childValue && typeof childValue.seconds === "number" && typeof childValue.nanoseconds === "number");
|
|
7239
7310
|
const isScalar = childValue && (typeof childValue !== "object" || isTimestampObj);
|
|
@@ -7245,6 +7316,59 @@
|
|
|
7245
7316
|
typeof childValue === "object" && !isTimestampObj && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls(ui.defaultBorderMixin, "border-l pl-4"), children: /* @__PURE__ */ jsxRuntime.jsx(KeyValuePreview, { value: childValue }) })
|
|
7246
7317
|
] }, `map_preview_table_${key}}`);
|
|
7247
7318
|
}
|
|
7319
|
+
function GeopointPropertyPreview(t0) {
|
|
7320
|
+
const $ = reactCompilerRuntime.c(10);
|
|
7321
|
+
const {
|
|
7322
|
+
value,
|
|
7323
|
+
size
|
|
7324
|
+
} = t0;
|
|
7325
|
+
let t1;
|
|
7326
|
+
let t2;
|
|
7327
|
+
let t3;
|
|
7328
|
+
if ($[0] !== size || $[1] !== value) {
|
|
7329
|
+
t3 = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
|
|
7330
|
+
bb0: {
|
|
7331
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
7332
|
+
if (!coordinates) {
|
|
7333
|
+
const t42 = size === "small" ? "text-sm text-text-secondary dark:text-text-secondary-dark" : "text-text-secondary dark:text-text-secondary-dark";
|
|
7334
|
+
let t5;
|
|
7335
|
+
if ($[5] !== t42) {
|
|
7336
|
+
t5 = /* @__PURE__ */ jsxRuntime.jsx("span", { className: t42, children: "—" });
|
|
7337
|
+
$[5] = t42;
|
|
7338
|
+
$[6] = t5;
|
|
7339
|
+
} else {
|
|
7340
|
+
t5 = $[6];
|
|
7341
|
+
}
|
|
7342
|
+
t3 = t5;
|
|
7343
|
+
break bb0;
|
|
7344
|
+
}
|
|
7345
|
+
t1 = size === "small" ? "text-sm font-mono" : "font-mono";
|
|
7346
|
+
t2 = formatGeoPoint(coordinates);
|
|
7347
|
+
}
|
|
7348
|
+
$[0] = size;
|
|
7349
|
+
$[1] = value;
|
|
7350
|
+
$[2] = t1;
|
|
7351
|
+
$[3] = t2;
|
|
7352
|
+
$[4] = t3;
|
|
7353
|
+
} else {
|
|
7354
|
+
t1 = $[2];
|
|
7355
|
+
t2 = $[3];
|
|
7356
|
+
t3 = $[4];
|
|
7357
|
+
}
|
|
7358
|
+
if (t3 !== /* @__PURE__ */ Symbol.for("react.early_return_sentinel")) {
|
|
7359
|
+
return t3;
|
|
7360
|
+
}
|
|
7361
|
+
let t4;
|
|
7362
|
+
if ($[7] !== t1 || $[8] !== t2) {
|
|
7363
|
+
t4 = /* @__PURE__ */ jsxRuntime.jsx("span", { className: t1, children: t2 });
|
|
7364
|
+
$[7] = t1;
|
|
7365
|
+
$[8] = t2;
|
|
7366
|
+
$[9] = t4;
|
|
7367
|
+
} else {
|
|
7368
|
+
t4 = $[9];
|
|
7369
|
+
}
|
|
7370
|
+
return t4;
|
|
7371
|
+
}
|
|
7248
7372
|
function BooleanPreview(t0) {
|
|
7249
7373
|
const $ = reactCompilerRuntime.c(9);
|
|
7250
7374
|
const {
|
|
@@ -7543,52 +7667,52 @@
|
|
|
7543
7667
|
if (property.dataType === "string") {
|
|
7544
7668
|
const stringProperty = property;
|
|
7545
7669
|
if (typeof value === "string") {
|
|
7546
|
-
if (stringProperty.
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
$[14] = filePath;
|
|
7553
|
-
$[15] = fill;
|
|
7554
|
-
$[16] = interactive;
|
|
7555
|
-
$[17] = props.size;
|
|
7556
|
-
$[18] = t02;
|
|
7557
|
-
$[19] = t1;
|
|
7670
|
+
if (stringProperty.markdown) {
|
|
7671
|
+
let t02;
|
|
7672
|
+
if ($[14] !== value) {
|
|
7673
|
+
t02 = /* @__PURE__ */ jsxRuntime.jsx(ui.Markdown, { source: value, size: "small" });
|
|
7674
|
+
$[14] = value;
|
|
7675
|
+
$[15] = t02;
|
|
7558
7676
|
} else {
|
|
7559
|
-
|
|
7677
|
+
t02 = $[15];
|
|
7560
7678
|
}
|
|
7561
|
-
content =
|
|
7679
|
+
content = t02;
|
|
7562
7680
|
} else {
|
|
7563
|
-
if (stringProperty.
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
content = t02;
|
|
7681
|
+
if (stringProperty.storage) {
|
|
7682
|
+
const filePath = stringProperty.storage.previewUrl ? stringProperty.storage.previewUrl(value) : value;
|
|
7683
|
+
const t02 = property.storage?.storeUrl ?? false;
|
|
7684
|
+
let t1;
|
|
7685
|
+
if ($[16] !== filePath || $[17] !== fill || $[18] !== interactive || $[19] !== props.size || $[20] !== t02) {
|
|
7686
|
+
t1 = /* @__PURE__ */ jsxRuntime.jsx(StorageThumbnail, { interactive, storeUrl: t02, size: props.size, fill, storagePathOrDownloadUrl: filePath });
|
|
7687
|
+
$[16] = filePath;
|
|
7688
|
+
$[17] = fill;
|
|
7689
|
+
$[18] = interactive;
|
|
7690
|
+
$[19] = props.size;
|
|
7691
|
+
$[20] = t02;
|
|
7692
|
+
$[21] = t1;
|
|
7576
7693
|
} else {
|
|
7577
|
-
|
|
7578
|
-
content = /* @__PURE__ */ jsxRuntime.jsx(UrlComponentPreview, { size: props.size, url: value, interactive, fill, previewType: stringProperty.url });
|
|
7579
|
-
}
|
|
7694
|
+
t1 = $[21];
|
|
7580
7695
|
}
|
|
7696
|
+
content = t1;
|
|
7581
7697
|
} else {
|
|
7582
|
-
if (stringProperty.
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7698
|
+
if (stringProperty.url) {
|
|
7699
|
+
if (typeof stringProperty.url === "boolean") {
|
|
7700
|
+
let t02;
|
|
7701
|
+
if ($[22] !== fill || $[23] !== props.size || $[24] !== value) {
|
|
7702
|
+
t02 = /* @__PURE__ */ jsxRuntime.jsx(UrlComponentPreview, { size: props.size, url: value, fill });
|
|
7703
|
+
$[22] = fill;
|
|
7704
|
+
$[23] = props.size;
|
|
7705
|
+
$[24] = value;
|
|
7706
|
+
$[25] = t02;
|
|
7707
|
+
} else {
|
|
7708
|
+
t02 = $[25];
|
|
7709
|
+
}
|
|
7710
|
+
content = t02;
|
|
7588
7711
|
} else {
|
|
7589
|
-
|
|
7712
|
+
if (typeof stringProperty.url === "string") {
|
|
7713
|
+
content = /* @__PURE__ */ jsxRuntime.jsx(UrlComponentPreview, { size: props.size, url: value, interactive, fill, previewType: stringProperty.url });
|
|
7714
|
+
}
|
|
7590
7715
|
}
|
|
7591
|
-
content = t02;
|
|
7592
7716
|
} else {
|
|
7593
7717
|
if (stringProperty.userSelect) {
|
|
7594
7718
|
content = /* @__PURE__ */ jsxRuntime.jsx(UserPreview, { value, property: stringProperty, propertyKey, size: props.size });
|
|
@@ -7672,47 +7796,56 @@
|
|
|
7672
7796
|
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7673
7797
|
}
|
|
7674
7798
|
} else {
|
|
7675
|
-
if (property.dataType === "
|
|
7676
|
-
|
|
7677
|
-
|
|
7678
|
-
|
|
7679
|
-
} else {
|
|
7680
|
-
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7681
|
-
}
|
|
7799
|
+
if (property.dataType === "geopoint") {
|
|
7800
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
7801
|
+
if (coordinates) {
|
|
7802
|
+
content = /* @__PURE__ */ jsxRuntime.jsx(GeopointPropertyPreview, { ...props, property, value });
|
|
7682
7803
|
} else {
|
|
7683
|
-
|
|
7684
|
-
if ($[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
7685
|
-
t02 = /* @__PURE__ */ jsxRuntime.jsx(EmptyValue, {});
|
|
7686
|
-
$[27] = t02;
|
|
7687
|
-
} else {
|
|
7688
|
-
t02 = $[27];
|
|
7689
|
-
}
|
|
7690
|
-
content = t02;
|
|
7804
|
+
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7691
7805
|
}
|
|
7692
7806
|
} else {
|
|
7693
|
-
if (property.dataType === "
|
|
7694
|
-
if (typeof
|
|
7695
|
-
|
|
7807
|
+
if (property.dataType === "reference") {
|
|
7808
|
+
if (typeof property.path === "string") {
|
|
7809
|
+
if (typeof value === "object" && "isEntityReference" in value && value.isEntityReference()) {
|
|
7810
|
+
content = /* @__PURE__ */ jsxRuntime.jsx(ReferencePreview, { disabled: !property.path, previewProperties: property.previewProperties, includeId: property.includeId, includeEntityLink: property.includeEntityLink, size: props.size, reference: value });
|
|
7811
|
+
} else {
|
|
7812
|
+
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7813
|
+
}
|
|
7696
7814
|
} else {
|
|
7697
|
-
|
|
7815
|
+
let t02;
|
|
7816
|
+
if ($[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
7817
|
+
t02 = /* @__PURE__ */ jsxRuntime.jsx(EmptyValue, {});
|
|
7818
|
+
$[27] = t02;
|
|
7819
|
+
} else {
|
|
7820
|
+
t02 = $[27];
|
|
7821
|
+
}
|
|
7822
|
+
content = t02;
|
|
7698
7823
|
}
|
|
7699
7824
|
} else {
|
|
7700
|
-
if (property.dataType === "
|
|
7701
|
-
if (typeof value === "
|
|
7702
|
-
content = /* @__PURE__ */ jsxRuntime.jsx(
|
|
7825
|
+
if (property.dataType === "boolean") {
|
|
7826
|
+
if (typeof value === "boolean") {
|
|
7827
|
+
content = /* @__PURE__ */ jsxRuntime.jsx(BooleanPreview, { value, size, property });
|
|
7703
7828
|
} else {
|
|
7704
7829
|
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7705
7830
|
}
|
|
7706
7831
|
} else {
|
|
7707
|
-
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
|
|
7711
|
-
|
|
7832
|
+
if (property.dataType === "number") {
|
|
7833
|
+
if (typeof value === "number") {
|
|
7834
|
+
content = /* @__PURE__ */ jsxRuntime.jsx(NumberPropertyPreview, { ...props, value, property });
|
|
7835
|
+
} else {
|
|
7836
|
+
content = buildWrongValueType(propertyKey, property.dataType, value);
|
|
7837
|
+
}
|
|
7712
7838
|
} else {
|
|
7713
|
-
t02
|
|
7839
|
+
let t02;
|
|
7840
|
+
if ($[28] !== value) {
|
|
7841
|
+
t02 = JSON.stringify(value, jsonStringifyReplacer);
|
|
7842
|
+
$[28] = value;
|
|
7843
|
+
$[29] = t02;
|
|
7844
|
+
} else {
|
|
7845
|
+
t02 = $[29];
|
|
7846
|
+
}
|
|
7847
|
+
content = t02;
|
|
7714
7848
|
}
|
|
7715
|
-
content = t02;
|
|
7716
7849
|
}
|
|
7717
7850
|
}
|
|
7718
7851
|
}
|
|
@@ -8494,7 +8627,7 @@
|
|
|
8494
8627
|
console.trace("onChange");
|
|
8495
8628
|
if (valueType === "number") {
|
|
8496
8629
|
if (multiple) {
|
|
8497
|
-
const newValue = updatedValue.map(_temp$
|
|
8630
|
+
const newValue = updatedValue.map(_temp$w);
|
|
8498
8631
|
updateValue(newValue);
|
|
8499
8632
|
} else {
|
|
8500
8633
|
updateValue(parseFloat(updatedValue));
|
|
@@ -8565,7 +8698,7 @@
|
|
|
8565
8698
|
function _temp2$c(v_0) {
|
|
8566
8699
|
return v_0.toString();
|
|
8567
8700
|
}
|
|
8568
|
-
function _temp$
|
|
8701
|
+
function _temp$w(v) {
|
|
8569
8702
|
return parseFloat(v);
|
|
8570
8703
|
}
|
|
8571
8704
|
function VirtualTableNumberInput(props) {
|
|
@@ -8761,7 +8894,7 @@
|
|
|
8761
8894
|
const renderValue = t3;
|
|
8762
8895
|
let t4;
|
|
8763
8896
|
if ($[7] !== disabled || $[8] !== internalValue || $[9] !== multiple || $[10] !== onChange || $[11] !== renderValue || $[12] !== users || $[13] !== validValue) {
|
|
8764
|
-
t4 = multiple ? /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue : [], onValueChange: onChange, children: users?.map(_temp$
|
|
8897
|
+
t4 = multiple ? /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue : [], onValueChange: onChange, children: users?.map(_temp$v) }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { inputRef: ref, size: "large", fullWidth: true, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, padding: false, value: validValue ? internalValue : "", onValueChange: onChange, renderValue, children: users?.map(_temp2$b) });
|
|
8765
8898
|
$[7] = disabled;
|
|
8766
8899
|
$[8] = internalValue;
|
|
8767
8900
|
$[9] = multiple;
|
|
@@ -8778,7 +8911,7 @@
|
|
|
8778
8911
|
function _temp2$b(user_1) {
|
|
8779
8912
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: user_1.uid, children: /* @__PURE__ */ jsxRuntime.jsx(UserDisplay, { user: user_1 }) }, user_1.uid);
|
|
8780
8913
|
}
|
|
8781
|
-
function _temp$
|
|
8914
|
+
function _temp$v(user_0) {
|
|
8782
8915
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelectItem, { value: user_0.uid, children: /* @__PURE__ */ jsxRuntime.jsx(UserDisplay, { user: user_0 }) }, user_0.uid);
|
|
8783
8916
|
}
|
|
8784
8917
|
class ErrorBoundary extends React.Component {
|
|
@@ -9023,7 +9156,7 @@
|
|
|
9023
9156
|
newValue = [...internalValue];
|
|
9024
9157
|
newValue = removeDuplicates(newValue);
|
|
9025
9158
|
setInternalValue(newValue);
|
|
9026
|
-
const fieldValue = newValue.filter(_temp$
|
|
9159
|
+
const fieldValue = newValue.filter(_temp$u).map(_temp2$a);
|
|
9027
9160
|
if (multipleFilesSupported) {
|
|
9028
9161
|
onChange(fieldValue);
|
|
9029
9162
|
} else {
|
|
@@ -9144,7 +9277,7 @@
|
|
|
9144
9277
|
function _temp2$a(e_0) {
|
|
9145
9278
|
return e_0.storagePathOrDownloadUrl;
|
|
9146
9279
|
}
|
|
9147
|
-
function _temp$
|
|
9280
|
+
function _temp$u(e) {
|
|
9148
9281
|
return !!e.storagePathOrDownloadUrl;
|
|
9149
9282
|
}
|
|
9150
9283
|
function getInternalInitialValue(multipleFilesSupported, value, metadata, size) {
|
|
@@ -9434,7 +9567,7 @@
|
|
|
9434
9567
|
const snackbarContext = useSnackbarController();
|
|
9435
9568
|
let t1;
|
|
9436
9569
|
if ($[0] !== storage.acceptedFiles) {
|
|
9437
|
-
t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$
|
|
9570
|
+
t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$t).reduce(_temp2$9, {}) : void 0;
|
|
9438
9571
|
$[0] = storage.acceptedFiles;
|
|
9439
9572
|
$[1] = t1;
|
|
9440
9573
|
} else {
|
|
@@ -9663,7 +9796,7 @@
|
|
|
9663
9796
|
...b
|
|
9664
9797
|
};
|
|
9665
9798
|
}
|
|
9666
|
-
function _temp$
|
|
9799
|
+
function _temp$t(e) {
|
|
9667
9800
|
return {
|
|
9668
9801
|
[e]: []
|
|
9669
9802
|
};
|
|
@@ -9773,7 +9906,7 @@
|
|
|
9773
9906
|
let t1;
|
|
9774
9907
|
if ($[2] !== updateValue) {
|
|
9775
9908
|
t1 = (entities) => {
|
|
9776
|
-
updateValue(entities.map(_temp$
|
|
9909
|
+
updateValue(entities.filter(Boolean).map(_temp$s));
|
|
9777
9910
|
};
|
|
9778
9911
|
$[2] = updateValue;
|
|
9779
9912
|
$[3] = t1;
|
|
@@ -9945,7 +10078,7 @@
|
|
|
9945
10078
|
}
|
|
9946
10079
|
return t10;
|
|
9947
10080
|
}, equal);
|
|
9948
|
-
function _temp$
|
|
10081
|
+
function _temp$s(e) {
|
|
9949
10082
|
return getReferenceFrom(e);
|
|
9950
10083
|
}
|
|
9951
10084
|
function _temp2$8(ref) {
|
|
@@ -11613,7 +11746,7 @@
|
|
|
11613
11746
|
throw Error(`Couldn't find the corresponding collection for the path: ${ofProperty.path}`);
|
|
11614
11747
|
}
|
|
11615
11748
|
const onMultipleEntitiesSelected = React.useCallback((entities) => {
|
|
11616
|
-
setValue(entities.map((e) => getReferenceFrom(e)));
|
|
11749
|
+
setValue(entities.filter(Boolean).map((e) => getReferenceFrom(e)));
|
|
11617
11750
|
}, [setValue]);
|
|
11618
11751
|
const referenceDialogController = useReferenceDialog({
|
|
11619
11752
|
multiselect: true,
|
|
@@ -11723,7 +11856,7 @@
|
|
|
11723
11856
|
}
|
|
11724
11857
|
let t5;
|
|
11725
11858
|
if ($[15] !== placeholder) {
|
|
11726
|
-
t5 = placeholder && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: _temp$
|
|
11859
|
+
t5 = placeholder && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: _temp$r, className: "flex flex-col items-center justify-center w-full h-full", children: /* @__PURE__ */ jsxRuntime.jsx(ui.DescriptionIcon, { className: "text-surface-700 dark:text-surface-300" }) });
|
|
11727
11860
|
$[15] = placeholder;
|
|
11728
11861
|
$[16] = t5;
|
|
11729
11862
|
} else {
|
|
@@ -11746,7 +11879,7 @@
|
|
|
11746
11879
|
}
|
|
11747
11880
|
return t6;
|
|
11748
11881
|
}
|
|
11749
|
-
function _temp$
|
|
11882
|
+
function _temp$r(e) {
|
|
11750
11883
|
return e.stopPropagation();
|
|
11751
11884
|
}
|
|
11752
11885
|
const dropZoneClasses = "box-border relative pt-[2px] items-center border border-transparent min-h-[254px] outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
|
|
@@ -11974,7 +12107,7 @@
|
|
|
11974
12107
|
t4 = $[7];
|
|
11975
12108
|
}
|
|
11976
12109
|
const style = t4;
|
|
11977
|
-
const getImageSizeNumber = _temp$
|
|
12110
|
+
const getImageSizeNumber = _temp$q;
|
|
11978
12111
|
let child;
|
|
11979
12112
|
if (entry.storagePathOrDownloadUrl) {
|
|
11980
12113
|
const t52 = `storage_preview_${entry.storagePathOrDownloadUrl}`;
|
|
@@ -12049,7 +12182,7 @@
|
|
|
12049
12182
|
}
|
|
12050
12183
|
return t6;
|
|
12051
12184
|
}
|
|
12052
|
-
function _temp$
|
|
12185
|
+
function _temp$q(previewSize) {
|
|
12053
12186
|
switch (previewSize) {
|
|
12054
12187
|
case "small": {
|
|
12055
12188
|
return 40;
|
|
@@ -12330,7 +12463,7 @@
|
|
|
12330
12463
|
newValue.splice(fromIndex, 1);
|
|
12331
12464
|
newValue.splice(toIndex, 0, item);
|
|
12332
12465
|
setInternalValue(newValue);
|
|
12333
|
-
const fieldValue = newValue.filter(_temp3$4).map(_temp4$
|
|
12466
|
+
const fieldValue = newValue.filter(_temp3$4).map(_temp4$4);
|
|
12334
12467
|
onChange(fieldValue);
|
|
12335
12468
|
};
|
|
12336
12469
|
$[0] = multipleFilesSupported;
|
|
@@ -12524,7 +12657,7 @@
|
|
|
12524
12657
|
function _temp5$2(v_0) {
|
|
12525
12658
|
return !!v_0.storagePathOrDownloadUrl;
|
|
12526
12659
|
}
|
|
12527
|
-
function _temp4$
|
|
12660
|
+
function _temp4$4(e_0) {
|
|
12528
12661
|
return e_0.storagePathOrDownloadUrl;
|
|
12529
12662
|
}
|
|
12530
12663
|
function _temp3$4(e) {
|
|
@@ -12949,6 +13082,260 @@
|
|
|
12949
13082
|
}
|
|
12950
13083
|
return t13;
|
|
12951
13084
|
}
|
|
13085
|
+
function GeopointFieldBinding(t0) {
|
|
13086
|
+
const $ = reactCompilerRuntime.c(66);
|
|
13087
|
+
const {
|
|
13088
|
+
propertyKey,
|
|
13089
|
+
value,
|
|
13090
|
+
setValue,
|
|
13091
|
+
error,
|
|
13092
|
+
showError,
|
|
13093
|
+
disabled,
|
|
13094
|
+
autoFocus,
|
|
13095
|
+
property,
|
|
13096
|
+
includeDescription,
|
|
13097
|
+
size: t1
|
|
13098
|
+
} = t0;
|
|
13099
|
+
const size = t1 === void 0 ? "large" : t1;
|
|
13100
|
+
const coordinates = getGeoPointCoordinates(value);
|
|
13101
|
+
const canClear = Boolean(property.clearable);
|
|
13102
|
+
const [latitude, setLatitude] = React.useState(coordinates ? coordinates.latitude.toString() : "");
|
|
13103
|
+
const [longitude, setLongitude] = React.useState(coordinates ? coordinates.longitude.toString() : "");
|
|
13104
|
+
const [localError, setLocalError] = React.useState();
|
|
13105
|
+
const skipSyncRef = React.useRef(false);
|
|
13106
|
+
let t2;
|
|
13107
|
+
if ($[0] !== property || $[1] !== setValue || $[2] !== value) {
|
|
13108
|
+
t2 = {
|
|
13109
|
+
property,
|
|
13110
|
+
value,
|
|
13111
|
+
setValue
|
|
13112
|
+
};
|
|
13113
|
+
$[0] = property;
|
|
13114
|
+
$[1] = setValue;
|
|
13115
|
+
$[2] = value;
|
|
13116
|
+
$[3] = t2;
|
|
13117
|
+
} else {
|
|
13118
|
+
t2 = $[3];
|
|
13119
|
+
}
|
|
13120
|
+
useClearRestoreValue(t2);
|
|
13121
|
+
let t3;
|
|
13122
|
+
if ($[4] !== setLatitude || $[5] !== value) {
|
|
13123
|
+
t3 = () => {
|
|
13124
|
+
if (skipSyncRef.current) {
|
|
13125
|
+
skipSyncRef.current = false;
|
|
13126
|
+
return;
|
|
13127
|
+
}
|
|
13128
|
+
const nextCoordinates = getGeoPointCoordinates(value);
|
|
13129
|
+
setLatitude(nextCoordinates ? nextCoordinates.latitude.toString() : "");
|
|
13130
|
+
setLongitude(nextCoordinates ? nextCoordinates.longitude.toString() : "");
|
|
13131
|
+
};
|
|
13132
|
+
$[4] = setLatitude;
|
|
13133
|
+
$[5] = value;
|
|
13134
|
+
$[6] = t3;
|
|
13135
|
+
} else {
|
|
13136
|
+
t3 = $[6];
|
|
13137
|
+
}
|
|
13138
|
+
let t4;
|
|
13139
|
+
if ($[7] !== value) {
|
|
13140
|
+
t4 = [value];
|
|
13141
|
+
$[7] = value;
|
|
13142
|
+
$[8] = t4;
|
|
13143
|
+
} else {
|
|
13144
|
+
t4 = $[8];
|
|
13145
|
+
}
|
|
13146
|
+
React.useEffect(t3, t4);
|
|
13147
|
+
let t5;
|
|
13148
|
+
if ($[9] !== setLatitude || $[10] !== setValue) {
|
|
13149
|
+
t5 = (nextLatitude, nextLongitude) => {
|
|
13150
|
+
skipSyncRef.current = true;
|
|
13151
|
+
setLatitude(nextLatitude);
|
|
13152
|
+
setLongitude(nextLongitude);
|
|
13153
|
+
const trimmedLatitude = nextLatitude.trim();
|
|
13154
|
+
const trimmedLongitude = nextLongitude.trim();
|
|
13155
|
+
if (!trimmedLatitude && !trimmedLongitude) {
|
|
13156
|
+
setLocalError(void 0);
|
|
13157
|
+
setValue(null);
|
|
13158
|
+
return;
|
|
13159
|
+
}
|
|
13160
|
+
const parsed = parseGeoPoint(`${trimmedLatitude}, ${trimmedLongitude}`);
|
|
13161
|
+
if (parsed.error) {
|
|
13162
|
+
setLocalError(parsed.error);
|
|
13163
|
+
setValue(null);
|
|
13164
|
+
return;
|
|
13165
|
+
}
|
|
13166
|
+
setLocalError(void 0);
|
|
13167
|
+
setValue(parsed.point);
|
|
13168
|
+
};
|
|
13169
|
+
$[9] = setLatitude;
|
|
13170
|
+
$[10] = setValue;
|
|
13171
|
+
$[11] = t5;
|
|
13172
|
+
} else {
|
|
13173
|
+
t5 = $[11];
|
|
13174
|
+
}
|
|
13175
|
+
const updateGeoPoint = t5;
|
|
13176
|
+
let t6;
|
|
13177
|
+
if ($[12] !== updateGeoPoint) {
|
|
13178
|
+
t6 = (event) => {
|
|
13179
|
+
if (event) {
|
|
13180
|
+
event.preventDefault();
|
|
13181
|
+
event.stopPropagation();
|
|
13182
|
+
}
|
|
13183
|
+
updateGeoPoint("", "");
|
|
13184
|
+
};
|
|
13185
|
+
$[12] = updateGeoPoint;
|
|
13186
|
+
$[13] = t6;
|
|
13187
|
+
} else {
|
|
13188
|
+
t6 = $[13];
|
|
13189
|
+
}
|
|
13190
|
+
const handleClear = t6;
|
|
13191
|
+
const resolvedError = localError ?? error;
|
|
13192
|
+
const shouldShowError = Boolean(resolvedError) || Boolean(showError && error);
|
|
13193
|
+
let t7;
|
|
13194
|
+
if ($[14] !== property) {
|
|
13195
|
+
t7 = getIconForProperty(property, "small");
|
|
13196
|
+
$[14] = property;
|
|
13197
|
+
$[15] = t7;
|
|
13198
|
+
} else {
|
|
13199
|
+
t7 = $[15];
|
|
13200
|
+
}
|
|
13201
|
+
const t8 = property.validation?.required;
|
|
13202
|
+
const t9 = shouldShowError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark";
|
|
13203
|
+
let t10;
|
|
13204
|
+
if ($[16] !== property.name || $[17] !== t7 || $[18] !== t8 || $[19] !== t9) {
|
|
13205
|
+
t10 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsxRuntime.jsx(LabelWithIcon, { icon: t7, required: t8, title: property.name, className: t9 }) });
|
|
13206
|
+
$[16] = property.name;
|
|
13207
|
+
$[17] = t7;
|
|
13208
|
+
$[18] = t8;
|
|
13209
|
+
$[19] = t9;
|
|
13210
|
+
$[20] = t10;
|
|
13211
|
+
} else {
|
|
13212
|
+
t10 = $[20];
|
|
13213
|
+
}
|
|
13214
|
+
let t11;
|
|
13215
|
+
if ($[21] !== longitude || $[22] !== updateGeoPoint) {
|
|
13216
|
+
t11 = (event_0) => updateGeoPoint(event_0.target.value, longitude);
|
|
13217
|
+
$[21] = longitude;
|
|
13218
|
+
$[22] = updateGeoPoint;
|
|
13219
|
+
$[23] = t11;
|
|
13220
|
+
} else {
|
|
13221
|
+
t11 = $[23];
|
|
13222
|
+
}
|
|
13223
|
+
let t12;
|
|
13224
|
+
if ($[24] !== canClear || $[25] !== handleClear) {
|
|
13225
|
+
t12 = canClear ? /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { onClick: handleClear, children: /* @__PURE__ */ jsxRuntime.jsx(ui.CloseIcon, {}) }) : void 0;
|
|
13226
|
+
$[24] = canClear;
|
|
13227
|
+
$[25] = handleClear;
|
|
13228
|
+
$[26] = t12;
|
|
13229
|
+
} else {
|
|
13230
|
+
t12 = $[26];
|
|
13231
|
+
}
|
|
13232
|
+
const t13 = shouldShowError && Boolean(resolvedError);
|
|
13233
|
+
let t14;
|
|
13234
|
+
if ($[27] !== autoFocus || $[28] !== disabled || $[29] !== latitude || $[30] !== size || $[31] !== t11 || $[32] !== t12 || $[33] !== t13) {
|
|
13235
|
+
t14 = /* @__PURE__ */ jsxRuntime.jsx(ui.TextField, { size, value: latitude, onChange: t11, autoFocus, label: "Latitude", type: "number", disabled, endAdornment: t12, error: t13 });
|
|
13236
|
+
$[27] = autoFocus;
|
|
13237
|
+
$[28] = disabled;
|
|
13238
|
+
$[29] = latitude;
|
|
13239
|
+
$[30] = size;
|
|
13240
|
+
$[31] = t11;
|
|
13241
|
+
$[32] = t12;
|
|
13242
|
+
$[33] = t13;
|
|
13243
|
+
$[34] = t14;
|
|
13244
|
+
} else {
|
|
13245
|
+
t14 = $[34];
|
|
13246
|
+
}
|
|
13247
|
+
let t15;
|
|
13248
|
+
if ($[35] !== latitude || $[36] !== updateGeoPoint) {
|
|
13249
|
+
t15 = (event_1) => updateGeoPoint(latitude, event_1.target.value);
|
|
13250
|
+
$[35] = latitude;
|
|
13251
|
+
$[36] = updateGeoPoint;
|
|
13252
|
+
$[37] = t15;
|
|
13253
|
+
} else {
|
|
13254
|
+
t15 = $[37];
|
|
13255
|
+
}
|
|
13256
|
+
const t16 = shouldShowError && Boolean(resolvedError);
|
|
13257
|
+
let t17;
|
|
13258
|
+
if ($[38] !== disabled || $[39] !== longitude || $[40] !== size || $[41] !== t15 || $[42] !== t16) {
|
|
13259
|
+
t17 = /* @__PURE__ */ jsxRuntime.jsx(ui.TextField, { size, value: longitude, onChange: t15, label: "Longitude", type: "number", disabled, error: t16 });
|
|
13260
|
+
$[38] = disabled;
|
|
13261
|
+
$[39] = longitude;
|
|
13262
|
+
$[40] = size;
|
|
13263
|
+
$[41] = t15;
|
|
13264
|
+
$[42] = t16;
|
|
13265
|
+
$[43] = t17;
|
|
13266
|
+
} else {
|
|
13267
|
+
t17 = $[43];
|
|
13268
|
+
}
|
|
13269
|
+
let t18;
|
|
13270
|
+
if ($[44] !== t14 || $[45] !== t17) {
|
|
13271
|
+
t18 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-2 md:grid-cols-2", children: [
|
|
13272
|
+
t14,
|
|
13273
|
+
t17
|
|
13274
|
+
] });
|
|
13275
|
+
$[44] = t14;
|
|
13276
|
+
$[45] = t17;
|
|
13277
|
+
$[46] = t18;
|
|
13278
|
+
} else {
|
|
13279
|
+
t18 = $[46];
|
|
13280
|
+
}
|
|
13281
|
+
let t19;
|
|
13282
|
+
if ($[47] !== resolvedError || $[48] !== value) {
|
|
13283
|
+
t19 = value && !resolvedError && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-text-secondary dark:text-text-secondary-dark font-mono", children: formatGeoPoint(value) });
|
|
13284
|
+
$[47] = resolvedError;
|
|
13285
|
+
$[48] = value;
|
|
13286
|
+
$[49] = t19;
|
|
13287
|
+
} else {
|
|
13288
|
+
t19 = $[49];
|
|
13289
|
+
}
|
|
13290
|
+
let t20;
|
|
13291
|
+
if ($[50] !== t10 || $[51] !== t18 || $[52] !== t19) {
|
|
13292
|
+
t20 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
13293
|
+
t10,
|
|
13294
|
+
t18,
|
|
13295
|
+
t19
|
|
13296
|
+
] });
|
|
13297
|
+
$[50] = t10;
|
|
13298
|
+
$[51] = t18;
|
|
13299
|
+
$[52] = t19;
|
|
13300
|
+
$[53] = t20;
|
|
13301
|
+
} else {
|
|
13302
|
+
t20 = $[53];
|
|
13303
|
+
}
|
|
13304
|
+
let t21;
|
|
13305
|
+
if ($[54] !== propertyKey || $[55] !== t20) {
|
|
13306
|
+
t21 = /* @__PURE__ */ jsxRuntime.jsx(PropertyIdCopyTooltip, { propertyKey, children: t20 });
|
|
13307
|
+
$[54] = propertyKey;
|
|
13308
|
+
$[55] = t20;
|
|
13309
|
+
$[56] = t21;
|
|
13310
|
+
} else {
|
|
13311
|
+
t21 = $[56];
|
|
13312
|
+
}
|
|
13313
|
+
let t22;
|
|
13314
|
+
if ($[57] !== disabled || $[58] !== includeDescription || $[59] !== property || $[60] !== resolvedError || $[61] !== shouldShowError) {
|
|
13315
|
+
t22 = /* @__PURE__ */ jsxRuntime.jsx(FieldHelperText, { includeDescription, showError: shouldShowError, error: resolvedError, disabled, property });
|
|
13316
|
+
$[57] = disabled;
|
|
13317
|
+
$[58] = includeDescription;
|
|
13318
|
+
$[59] = property;
|
|
13319
|
+
$[60] = resolvedError;
|
|
13320
|
+
$[61] = shouldShowError;
|
|
13321
|
+
$[62] = t22;
|
|
13322
|
+
} else {
|
|
13323
|
+
t22 = $[62];
|
|
13324
|
+
}
|
|
13325
|
+
let t23;
|
|
13326
|
+
if ($[63] !== t21 || $[64] !== t22) {
|
|
13327
|
+
t23 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13328
|
+
t21,
|
|
13329
|
+
t22
|
|
13330
|
+
] });
|
|
13331
|
+
$[63] = t21;
|
|
13332
|
+
$[64] = t22;
|
|
13333
|
+
$[65] = t23;
|
|
13334
|
+
} else {
|
|
13335
|
+
t23 = $[65];
|
|
13336
|
+
}
|
|
13337
|
+
return t23;
|
|
13338
|
+
}
|
|
12952
13339
|
function ReadOnlyFieldBinding(t0) {
|
|
12953
13340
|
const $ = reactCompilerRuntime.c(18);
|
|
12954
13341
|
const {
|
|
@@ -13568,7 +13955,7 @@
|
|
|
13568
13955
|
} else {
|
|
13569
13956
|
t42 = $[20];
|
|
13570
13957
|
}
|
|
13571
|
-
t3 = Object.entries(mapProperties).filter(_temp$
|
|
13958
|
+
t3 = Object.entries(mapProperties).filter(_temp$p).map(t42);
|
|
13572
13959
|
$[6] = autoFocus;
|
|
13573
13960
|
$[7] = context;
|
|
13574
13961
|
$[8] = disabled;
|
|
@@ -13647,7 +14034,7 @@
|
|
|
13647
14034
|
}
|
|
13648
14035
|
return t10;
|
|
13649
14036
|
}
|
|
13650
|
-
function _temp$
|
|
14037
|
+
function _temp$p(t0) {
|
|
13651
14038
|
const [, property_0] = t0;
|
|
13652
14039
|
return !isHidden(property_0);
|
|
13653
14040
|
}
|
|
@@ -15021,7 +15408,7 @@
|
|
|
15021
15408
|
const property = t4;
|
|
15022
15409
|
let t5;
|
|
15023
15410
|
if ($[9] !== properties) {
|
|
15024
|
-
t5 = Object.entries(properties).map(_temp$
|
|
15411
|
+
t5 = Object.entries(properties).map(_temp$o);
|
|
15025
15412
|
$[9] = properties;
|
|
15026
15413
|
$[10] = t5;
|
|
15027
15414
|
} else {
|
|
@@ -15114,7 +15501,7 @@
|
|
|
15114
15501
|
}
|
|
15115
15502
|
return t11;
|
|
15116
15503
|
}
|
|
15117
|
-
function _temp$
|
|
15504
|
+
function _temp$o(t0) {
|
|
15118
15505
|
const [key, property_0] = t0;
|
|
15119
15506
|
return {
|
|
15120
15507
|
id: key,
|
|
@@ -17014,14 +17401,14 @@
|
|
|
17014
17401
|
if (property.dataType === "string") {
|
|
17015
17402
|
if (property.url) {
|
|
17016
17403
|
return 280;
|
|
17404
|
+
} else if (property.markdown) {
|
|
17405
|
+
return 300;
|
|
17017
17406
|
} else if (property.storage) {
|
|
17018
17407
|
return 160;
|
|
17019
17408
|
} else if (property.enumValues) {
|
|
17020
17409
|
return 200;
|
|
17021
17410
|
} else if (property.multiline) {
|
|
17022
17411
|
return 300;
|
|
17023
|
-
} else if (property.markdown) {
|
|
17024
|
-
return 300;
|
|
17025
17412
|
} else if (property.email) {
|
|
17026
17413
|
return 200;
|
|
17027
17414
|
} else {
|
|
@@ -17235,24 +17622,27 @@
|
|
|
17235
17622
|
function propertiesToColumns({
|
|
17236
17623
|
properties,
|
|
17237
17624
|
sortable: sortable2,
|
|
17238
|
-
|
|
17239
|
-
AdditionalHeaderWidget
|
|
17625
|
+
forcedFilters,
|
|
17626
|
+
AdditionalHeaderWidget,
|
|
17627
|
+
allowedFilters
|
|
17240
17628
|
}) {
|
|
17241
|
-
const disabledFilter = Boolean(forceFilter);
|
|
17242
17629
|
return Object.entries(properties).flatMap(([key, property]) => getColumnKeysForProperty(property, key)).map(({
|
|
17243
17630
|
key,
|
|
17244
17631
|
disabled
|
|
17245
17632
|
}) => {
|
|
17246
17633
|
const property = getResolvedPropertyInPath(properties, key);
|
|
17247
17634
|
if (!property) throw Error("Internal error: no property found in path " + key);
|
|
17248
|
-
const filterable =
|
|
17635
|
+
const filterable = property.dataType === "array" ? isDataTypeFilterable(property.of?.dataType, true) : isDataTypeFilterable(property.dataType);
|
|
17636
|
+
const isFilterForced = forcedFilters?.includes(key) ?? false;
|
|
17637
|
+
const isFilterAllowed = allowedFilters ? allowedFilters.includes(key) : filterable;
|
|
17638
|
+
const filterEnabled = filterable && isFilterAllowed && !isFilterForced;
|
|
17249
17639
|
return {
|
|
17250
17640
|
key,
|
|
17251
17641
|
align: getTableCellAlignment(property),
|
|
17252
17642
|
icon: getIconForProperty(property, "small"),
|
|
17253
17643
|
title: property.name ?? key,
|
|
17254
17644
|
sortable: sortable2,
|
|
17255
|
-
filter:
|
|
17645
|
+
filter: filterEnabled,
|
|
17256
17646
|
width: getTablePropertyColumnWidth(property),
|
|
17257
17647
|
resizable: true,
|
|
17258
17648
|
custom: {
|
|
@@ -17265,16 +17655,6 @@
|
|
|
17265
17655
|
};
|
|
17266
17656
|
});
|
|
17267
17657
|
}
|
|
17268
|
-
function filterableProperty(property, partOfArray = false) {
|
|
17269
|
-
if (partOfArray) {
|
|
17270
|
-
return ["string", "number", "date", "reference"].includes(property.dataType);
|
|
17271
|
-
}
|
|
17272
|
-
if (property.dataType === "array") {
|
|
17273
|
-
if (property.of) return filterableProperty(property.of, true);
|
|
17274
|
-
else return false;
|
|
17275
|
-
}
|
|
17276
|
-
return ["string", "number", "boolean", "date", "reference", "array"].includes(property.dataType);
|
|
17277
|
-
}
|
|
17278
17658
|
const VirtualTableHeader = React.memo(function VirtualTableHeader2(t0) {
|
|
17279
17659
|
const $ = reactCompilerRuntime.c(61);
|
|
17280
17660
|
const {
|
|
@@ -18106,7 +18486,7 @@
|
|
|
18106
18486
|
const currentSort = sortBy ? sortBy[1] : void 0;
|
|
18107
18487
|
const [columns, setColumns] = React.useState(columnsProp);
|
|
18108
18488
|
const tableRef = React.useRef(null);
|
|
18109
|
-
const
|
|
18489
|
+
const lastEndReachedDataLength = React.useRef(void 0);
|
|
18110
18490
|
const debouncedScroll = useDebounceCallback(onScrollProp, 200);
|
|
18111
18491
|
const [draggingColumnId, setDraggingColumnId] = React.useState(null);
|
|
18112
18492
|
const sensors = core.useSensors(core.useSensor(core.PointerSensor, {
|
|
@@ -18185,7 +18565,7 @@
|
|
|
18185
18565
|
filterRef.current = filterInput;
|
|
18186
18566
|
}, [filterInput]);
|
|
18187
18567
|
const scrollToTop = React.useCallback(() => {
|
|
18188
|
-
|
|
18568
|
+
lastEndReachedDataLength.current = void 0;
|
|
18189
18569
|
if (tableRef.current) {
|
|
18190
18570
|
tableRef.current.scrollTo(tableRef.current?.scrollLeft, 0);
|
|
18191
18571
|
}
|
|
@@ -18211,28 +18591,37 @@
|
|
|
18211
18591
|
scrollToTop();
|
|
18212
18592
|
}, [checkFilterCombination, currentSort, onFilterUpdate, onResetPagination, onSortByUpdate, scrollToTop, sortByProperty]);
|
|
18213
18593
|
const maxScroll = Math.max((data?.length ?? 0) * rowHeight - bounds.height, 0);
|
|
18214
|
-
const onEndReachedInternal = React.useCallback((
|
|
18215
|
-
|
|
18216
|
-
|
|
18594
|
+
const onEndReachedInternal = React.useCallback(() => {
|
|
18595
|
+
const dataLength = data?.length ?? 0;
|
|
18596
|
+
if (onEndReached && dataLength > 0 && lastEndReachedDataLength.current !== dataLength) {
|
|
18597
|
+
lastEndReachedDataLength.current = dataLength;
|
|
18217
18598
|
onEndReached();
|
|
18218
18599
|
}
|
|
18219
18600
|
}, [data?.length, onEndReached]);
|
|
18601
|
+
React.useEffect(() => {
|
|
18602
|
+
if (!onEndReached || loading || !data?.length || !bounds.height || !tableRef.current) {
|
|
18603
|
+
return;
|
|
18604
|
+
}
|
|
18605
|
+
if (tableRef.current.scrollHeight <= tableRef.current.clientHeight) {
|
|
18606
|
+
onEndReachedInternal();
|
|
18607
|
+
}
|
|
18608
|
+
}, [bounds.height, data?.length, loading, onEndReached, onEndReachedInternal]);
|
|
18220
18609
|
const onScroll = React.useCallback(({
|
|
18221
18610
|
scrollDirection,
|
|
18222
|
-
scrollOffset
|
|
18611
|
+
scrollOffset,
|
|
18223
18612
|
scrollUpdateWasRequested
|
|
18224
18613
|
}) => {
|
|
18225
18614
|
if (onScrollProp) {
|
|
18226
18615
|
debouncedScroll({
|
|
18227
18616
|
scrollDirection,
|
|
18228
|
-
scrollOffset
|
|
18617
|
+
scrollOffset,
|
|
18229
18618
|
scrollUpdateWasRequested
|
|
18230
18619
|
});
|
|
18231
18620
|
}
|
|
18232
|
-
if (!scrollUpdateWasRequested &&
|
|
18233
|
-
}, [maxScroll, onEndReachedInternal]);
|
|
18621
|
+
if (!scrollUpdateWasRequested && scrollOffset >= maxScroll - endOffset) onEndReachedInternal();
|
|
18622
|
+
}, [endOffset, maxScroll, onEndReachedInternal]);
|
|
18234
18623
|
const onFilterUpdateInternal = React.useCallback((column_1, filterForProperty) => {
|
|
18235
|
-
|
|
18624
|
+
lastEndReachedDataLength.current = void 0;
|
|
18236
18625
|
const filter_0 = filterRef.current;
|
|
18237
18626
|
let newFilterValue = filter_0 ? {
|
|
18238
18627
|
...filter_0
|
|
@@ -18434,7 +18823,7 @@
|
|
|
18434
18823
|
let t1;
|
|
18435
18824
|
if ($[0] !== text) {
|
|
18436
18825
|
const urlRegex = /https?:\/\/[^\s]+/g;
|
|
18437
|
-
t1 = text.replace(urlRegex, _temp$
|
|
18826
|
+
t1 = text.replace(urlRegex, _temp$n);
|
|
18438
18827
|
$[0] = text;
|
|
18439
18828
|
$[1] = t1;
|
|
18440
18829
|
} else {
|
|
@@ -18453,7 +18842,7 @@
|
|
|
18453
18842
|
}
|
|
18454
18843
|
return t2;
|
|
18455
18844
|
};
|
|
18456
|
-
function _temp$
|
|
18845
|
+
function _temp$n(url) {
|
|
18457
18846
|
return `<a href="${url}" class="underline" target="_blank">Link</a><br/>`;
|
|
18458
18847
|
}
|
|
18459
18848
|
const operationLabels$2 = {
|
|
@@ -18527,10 +18916,10 @@
|
|
|
18527
18916
|
return path ? navigationController.getCollection(path) : void 0;
|
|
18528
18917
|
}, [path]);
|
|
18529
18918
|
const onSingleEntitySelected = (entity) => {
|
|
18530
|
-
updateFilter(operation, getReferenceFrom(entity));
|
|
18919
|
+
if (entity) updateFilter(operation, getReferenceFrom(entity));
|
|
18531
18920
|
};
|
|
18532
18921
|
const onMultipleEntitiesSelected = (entities) => {
|
|
18533
|
-
updateFilter(operation, entities.map((e) => getReferenceFrom(e)));
|
|
18922
|
+
updateFilter(operation, entities.filter(Boolean).map((e) => getReferenceFrom(e)));
|
|
18534
18923
|
};
|
|
18535
18924
|
const multiple = multipleSelectOperations$2.includes(operation);
|
|
18536
18925
|
const referenceDialogController = useReferenceDialog({
|
|
@@ -18705,7 +19094,7 @@
|
|
|
18705
19094
|
}
|
|
18706
19095
|
let t8;
|
|
18707
19096
|
if ($[20] !== operation || $[21] !== t6 || $[22] !== t7) {
|
|
18708
|
-
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t6, renderValue: _temp$
|
|
19097
|
+
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t6, renderValue: _temp$m, children: t7 }) });
|
|
18709
19098
|
$[20] = operation;
|
|
18710
19099
|
$[21] = t6;
|
|
18711
19100
|
$[22] = t7;
|
|
@@ -18759,7 +19148,7 @@
|
|
|
18759
19148
|
let t11;
|
|
18760
19149
|
if ($[40] !== dataType || $[41] !== enumValues || $[42] !== internalValue || $[43] !== isNullOperation || $[44] !== multiple || $[45] !== name || $[46] !== operation || $[47] !== updateFilter) {
|
|
18761
19150
|
t11 = enumValues && multiple && /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelect, { size: "medium", position: "item-aligned", value: Array.isArray(internalValue) ? internalValue.map(_temp3$3) : [], disabled: isNullOperation, onValueChange: (value_2) => {
|
|
18762
|
-
updateFilter(operation, dataType === "number" ? value_2.map(_temp4$
|
|
19151
|
+
updateFilter(operation, dataType === "number" ? value_2.map(_temp4$3) : value_2);
|
|
18763
19152
|
}, multiple, endAdornment: internalValue && /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { className: "absolute right-2 top-3", onClick: (e_2) => updateFilter(operation, void 0), children: /* @__PURE__ */ jsxRuntime.jsx(ui.CloseIcon, {}) }), children: enumValues.map((enumConfig_0) => /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelectItem, { value: String(enumConfig_0.id), children: /* @__PURE__ */ jsxRuntime.jsx(EnumValuesChip, { enumKey: String(enumConfig_0.id), enumValues, size: "small" }) }, `select_value_${name}_${enumConfig_0.id}`)) });
|
|
18764
19153
|
$[40] = dataType;
|
|
18765
19154
|
$[41] = enumValues;
|
|
@@ -18801,7 +19190,7 @@
|
|
|
18801
19190
|
}
|
|
18802
19191
|
return t13;
|
|
18803
19192
|
}
|
|
18804
|
-
function _temp4$
|
|
19193
|
+
function _temp4$3(v) {
|
|
18805
19194
|
return parseInt(v);
|
|
18806
19195
|
}
|
|
18807
19196
|
function _temp3$3(e_1) {
|
|
@@ -18810,7 +19199,7 @@
|
|
|
18810
19199
|
function _temp2$6(op_2) {
|
|
18811
19200
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: op_2, children: operationLabels$1[op_2] }, op_2);
|
|
18812
19201
|
}
|
|
18813
|
-
function _temp$
|
|
19202
|
+
function _temp$m(op_1) {
|
|
18814
19203
|
return operationLabels$1[op_1];
|
|
18815
19204
|
}
|
|
18816
19205
|
function BooleanFilterField(t0) {
|
|
@@ -18981,7 +19370,7 @@
|
|
|
18981
19370
|
}
|
|
18982
19371
|
let t8;
|
|
18983
19372
|
if ($[17] !== operation || $[18] !== t6 || $[19] !== t7) {
|
|
18984
|
-
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$
|
|
19373
|
+
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$l, children: t7 }) });
|
|
18985
19374
|
$[17] = operation;
|
|
18986
19375
|
$[18] = t6;
|
|
18987
19376
|
$[19] = t7;
|
|
@@ -19031,7 +19420,7 @@
|
|
|
19031
19420
|
function _temp2$5(op_2) {
|
|
19032
19421
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: op_2, children: operationLabels[op_2] }, op_2);
|
|
19033
19422
|
}
|
|
19034
|
-
function _temp$
|
|
19423
|
+
function _temp$l(op_1) {
|
|
19035
19424
|
return operationLabels[op_1];
|
|
19036
19425
|
}
|
|
19037
19426
|
const SelectableTable = function SelectableTable2({
|
|
@@ -19281,7 +19670,8 @@
|
|
|
19281
19670
|
const columnsResult = propertiesToColumns({
|
|
19282
19671
|
properties,
|
|
19283
19672
|
sortable: sortable2,
|
|
19284
|
-
|
|
19673
|
+
forcedFilters: tableController.forcedFilters,
|
|
19674
|
+
allowedFilters: tableController.allowedFilters,
|
|
19285
19675
|
AdditionalHeaderWidget
|
|
19286
19676
|
});
|
|
19287
19677
|
const propertyColumnKeys = new Set(columnsResult.map((col) => col.key));
|
|
@@ -19428,7 +19818,26 @@
|
|
|
19428
19818
|
filterValues: initialFilterUrl,
|
|
19429
19819
|
sortBy: initialSortUrl
|
|
19430
19820
|
} = parseFilterAndSort(location.search);
|
|
19431
|
-
const
|
|
19821
|
+
const availableFilterKeys = collection.allowedFilters ?? Object.keys(collection.properties);
|
|
19822
|
+
const forcedFilterKeys = collection.forceFilter ? Object.keys(collection.forceFilter) : [];
|
|
19823
|
+
const allowedFilterKeys = React.useMemo(() => {
|
|
19824
|
+
const availableKeys = availableFilterKeys.filter((key) => {
|
|
19825
|
+
const property = collection.properties[key];
|
|
19826
|
+
if (!property) return false;
|
|
19827
|
+
if (typeof property === "function") return false;
|
|
19828
|
+
const dataType = property.dataType;
|
|
19829
|
+
const filterable = dataType === "array" ? isDataTypeFilterable(property.of?.dataType, true) : isDataTypeFilterable(dataType);
|
|
19830
|
+
return filterable;
|
|
19831
|
+
});
|
|
19832
|
+
const forcedKeys = forcedFilterKeys.filter((key_0) => !availableKeys.includes(key_0));
|
|
19833
|
+
return [...availableKeys, ...forcedKeys];
|
|
19834
|
+
}, [collection.properties, availableFilterKeys, forcedFilterKeys]);
|
|
19835
|
+
const removeUnallowedFilters = React.useCallback((filters) => {
|
|
19836
|
+
if (!filters) return;
|
|
19837
|
+
return Object.fromEntries(Object.entries(filters).filter(([key_1]) => allowedFilterKeys.includes(key_1)));
|
|
19838
|
+
}, [allowedFilterKeys]);
|
|
19839
|
+
const initFilters = forceFilter ?? (updateUrl ? initialFilterUrl : void 0) ?? initialFilter ?? void 0;
|
|
19840
|
+
const [filterValues_0, setFilterValues] = React.useState(removeUnallowedFilters(initFilters));
|
|
19432
19841
|
const [sortBy_0, setSortBy] = React.useState((updateUrl ? initialSortUrl : void 0) ?? initialSortInternal);
|
|
19433
19842
|
useUpdateUrl(filterValues_0, sortBy_0, searchString, updateUrl);
|
|
19434
19843
|
const collectionScroll = scrollRestoration?.getCollectionScroll(fullPath, filterValues_0);
|
|
@@ -19451,7 +19860,7 @@
|
|
|
19451
19860
|
const [dataLoading, setDataLoading] = React.useState(false);
|
|
19452
19861
|
const [dataLoadingError, setDataLoadingError] = React.useState();
|
|
19453
19862
|
const [noMoreToLoad, setNoMoreToLoad] = React.useState(false);
|
|
19454
|
-
const clearFilter = React.useCallback(() => setFilterValues(forceFilter
|
|
19863
|
+
const clearFilter = React.useCallback(() => setFilterValues(removeUnallowedFilters(forceFilter)), [forceFilter, removeUnallowedFilters]);
|
|
19455
19864
|
const updateFilterValues = React.useCallback((updatedFilter) => {
|
|
19456
19865
|
if (forceFilter) {
|
|
19457
19866
|
console.warn("Filter is not compatible with the force filter. Ignoring filter");
|
|
@@ -19460,9 +19869,9 @@
|
|
|
19460
19869
|
if (updatedFilter && Object.keys(updatedFilter).length === 0) {
|
|
19461
19870
|
setFilterValues(void 0);
|
|
19462
19871
|
} else {
|
|
19463
|
-
setFilterValues(updatedFilter);
|
|
19872
|
+
setFilterValues(removeUnallowedFilters(updatedFilter));
|
|
19464
19873
|
}
|
|
19465
|
-
}, [forceFilter]);
|
|
19874
|
+
}, [forceFilter, removeUnallowedFilters]);
|
|
19466
19875
|
React.useEffect(() => {
|
|
19467
19876
|
setDataLoading(true);
|
|
19468
19877
|
const onEntitiesUpdate = async (entities) => {
|
|
@@ -19537,6 +19946,8 @@
|
|
|
19537
19946
|
dataLoadingError,
|
|
19538
19947
|
filterValues: filterValues_0,
|
|
19539
19948
|
setFilterValues: updateFilterValues,
|
|
19949
|
+
allowedFilters: allowedFilterKeys,
|
|
19950
|
+
forcedFilters: forcedFilterKeys,
|
|
19540
19951
|
sortBy: sortBy_0,
|
|
19541
19952
|
setSortBy,
|
|
19542
19953
|
searchString,
|
|
@@ -19617,7 +20028,7 @@
|
|
|
19617
20028
|
}
|
|
19618
20029
|
if (encodedValue !== void 0) {
|
|
19619
20030
|
entries[encodeURIComponent(`${key}_op`)] = encodeURIComponent(op);
|
|
19620
|
-
entries[encodeURIComponent(`${key}_value`)] = encodedValue ? encodeURIComponent(encodedValue.toString()) : "null";
|
|
20031
|
+
entries[encodeURIComponent(`${key}_value`)] = encodedValue !== null && encodedValue !== void 0 ? encodeURIComponent(encodedValue.toString()) : "null";
|
|
19621
20032
|
}
|
|
19622
20033
|
}
|
|
19623
20034
|
});
|
|
@@ -19657,7 +20068,12 @@
|
|
|
19657
20068
|
return date.toISOString() === dateString;
|
|
19658
20069
|
}
|
|
19659
20070
|
function encodeRef(val) {
|
|
19660
|
-
return `ref::${val.path}/${val.id}`;
|
|
20071
|
+
return `ref::${val.path}/${encodeEntityId(val.id)}`;
|
|
20072
|
+
}
|
|
20073
|
+
function decodeRef(encoded) {
|
|
20074
|
+
const separatorIndex = encoded.lastIndexOf("/");
|
|
20075
|
+
if (separatorIndex < 0) return new EntityReference(encoded, "");
|
|
20076
|
+
return new EntityReference(decodeEntityId(encoded.substring(separatorIndex + 1)), encoded.substring(0, separatorIndex));
|
|
19661
20077
|
}
|
|
19662
20078
|
function decodeString(val) {
|
|
19663
20079
|
let parsedFilterVal = val;
|
|
@@ -19671,8 +20087,7 @@
|
|
|
19671
20087
|
try {
|
|
19672
20088
|
parsedFilterVal = JSON.parse(parsedFilterVal, (key, value) => {
|
|
19673
20089
|
if (typeof value === "string" && value.startsWith("ref::")) {
|
|
19674
|
-
|
|
19675
|
-
return new EntityReference(id, path);
|
|
20090
|
+
return decodeRef(value.substring(5));
|
|
19676
20091
|
}
|
|
19677
20092
|
return value;
|
|
19678
20093
|
});
|
|
@@ -19680,8 +20095,7 @@
|
|
|
19680
20095
|
}
|
|
19681
20096
|
}
|
|
19682
20097
|
if (typeof parsedFilterVal === "string" && parsedFilterVal.startsWith("ref::")) {
|
|
19683
|
-
|
|
19684
|
-
return new EntityReference(id, path);
|
|
20098
|
+
return decodeRef(parsedFilterVal.substring(5));
|
|
19685
20099
|
}
|
|
19686
20100
|
return parsedFilterVal;
|
|
19687
20101
|
}
|
|
@@ -19760,7 +20174,7 @@
|
|
|
19760
20174
|
const searchBlocked = t12;
|
|
19761
20175
|
let t2;
|
|
19762
20176
|
if ($[15] !== customizationController.plugins || $[16] !== dataSource?.initTextSearch) {
|
|
19763
|
-
t2 = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$
|
|
20177
|
+
t2 = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$k);
|
|
19764
20178
|
$[15] = customizationController.plugins;
|
|
19765
20179
|
$[16] = dataSource?.initTextSearch;
|
|
19766
20180
|
$[17] = t2;
|
|
@@ -19852,7 +20266,7 @@
|
|
|
19852
20266
|
}
|
|
19853
20267
|
return t1;
|
|
19854
20268
|
}
|
|
19855
|
-
function _temp$
|
|
20269
|
+
function _temp$k(p_0) {
|
|
19856
20270
|
return Boolean(p_0.collectionView?.onTextSearchClick);
|
|
19857
20271
|
}
|
|
19858
20272
|
function DeleteEntityDialog({
|
|
@@ -20474,7 +20888,7 @@
|
|
|
20474
20888
|
T0 = ui.Collapse;
|
|
20475
20889
|
t4 = favouriteCollections.length > 0;
|
|
20476
20890
|
t2 = "flex flex-row flex-wrap gap-2 pb-2 min-h-[32px]";
|
|
20477
|
-
t3 = favouriteCollections.map(_temp$
|
|
20891
|
+
t3 = favouriteCollections.map(_temp$j);
|
|
20478
20892
|
$[2] = navigationController;
|
|
20479
20893
|
$[3] = t1;
|
|
20480
20894
|
$[4] = T0;
|
|
@@ -20508,7 +20922,7 @@
|
|
|
20508
20922
|
}
|
|
20509
20923
|
return t6;
|
|
20510
20924
|
}
|
|
20511
|
-
function _temp$
|
|
20925
|
+
function _temp$j(entry_0) {
|
|
20512
20926
|
return /* @__PURE__ */ jsxRuntime.jsx(NavigationChip, { entry: entry_0 }, entry_0.path);
|
|
20513
20927
|
}
|
|
20514
20928
|
const scrollsMap = {};
|
|
@@ -20745,7 +21159,7 @@
|
|
|
20745
21159
|
}
|
|
20746
21160
|
let t4;
|
|
20747
21161
|
if ($[4] !== actions) {
|
|
20748
|
-
t4 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$
|
|
21162
|
+
t4 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$i, children: actions });
|
|
20749
21163
|
$[4] = actions;
|
|
20750
21164
|
$[5] = t4;
|
|
20751
21165
|
} else {
|
|
@@ -20832,7 +21246,7 @@
|
|
|
20832
21246
|
}
|
|
20833
21247
|
return t12;
|
|
20834
21248
|
});
|
|
20835
|
-
function _temp$
|
|
21249
|
+
function _temp$i(event) {
|
|
20836
21250
|
event.preventDefault();
|
|
20837
21251
|
event.stopPropagation();
|
|
20838
21252
|
}
|
|
@@ -20892,7 +21306,7 @@
|
|
|
20892
21306
|
return t5;
|
|
20893
21307
|
}
|
|
20894
21308
|
function NavigationCardBinding(t0) {
|
|
20895
|
-
const $ = reactCompilerRuntime.c(
|
|
21309
|
+
const $ = reactCompilerRuntime.c(38);
|
|
20896
21310
|
const {
|
|
20897
21311
|
path,
|
|
20898
21312
|
collection,
|
|
@@ -20905,6 +21319,9 @@
|
|
|
20905
21319
|
shrink
|
|
20906
21320
|
} = t0;
|
|
20907
21321
|
const userConfigurationPersistence = useUserConfigurationPersistence();
|
|
21322
|
+
const {
|
|
21323
|
+
t
|
|
21324
|
+
} = useTranslation();
|
|
20908
21325
|
const t1 = collection ?? view;
|
|
20909
21326
|
let t2;
|
|
20910
21327
|
if ($[0] !== t1) {
|
|
@@ -20977,51 +21394,61 @@
|
|
|
20977
21394
|
t5 = $[13];
|
|
20978
21395
|
}
|
|
20979
21396
|
const actions = t5;
|
|
21397
|
+
let t6;
|
|
21398
|
+
if ($[18] !== name || $[19] !== t) {
|
|
21399
|
+
t6 = t(name);
|
|
21400
|
+
$[18] = name;
|
|
21401
|
+
$[19] = t;
|
|
21402
|
+
$[20] = t6;
|
|
21403
|
+
} else {
|
|
21404
|
+
t6 = $[20];
|
|
21405
|
+
}
|
|
21406
|
+
const translatedName = t6;
|
|
20980
21407
|
if (type === "admin") {
|
|
20981
|
-
let
|
|
20982
|
-
if ($[
|
|
20983
|
-
|
|
20984
|
-
$[
|
|
20985
|
-
$[
|
|
20986
|
-
$[
|
|
20987
|
-
$[
|
|
21408
|
+
let t72;
|
|
21409
|
+
if ($[21] !== collectionIcon || $[22] !== translatedName || $[23] !== url) {
|
|
21410
|
+
t72 = /* @__PURE__ */ jsxRuntime.jsx(SmallNavigationCard, { icon: collectionIcon, name: translatedName, url });
|
|
21411
|
+
$[21] = collectionIcon;
|
|
21412
|
+
$[22] = translatedName;
|
|
21413
|
+
$[23] = url;
|
|
21414
|
+
$[24] = t72;
|
|
20988
21415
|
} else {
|
|
20989
|
-
|
|
21416
|
+
t72 = $[24];
|
|
20990
21417
|
}
|
|
20991
|
-
return
|
|
21418
|
+
return t72;
|
|
20992
21419
|
}
|
|
20993
|
-
let
|
|
20994
|
-
if ($[
|
|
20995
|
-
|
|
21420
|
+
let t7;
|
|
21421
|
+
if ($[25] !== navigate || $[26] !== onClick || $[27] !== path || $[28] !== url || $[29] !== userConfigurationPersistence) {
|
|
21422
|
+
t7 = () => {
|
|
20996
21423
|
onClick?.();
|
|
20997
21424
|
navigate(url);
|
|
20998
21425
|
if (userConfigurationPersistence) {
|
|
20999
21426
|
userConfigurationPersistence.setRecentlyVisitedPaths([path, ...(userConfigurationPersistence.recentlyVisitedPaths ?? []).filter((p_0) => p_0 !== path)]);
|
|
21000
21427
|
}
|
|
21001
21428
|
};
|
|
21002
|
-
$[
|
|
21003
|
-
$[
|
|
21004
|
-
$[
|
|
21005
|
-
$[
|
|
21006
|
-
$[
|
|
21007
|
-
$[
|
|
21429
|
+
$[25] = navigate;
|
|
21430
|
+
$[26] = onClick;
|
|
21431
|
+
$[27] = path;
|
|
21432
|
+
$[28] = url;
|
|
21433
|
+
$[29] = userConfigurationPersistence;
|
|
21434
|
+
$[30] = t7;
|
|
21008
21435
|
} else {
|
|
21009
|
-
|
|
21436
|
+
t7 = $[30];
|
|
21010
21437
|
}
|
|
21011
|
-
let
|
|
21012
|
-
if ($[
|
|
21013
|
-
|
|
21014
|
-
$[
|
|
21015
|
-
$[
|
|
21016
|
-
$[
|
|
21017
|
-
$[
|
|
21018
|
-
$[
|
|
21019
|
-
$[
|
|
21020
|
-
$[
|
|
21438
|
+
let t8;
|
|
21439
|
+
if ($[31] !== actions || $[32] !== collectionIcon || $[33] !== description || $[34] !== shrink || $[35] !== t7 || $[36] !== translatedName) {
|
|
21440
|
+
t8 = /* @__PURE__ */ jsxRuntime.jsx(NavigationCard, { icon: collectionIcon, name: translatedName, description, actions, onClick: t7, shrink });
|
|
21441
|
+
$[31] = actions;
|
|
21442
|
+
$[32] = collectionIcon;
|
|
21443
|
+
$[33] = description;
|
|
21444
|
+
$[34] = shrink;
|
|
21445
|
+
$[35] = t7;
|
|
21446
|
+
$[36] = translatedName;
|
|
21447
|
+
$[37] = t8;
|
|
21021
21448
|
} else {
|
|
21022
|
-
|
|
21449
|
+
t8 = $[37];
|
|
21023
21450
|
}
|
|
21024
|
-
return
|
|
21451
|
+
return t8;
|
|
21025
21452
|
}
|
|
21026
21453
|
const animateLayoutChanges = (args) => sortable.defaultAnimateLayoutChanges({
|
|
21027
21454
|
...args,
|
|
@@ -23175,7 +23602,7 @@
|
|
|
23175
23602
|
let t19;
|
|
23176
23603
|
let t20;
|
|
23177
23604
|
if ($[19] !== items2) {
|
|
23178
|
-
t20 = items2.map(_temp$
|
|
23605
|
+
t20 = items2.map(_temp$h);
|
|
23179
23606
|
$[19] = items2;
|
|
23180
23607
|
$[20] = t20;
|
|
23181
23608
|
} else {
|
|
@@ -23281,7 +23708,7 @@
|
|
|
23281
23708
|
}
|
|
23282
23709
|
return t29;
|
|
23283
23710
|
});
|
|
23284
|
-
function _temp$
|
|
23711
|
+
function _temp$h(i) {
|
|
23285
23712
|
return i.id;
|
|
23286
23713
|
}
|
|
23287
23714
|
function Board(t0) {
|
|
@@ -25217,7 +25644,8 @@
|
|
|
25217
25644
|
properties,
|
|
25218
25645
|
filterValues,
|
|
25219
25646
|
setFilterValues,
|
|
25220
|
-
forceFilter
|
|
25647
|
+
forceFilter,
|
|
25648
|
+
allowedFilters
|
|
25221
25649
|
}) {
|
|
25222
25650
|
const {
|
|
25223
25651
|
t
|
|
@@ -25229,15 +25657,14 @@
|
|
|
25229
25657
|
setLocalFilters(filterValues ?? {});
|
|
25230
25658
|
}
|
|
25231
25659
|
}, [open, filterValues]);
|
|
25232
|
-
const
|
|
25233
|
-
return Object.entries(properties).filter(([key
|
|
25234
|
-
|
|
25235
|
-
|
|
25236
|
-
|
|
25237
|
-
if (!baseProperty) return false;
|
|
25238
|
-
return ["string", "number", "boolean", "date", "reference"].includes(baseProperty.dataType);
|
|
25660
|
+
const editableFilterProperties = React.useMemo(() => {
|
|
25661
|
+
return Object.entries(properties).filter(([key]) => {
|
|
25662
|
+
const isFilterAllowed = !allowedFilters || allowedFilters.includes(key);
|
|
25663
|
+
const isFilterForced = Boolean(forceFilter && Object.keys(forceFilter).includes(key));
|
|
25664
|
+
return isFilterAllowed && !isFilterForced;
|
|
25239
25665
|
});
|
|
25240
|
-
}, [properties, forceFilter]);
|
|
25666
|
+
}, [properties, allowedFilters, forceFilter]);
|
|
25667
|
+
const hasEditableFilterProperties = editableFilterProperties.length > 0;
|
|
25241
25668
|
const handleFilterChange = React.useCallback((propertyKey, value) => {
|
|
25242
25669
|
setLocalFilters((prev) => {
|
|
25243
25670
|
const newFilters = {
|
|
@@ -25269,22 +25696,26 @@
|
|
|
25269
25696
|
}));
|
|
25270
25697
|
}, []);
|
|
25271
25698
|
const isAnyFieldHidden = Object.values(hiddenFields).some((hidden_0) => hidden_0);
|
|
25272
|
-
const
|
|
25273
|
-
|
|
25274
|
-
|
|
25275
|
-
|
|
25276
|
-
|
|
25699
|
+
const getActiveFilterCount = () => {
|
|
25700
|
+
const editableLocalFilters = Object.keys(localFilters).filter((key_0) => !forceFilter || !(key_0 in forceFilter));
|
|
25701
|
+
return editableLocalFilters.length;
|
|
25702
|
+
};
|
|
25703
|
+
const activeFilterCount = getActiveFilterCount();
|
|
25704
|
+
const renderFilterField = React.useCallback((propertyKey_1, property) => {
|
|
25705
|
+
const isArray = property.dataType === "array";
|
|
25706
|
+
const baseProperty = isArray ? property.of : property;
|
|
25707
|
+
if (!baseProperty) return null;
|
|
25277
25708
|
const filterValue = localFilters[propertyKey_1];
|
|
25278
25709
|
const setValue = (value_0) => handleFilterChange(propertyKey_1, value_0);
|
|
25279
|
-
if (
|
|
25280
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ReferenceFilterField, { value: filterValue, setValue, name: propertyKey_1, isArray, path:
|
|
25281
|
-
} else if (
|
|
25282
|
-
const enumValues =
|
|
25283
|
-
return /* @__PURE__ */ jsxRuntime.jsx(StringNumberFilterField, { value: filterValue, setValue, name: propertyKey_1, dataType:
|
|
25284
|
-
} else if (
|
|
25285
|
-
return /* @__PURE__ */ jsxRuntime.jsx(BooleanFilterField, { value: filterValue, setValue, name: propertyKey_1, title:
|
|
25286
|
-
} else if (
|
|
25287
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterField, { value: filterValue, setValue, name: propertyKey_1, mode:
|
|
25710
|
+
if (baseProperty.dataType === "reference") {
|
|
25711
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ReferenceFilterField, { value: filterValue, setValue, name: propertyKey_1, isArray, path: baseProperty.path, title: property.name, includeId: baseProperty.includeId, previewProperties: baseProperty.previewProperties, hidden: hiddenFields[propertyKey_1] ?? false, setHidden: (hidden_1) => setHiddenForField(propertyKey_1, hidden_1) });
|
|
25712
|
+
} else if (baseProperty.dataType === "number" || baseProperty.dataType === "string") {
|
|
25713
|
+
const enumValues = baseProperty.enumValues ? enumToObjectEntries(baseProperty.enumValues) : void 0;
|
|
25714
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StringNumberFilterField, { value: filterValue, setValue, name: propertyKey_1, dataType: baseProperty.dataType, isArray, enumValues, title: property.name });
|
|
25715
|
+
} else if (baseProperty.dataType === "boolean") {
|
|
25716
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BooleanFilterField, { value: filterValue, setValue, name: propertyKey_1, title: property.name });
|
|
25717
|
+
} else if (baseProperty.dataType === "date") {
|
|
25718
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterField, { value: filterValue, setValue, name: propertyKey_1, mode: baseProperty.mode, isArray, title: property.name });
|
|
25288
25719
|
}
|
|
25289
25720
|
return null;
|
|
25290
25721
|
}, [localFilters, handleFilterChange, hiddenFields, setHiddenForField]);
|
|
@@ -25293,23 +25724,25 @@
|
|
|
25293
25724
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: "h6", children: t("filters") }),
|
|
25294
25725
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 px-2 py-0.5 text-xs rounded-full bg-primary text-white", children: activeFilterCount })
|
|
25295
25726
|
] }),
|
|
25296
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogContent, { children:
|
|
25727
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogContent, { children: !hasEditableFilterProperties ? /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { color: "secondary", className: "py-8 text-center", children: t("no_filterable_properties") }) : /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full border-collapse", children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: editableFilterProperties.map(([propertyKey_2, property_0], index) => {
|
|
25297
25728
|
const hasFilter = propertyKey_2 in localFilters;
|
|
25298
25729
|
return /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: ui.cls(index > 0 && "border-t", ui.defaultBorderMixin), children: [
|
|
25299
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 pr-4 align-middle w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: "body2", className: ui.cls("font-medium", hasFilter && "text-primary"), children:
|
|
25300
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3", children: renderFilterField(propertyKey_2,
|
|
25730
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 pr-4 align-middle w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: "body2", className: ui.cls("font-medium", hasFilter && "text-primary"), children: property_0.name || propertyKey_2 }) }),
|
|
25731
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3", children: renderFilterField(propertyKey_2, property_0) })
|
|
25301
25732
|
] }, propertyKey_2);
|
|
25302
25733
|
}) }) }) }),
|
|
25303
25734
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogActions, { children: [
|
|
25304
25735
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "text", onClick: handleClearAll, disabled: activeFilterCount === 0, children: t("clear") }),
|
|
25305
25736
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-grow" }),
|
|
25306
|
-
/* @__PURE__ */ jsxRuntime.
|
|
25307
|
-
|
|
25737
|
+
hasEditableFilterProperties && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25738
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "text", onClick: () => onOpenChange(false), children: t("cancel") }),
|
|
25739
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "filled", onClick: handleApply, children: t("apply_filters") })
|
|
25740
|
+
] })
|
|
25308
25741
|
] })
|
|
25309
25742
|
] });
|
|
25310
25743
|
}
|
|
25311
25744
|
function EntityCollectionViewStartActions(t0) {
|
|
25312
|
-
const $ = reactCompilerRuntime.c(
|
|
25745
|
+
const $ = reactCompilerRuntime.c(37);
|
|
25313
25746
|
const {
|
|
25314
25747
|
collection,
|
|
25315
25748
|
relativePath,
|
|
@@ -25373,34 +25806,36 @@
|
|
|
25373
25806
|
t3 = $[13];
|
|
25374
25807
|
}
|
|
25375
25808
|
const actionProps = t3;
|
|
25809
|
+
const hasAnyAllowedFilters = !tableController.allowedFilters || tableController.allowedFilters.length > 0;
|
|
25376
25810
|
let t4;
|
|
25377
|
-
if ($[14] !== activeFilterCount || $[15] !==
|
|
25378
|
-
t4 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: t("filters"), children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "primary", invisible: activeFilterCount === 0, children: largeLayout ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "text", size: "small", onClick: () => setFiltersDialogOpen(true), startIcon: /* @__PURE__ */ jsxRuntime.jsx(ui.FilterListIcon, { size: "small" }), className: ui.cls(activeFilterCount > 0 && "text-primary"), children: [
|
|
25811
|
+
if ($[14] !== activeFilterCount || $[15] !== hasAnyAllowedFilters || $[16] !== largeLayout || $[17] !== resolvedProperties || $[18] !== t || $[19] !== tableController.setFilterValues) {
|
|
25812
|
+
t4 = resolvedProperties && tableController.setFilterValues && hasAnyAllowedFilters && /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: t("filters"), children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "primary", invisible: activeFilterCount === 0, children: largeLayout ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "text", size: "small", onClick: () => setFiltersDialogOpen(true), startIcon: /* @__PURE__ */ jsxRuntime.jsx(ui.FilterListIcon, { size: "small" }), className: ui.cls(activeFilterCount > 0 && "text-primary"), children: [
|
|
25379
25813
|
t("filters"),
|
|
25380
25814
|
activeFilterCount > 0 ? ` (${activeFilterCount})` : ""
|
|
25381
25815
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { size: "small", onClick: () => setFiltersDialogOpen(true), className: ui.cls(activeFilterCount > 0 && "text-primary"), children: /* @__PURE__ */ jsxRuntime.jsx(ui.FilterListIcon, { size: "small" }) }) }) }, "filters_tooltip");
|
|
25382
25816
|
$[14] = activeFilterCount;
|
|
25383
|
-
$[15] =
|
|
25384
|
-
$[16] =
|
|
25385
|
-
$[17] =
|
|
25386
|
-
$[18] =
|
|
25387
|
-
$[19] =
|
|
25817
|
+
$[15] = hasAnyAllowedFilters;
|
|
25818
|
+
$[16] = largeLayout;
|
|
25819
|
+
$[17] = resolvedProperties;
|
|
25820
|
+
$[18] = t;
|
|
25821
|
+
$[19] = tableController.setFilterValues;
|
|
25822
|
+
$[20] = t4;
|
|
25388
25823
|
} else {
|
|
25389
|
-
t4 = $[
|
|
25824
|
+
t4 = $[20];
|
|
25390
25825
|
}
|
|
25391
25826
|
const filtersButton = t4;
|
|
25392
25827
|
const t5 = !collection.forceFilter;
|
|
25393
25828
|
let t6;
|
|
25394
|
-
if ($[
|
|
25829
|
+
if ($[21] !== t5 || $[22] !== tableController) {
|
|
25395
25830
|
t6 = /* @__PURE__ */ jsxRuntime.jsx(ClearFilterSortButton, { tableController, enabled: t5 }, "clear_filter");
|
|
25396
|
-
$[
|
|
25397
|
-
$[
|
|
25398
|
-
$[
|
|
25831
|
+
$[21] = t5;
|
|
25832
|
+
$[22] = tableController;
|
|
25833
|
+
$[23] = t6;
|
|
25399
25834
|
} else {
|
|
25400
|
-
t6 = $[
|
|
25835
|
+
t6 = $[23];
|
|
25401
25836
|
}
|
|
25402
25837
|
let actions;
|
|
25403
|
-
if ($[
|
|
25838
|
+
if ($[24] !== actionProps || $[25] !== filtersButton || $[26] !== plugins || $[27] !== t6) {
|
|
25404
25839
|
actions = [filtersButton, t6];
|
|
25405
25840
|
if (plugins) {
|
|
25406
25841
|
plugins.forEach((plugin, i) => {
|
|
@@ -25409,39 +25844,42 @@
|
|
|
25409
25844
|
}
|
|
25410
25845
|
});
|
|
25411
25846
|
}
|
|
25412
|
-
$[
|
|
25413
|
-
$[
|
|
25414
|
-
$[
|
|
25415
|
-
$[
|
|
25416
|
-
$[
|
|
25847
|
+
$[24] = actionProps;
|
|
25848
|
+
$[25] = filtersButton;
|
|
25849
|
+
$[26] = plugins;
|
|
25850
|
+
$[27] = t6;
|
|
25851
|
+
$[28] = actions;
|
|
25417
25852
|
} else {
|
|
25418
|
-
actions = $[
|
|
25853
|
+
actions = $[28];
|
|
25419
25854
|
}
|
|
25420
25855
|
let t7;
|
|
25421
|
-
if ($[
|
|
25422
|
-
t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsxRuntime.jsx(FiltersDialog, { open: filtersDialogOpen, onOpenChange: setFiltersDialogOpen, properties: resolvedProperties, filterValues: tableController.filterValues, setFilterValues: (filterValues_0) => tableController.setFilterValues?.(filterValues_0 ?? {}), forceFilter: collection.forceFilter });
|
|
25423
|
-
$[
|
|
25424
|
-
$[
|
|
25425
|
-
$[
|
|
25426
|
-
$[
|
|
25427
|
-
$[
|
|
25856
|
+
if ($[29] !== collection.forceFilter || $[30] !== filtersDialogOpen || $[31] !== resolvedProperties || $[32] !== tableController) {
|
|
25857
|
+
t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsxRuntime.jsx(FiltersDialog, { open: filtersDialogOpen, onOpenChange: setFiltersDialogOpen, properties: resolvedProperties, filterValues: tableController.filterValues, setFilterValues: (filterValues_0) => tableController.setFilterValues?.(filterValues_0 ?? {}), forceFilter: collection.forceFilter, allowedFilters: tableController.allowedFilters?.map(_temp$g) });
|
|
25858
|
+
$[29] = collection.forceFilter;
|
|
25859
|
+
$[30] = filtersDialogOpen;
|
|
25860
|
+
$[31] = resolvedProperties;
|
|
25861
|
+
$[32] = tableController;
|
|
25862
|
+
$[33] = t7;
|
|
25428
25863
|
} else {
|
|
25429
|
-
t7 = $[
|
|
25864
|
+
t7 = $[33];
|
|
25430
25865
|
}
|
|
25431
25866
|
let t8;
|
|
25432
|
-
if ($[
|
|
25867
|
+
if ($[34] !== actions || $[35] !== t7) {
|
|
25433
25868
|
t8 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25434
25869
|
actions,
|
|
25435
25870
|
t7
|
|
25436
25871
|
] });
|
|
25437
|
-
$[
|
|
25438
|
-
$[
|
|
25439
|
-
$[
|
|
25872
|
+
$[34] = actions;
|
|
25873
|
+
$[35] = t7;
|
|
25874
|
+
$[36] = t8;
|
|
25440
25875
|
} else {
|
|
25441
|
-
t8 = $[
|
|
25876
|
+
t8 = $[36];
|
|
25442
25877
|
}
|
|
25443
25878
|
return t8;
|
|
25444
25879
|
}
|
|
25880
|
+
function _temp$g(key_0) {
|
|
25881
|
+
return key_0.toString();
|
|
25882
|
+
}
|
|
25445
25883
|
const collectionScrollCache = /* @__PURE__ */ new Map();
|
|
25446
25884
|
function useScrollRestoration() {
|
|
25447
25885
|
const updateCollectionScroll = ({
|
|
@@ -25500,7 +25938,12 @@
|
|
|
25500
25938
|
const scrollRestoration = useScrollRestoration();
|
|
25501
25939
|
const collection = React.useMemo(() => {
|
|
25502
25940
|
const userOverride = userConfigPersistence?.getCollectionConfig(fullPath);
|
|
25503
|
-
|
|
25941
|
+
if (!userOverride) return collectionProp;
|
|
25942
|
+
const {
|
|
25943
|
+
properties,
|
|
25944
|
+
...rest
|
|
25945
|
+
} = userOverride;
|
|
25946
|
+
return mergeDeep(collectionProp, rest);
|
|
25504
25947
|
}, [collectionProp, fullPath, userConfigPersistence?.getCollectionConfig]);
|
|
25505
25948
|
const openEntityMode = collection?.openEntityMode ?? DEFAULT_ENTITY_OPEN_MODE;
|
|
25506
25949
|
const collectionRef = React.useRef(collection);
|
|
@@ -25754,11 +26197,12 @@
|
|
|
25754
26197
|
collection,
|
|
25755
26198
|
path: fullPath,
|
|
25756
26199
|
propertyConfigs: customizationController.propertyConfigs,
|
|
25757
|
-
authController
|
|
25758
|
-
|
|
26200
|
+
authController,
|
|
26201
|
+
userConfigPersistence
|
|
26202
|
+
}), [collection, fullPath, userConfigPersistence]);
|
|
25759
26203
|
const hasEnumProperty = React.useMemo(() => {
|
|
25760
|
-
const
|
|
25761
|
-
return Object.values(
|
|
26204
|
+
const properties_0 = resolvedCollection.properties;
|
|
26205
|
+
return Object.values(properties_0).some((prop) => prop && prop.dataType === "string" && prop.enumValues);
|
|
25762
26206
|
}, [resolvedCollection.properties]);
|
|
25763
26207
|
const enabledViews = React.useMemo(() => {
|
|
25764
26208
|
const configured = collection.enabledViews ?? ["table", "cards", "kanban"];
|
|
@@ -25769,8 +26213,8 @@
|
|
|
25769
26213
|
}, [collection.enabledViews, hasEnumProperty]);
|
|
25770
26214
|
const kanbanPropertyOptions = React.useMemo(() => {
|
|
25771
26215
|
const options = [];
|
|
25772
|
-
const
|
|
25773
|
-
for (const [key_0, property_0] of Object.entries(
|
|
26216
|
+
const properties_1 = resolvedCollection.properties;
|
|
26217
|
+
for (const [key_0, property_0] of Object.entries(properties_1)) {
|
|
25774
26218
|
const prop_0 = property_0;
|
|
25775
26219
|
if (prop_0 && prop_0.dataType === "string" && prop_0.enumValues) {
|
|
25776
26220
|
options.push({
|
|
@@ -27133,7 +27577,7 @@
|
|
|
27133
27577
|
const onMultipleEntitiesSelected = React.useCallback((entities) => {
|
|
27134
27578
|
if (disabled) return;
|
|
27135
27579
|
if (onMultipleReferenceSelected) {
|
|
27136
|
-
const references = entities ? entities.map((e) => getReferenceFrom(e)) : null;
|
|
27580
|
+
const references = entities ? entities.filter(Boolean).map((e) => getReferenceFrom(e)) : null;
|
|
27137
27581
|
onMultipleReferenceSelected({
|
|
27138
27582
|
references,
|
|
27139
27583
|
entities
|
|
@@ -27842,7 +28286,7 @@
|
|
|
27842
28286
|
const restOfThePath = removeInitialAndTrailingSlashes(removeInitialAndTrailingSlashes(path).replace(subpathCombination, ""));
|
|
27843
28287
|
const nextSegments = restOfThePath.length > 0 ? restOfThePath.split("/") : [];
|
|
27844
28288
|
if (nextSegments.length > 0) {
|
|
27845
|
-
const entityId = nextSegments[0];
|
|
28289
|
+
const entityId = decodeEntityId(nextSegments[0]);
|
|
27846
28290
|
const fullPath = collectionPath + "/" + entityId;
|
|
27847
28291
|
result.push(new EntityReference(entityId, collectionPath));
|
|
27848
28292
|
if (nextSegments.length > 1) {
|
|
@@ -28073,7 +28517,14 @@
|
|
|
28073
28517
|
if (!collections_0) return void 0;
|
|
28074
28518
|
const baseCollection = getCollectionByPathOrId(removeInitialAndTrailingSlashes(idOrPath), collections_0);
|
|
28075
28519
|
const userOverride = includeUserOverride ? userConfigPersistence?.getCollectionConfig(idOrPath) : void 0;
|
|
28076
|
-
|
|
28520
|
+
let overriddenCollection = baseCollection;
|
|
28521
|
+
if (baseCollection && userOverride) {
|
|
28522
|
+
const {
|
|
28523
|
+
properties,
|
|
28524
|
+
...rest
|
|
28525
|
+
} = userOverride;
|
|
28526
|
+
overriddenCollection = mergeDeep(baseCollection, rest);
|
|
28527
|
+
}
|
|
28077
28528
|
let result = overriddenCollection;
|
|
28078
28529
|
if (overriddenCollection) {
|
|
28079
28530
|
const subcollections = overriddenCollection.subcollections;
|
|
@@ -29581,18 +30032,15 @@
|
|
|
29581
30032
|
const actionsAtTheBottom = !largeLayout || layout === "side_panel" || selectedEntityView?.includeActions === "bottom";
|
|
29582
30033
|
const mainViewVisible = selectedTab === MAIN_TAB_VALUE || Boolean(selectedSecondaryForm);
|
|
29583
30034
|
const authController = useAuthController();
|
|
29584
|
-
const
|
|
29585
|
-
|
|
29586
|
-
|
|
29587
|
-
|
|
29588
|
-
|
|
29589
|
-
|
|
29590
|
-
|
|
29591
|
-
if (!entityId) {
|
|
29592
|
-
return null;
|
|
29593
|
-
}
|
|
30035
|
+
const mountedTabsRef = React.useRef(/* @__PURE__ */ new Set());
|
|
30036
|
+
if (selectedTab) {
|
|
30037
|
+
mountedTabsRef.current.add(selectedTab);
|
|
30038
|
+
}
|
|
30039
|
+
const readOnlyFormContext = React.useMemo(() => {
|
|
30040
|
+
if (formContext) return void 0;
|
|
30041
|
+
if (!entityId) return void 0;
|
|
29594
30042
|
const formexStub = createFormexStub(usedEntity?.values ?? {});
|
|
29595
|
-
|
|
30043
|
+
return {
|
|
29596
30044
|
entityId,
|
|
29597
30045
|
disabled: false,
|
|
29598
30046
|
openEntityMode: layout,
|
|
@@ -29618,18 +30066,34 @@
|
|
|
29618
30066
|
savingError: void 0,
|
|
29619
30067
|
formex: formexStub
|
|
29620
30068
|
};
|
|
30069
|
+
}, [formContext, entityId, layout, status, usedEntity, collection, path, customizationController.propertyConfigs, authController]);
|
|
30070
|
+
const customViewsView = customViews && resolvedEntityViews.filter((e) => !e.includeActions).map((customView) => {
|
|
30071
|
+
if (!customView) return null;
|
|
30072
|
+
const Builder = customView.Builder;
|
|
30073
|
+
if (!Builder) {
|
|
30074
|
+
console.error("INTERNAL: customView.Builder is not defined");
|
|
30075
|
+
return null;
|
|
30076
|
+
}
|
|
30077
|
+
if (!entityId) {
|
|
30078
|
+
return null;
|
|
30079
|
+
}
|
|
30080
|
+
const isActive = selectedTab === customView.key;
|
|
30081
|
+
if (!isActive && !mountedTabsRef.current.has(customView.key)) {
|
|
30082
|
+
return null;
|
|
30083
|
+
}
|
|
30084
|
+
const usedFormContext = formContext ?? readOnlyFormContext;
|
|
29621
30085
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls(ui.defaultBorderMixin, "relative flex-1 w-full h-full overflow-auto", {
|
|
29622
|
-
"hidden":
|
|
30086
|
+
"hidden": !isActive
|
|
29623
30087
|
}), role: "tabpanel", children: /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: usedFormContext && /* @__PURE__ */ jsxRuntime.jsx(Builder, { collection, parentCollectionIds, entity: usedEntity, modifiedValues: usedFormContext?.formex?.values ?? usedEntity?.values, formContext: usedFormContext }) }) }, `custom_view_${customView.key}`);
|
|
29624
30088
|
}).filter(Boolean);
|
|
29625
30089
|
const globalLoading = dataLoading && !usedEntity;
|
|
29626
|
-
const jsonView = /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("relative flex-1 h-full overflow-auto w-full", {
|
|
30090
|
+
const jsonView = selectedTab === JSON_TAB_VALUE || mountedTabsRef.current.has(JSON_TAB_VALUE) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("relative flex-1 h-full overflow-auto w-full", {
|
|
29627
30091
|
"hidden": selectedTab !== JSON_TAB_VALUE
|
|
29628
|
-
}), role: "tabpanel", children: /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsx(EntityJsonPreview, { values: formContext?.values ?? entity?.values ?? {} }) }) }, "json_view");
|
|
30092
|
+
}), role: "tabpanel", children: /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsx(EntityJsonPreview, { values: formContext?.values ?? entity?.values ?? {} }) }) }, "json_view") : null;
|
|
29629
30093
|
const subCollectionsViews = subcollections && subcollections.map((subcollection) => {
|
|
29630
30094
|
const subcollectionId = subcollection.id ?? subcollection.path;
|
|
29631
30095
|
const newFullPath = usedEntity ? `${path}/${usedEntity?.id}/${removeInitialAndTrailingSlashes(subcollection.path)}` : void 0;
|
|
29632
|
-
const newFullIdPath = fullIdPath ? `${fullIdPath}/${usedEntity
|
|
30096
|
+
const newFullIdPath = fullIdPath && usedEntity ? `${fullIdPath}/${encodeEntityId(usedEntity.id)}/${removeInitialAndTrailingSlashes(subcollectionId)}` : void 0;
|
|
29633
30097
|
if (selectedTab !== subcollectionId) return null;
|
|
29634
30098
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-1 h-full overflow-auto w-full", role: "tabpanel", children: [
|
|
29635
30099
|
globalLoading && /* @__PURE__ */ jsxRuntime.jsx(CircularProgressCenter, {}),
|
|
@@ -29673,8 +30137,8 @@
|
|
|
29673
30137
|
const customViewTabsStart = resolvedEntityViews.filter((view) => view.position === "start" && !groupedViews.includes(view.key)).map((view_0) => /* @__PURE__ */ jsxRuntime.jsx(ui.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}`));
|
|
29674
30138
|
const customViewTabsEnd = resolvedEntityViews.filter((view_1) => (!view_1.position || view_1.position === "end") && !groupedViews.includes(view_1.key)).map((view_2) => /* @__PURE__ */ jsxRuntime.jsx(ui.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}`));
|
|
29675
30139
|
const viewGroupMenus = collection.viewGroups?.map((group) => {
|
|
29676
|
-
const
|
|
29677
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ui.Menu, { trigger: /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: ui.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",
|
|
30140
|
+
const isActive_0 = group.views.includes(selectedTab);
|
|
30141
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ui.Menu, { trigger: /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: ui.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: [
|
|
29678
30142
|
group.name,
|
|
29679
30143
|
/* @__PURE__ */ jsxRuntime.jsx(ui.ExpandMoreIcon, { className: "ml-1 -mr-1", size: "small" })
|
|
29680
30144
|
] }), children: group.views.map((viewId) => {
|
|
@@ -29738,7 +30202,7 @@
|
|
|
29738
30202
|
const {
|
|
29739
30203
|
selectedSecondaryForm
|
|
29740
30204
|
} = resolvedSelectedEntityView(props.collection?.entityViews, customizationController, props.selectedTab);
|
|
29741
|
-
const shouldUseSmallLayout = !props.selectedTab || props.selectedTab === JSON_TAB_VALUE || props.selectedTab === "__history" || Boolean(selectedSecondaryForm);
|
|
30205
|
+
const shouldUseSmallLayout = !props.selectedTab || props.selectedTab === JSON_TAB_VALUE || props.selectedTab === "__history" || props.selectedTab === "__raw_data" || Boolean(selectedSecondaryForm);
|
|
29742
30206
|
let resolvedWidth;
|
|
29743
30207
|
if (props.width) {
|
|
29744
30208
|
resolvedWidth = typeof props.width === "number" ? `${props.width}px` : props.width;
|
|
@@ -29918,7 +30382,7 @@
|
|
|
29918
30382
|
}
|
|
29919
30383
|
const propsToSidePanel = (props, buildUrlCollectionPath, resolveIdsFrom, smallLayout, customizationController, authController, locationSearch) => {
|
|
29920
30384
|
const collectionPath = removeInitialAndTrailingSlashes(props.path);
|
|
29921
|
-
const urlPath = props.entityId ? buildUrlCollectionPath(`${collectionPath}/${props.entityId}${props.selectedTab ? "/" + props.selectedTab : ""}${locationSearch}#${SIDE_URL_HASH}`) : buildUrlCollectionPath(`${collectionPath}${locationSearch}#${NEW_URL_HASH}`);
|
|
30385
|
+
const urlPath = props.entityId ? buildUrlCollectionPath(`${collectionPath}/${encodeEntityId(props.entityId)}${props.selectedTab ? "/" + props.selectedTab : ""}${locationSearch}#${SIDE_URL_HASH}`) : buildUrlCollectionPath(`${collectionPath}${locationSearch}#${NEW_URL_HASH}`);
|
|
29922
30386
|
const resolvedPanelProps = {
|
|
29923
30387
|
...props,
|
|
29924
30388
|
formProps: props.formProps
|
|
@@ -30014,7 +30478,7 @@
|
|
|
30014
30478
|
replace: true,
|
|
30015
30479
|
state: {
|
|
30016
30480
|
base_location: baseLocation,
|
|
30017
|
-
panels: updatedPanels.map(_temp4$
|
|
30481
|
+
panels: updatedPanels.map(_temp4$2)
|
|
30018
30482
|
}
|
|
30019
30483
|
});
|
|
30020
30484
|
}
|
|
@@ -30112,7 +30576,7 @@
|
|
|
30112
30576
|
function _temp5$1(p_3) {
|
|
30113
30577
|
return p_3.key;
|
|
30114
30578
|
}
|
|
30115
|
-
function _temp4$
|
|
30579
|
+
function _temp4$2(p_2) {
|
|
30116
30580
|
return p_2.key;
|
|
30117
30581
|
}
|
|
30118
30582
|
function _temp3$2(p_1) {
|
|
@@ -30632,7 +31096,7 @@
|
|
|
30632
31096
|
return t1;
|
|
30633
31097
|
}
|
|
30634
31098
|
function DrawerNavigationItem(t0) {
|
|
30635
|
-
const $ = reactCompilerRuntime.c(
|
|
31099
|
+
const $ = reactCompilerRuntime.c(22);
|
|
30636
31100
|
const {
|
|
30637
31101
|
name,
|
|
30638
31102
|
icon,
|
|
@@ -30644,7 +31108,7 @@
|
|
|
30644
31108
|
} = t0;
|
|
30645
31109
|
let t1;
|
|
30646
31110
|
if ($[0] !== icon) {
|
|
30647
|
-
t1 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
31111
|
+
t1 = /* @__PURE__ */ jsxRuntime.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 });
|
|
30648
31112
|
$[0] = icon;
|
|
30649
31113
|
$[1] = t1;
|
|
30650
31114
|
} else {
|
|
@@ -30669,7 +31133,7 @@
|
|
|
30669
31133
|
const {
|
|
30670
31134
|
isActive
|
|
30671
31135
|
} = t52;
|
|
30672
|
-
return ui.cls("rounded-lg truncate", "hover:bg-
|
|
31136
|
+
return ui.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" : "");
|
|
30673
31137
|
};
|
|
30674
31138
|
$[4] = drawerOpen;
|
|
30675
31139
|
$[5] = t4;
|
|
@@ -30679,61 +31143,53 @@
|
|
|
30679
31143
|
const t5 = drawerOpen ? "opacity-100" : "opacity-0 hidden";
|
|
30680
31144
|
let t6;
|
|
30681
31145
|
if ($[6] !== t5) {
|
|
30682
|
-
t6 = ui.cls("text-
|
|
31146
|
+
t6 = ui.cls("text-surface-700 dark:text-surface-300", t5, "font-inherit truncate space-x-2");
|
|
30683
31147
|
$[6] = t5;
|
|
30684
31148
|
$[7] = t6;
|
|
30685
31149
|
} else {
|
|
30686
31150
|
t6 = $[7];
|
|
30687
31151
|
}
|
|
30688
31152
|
let t7;
|
|
30689
|
-
if ($[8] !== name) {
|
|
30690
|
-
t7 =
|
|
31153
|
+
if ($[8] !== name || $[9] !== t6) {
|
|
31154
|
+
t7 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: t6, children: name });
|
|
30691
31155
|
$[8] = name;
|
|
30692
|
-
$[9] =
|
|
31156
|
+
$[9] = t6;
|
|
31157
|
+
$[10] = t7;
|
|
30693
31158
|
} else {
|
|
30694
|
-
t7 = $[
|
|
31159
|
+
t7 = $[10];
|
|
30695
31160
|
}
|
|
30696
31161
|
let t8;
|
|
30697
|
-
if ($[
|
|
30698
|
-
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
30699
|
-
$[10] = t6;
|
|
30700
|
-
$[11] = t7;
|
|
30701
|
-
$[12] = t8;
|
|
30702
|
-
} else {
|
|
30703
|
-
t8 = $[12];
|
|
30704
|
-
}
|
|
30705
|
-
let t9;
|
|
30706
|
-
if ($[13] !== iconWrap || $[14] !== onClick || $[15] !== t3 || $[16] !== t4 || $[17] !== t8 || $[18] !== url) {
|
|
30707
|
-
t9 = /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.NavLink, { onClick, style: t3, className: t4, to: url, children: [
|
|
31162
|
+
if ($[11] !== iconWrap || $[12] !== onClick || $[13] !== t3 || $[14] !== t4 || $[15] !== t7 || $[16] !== url) {
|
|
31163
|
+
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.NavLink, { onClick, style: t3, className: t4, to: url, children: [
|
|
30708
31164
|
iconWrap,
|
|
30709
|
-
|
|
31165
|
+
t7
|
|
30710
31166
|
] }) });
|
|
30711
|
-
$[
|
|
30712
|
-
$[
|
|
30713
|
-
$[
|
|
30714
|
-
$[
|
|
31167
|
+
$[11] = iconWrap;
|
|
31168
|
+
$[12] = onClick;
|
|
31169
|
+
$[13] = t3;
|
|
31170
|
+
$[14] = t4;
|
|
31171
|
+
$[15] = t7;
|
|
31172
|
+
$[16] = url;
|
|
30715
31173
|
$[17] = t8;
|
|
30716
|
-
$[18] = url;
|
|
30717
|
-
$[19] = t9;
|
|
30718
31174
|
} else {
|
|
30719
|
-
|
|
31175
|
+
t8 = $[17];
|
|
30720
31176
|
}
|
|
30721
|
-
const listItem =
|
|
30722
|
-
const
|
|
30723
|
-
let
|
|
30724
|
-
if ($[
|
|
30725
|
-
|
|
30726
|
-
$[
|
|
30727
|
-
$[
|
|
30728
|
-
$[
|
|
30729
|
-
$[
|
|
31177
|
+
const listItem = t8;
|
|
31178
|
+
const t9 = drawerOpen || adminMenuOpen ? false : tooltipsOpen;
|
|
31179
|
+
let t10;
|
|
31180
|
+
if ($[18] !== listItem || $[19] !== name || $[20] !== t9) {
|
|
31181
|
+
t10 = /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { open: t9, side: "right", title: name, children: listItem });
|
|
31182
|
+
$[18] = listItem;
|
|
31183
|
+
$[19] = name;
|
|
31184
|
+
$[20] = t9;
|
|
31185
|
+
$[21] = t10;
|
|
30730
31186
|
} else {
|
|
30731
|
-
|
|
31187
|
+
t10 = $[21];
|
|
30732
31188
|
}
|
|
30733
|
-
return
|
|
31189
|
+
return t10;
|
|
30734
31190
|
}
|
|
30735
31191
|
function DrawerNavigationGroup(t0) {
|
|
30736
|
-
const $ = reactCompilerRuntime.c(
|
|
31192
|
+
const $ = reactCompilerRuntime.c(41);
|
|
30737
31193
|
const {
|
|
30738
31194
|
group,
|
|
30739
31195
|
entries,
|
|
@@ -30749,86 +31205,137 @@
|
|
|
30749
31205
|
t
|
|
30750
31206
|
} = useTranslation();
|
|
30751
31207
|
const t1 = `drawer_group_${group}`;
|
|
30752
|
-
|
|
30753
|
-
|
|
30754
|
-
|
|
30755
|
-
|
|
30756
|
-
|
|
30757
|
-
|
|
30758
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full" });
|
|
30759
|
-
$[0] = collapsed;
|
|
30760
|
-
$[1] = drawerOpen;
|
|
30761
|
-
$[2] = group;
|
|
30762
|
-
$[3] = headerActions;
|
|
30763
|
-
$[4] = onToggleCollapsed;
|
|
30764
|
-
$[5] = t;
|
|
30765
|
-
$[6] = t2;
|
|
31208
|
+
const t2 = drawerOpen ? "cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-800/40 rounded-lg" : "opacity-0 invisible pointer-events-none";
|
|
31209
|
+
let t3;
|
|
31210
|
+
if ($[0] !== t2) {
|
|
31211
|
+
t3 = ui.cls("pl-3 pr-2 py-0.5 flex flex-row items-center transition-colors", t2);
|
|
31212
|
+
$[0] = t2;
|
|
31213
|
+
$[1] = t3;
|
|
30766
31214
|
} else {
|
|
30767
|
-
|
|
31215
|
+
t3 = $[1];
|
|
30768
31216
|
}
|
|
30769
|
-
const
|
|
30770
|
-
|
|
30771
|
-
|
|
30772
|
-
|
|
30773
|
-
|
|
30774
|
-
$[
|
|
31217
|
+
const t4 = drawerOpen ? onToggleCollapsed : void 0;
|
|
31218
|
+
const t5 = collapsed ? "-rotate-90" : "rotate-0";
|
|
31219
|
+
let t6;
|
|
31220
|
+
if ($[2] !== t5) {
|
|
31221
|
+
t6 = ui.cls("text-surface-400 dark:text-surface-400 transition-transform duration-200 mr-1", t5);
|
|
31222
|
+
$[2] = t5;
|
|
31223
|
+
$[3] = t6;
|
|
30775
31224
|
} else {
|
|
30776
|
-
|
|
31225
|
+
t6 = $[3];
|
|
30777
31226
|
}
|
|
30778
|
-
let
|
|
30779
|
-
if ($[
|
|
30780
|
-
|
|
30781
|
-
|
|
30782
|
-
|
|
30783
|
-
|
|
30784
|
-
|
|
30785
|
-
|
|
30786
|
-
|
|
30787
|
-
|
|
30788
|
-
|
|
31227
|
+
let t7;
|
|
31228
|
+
if ($[4] !== t6) {
|
|
31229
|
+
t7 = /* @__PURE__ */ jsxRuntime.jsx(ui.ExpandMoreIcon, { size: "smallest", className: t6 });
|
|
31230
|
+
$[4] = t6;
|
|
31231
|
+
$[5] = t7;
|
|
31232
|
+
} else {
|
|
31233
|
+
t7 = $[5];
|
|
31234
|
+
}
|
|
31235
|
+
let t8;
|
|
31236
|
+
if ($[6] !== group || $[7] !== t) {
|
|
31237
|
+
t8 = group && group !== "__default__" ? group : t("views_group");
|
|
31238
|
+
$[6] = group;
|
|
31239
|
+
$[7] = t;
|
|
31240
|
+
$[8] = t8;
|
|
31241
|
+
} else {
|
|
31242
|
+
t8 = $[8];
|
|
31243
|
+
}
|
|
31244
|
+
let t9;
|
|
31245
|
+
if ($[9] !== t8) {
|
|
31246
|
+
t9 = /* @__PURE__ */ jsxRuntime.jsx(ui.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 });
|
|
31247
|
+
$[9] = t8;
|
|
31248
|
+
$[10] = t9;
|
|
31249
|
+
} else {
|
|
31250
|
+
t9 = $[10];
|
|
31251
|
+
}
|
|
31252
|
+
let t10;
|
|
31253
|
+
if ($[11] !== headerActions) {
|
|
31254
|
+
t10 = headerActions && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: _temp$a, children: headerActions });
|
|
31255
|
+
$[11] = headerActions;
|
|
31256
|
+
$[12] = t10;
|
|
31257
|
+
} else {
|
|
31258
|
+
t10 = $[12];
|
|
31259
|
+
}
|
|
31260
|
+
let t11;
|
|
31261
|
+
if ($[13] !== t10 || $[14] !== t3 || $[15] !== t4 || $[16] !== t7 || $[17] !== t9) {
|
|
31262
|
+
t11 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: t3, onClick: t4, children: [
|
|
31263
|
+
t7,
|
|
31264
|
+
t9,
|
|
31265
|
+
t10
|
|
31266
|
+
] });
|
|
31267
|
+
$[13] = t10;
|
|
31268
|
+
$[14] = t3;
|
|
31269
|
+
$[15] = t4;
|
|
31270
|
+
$[16] = t7;
|
|
31271
|
+
$[17] = t9;
|
|
31272
|
+
$[18] = t11;
|
|
31273
|
+
} else {
|
|
31274
|
+
t11 = $[18];
|
|
31275
|
+
}
|
|
31276
|
+
const t12 = collapsed ? "max-h-0 opacity-0" : "max-h-[2000px] opacity-100";
|
|
31277
|
+
let t13;
|
|
31278
|
+
if ($[19] !== t12) {
|
|
31279
|
+
t13 = ui.cls("transition-all duration-200 ease-in-out overflow-hidden rounded-lg", t12);
|
|
31280
|
+
$[19] = t12;
|
|
31281
|
+
$[20] = t13;
|
|
31282
|
+
} else {
|
|
31283
|
+
t13 = $[20];
|
|
31284
|
+
}
|
|
31285
|
+
let t14;
|
|
31286
|
+
if ($[21] !== adminMenuOpen || $[22] !== collapsed || $[23] !== drawerOpen || $[24] !== entries || $[25] !== onItemClick || $[26] !== tooltipsOpen) {
|
|
31287
|
+
let t152;
|
|
31288
|
+
if ($[28] !== adminMenuOpen || $[29] !== collapsed || $[30] !== drawerOpen || $[31] !== onItemClick || $[32] !== tooltipsOpen) {
|
|
31289
|
+
t152 = (entry) => /* @__PURE__ */ jsxRuntime.jsx(DrawerNavigationItem, { icon: /* @__PURE__ */ jsxRuntime.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);
|
|
31290
|
+
$[28] = adminMenuOpen;
|
|
31291
|
+
$[29] = collapsed;
|
|
31292
|
+
$[30] = drawerOpen;
|
|
31293
|
+
$[31] = onItemClick;
|
|
31294
|
+
$[32] = tooltipsOpen;
|
|
31295
|
+
$[33] = t152;
|
|
30789
31296
|
} else {
|
|
30790
|
-
|
|
30791
|
-
}
|
|
30792
|
-
|
|
30793
|
-
$[
|
|
30794
|
-
$[
|
|
30795
|
-
$[
|
|
30796
|
-
$[
|
|
30797
|
-
$[
|
|
30798
|
-
$[
|
|
30799
|
-
$[
|
|
31297
|
+
t152 = $[33];
|
|
31298
|
+
}
|
|
31299
|
+
t14 = entries.map(t152);
|
|
31300
|
+
$[21] = adminMenuOpen;
|
|
31301
|
+
$[22] = collapsed;
|
|
31302
|
+
$[23] = drawerOpen;
|
|
31303
|
+
$[24] = entries;
|
|
31304
|
+
$[25] = onItemClick;
|
|
31305
|
+
$[26] = tooltipsOpen;
|
|
31306
|
+
$[27] = t14;
|
|
30800
31307
|
} else {
|
|
30801
|
-
|
|
31308
|
+
t14 = $[27];
|
|
30802
31309
|
}
|
|
30803
|
-
let
|
|
30804
|
-
if ($[
|
|
30805
|
-
|
|
30806
|
-
$[
|
|
30807
|
-
$[
|
|
30808
|
-
$[
|
|
31310
|
+
let t15;
|
|
31311
|
+
if ($[34] !== t13 || $[35] !== t14) {
|
|
31312
|
+
t15 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: t13, children: t14 });
|
|
31313
|
+
$[34] = t13;
|
|
31314
|
+
$[35] = t14;
|
|
31315
|
+
$[36] = t15;
|
|
30809
31316
|
} else {
|
|
30810
|
-
|
|
31317
|
+
t15 = $[36];
|
|
30811
31318
|
}
|
|
30812
|
-
let
|
|
30813
|
-
if ($[
|
|
30814
|
-
|
|
30815
|
-
|
|
30816
|
-
|
|
31319
|
+
let t16;
|
|
31320
|
+
if ($[37] !== t1 || $[38] !== t11 || $[39] !== t15) {
|
|
31321
|
+
t16 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "my-2 mx-2 flex flex-col", children: [
|
|
31322
|
+
t11,
|
|
31323
|
+
t15
|
|
30817
31324
|
] }, t1);
|
|
30818
|
-
$[
|
|
30819
|
-
$[
|
|
30820
|
-
$[
|
|
30821
|
-
$[
|
|
31325
|
+
$[37] = t1;
|
|
31326
|
+
$[38] = t11;
|
|
31327
|
+
$[39] = t15;
|
|
31328
|
+
$[40] = t16;
|
|
30822
31329
|
} else {
|
|
30823
|
-
|
|
31330
|
+
t16 = $[40];
|
|
30824
31331
|
}
|
|
30825
|
-
return
|
|
31332
|
+
return t16;
|
|
30826
31333
|
}
|
|
30827
31334
|
function _temp$a(e) {
|
|
30828
31335
|
return e.stopPropagation();
|
|
30829
31336
|
}
|
|
30830
31337
|
function DefaultDrawer(t0) {
|
|
30831
|
-
const $ = reactCompilerRuntime.c(
|
|
31338
|
+
const $ = reactCompilerRuntime.c(40);
|
|
30832
31339
|
const {
|
|
30833
31340
|
className,
|
|
30834
31341
|
style
|
|
@@ -30840,6 +31347,20 @@
|
|
|
30840
31347
|
logo
|
|
30841
31348
|
} = useApp();
|
|
30842
31349
|
const [adminMenuOpen, setAdminMenuOpen] = React.useState(false);
|
|
31350
|
+
const scrollRef = React.useRef(null);
|
|
31351
|
+
const [scrolled, setScrolled] = React.useState(false);
|
|
31352
|
+
let t1;
|
|
31353
|
+
if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
31354
|
+
t1 = () => {
|
|
31355
|
+
if (scrollRef.current) {
|
|
31356
|
+
setScrolled(scrollRef.current.scrollTop > 0);
|
|
31357
|
+
}
|
|
31358
|
+
};
|
|
31359
|
+
$[0] = t1;
|
|
31360
|
+
} else {
|
|
31361
|
+
t1 = $[0];
|
|
31362
|
+
}
|
|
31363
|
+
const handleScroll = t1;
|
|
30843
31364
|
const analyticsController = useAnalyticsController();
|
|
30844
31365
|
const navigation = useNavigationController();
|
|
30845
31366
|
const {
|
|
@@ -30856,22 +31377,23 @@
|
|
|
30856
31377
|
groups
|
|
30857
31378
|
} = navigation.topLevelNavigation;
|
|
30858
31379
|
const adminViews = navigationEntries.filter(_temp$9) ?? [];
|
|
30859
|
-
let
|
|
30860
|
-
if ($[
|
|
30861
|
-
|
|
30862
|
-
$[
|
|
30863
|
-
$[
|
|
31380
|
+
let t2;
|
|
31381
|
+
if ($[1] !== groups) {
|
|
31382
|
+
t2 = groups.filter(_temp2$3);
|
|
31383
|
+
$[1] = groups;
|
|
31384
|
+
$[2] = t2;
|
|
30864
31385
|
} else {
|
|
30865
|
-
|
|
31386
|
+
t2 = $[2];
|
|
30866
31387
|
}
|
|
30867
|
-
const groupsWithoutAdmin =
|
|
31388
|
+
const groupsWithoutAdmin = t2;
|
|
30868
31389
|
const {
|
|
30869
31390
|
isGroupCollapsed,
|
|
30870
31391
|
toggleGroupCollapsed
|
|
30871
31392
|
} = useCollapsedGroups(groupsWithoutAdmin, "drawer");
|
|
30872
|
-
|
|
30873
|
-
|
|
30874
|
-
|
|
31393
|
+
const drawerVisuallyOpen = drawerOpen || drawerHovered;
|
|
31394
|
+
let t3;
|
|
31395
|
+
if ($[3] !== analyticsController || $[4] !== closeDrawer || $[5] !== largeLayout) {
|
|
31396
|
+
t3 = (view) => {
|
|
30875
31397
|
const eventName = view.type === "collection" ? "drawer_navigate_to_collection" : view.type === "view" ? "drawer_navigate_to_view" : "unmapped_event";
|
|
30876
31398
|
analyticsController.onAnalyticsEvent?.(eventName, {
|
|
30877
31399
|
url: view.url
|
|
@@ -30880,106 +31402,119 @@
|
|
|
30880
31402
|
closeDrawer();
|
|
30881
31403
|
}
|
|
30882
31404
|
};
|
|
30883
|
-
$[
|
|
30884
|
-
$[
|
|
30885
|
-
$[
|
|
30886
|
-
$[
|
|
31405
|
+
$[3] = analyticsController;
|
|
31406
|
+
$[4] = closeDrawer;
|
|
31407
|
+
$[5] = largeLayout;
|
|
31408
|
+
$[6] = t3;
|
|
30887
31409
|
} else {
|
|
30888
|
-
|
|
31410
|
+
t3 = $[6];
|
|
30889
31411
|
}
|
|
30890
|
-
const onItemClick =
|
|
30891
|
-
|
|
30892
|
-
|
|
30893
|
-
|
|
30894
|
-
|
|
30895
|
-
|
|
31412
|
+
const onItemClick = t3;
|
|
31413
|
+
const t4 = "navigation";
|
|
31414
|
+
const t5 = "Main navigation";
|
|
31415
|
+
let t6;
|
|
31416
|
+
if ($[7] !== className) {
|
|
31417
|
+
t6 = ui.cls("flex flex-col h-full relative grow w-full", className);
|
|
31418
|
+
$[7] = className;
|
|
31419
|
+
$[8] = t6;
|
|
30896
31420
|
} else {
|
|
30897
|
-
|
|
31421
|
+
t6 = $[8];
|
|
30898
31422
|
}
|
|
30899
|
-
let
|
|
30900
|
-
if ($[
|
|
30901
|
-
|
|
30902
|
-
$[
|
|
30903
|
-
$[
|
|
31423
|
+
let t7;
|
|
31424
|
+
if ($[9] !== logo) {
|
|
31425
|
+
t7 = /* @__PURE__ */ jsxRuntime.jsx(DrawerLogo, { logo });
|
|
31426
|
+
$[9] = logo;
|
|
31427
|
+
$[10] = t7;
|
|
30904
31428
|
} else {
|
|
30905
|
-
|
|
31429
|
+
t7 = $[10];
|
|
30906
31430
|
}
|
|
30907
|
-
|
|
30908
|
-
|
|
30909
|
-
|
|
30910
|
-
|
|
31431
|
+
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%)";
|
|
31432
|
+
let t9;
|
|
31433
|
+
if ($[11] !== t8) {
|
|
31434
|
+
t9 = {
|
|
31435
|
+
maskImage: t8
|
|
30911
31436
|
};
|
|
30912
|
-
$[
|
|
31437
|
+
$[11] = t8;
|
|
31438
|
+
$[12] = t9;
|
|
30913
31439
|
} else {
|
|
30914
|
-
|
|
31440
|
+
t9 = $[12];
|
|
30915
31441
|
}
|
|
30916
|
-
let
|
|
30917
|
-
if ($[
|
|
30918
|
-
let
|
|
30919
|
-
if ($[
|
|
30920
|
-
|
|
31442
|
+
let t10;
|
|
31443
|
+
if ($[13] !== adminMenuOpen || $[14] !== drawerVisuallyOpen || $[15] !== groupsWithoutAdmin || $[16] !== isGroupCollapsed || $[17] !== navigationEntries || $[18] !== onItemClick || $[19] !== toggleGroupCollapsed || $[20] !== tooltipsOpen) {
|
|
31444
|
+
let t112;
|
|
31445
|
+
if ($[22] !== adminMenuOpen || $[23] !== drawerVisuallyOpen || $[24] !== isGroupCollapsed || $[25] !== navigationEntries || $[26] !== onItemClick || $[27] !== toggleGroupCollapsed || $[28] !== tooltipsOpen) {
|
|
31446
|
+
t112 = (group) => {
|
|
30921
31447
|
const entriesInGroup = Object.values(navigationEntries).filter((e_0) => e_0.group === group);
|
|
30922
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DrawerNavigationGroup, { group, entries: entriesInGroup, collapsed: isGroupCollapsed(group), onToggleCollapsed: () => toggleGroupCollapsed(group), drawerOpen, tooltipsOpen, adminMenuOpen, onItemClick }, `drawer_group_${group}`);
|
|
31448
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DrawerNavigationGroup, { group, entries: entriesInGroup, collapsed: isGroupCollapsed(group), onToggleCollapsed: () => toggleGroupCollapsed(group), drawerOpen: drawerVisuallyOpen, tooltipsOpen, adminMenuOpen, onItemClick }, `drawer_group_${group}`);
|
|
30923
31449
|
};
|
|
30924
|
-
$[
|
|
30925
|
-
$[
|
|
30926
|
-
$[
|
|
30927
|
-
$[
|
|
30928
|
-
$[
|
|
30929
|
-
$[
|
|
30930
|
-
$[
|
|
30931
|
-
$[
|
|
31450
|
+
$[22] = adminMenuOpen;
|
|
31451
|
+
$[23] = drawerVisuallyOpen;
|
|
31452
|
+
$[24] = isGroupCollapsed;
|
|
31453
|
+
$[25] = navigationEntries;
|
|
31454
|
+
$[26] = onItemClick;
|
|
31455
|
+
$[27] = toggleGroupCollapsed;
|
|
31456
|
+
$[28] = tooltipsOpen;
|
|
31457
|
+
$[29] = t112;
|
|
30932
31458
|
} else {
|
|
30933
|
-
|
|
30934
|
-
}
|
|
30935
|
-
|
|
30936
|
-
$[
|
|
30937
|
-
$[
|
|
30938
|
-
$[
|
|
30939
|
-
$[
|
|
30940
|
-
$[
|
|
30941
|
-
$[
|
|
30942
|
-
$[
|
|
30943
|
-
$[
|
|
30944
|
-
$[
|
|
31459
|
+
t112 = $[29];
|
|
31460
|
+
}
|
|
31461
|
+
t10 = groupsWithoutAdmin.map(t112);
|
|
31462
|
+
$[13] = adminMenuOpen;
|
|
31463
|
+
$[14] = drawerVisuallyOpen;
|
|
31464
|
+
$[15] = groupsWithoutAdmin;
|
|
31465
|
+
$[16] = isGroupCollapsed;
|
|
31466
|
+
$[17] = navigationEntries;
|
|
31467
|
+
$[18] = onItemClick;
|
|
31468
|
+
$[19] = toggleGroupCollapsed;
|
|
31469
|
+
$[20] = tooltipsOpen;
|
|
31470
|
+
$[21] = t10;
|
|
30945
31471
|
} else {
|
|
30946
|
-
|
|
31472
|
+
t10 = $[21];
|
|
30947
31473
|
}
|
|
30948
|
-
let
|
|
30949
|
-
if ($[
|
|
30950
|
-
|
|
30951
|
-
$[
|
|
30952
|
-
$[
|
|
31474
|
+
let t11;
|
|
31475
|
+
if ($[30] !== t10 || $[31] !== t9) {
|
|
31476
|
+
t11 = /* @__PURE__ */ jsxRuntime.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 });
|
|
31477
|
+
$[30] = t10;
|
|
31478
|
+
$[31] = t9;
|
|
31479
|
+
$[32] = t11;
|
|
30953
31480
|
} else {
|
|
30954
|
-
|
|
31481
|
+
t11 = $[32];
|
|
30955
31482
|
}
|
|
30956
|
-
const
|
|
30957
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: "Admin", open: tooltipsOpen, side: "right", sideOffset: 28, children: /* @__PURE__ */ jsxRuntime.jsx(ui.MoreVertIcon, {}) }),
|
|
30958
|
-
|
|
31483
|
+
const t12 = adminViews.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 px-4", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Menu, { side: "right", open: adminMenuOpen, onOpenChange: setAdminMenuOpen, trigger: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.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: [
|
|
31484
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 flex items-center justify-center w-[44px] h-[30px] text-surface-500 dark:text-surface-400", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: "Admin", open: drawerVisuallyOpen || adminMenuOpen ? false : tooltipsOpen, side: "right", sideOffset: 28, children: /* @__PURE__ */ jsxRuntime.jsx(ui.MoreVertIcon, { size: "small" }) }) }),
|
|
31485
|
+
drawerVisuallyOpen && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("font-semibold text-[11px] uppercase tracking-wider text-surface-400"), children: t("admin") })
|
|
30959
31486
|
] }), children: adminViews.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(ui.MenuItem, { onClick: (event) => {
|
|
30960
31487
|
event.preventDefault();
|
|
30961
31488
|
navigate(entry.url);
|
|
30962
31489
|
}, children: [
|
|
30963
31490
|
/* @__PURE__ */ jsxRuntime.jsx(IconForView, { collectionOrView: entry.view }),
|
|
30964
31491
|
t(entry.name)
|
|
30965
|
-
] }, entry.id)) });
|
|
30966
|
-
let
|
|
30967
|
-
if ($[
|
|
30968
|
-
|
|
30969
|
-
|
|
31492
|
+
] }, entry.id)) }) });
|
|
31493
|
+
let t13;
|
|
31494
|
+
if ($[33] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
31495
|
+
t13 = /* @__PURE__ */ jsxRuntime.jsx(DrawerToggle, {});
|
|
31496
|
+
$[33] = t13;
|
|
31497
|
+
} else {
|
|
31498
|
+
t13 = $[33];
|
|
31499
|
+
}
|
|
31500
|
+
let t14;
|
|
31501
|
+
if ($[34] !== style || $[35] !== t11 || $[36] !== t12 || $[37] !== t6 || $[38] !== t7) {
|
|
31502
|
+
t14 = /* @__PURE__ */ jsxRuntime.jsxs("div", { role: t4, "aria-label": t5, className: t6, style, children: [
|
|
30970
31503
|
t7,
|
|
30971
|
-
|
|
30972
|
-
|
|
30973
|
-
|
|
30974
|
-
|
|
30975
|
-
$[
|
|
30976
|
-
$[
|
|
30977
|
-
$[
|
|
30978
|
-
$[
|
|
31504
|
+
t11,
|
|
31505
|
+
t12,
|
|
31506
|
+
t13
|
|
31507
|
+
] });
|
|
31508
|
+
$[34] = style;
|
|
31509
|
+
$[35] = t11;
|
|
31510
|
+
$[36] = t12;
|
|
31511
|
+
$[37] = t6;
|
|
31512
|
+
$[38] = t7;
|
|
31513
|
+
$[39] = t14;
|
|
30979
31514
|
} else {
|
|
30980
|
-
|
|
31515
|
+
t14 = $[39];
|
|
30981
31516
|
}
|
|
30982
|
-
return
|
|
31517
|
+
return t14;
|
|
30983
31518
|
}
|
|
30984
31519
|
function _temp2$3(g) {
|
|
30985
31520
|
return g !== "Admin";
|
|
@@ -30987,62 +31522,133 @@
|
|
|
30987
31522
|
function _temp$9(e) {
|
|
30988
31523
|
return e.type === "admin";
|
|
30989
31524
|
}
|
|
30990
|
-
function
|
|
30991
|
-
const $ = reactCompilerRuntime.c(
|
|
30992
|
-
const {
|
|
30993
|
-
logo
|
|
30994
|
-
} = t0;
|
|
30995
|
-
const navigation = useNavigationController();
|
|
31525
|
+
function DrawerToggle() {
|
|
31526
|
+
const $ = reactCompilerRuntime.c(26);
|
|
30996
31527
|
const {
|
|
30997
|
-
drawerOpen
|
|
31528
|
+
drawerOpen,
|
|
31529
|
+
drawerHovered,
|
|
31530
|
+
openDrawer,
|
|
31531
|
+
closeDrawer
|
|
30998
31532
|
} = useApp();
|
|
30999
|
-
const
|
|
31533
|
+
const isExpanded = drawerOpen;
|
|
31534
|
+
const isHovered = drawerHovered && !drawerOpen;
|
|
31535
|
+
const showFullContent = isExpanded || isHovered;
|
|
31536
|
+
const t0 = isExpanded ? "Collapse" : "Expand";
|
|
31537
|
+
const t1 = isHovered ? false : void 0;
|
|
31000
31538
|
let t2;
|
|
31001
|
-
if ($[0]
|
|
31002
|
-
t2 =
|
|
31003
|
-
|
|
31004
|
-
|
|
31539
|
+
if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
31540
|
+
t2 = ui.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]");
|
|
31541
|
+
$[0] = t2;
|
|
31542
|
+
} else {
|
|
31543
|
+
t2 = $[0];
|
|
31544
|
+
}
|
|
31545
|
+
const t3 = isExpanded ? "Collapse" : "Expand";
|
|
31546
|
+
let t4;
|
|
31547
|
+
let t5;
|
|
31548
|
+
if ($[1] !== closeDrawer || $[2] !== isExpanded || $[3] !== openDrawer) {
|
|
31549
|
+
t4 = () => isExpanded ? closeDrawer() : openDrawer();
|
|
31550
|
+
t5 = (e) => {
|
|
31551
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
31552
|
+
e.preventDefault();
|
|
31553
|
+
isExpanded ? closeDrawer() : openDrawer();
|
|
31554
|
+
}
|
|
31005
31555
|
};
|
|
31006
|
-
$[
|
|
31007
|
-
$[
|
|
31556
|
+
$[1] = closeDrawer;
|
|
31557
|
+
$[2] = isExpanded;
|
|
31558
|
+
$[3] = openDrawer;
|
|
31559
|
+
$[4] = t4;
|
|
31560
|
+
$[5] = t5;
|
|
31008
31561
|
} else {
|
|
31009
|
-
|
|
31562
|
+
t4 = $[4];
|
|
31563
|
+
t5 = $[5];
|
|
31010
31564
|
}
|
|
31011
|
-
let
|
|
31012
|
-
if ($[
|
|
31013
|
-
|
|
31014
|
-
$[
|
|
31565
|
+
let t6;
|
|
31566
|
+
if ($[6] !== isExpanded) {
|
|
31567
|
+
t6 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 flex items-center justify-center w-[44px] h-[30px] text-surface-500 dark:text-surface-400", children: isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(ui.KeyboardDoubleArrowLeftIcon, { size: "small" }) : /* @__PURE__ */ jsxRuntime.jsx(ui.KeyboardDoubleArrowRightIcon, { size: "small" }) });
|
|
31568
|
+
$[6] = isExpanded;
|
|
31569
|
+
$[7] = t6;
|
|
31015
31570
|
} else {
|
|
31016
|
-
|
|
31571
|
+
t6 = $[7];
|
|
31017
31572
|
}
|
|
31018
|
-
|
|
31019
|
-
|
|
31020
|
-
|
|
31021
|
-
|
|
31022
|
-
$[
|
|
31023
|
-
$[
|
|
31573
|
+
const t7 = showFullContent ? "opacity-100 w-auto" : "opacity-0 w-0";
|
|
31574
|
+
let t8;
|
|
31575
|
+
if ($[8] !== t7) {
|
|
31576
|
+
t8 = ui.cls("overflow-hidden transition-all duration-200 ease-in-out", t7);
|
|
31577
|
+
$[8] = t7;
|
|
31578
|
+
$[9] = t8;
|
|
31024
31579
|
} else {
|
|
31025
|
-
|
|
31580
|
+
t8 = $[9];
|
|
31026
31581
|
}
|
|
31027
|
-
|
|
31028
|
-
|
|
31029
|
-
|
|
31030
|
-
|
|
31031
|
-
$[
|
|
31032
|
-
$[
|
|
31582
|
+
const t9 = isExpanded ? "Collapse" : "Expand";
|
|
31583
|
+
let t10;
|
|
31584
|
+
if ($[10] !== t9) {
|
|
31585
|
+
t10 = /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: "body2", className: "text-surface-500 dark:text-surface-400 select-none whitespace-nowrap", children: t9 });
|
|
31586
|
+
$[10] = t9;
|
|
31587
|
+
$[11] = t10;
|
|
31033
31588
|
} else {
|
|
31034
|
-
|
|
31589
|
+
t10 = $[11];
|
|
31035
31590
|
}
|
|
31036
|
-
let
|
|
31037
|
-
if ($[
|
|
31038
|
-
|
|
31039
|
-
$[
|
|
31040
|
-
$[
|
|
31041
|
-
$[
|
|
31591
|
+
let t11;
|
|
31592
|
+
if ($[12] !== t10 || $[13] !== t8) {
|
|
31593
|
+
t11 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: t8, children: t10 });
|
|
31594
|
+
$[12] = t10;
|
|
31595
|
+
$[13] = t8;
|
|
31596
|
+
$[14] = t11;
|
|
31042
31597
|
} else {
|
|
31043
|
-
|
|
31598
|
+
t11 = $[14];
|
|
31044
31599
|
}
|
|
31045
|
-
|
|
31600
|
+
let t12;
|
|
31601
|
+
if ($[15] !== isExpanded || $[16] !== t11 || $[17] !== t3 || $[18] !== t4 || $[19] !== t5 || $[20] !== t6) {
|
|
31602
|
+
t12 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: t2, role: "button", tabIndex: 0, "aria-expanded": isExpanded, "aria-label": t3, onClick: t4, onKeyDown: t5, children: [
|
|
31603
|
+
t6,
|
|
31604
|
+
t11
|
|
31605
|
+
] });
|
|
31606
|
+
$[15] = isExpanded;
|
|
31607
|
+
$[16] = t11;
|
|
31608
|
+
$[17] = t3;
|
|
31609
|
+
$[18] = t4;
|
|
31610
|
+
$[19] = t5;
|
|
31611
|
+
$[20] = t6;
|
|
31612
|
+
$[21] = t12;
|
|
31613
|
+
} else {
|
|
31614
|
+
t12 = $[21];
|
|
31615
|
+
}
|
|
31616
|
+
let t13;
|
|
31617
|
+
if ($[22] !== t0 || $[23] !== t1 || $[24] !== t12) {
|
|
31618
|
+
t13 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 mt-auto px-4 pt-0.5 pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: t0, side: "right", sideOffset: 12, open: t1, children: t12 }) });
|
|
31619
|
+
$[22] = t0;
|
|
31620
|
+
$[23] = t1;
|
|
31621
|
+
$[24] = t12;
|
|
31622
|
+
$[25] = t13;
|
|
31623
|
+
} else {
|
|
31624
|
+
t13 = $[25];
|
|
31625
|
+
}
|
|
31626
|
+
return t13;
|
|
31627
|
+
}
|
|
31628
|
+
function DrawerLogo(t0) {
|
|
31629
|
+
const $ = reactCompilerRuntime.c(5);
|
|
31630
|
+
const {
|
|
31631
|
+
logo
|
|
31632
|
+
} = t0;
|
|
31633
|
+
const navigation = useNavigationController();
|
|
31634
|
+
let t1;
|
|
31635
|
+
if ($[0] !== logo) {
|
|
31636
|
+
t1 = logo ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo, alt: "Logo", className: "w-[28px] h-[28px] object-contain" }) : /* @__PURE__ */ jsxRuntime.jsx(FireCMSLogo, { width: "28px", height: "28px" });
|
|
31637
|
+
$[0] = logo;
|
|
31638
|
+
$[1] = t1;
|
|
31639
|
+
} else {
|
|
31640
|
+
t1 = $[1];
|
|
31641
|
+
}
|
|
31642
|
+
let t2;
|
|
31643
|
+
if ($[2] !== navigation.basePath || $[3] !== t1) {
|
|
31644
|
+
t2 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-row items-center shrink-0 pt-4 pb-0 px-2", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: "Home", sideOffset: 20, side: "right", children: /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Link, { className: "shrink-0 flex items-center justify-center w-[56px] h-[40px]", to: navigation.basePath, children: t1 }) }) });
|
|
31645
|
+
$[2] = navigation.basePath;
|
|
31646
|
+
$[3] = t1;
|
|
31647
|
+
$[4] = t2;
|
|
31648
|
+
} else {
|
|
31649
|
+
t2 = $[4];
|
|
31650
|
+
}
|
|
31651
|
+
return t2;
|
|
31046
31652
|
}
|
|
31047
31653
|
function UserSelectFieldBinding(t0) {
|
|
31048
31654
|
const $ = reactCompilerRuntime.c(44);
|
|
@@ -31433,6 +32039,17 @@
|
|
|
31433
32039
|
Field: DateTimeFieldBinding
|
|
31434
32040
|
}
|
|
31435
32041
|
},
|
|
32042
|
+
geopoint: {
|
|
32043
|
+
key: "geopoint",
|
|
32044
|
+
name: "Geopoint",
|
|
32045
|
+
description: "Latitude and longitude pair",
|
|
32046
|
+
Icon: ui.LocationOnIcon,
|
|
32047
|
+
color: "#0ea5e9",
|
|
32048
|
+
property: {
|
|
32049
|
+
dataType: "geopoint",
|
|
32050
|
+
Field: GeopointFieldBinding
|
|
32051
|
+
}
|
|
32052
|
+
},
|
|
31436
32053
|
group: {
|
|
31437
32054
|
key: "group",
|
|
31438
32055
|
name: "Group",
|
|
@@ -31575,6 +32192,8 @@
|
|
|
31575
32192
|
return "switch";
|
|
31576
32193
|
} else if (property.dataType === "date") {
|
|
31577
32194
|
return "date_time";
|
|
32195
|
+
} else if (property.dataType === "geopoint") {
|
|
32196
|
+
return "geopoint";
|
|
31578
32197
|
} else if (property.dataType === "reference") {
|
|
31579
32198
|
return "reference";
|
|
31580
32199
|
}
|
|
@@ -31585,6 +32204,20 @@
|
|
|
31585
32204
|
if (property.propertyConfig) return property.propertyConfig;
|
|
31586
32205
|
return getDefaultFieldId(property);
|
|
31587
32206
|
}
|
|
32207
|
+
const SIDE_PANEL_HASHES = ["#side", "#new_side"];
|
|
32208
|
+
function shouldBlockEntityNavigation(params) {
|
|
32209
|
+
const {
|
|
32210
|
+
currentLocation,
|
|
32211
|
+
nextLocation,
|
|
32212
|
+
entityPath,
|
|
32213
|
+
basePath,
|
|
32214
|
+
blocked
|
|
32215
|
+
} = params;
|
|
32216
|
+
if (nextLocation.pathname.startsWith(entityPath)) return false;
|
|
32217
|
+
if (SIDE_PANEL_HASHES.includes(nextLocation.hash)) return false;
|
|
32218
|
+
if (SIDE_PANEL_HASHES.includes(currentLocation.hash) && nextLocation.pathname === basePath) return false;
|
|
32219
|
+
return blocked;
|
|
32220
|
+
}
|
|
31588
32221
|
const EntityEditView = lazyEager(() => Promise.resolve().then(() => EntityEditView$2), "EntityEditView");
|
|
31589
32222
|
const EntityCollectionView = lazyEager(() => Promise.resolve().then(() => EntityCollectionView$2), "EntityCollectionView");
|
|
31590
32223
|
function FireCMSRoute() {
|
|
@@ -31963,19 +32596,31 @@
|
|
|
31963
32596
|
setSelectedTab(urlTab);
|
|
31964
32597
|
}
|
|
31965
32598
|
}, [urlTab]);
|
|
31966
|
-
const
|
|
31967
|
-
const
|
|
32599
|
+
const lastCollectionEntry = navigationEntries.findLast((entry_1) => entry_1.type === "collection");
|
|
32600
|
+
const entityEntryIndex = lastEntityEntry ? navigationEntries.indexOf(lastEntityEntry) : -1;
|
|
32601
|
+
const parentCollectionEntry = entityEntryIndex > 0 ? navigationEntries[entityEntryIndex - 1] : void 0;
|
|
32602
|
+
const buildUrl = (escapedPath) => addInitialSlash(navigation.buildUrlCollectionPath(escapedPath));
|
|
32603
|
+
const basePath = !entityId || isNew || !parentCollectionEntry ? pathname : buildUrl(parentCollectionEntry.fullPath);
|
|
32604
|
+
const entityPath = lastEntityEntry ? buildUrl(lastEntityEntry.fullPath) : basePath;
|
|
32605
|
+
const buildEntityUrl = (id, tab) => {
|
|
32606
|
+
const parentPath = parentCollectionEntry?.fullPath ?? lastCollectionEntry?.fullPath;
|
|
32607
|
+
if (!parentPath) return pathname;
|
|
32608
|
+
return buildUrl(`${parentPath}/${encodeEntityId(id)}${tab ? "/" + tab : ""}`);
|
|
32609
|
+
};
|
|
31968
32610
|
let blocker = void 0;
|
|
31969
32611
|
try {
|
|
31970
32612
|
blocker = reactRouter.useBlocker(({
|
|
32613
|
+
currentLocation,
|
|
31971
32614
|
nextLocation
|
|
31972
|
-
}) => {
|
|
31973
|
-
|
|
31974
|
-
|
|
31975
|
-
|
|
32615
|
+
}) => shouldBlockEntityNavigation({
|
|
32616
|
+
currentLocation,
|
|
32617
|
+
nextLocation,
|
|
32618
|
+
entityPath,
|
|
32619
|
+
basePath,
|
|
32620
|
+
blocked: blocked.current
|
|
32621
|
+
}));
|
|
31976
32622
|
} catch (e) {
|
|
31977
32623
|
}
|
|
31978
|
-
const lastCollectionEntry = navigationEntries.findLast((entry_1) => entry_1.type === "collection");
|
|
31979
32624
|
if (isNew && !lastCollectionEntry) {
|
|
31980
32625
|
throw new Error("INTERNAL: No collection found in the navigation");
|
|
31981
32626
|
}
|
|
@@ -31983,36 +32628,23 @@
|
|
|
31983
32628
|
return /* @__PURE__ */ jsxRuntime.jsx(NotFoundPage, {});
|
|
31984
32629
|
}
|
|
31985
32630
|
const collection = isNew ? lastCollectionEntry.collection : lastEntityEntry.parentCollection;
|
|
31986
|
-
const fullIdPath = isNew ? lastCollectionEntry.
|
|
31987
|
-
const collectionPath = navigation.resolveIdsFrom(
|
|
32631
|
+
const fullIdPath = isNew ? lastCollectionEntry.fullPath : parentCollectionEntry?.fullPath ?? lastEntityEntry.fullPath;
|
|
32632
|
+
const collectionPath = navigation.resolveIdsFrom(isNew ? lastCollectionEntry.path : lastEntityEntry.path);
|
|
31988
32633
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31989
32634
|
/* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntime.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) => {
|
|
31990
|
-
const newSelectedTab = params.selectedTab;
|
|
31991
32635
|
const newEntityId = params.entityId;
|
|
31992
|
-
if (
|
|
31993
|
-
|
|
31994
|
-
|
|
31995
|
-
|
|
31996
|
-
} else {
|
|
31997
|
-
navigate(`${basePath}/${newEntityId}`, {
|
|
31998
|
-
replace: true
|
|
31999
|
-
});
|
|
32000
|
-
}
|
|
32636
|
+
if (!newEntityId) return;
|
|
32637
|
+
navigate(buildEntityUrl(newEntityId, params.selectedTab), {
|
|
32638
|
+
replace: true
|
|
32639
|
+
});
|
|
32001
32640
|
}, onTabChange: (params_0) => {
|
|
32002
32641
|
setSelectedTab(params_0.selectedTab);
|
|
32003
|
-
if (isNew) {
|
|
32642
|
+
if (isNew || !entityId) {
|
|
32004
32643
|
return;
|
|
32005
32644
|
}
|
|
32006
|
-
|
|
32007
|
-
|
|
32008
|
-
|
|
32009
|
-
replace: true
|
|
32010
|
-
});
|
|
32011
|
-
} else {
|
|
32012
|
-
navigate(`${basePath}/${entityId}`, {
|
|
32013
|
-
replace: true
|
|
32014
|
-
});
|
|
32015
|
-
}
|
|
32645
|
+
navigate(buildEntityUrl(entityId, params_0.selectedTab), {
|
|
32646
|
+
replace: true
|
|
32647
|
+
});
|
|
32016
32648
|
}, parentCollectionIds }, collection.id + "_" + (isNew ? "new" : isCopy ? entityId + "_copy" : entityId)) }),
|
|
32017
32649
|
/* @__PURE__ */ jsxRuntime.jsx(UnsavedChangesDialog, { open: blocker?.state === "blocked", handleOk: () => blocker?.proceed?.(), handleCancel: () => blocker?.reset?.(), body: "You have unsaved changes in this entity." })
|
|
32018
32650
|
] });
|
|
@@ -32258,7 +32890,7 @@
|
|
|
32258
32890
|
const otherChildren = t3;
|
|
32259
32891
|
const includeDrawer = drawerChildren.length > 0;
|
|
32260
32892
|
const largeLayout = useLargeLayout();
|
|
32261
|
-
const [drawerOpen, setDrawerOpen] = React.useState(
|
|
32893
|
+
const [drawerOpen, setDrawerOpen] = React.useState(_temp4$1);
|
|
32262
32894
|
const [onHover, setOnHover] = React.useState(false);
|
|
32263
32895
|
let t4;
|
|
32264
32896
|
if ($[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
@@ -32270,7 +32902,12 @@
|
|
|
32270
32902
|
const setOnHoverTrue = t4;
|
|
32271
32903
|
let t5;
|
|
32272
32904
|
if ($[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32273
|
-
t5 = () =>
|
|
32905
|
+
t5 = () => {
|
|
32906
|
+
if (typeof document !== "undefined" && document.querySelector("[data-radix-popper-content-wrapper]")) {
|
|
32907
|
+
return;
|
|
32908
|
+
}
|
|
32909
|
+
setOnHover(false);
|
|
32910
|
+
};
|
|
32274
32911
|
$[7] = t5;
|
|
32275
32912
|
} else {
|
|
32276
32913
|
t5 = $[7];
|
|
@@ -32280,6 +32917,10 @@
|
|
|
32280
32917
|
if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32281
32918
|
t6 = () => {
|
|
32282
32919
|
setDrawerOpen(true);
|
|
32920
|
+
try {
|
|
32921
|
+
localStorage.setItem("firecms_drawer_open", "true");
|
|
32922
|
+
} catch {
|
|
32923
|
+
}
|
|
32283
32924
|
};
|
|
32284
32925
|
$[8] = t6;
|
|
32285
32926
|
} else {
|
|
@@ -32290,30 +32931,36 @@
|
|
|
32290
32931
|
if ($[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32291
32932
|
t7 = () => {
|
|
32292
32933
|
setDrawerOpen(false);
|
|
32934
|
+
try {
|
|
32935
|
+
localStorage.setItem("firecms_drawer_open", "false");
|
|
32936
|
+
} catch {
|
|
32937
|
+
}
|
|
32293
32938
|
};
|
|
32294
32939
|
$[9] = t7;
|
|
32295
32940
|
} else {
|
|
32296
32941
|
t7 = $[9];
|
|
32297
32942
|
}
|
|
32298
32943
|
const handleDrawerClose = t7;
|
|
32299
|
-
const computedDrawerOpen = drawerOpen
|
|
32944
|
+
const computedDrawerOpen = drawerOpen;
|
|
32945
|
+
const computedDrawerHovered = Boolean(largeLayout && onHover);
|
|
32300
32946
|
const hasAppBar = Boolean(appBarChildren.length > 0);
|
|
32301
32947
|
let t8;
|
|
32302
|
-
if ($[10] !== autoOpenDrawer || $[11] !==
|
|
32948
|
+
if ($[10] !== autoOpenDrawer || $[11] !== computedDrawerHovered || $[12] !== computedDrawerOpen || $[13] !== includeDrawer || $[14] !== logo) {
|
|
32303
32949
|
t8 = {
|
|
32304
32950
|
logo,
|
|
32305
32951
|
hasDrawer: includeDrawer,
|
|
32306
|
-
drawerHovered:
|
|
32952
|
+
drawerHovered: computedDrawerHovered,
|
|
32307
32953
|
drawerOpen: computedDrawerOpen,
|
|
32308
32954
|
closeDrawer: handleDrawerClose,
|
|
32309
32955
|
openDrawer: handleDrawerOpen,
|
|
32956
|
+
closeHover: setOnHoverFalse,
|
|
32310
32957
|
autoOpenDrawer
|
|
32311
32958
|
};
|
|
32312
32959
|
$[10] = autoOpenDrawer;
|
|
32313
|
-
$[11] =
|
|
32314
|
-
$[12] =
|
|
32315
|
-
$[13] =
|
|
32316
|
-
$[14] =
|
|
32960
|
+
$[11] = computedDrawerHovered;
|
|
32961
|
+
$[12] = computedDrawerOpen;
|
|
32962
|
+
$[13] = includeDrawer;
|
|
32963
|
+
$[14] = logo;
|
|
32317
32964
|
$[15] = t8;
|
|
32318
32965
|
} else {
|
|
32319
32966
|
t8 = $[15];
|
|
@@ -32343,11 +32990,11 @@
|
|
|
32343
32990
|
}
|
|
32344
32991
|
const t11 = includeDrawer && drawerChildren;
|
|
32345
32992
|
let t12;
|
|
32346
|
-
if ($[20] !==
|
|
32347
|
-
t12 = /* @__PURE__ */ jsxRuntime.jsx(DrawerWrapper, { displayed: includeDrawer, onMouseEnter: setOnHoverTrue, onMouseMove: setOnHoverTrue, onMouseLeave: setOnHoverFalse, open: computedDrawerOpen, hovered:
|
|
32348
|
-
$[20] =
|
|
32349
|
-
$[21] =
|
|
32350
|
-
$[22] =
|
|
32993
|
+
if ($[20] !== computedDrawerHovered || $[21] !== computedDrawerOpen || $[22] !== includeDrawer || $[23] !== t11) {
|
|
32994
|
+
t12 = /* @__PURE__ */ jsxRuntime.jsx(DrawerWrapper, { displayed: includeDrawer, onMouseEnter: setOnHoverTrue, onMouseMove: setOnHoverTrue, onMouseLeave: setOnHoverFalse, open: computedDrawerOpen, hovered: computedDrawerHovered, setDrawerOpen, children: t11 });
|
|
32995
|
+
$[20] = computedDrawerHovered;
|
|
32996
|
+
$[21] = computedDrawerOpen;
|
|
32997
|
+
$[22] = includeDrawer;
|
|
32351
32998
|
$[23] = t11;
|
|
32352
32999
|
$[24] = t12;
|
|
32353
33000
|
} else {
|
|
@@ -32445,193 +33092,149 @@
|
|
|
32445
33092
|
return t0;
|
|
32446
33093
|
};
|
|
32447
33094
|
function DrawerWrapper(props) {
|
|
32448
|
-
const $ = reactCompilerRuntime.c(
|
|
33095
|
+
const $ = reactCompilerRuntime.c(36);
|
|
32449
33096
|
const {
|
|
32450
33097
|
t
|
|
32451
33098
|
} = useTranslation();
|
|
32452
|
-
const
|
|
32453
|
-
|
|
32454
|
-
|
|
32455
|
-
|
|
32456
|
-
|
|
32457
|
-
|
|
32458
|
-
|
|
32459
|
-
$[0] =
|
|
32460
|
-
$[1] =
|
|
33099
|
+
const layoutWidth = !props.displayed ? 0 : props.open ? DRAWER_WIDTH : 72;
|
|
33100
|
+
const visualWidth = !props.displayed ? 0 : props.open || props.hovered ? DRAWER_WIDTH : 72;
|
|
33101
|
+
const isFloating = props.hovered && !props.open;
|
|
33102
|
+
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";
|
|
33103
|
+
let t1;
|
|
33104
|
+
if ($[0] !== t0) {
|
|
33105
|
+
t1 = ui.cls("h-full overflow-hidden", ui.defaultBorderMixin, t0);
|
|
33106
|
+
$[0] = t0;
|
|
33107
|
+
$[1] = t1;
|
|
32461
33108
|
} else {
|
|
32462
|
-
|
|
33109
|
+
t1 = $[1];
|
|
32463
33110
|
}
|
|
32464
|
-
let
|
|
32465
|
-
if ($[2] !==
|
|
32466
|
-
|
|
32467
|
-
|
|
32468
|
-
|
|
32469
|
-
|
|
33111
|
+
let t2;
|
|
33112
|
+
if ($[2] !== visualWidth) {
|
|
33113
|
+
t2 = {
|
|
33114
|
+
width: visualWidth,
|
|
33115
|
+
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"
|
|
33116
|
+
};
|
|
33117
|
+
$[2] = visualWidth;
|
|
33118
|
+
$[3] = t2;
|
|
32470
33119
|
} else {
|
|
32471
|
-
|
|
33120
|
+
t2 = $[3];
|
|
32472
33121
|
}
|
|
32473
|
-
const t2 = `z-20 absolute right-0 top-4 ${props.open ? "opacity-100" : "opacity-0 invisible"} transition-opacity duration-200 ease-in-out`;
|
|
32474
33122
|
let t3;
|
|
32475
|
-
if ($[
|
|
32476
|
-
t3 =
|
|
32477
|
-
$[
|
|
32478
|
-
$[
|
|
33123
|
+
if ($[4] !== props.children) {
|
|
33124
|
+
t3 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col h-full", children: props.children });
|
|
33125
|
+
$[4] = props.children;
|
|
33126
|
+
$[5] = t3;
|
|
32479
33127
|
} else {
|
|
32480
|
-
t3 = $[
|
|
33128
|
+
t3 = $[5];
|
|
32481
33129
|
}
|
|
32482
33130
|
let t4;
|
|
32483
|
-
if ($[7] !==
|
|
32484
|
-
t4 =
|
|
32485
|
-
$[
|
|
32486
|
-
$[
|
|
32487
|
-
|
|
32488
|
-
|
|
32489
|
-
}
|
|
32490
|
-
let t5;
|
|
32491
|
-
if ($[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32492
|
-
t5 = /* @__PURE__ */ jsxRuntime.jsx(ui.ChevronLeftIcon, {});
|
|
32493
|
-
$[9] = t5;
|
|
32494
|
-
} else {
|
|
32495
|
-
t5 = $[9];
|
|
32496
|
-
}
|
|
32497
|
-
let t6;
|
|
32498
|
-
if ($[10] !== t3 || $[11] !== t4) {
|
|
32499
|
-
t6 = /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { "aria-label": t3, onClick: t4, children: t5 });
|
|
32500
|
-
$[10] = t3;
|
|
32501
|
-
$[11] = t4;
|
|
32502
|
-
$[12] = t6;
|
|
32503
|
-
} else {
|
|
32504
|
-
t6 = $[12];
|
|
32505
|
-
}
|
|
32506
|
-
let t7;
|
|
32507
|
-
if ($[13] !== t2 || $[14] !== t6) {
|
|
32508
|
-
t7 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: t2, children: t6 });
|
|
32509
|
-
$[13] = t2;
|
|
32510
|
-
$[14] = t6;
|
|
32511
|
-
$[15] = t7;
|
|
32512
|
-
} else {
|
|
32513
|
-
t7 = $[15];
|
|
32514
|
-
}
|
|
32515
|
-
let t8;
|
|
32516
|
-
if ($[16] !== props.children) {
|
|
32517
|
-
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col h-full", children: props.children });
|
|
32518
|
-
$[16] = props.children;
|
|
32519
|
-
$[17] = t8;
|
|
32520
|
-
} else {
|
|
32521
|
-
t8 = $[17];
|
|
32522
|
-
}
|
|
32523
|
-
let t9;
|
|
32524
|
-
if ($[18] !== t0 || $[19] !== t1 || $[20] !== t7 || $[21] !== t8) {
|
|
32525
|
-
t9 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-full no-scrollbar overflow-y-auto overflow-x-hidden", style: t0, children: [
|
|
32526
|
-
t1,
|
|
32527
|
-
t7,
|
|
32528
|
-
t8
|
|
32529
|
-
] });
|
|
32530
|
-
$[18] = t0;
|
|
32531
|
-
$[19] = t1;
|
|
32532
|
-
$[20] = t7;
|
|
32533
|
-
$[21] = t8;
|
|
32534
|
-
$[22] = t9;
|
|
33131
|
+
if ($[6] !== t1 || $[7] !== t2 || $[8] !== t3) {
|
|
33132
|
+
t4 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: t1, style: t2, children: t3 });
|
|
33133
|
+
$[6] = t1;
|
|
33134
|
+
$[7] = t2;
|
|
33135
|
+
$[8] = t3;
|
|
33136
|
+
$[9] = t4;
|
|
32535
33137
|
} else {
|
|
32536
|
-
|
|
33138
|
+
t4 = $[9];
|
|
32537
33139
|
}
|
|
32538
|
-
const innerDrawer =
|
|
33140
|
+
const innerDrawer = t4;
|
|
32539
33141
|
const largeLayout = useLargeLayout();
|
|
32540
33142
|
if (!largeLayout) {
|
|
32541
33143
|
if (!props.displayed) {
|
|
32542
33144
|
return null;
|
|
32543
33145
|
}
|
|
32544
|
-
let
|
|
32545
|
-
if ($[
|
|
32546
|
-
|
|
32547
|
-
$[
|
|
32548
|
-
$[
|
|
33146
|
+
let t52;
|
|
33147
|
+
if ($[10] !== t) {
|
|
33148
|
+
t52 = t("open_menu");
|
|
33149
|
+
$[10] = t;
|
|
33150
|
+
$[11] = t52;
|
|
32549
33151
|
} else {
|
|
32550
|
-
|
|
33152
|
+
t52 = $[11];
|
|
32551
33153
|
}
|
|
32552
|
-
let
|
|
32553
|
-
if ($[
|
|
32554
|
-
|
|
32555
|
-
$[
|
|
32556
|
-
$[
|
|
33154
|
+
let t62;
|
|
33155
|
+
if ($[12] !== props) {
|
|
33156
|
+
t62 = () => props.setDrawerOpen(true);
|
|
33157
|
+
$[12] = props;
|
|
33158
|
+
$[13] = t62;
|
|
32557
33159
|
} else {
|
|
32558
|
-
|
|
33160
|
+
t62 = $[13];
|
|
32559
33161
|
}
|
|
32560
|
-
let
|
|
32561
|
-
if ($[
|
|
32562
|
-
|
|
32563
|
-
$[
|
|
33162
|
+
let t7;
|
|
33163
|
+
if ($[14] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
33164
|
+
t7 = /* @__PURE__ */ jsxRuntime.jsx(ui.MenuIcon, {});
|
|
33165
|
+
$[14] = t7;
|
|
32564
33166
|
} else {
|
|
32565
|
-
|
|
33167
|
+
t7 = $[14];
|
|
32566
33168
|
}
|
|
32567
|
-
let
|
|
32568
|
-
if ($[
|
|
32569
|
-
|
|
32570
|
-
$[
|
|
32571
|
-
$[
|
|
32572
|
-
$[
|
|
33169
|
+
let t8;
|
|
33170
|
+
if ($[15] !== t52 || $[16] !== t62) {
|
|
33171
|
+
t8 = /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { color: "inherit", "aria-label": t52, onClick: t62, size: "large", className: "absolute sm:top-2 sm:left-4 top-1 left-2", children: t7 });
|
|
33172
|
+
$[15] = t52;
|
|
33173
|
+
$[16] = t62;
|
|
33174
|
+
$[17] = t8;
|
|
32573
33175
|
} else {
|
|
32574
|
-
|
|
33176
|
+
t8 = $[17];
|
|
32575
33177
|
}
|
|
32576
|
-
const
|
|
32577
|
-
const
|
|
32578
|
-
let
|
|
32579
|
-
if ($[
|
|
32580
|
-
|
|
32581
|
-
$[
|
|
32582
|
-
$[
|
|
33178
|
+
const t9 = props.open;
|
|
33179
|
+
const t10 = props.setDrawerOpen;
|
|
33180
|
+
let t11;
|
|
33181
|
+
if ($[18] !== t) {
|
|
33182
|
+
t11 = t("navigation_drawer");
|
|
33183
|
+
$[18] = t;
|
|
33184
|
+
$[19] = t11;
|
|
32583
33185
|
} else {
|
|
32584
|
-
|
|
33186
|
+
t11 = $[19];
|
|
32585
33187
|
}
|
|
32586
|
-
let
|
|
32587
|
-
if ($[
|
|
32588
|
-
|
|
32589
|
-
$[
|
|
32590
|
-
$[
|
|
32591
|
-
$[
|
|
32592
|
-
$[
|
|
32593
|
-
$[
|
|
33188
|
+
let t12;
|
|
33189
|
+
if ($[20] !== innerDrawer || $[21] !== props.open || $[22] !== props.setDrawerOpen || $[23] !== t11) {
|
|
33190
|
+
t12 = /* @__PURE__ */ jsxRuntime.jsx(ui.Sheet, { side: "left", transparent: true, open: t9, onOpenChange: t10, title: t11, overlayClassName: "bg-white bg-opacity-80 bg-white/80", children: innerDrawer });
|
|
33191
|
+
$[20] = innerDrawer;
|
|
33192
|
+
$[21] = props.open;
|
|
33193
|
+
$[22] = props.setDrawerOpen;
|
|
33194
|
+
$[23] = t11;
|
|
33195
|
+
$[24] = t12;
|
|
32594
33196
|
} else {
|
|
32595
|
-
|
|
33197
|
+
t12 = $[24];
|
|
32596
33198
|
}
|
|
32597
|
-
let
|
|
32598
|
-
if ($[
|
|
32599
|
-
|
|
32600
|
-
|
|
32601
|
-
|
|
33199
|
+
let t13;
|
|
33200
|
+
if ($[25] !== t12 || $[26] !== t8) {
|
|
33201
|
+
t13 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
33202
|
+
t8,
|
|
33203
|
+
t12
|
|
32602
33204
|
] });
|
|
32603
|
-
$[
|
|
32604
|
-
$[
|
|
32605
|
-
$[
|
|
33205
|
+
$[25] = t12;
|
|
33206
|
+
$[26] = t8;
|
|
33207
|
+
$[27] = t13;
|
|
32606
33208
|
} else {
|
|
32607
|
-
|
|
33209
|
+
t13 = $[27];
|
|
32608
33210
|
}
|
|
32609
|
-
return
|
|
33211
|
+
return t13;
|
|
32610
33212
|
}
|
|
32611
|
-
let
|
|
32612
|
-
if ($[
|
|
32613
|
-
|
|
32614
|
-
width,
|
|
32615
|
-
|
|
33213
|
+
let t5;
|
|
33214
|
+
if ($[28] !== layoutWidth) {
|
|
33215
|
+
t5 = {
|
|
33216
|
+
width: layoutWidth,
|
|
33217
|
+
minWidth: layoutWidth,
|
|
33218
|
+
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"
|
|
32616
33219
|
};
|
|
32617
|
-
$[
|
|
32618
|
-
$[
|
|
33220
|
+
$[28] = layoutWidth;
|
|
33221
|
+
$[29] = t5;
|
|
32619
33222
|
} else {
|
|
32620
|
-
|
|
33223
|
+
t5 = $[29];
|
|
32621
33224
|
}
|
|
32622
|
-
let
|
|
32623
|
-
if ($[
|
|
32624
|
-
|
|
32625
|
-
$[
|
|
32626
|
-
$[
|
|
32627
|
-
$[
|
|
32628
|
-
$[
|
|
32629
|
-
$[
|
|
32630
|
-
$[
|
|
33225
|
+
let t6;
|
|
33226
|
+
if ($[30] !== innerDrawer || $[31] !== props.onMouseEnter || $[32] !== props.onMouseLeave || $[33] !== props.onMouseMove || $[34] !== t5) {
|
|
33227
|
+
t6 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "z-20 relative flex-shrink-0 overflow-visible", onMouseEnter: props.onMouseEnter, onMouseMove: props.onMouseMove, onMouseLeave: props.onMouseLeave, style: t5, children: innerDrawer });
|
|
33228
|
+
$[30] = innerDrawer;
|
|
33229
|
+
$[31] = props.onMouseEnter;
|
|
33230
|
+
$[32] = props.onMouseLeave;
|
|
33231
|
+
$[33] = props.onMouseMove;
|
|
33232
|
+
$[34] = t5;
|
|
33233
|
+
$[35] = t6;
|
|
32631
33234
|
} else {
|
|
32632
|
-
|
|
33235
|
+
t6 = $[35];
|
|
32633
33236
|
}
|
|
32634
|
-
return
|
|
33237
|
+
return t6;
|
|
32635
33238
|
}
|
|
32636
33239
|
function _temp$6(child) {
|
|
32637
33240
|
return child.type.componentType === "Drawer";
|
|
@@ -32642,6 +33245,13 @@
|
|
|
32642
33245
|
function _temp3$1(child_1) {
|
|
32643
33246
|
return child_1.type.componentType !== "Drawer" && child_1.type.componentType !== "AppBar";
|
|
32644
33247
|
}
|
|
33248
|
+
function _temp4$1() {
|
|
33249
|
+
try {
|
|
33250
|
+
return localStorage.getItem("firecms_drawer_open") === "true";
|
|
33251
|
+
} catch {
|
|
33252
|
+
return false;
|
|
33253
|
+
}
|
|
33254
|
+
}
|
|
32645
33255
|
const en = {
|
|
32646
33256
|
// ─── Form actions ────────────────────────────────────────────
|
|
32647
33257
|
save: "Save",
|
|
@@ -32779,8 +33389,8 @@
|
|
|
32779
33389
|
// ─── Error states ─────────────────────────────────────────────
|
|
32780
33390
|
error: "Error",
|
|
32781
33391
|
error_uploading_file: "Error uploading file",
|
|
32782
|
-
error_deleting: "Error deleting",
|
|
32783
|
-
error_before_delete: "Error before delete",
|
|
33392
|
+
error_deleting: "Error deleting: {{message}}",
|
|
33393
|
+
error_before_delete: "Error before delete: {{message}}",
|
|
32784
33394
|
error_updating_asset: "Error updating asset",
|
|
32785
33395
|
error_deleting_asset: "Error deleting asset",
|
|
32786
33396
|
error_firestore_index: "A Firestore index is required for this query.",
|
|
@@ -33045,8 +33655,8 @@
|
|
|
33045
33655
|
cms_users: "CMS Users",
|
|
33046
33656
|
roles_menu: "Roles",
|
|
33047
33657
|
project_settings: "Project settings",
|
|
33048
|
-
|
|
33049
|
-
|
|
33658
|
+
firestore_manager: "Firestore Manager",
|
|
33659
|
+
manage_your_firestore_data: "Manage your Firestore data",
|
|
33050
33660
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
33051
33661
|
build_admin_panel_in_minutes: "Build Your Firebase Admin Panel in Minutes",
|
|
33052
33662
|
go_live_instantly: "Go live instantly:",
|
|
@@ -33117,10 +33727,18 @@
|
|
|
33117
33727
|
auto_setup_collections_button: "Automatically set up collections",
|
|
33118
33728
|
auto_setup_collections_title: "Automatically set up collections?",
|
|
33119
33729
|
auto_setup_collections_desc: "This will automatically create collection configs for collections that are <b>NOT</b> already mapped",
|
|
33120
|
-
|
|
33730
|
+
setting_up_collections: "Setting up collections",
|
|
33731
|
+
setting_up_collection: "Setting up {{name}}",
|
|
33121
33732
|
no_collections_found_to_setup: "No collections found to setup.",
|
|
33122
33733
|
collections_have_been_setup: "Collections have been automatically setup.",
|
|
33123
33734
|
error_setting_up_collections: "Error automatically setting up collections",
|
|
33735
|
+
setup_collections_title: "Set up collections",
|
|
33736
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
33737
|
+
select_all: "Select all",
|
|
33738
|
+
deselect_all: "Deselect all",
|
|
33739
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
33740
|
+
collection_setup_success: "{{name}} has been set up",
|
|
33741
|
+
go_to_collection: "Go to collection",
|
|
33124
33742
|
// --- Home Suggestions ---
|
|
33125
33743
|
add_your: "Add your",
|
|
33126
33744
|
database_collections: "database collections",
|
|
@@ -33448,8 +34066,8 @@
|
|
|
33448
34066
|
// ─── Error states ─────────────────────────────────────────────
|
|
33449
34067
|
error: "Error",
|
|
33450
34068
|
error_uploading_file: "Error al subir archivo",
|
|
33451
|
-
error_deleting: "Error al eliminar",
|
|
33452
|
-
error_before_delete: "Error antes de eliminar",
|
|
34069
|
+
error_deleting: "Error al eliminar: {{message}}",
|
|
34070
|
+
error_before_delete: "Error antes de eliminar: {{message}}",
|
|
33453
34071
|
error_updating_asset: "Error al actualizar recurso",
|
|
33454
34072
|
error_deleting_asset: "Error al eliminar recurso",
|
|
33455
34073
|
error_firestore_index: "Se requiere un índice de Firestore para esta consulta.",
|
|
@@ -33716,8 +34334,8 @@
|
|
|
33716
34334
|
cms_users: "Usuarios del CMS",
|
|
33717
34335
|
roles_menu: "Roles",
|
|
33718
34336
|
project_settings: "Ajustes del proyecto",
|
|
33719
|
-
|
|
33720
|
-
|
|
34337
|
+
firestore_manager: "Gestor de Firestore",
|
|
34338
|
+
manage_your_firestore_data: "Gestiona tus datos de Firestore",
|
|
33721
34339
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
33722
34340
|
build_admin_panel_in_minutes: "Crea tu panel de administración de Firebase en minutos",
|
|
33723
34341
|
go_live_instantly: "En vivo al instante:",
|
|
@@ -33788,10 +34406,18 @@
|
|
|
33788
34406
|
auto_setup_collections_button: "Configurar colecciones automáticamente",
|
|
33789
34407
|
auto_setup_collections_title: "¿Configurar colecciones automáticamente?",
|
|
33790
34408
|
auto_setup_collections_desc: "Esto creará automáticamente la configuración de las colecciones que <b>NO</b> estén mapeadas",
|
|
33791
|
-
|
|
34409
|
+
setting_up_collections: "Configurando colecciones",
|
|
34410
|
+
setting_up_collection: "Configurando {{name}}",
|
|
33792
34411
|
no_collections_found_to_setup: "No se encontraron colecciones para configurar",
|
|
33793
34412
|
collections_have_been_setup: "¡Tus colecciones han sido configuradas!",
|
|
33794
34413
|
error_setting_up_collections: "Error al configurar colecciones",
|
|
34414
|
+
setup_collections_title: "Set up collections",
|
|
34415
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
34416
|
+
select_all: "Select all",
|
|
34417
|
+
deselect_all: "Deselect all",
|
|
34418
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
34419
|
+
collection_setup_success: "{{name}} has been set up",
|
|
34420
|
+
go_to_collection: "Go to collection",
|
|
33795
34421
|
// --- Home Suggestions ---
|
|
33796
34422
|
add_your: "Añade tus",
|
|
33797
34423
|
database_collections: "colecciones de base de datos",
|
|
@@ -34121,8 +34747,8 @@
|
|
|
34121
34747
|
// ─── Error states ─────────────────────────────────────────────
|
|
34122
34748
|
error: "Fehler",
|
|
34123
34749
|
error_uploading_file: "Fehler beim Hochladen der Datei",
|
|
34124
|
-
error_deleting: "Fehler beim Löschen",
|
|
34125
|
-
error_before_delete: "Fehler vor dem Löschen",
|
|
34750
|
+
error_deleting: "Fehler beim Löschen: {{message}}",
|
|
34751
|
+
error_before_delete: "Fehler vor dem Löschen: {{message}}",
|
|
34126
34752
|
error_updating_asset: "Fehler beim Aktualisieren des Assets",
|
|
34127
34753
|
error_deleting_asset: "Fehler beim Löschen des Assets",
|
|
34128
34754
|
error_firestore_index: "Für diese Abfrage ist ein Firestore-Index erforderlich.",
|
|
@@ -34387,8 +35013,8 @@
|
|
|
34387
35013
|
cms_users: "CMS-Benutzer",
|
|
34388
35014
|
roles_menu: "Rollen",
|
|
34389
35015
|
project_settings: "Projekteinstellungen",
|
|
34390
|
-
|
|
34391
|
-
|
|
35016
|
+
firestore_manager: "Firestore-Manager",
|
|
35017
|
+
manage_your_firestore_data: "Deine Firestore-Daten verwalten",
|
|
34392
35018
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
34393
35019
|
build_admin_panel_in_minutes: "Erstellen Sie Ihr Firebase Admin Panel in wenigen Minuten",
|
|
34394
35020
|
go_live_instantly: "Sofort live gehen:",
|
|
@@ -34459,10 +35085,18 @@
|
|
|
34459
35085
|
auto_setup_collections_button: "Sammlungen automatisch einrichten",
|
|
34460
35086
|
auto_setup_collections_title: "Sammlungen automatisch einrichten?",
|
|
34461
35087
|
auto_setup_collections_desc: "Dadurch werden automatisch Sammlungskonfigurationen für Sammlungen erstellt, die noch <b>NICHT</b> zugeordnet sind.",
|
|
34462
|
-
|
|
35088
|
+
setting_up_collections: "Sammlungen werden eingerichtet",
|
|
35089
|
+
setting_up_collection: "{{name}} wird eingerichtet",
|
|
34463
35090
|
no_collections_found_to_setup: "Keine einzurichtenden Sammlungen gefunden",
|
|
34464
35091
|
collections_have_been_setup: "Sammlungen wurden automatisch eingerichtet",
|
|
34465
35092
|
error_setting_up_collections: "Fehler beim automatischen Einrichten der Sammlungen",
|
|
35093
|
+
setup_collections_title: "Set up collections",
|
|
35094
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
35095
|
+
select_all: "Select all",
|
|
35096
|
+
deselect_all: "Deselect all",
|
|
35097
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
35098
|
+
collection_setup_success: "{{name}} has been set up",
|
|
35099
|
+
go_to_collection: "Go to collection",
|
|
34466
35100
|
add_your: "Fügen Sie Ihre",
|
|
34467
35101
|
database_collections: "Datenbanksammlungen",
|
|
34468
35102
|
to_firecms: "zu FireCMS hinzu",
|
|
@@ -34790,8 +35424,8 @@
|
|
|
34790
35424
|
// ─── Error states ─────────────────────────────────────────────
|
|
34791
35425
|
error: "Erreur",
|
|
34792
35426
|
error_uploading_file: "Erreur lors du téléchargement du fichier",
|
|
34793
|
-
error_deleting: "Erreur lors de la suppression",
|
|
34794
|
-
error_before_delete: "Erreur avant la suppression",
|
|
35427
|
+
error_deleting: "Erreur lors de la suppression: {{message}}",
|
|
35428
|
+
error_before_delete: "Erreur avant la suppression: {{message}}",
|
|
34795
35429
|
error_updating_asset: "Erreur lors de la mise à jour de l'actif",
|
|
34796
35430
|
error_deleting_asset: "Erreur lors de la suppression de l'actif",
|
|
34797
35431
|
error_firestore_index: "Un index Firestore est requis pour cette requête.",
|
|
@@ -35056,8 +35690,8 @@
|
|
|
35056
35690
|
cms_users: "Utilisateurs du CMS",
|
|
35057
35691
|
roles_menu: "Rôles",
|
|
35058
35692
|
project_settings: "Paramètres du projet",
|
|
35059
|
-
|
|
35060
|
-
|
|
35693
|
+
firestore_manager: "Gestionnaire Firestore",
|
|
35694
|
+
manage_your_firestore_data: "Gérez vos données Firestore",
|
|
35061
35695
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
35062
35696
|
build_admin_panel_in_minutes: "Créez votre panneau d'administration Firebase en quelques minutes",
|
|
35063
35697
|
go_live_instantly: "Mise en ligne immédiate :",
|
|
@@ -35128,10 +35762,18 @@
|
|
|
35128
35762
|
auto_setup_collections_button: "Configurer les collections automatiquement",
|
|
35129
35763
|
auto_setup_collections_title: "Configurer les collections automatiquement ?",
|
|
35130
35764
|
auto_setup_collections_desc: "Cela créera automatiquement des configurations de collection pour les collections qui ne sont <b>PAS</b> déjà mappées",
|
|
35131
|
-
|
|
35765
|
+
setting_up_collections: "Configuration des collections",
|
|
35766
|
+
setting_up_collection: "Configuration de {{name}}",
|
|
35132
35767
|
no_collections_found_to_setup: "Aucune collection à configurer trouvée",
|
|
35133
35768
|
collections_have_been_setup: "Les collections ont été configurées",
|
|
35134
35769
|
error_setting_up_collections: "Erreur lors de la configuration des collections",
|
|
35770
|
+
setup_collections_title: "Set up collections",
|
|
35771
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
35772
|
+
select_all: "Select all",
|
|
35773
|
+
deselect_all: "Deselect all",
|
|
35774
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
35775
|
+
collection_setup_success: "{{name}} has been set up",
|
|
35776
|
+
go_to_collection: "Go to collection",
|
|
35135
35777
|
add_your: "Ajoutez vos",
|
|
35136
35778
|
database_collections: "collections de base de données",
|
|
35137
35779
|
to_firecms: "à FireCMS",
|
|
@@ -35459,8 +36101,8 @@
|
|
|
35459
36101
|
// ─── Error states ─────────────────────────────────────────────
|
|
35460
36102
|
error: "Errore",
|
|
35461
36103
|
error_uploading_file: "Errore durante il caricamento del file",
|
|
35462
|
-
error_deleting: "Errore durante l'eliminazione",
|
|
35463
|
-
error_before_delete: "Errore prima dell'eliminazione",
|
|
36104
|
+
error_deleting: "Errore durante l'eliminazione: {{message}}",
|
|
36105
|
+
error_before_delete: "Errore prima dell'eliminazione: {{message}}",
|
|
35464
36106
|
error_updating_asset: "Errore durante l'aggiornamento dell'asset",
|
|
35465
36107
|
error_deleting_asset: "Errore durante l'eliminazione dell'asset",
|
|
35466
36108
|
error_firestore_index: "Per questa query è richiesto un indice Firestore.",
|
|
@@ -35725,8 +36367,8 @@
|
|
|
35725
36367
|
cms_users: "Utenti CMS",
|
|
35726
36368
|
roles_menu: "Ruoli",
|
|
35727
36369
|
project_settings: "Impostazioni del progetto",
|
|
35728
|
-
|
|
35729
|
-
|
|
36370
|
+
firestore_manager: "Gestore Firestore",
|
|
36371
|
+
manage_your_firestore_data: "Gestisci i tuoi dati Firestore",
|
|
35730
36372
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
35731
36373
|
build_admin_panel_in_minutes: "Crea il tuo pannello di amministrazione Firebase in pochi minuti",
|
|
35732
36374
|
go_live_instantly: "Online in un istante:",
|
|
@@ -35797,10 +36439,18 @@
|
|
|
35797
36439
|
auto_setup_collections_button: "Configura le collezioni automaticamente",
|
|
35798
36440
|
auto_setup_collections_title: "Configurazione automatica delle collezioni",
|
|
35799
36441
|
auto_setup_collections_desc: "Configura le collezioni automaticamente in base ai dati Firestore esistenti. Lascia che FireCMS configuri il CMS perfetto per te.",
|
|
35800
|
-
|
|
36442
|
+
setting_up_collections: "Configurazione delle collezioni",
|
|
36443
|
+
setting_up_collection: "Configurazione di {{name}}",
|
|
35801
36444
|
no_collections_found_to_setup: "Nessuna collezione trovata da configurare",
|
|
35802
36445
|
collections_have_been_setup: "Le collezioni sono state configurate",
|
|
35803
36446
|
error_setting_up_collections: "Errore durante la configurazione delle collezioni",
|
|
36447
|
+
setup_collections_title: "Set up collections",
|
|
36448
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
36449
|
+
select_all: "Select all",
|
|
36450
|
+
deselect_all: "Deselect all",
|
|
36451
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
36452
|
+
collection_setup_success: "{{name}} has been set up",
|
|
36453
|
+
go_to_collection: "Go to collection",
|
|
35804
36454
|
add_your: "Aggiungi le tue",
|
|
35805
36455
|
database_collections: "collezioni del database",
|
|
35806
36456
|
to_firecms: "a FireCMS",
|
|
@@ -36128,8 +36778,8 @@
|
|
|
36128
36778
|
// ─── Error states ─────────────────────────────────────────────
|
|
36129
36779
|
error: "त्रुटि",
|
|
36130
36780
|
error_uploading_file: "फ़ाइल अपलोड करने में त्रुटि",
|
|
36131
|
-
error_deleting: "हटाने में
|
|
36132
|
-
error_before_delete: "हटाने से पहले
|
|
36781
|
+
error_deleting: "हटाने में त्रुटि: {{message}}",
|
|
36782
|
+
error_before_delete: "हटाने से पहले त्रुटि: {{message}}",
|
|
36133
36783
|
error_updating_asset: "एसेट अपडेट करने में त्रुटि",
|
|
36134
36784
|
error_deleting_asset: "एसेट हटाने में त्रुटि",
|
|
36135
36785
|
error_firestore_index: "इस क्वेरी के लिए Firestore इंडेक्स आवश्यक है।",
|
|
@@ -36394,8 +37044,8 @@
|
|
|
36394
37044
|
cms_users: "CMS उपयोगकर्ता",
|
|
36395
37045
|
roles_menu: "भूमिकाएँ",
|
|
36396
37046
|
project_settings: "परियोजना सेटिंग",
|
|
36397
|
-
|
|
36398
|
-
|
|
37047
|
+
firestore_manager: "Firestore मैनेजर",
|
|
37048
|
+
manage_your_firestore_data: "अपने Firestore डेटा का प्रबंधन करें",
|
|
36399
37049
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
36400
37050
|
build_admin_panel_in_minutes: "मिनटों में अपना Firebase एडमिन पैनल बनाएं",
|
|
36401
37051
|
go_live_instantly: "तुरंत लाइव जाएं:",
|
|
@@ -36466,10 +37116,18 @@
|
|
|
36466
37116
|
auto_setup_collections_button: "संग्रहों को स्वचालित रूप से सेट करें",
|
|
36467
37117
|
auto_setup_collections_title: "संग्रहों की स्वचालित सेटअप",
|
|
36468
37118
|
auto_setup_collections_desc: "अपने मौजूदा Firestore डेटा के आधार पर संग्रहों को स्वचालित रूप से सेट करें। FireCMS को आपके लिए परफेक्ट CMS कॉन्फ़िगर करने दें।",
|
|
36469
|
-
|
|
37119
|
+
setting_up_collections: "संग्रह सेट किए जा रहे हैं",
|
|
37120
|
+
setting_up_collection: "{{name}} सेट किया जा रहा है",
|
|
36470
37121
|
no_collections_found_to_setup: "सेट करने के लिए कोई संग्रह नहीं मिला",
|
|
36471
37122
|
collections_have_been_setup: "संग्रहों को सेट कर दिया गया है",
|
|
36472
37123
|
error_setting_up_collections: "संग्रह सेट करने में त्रुटि",
|
|
37124
|
+
setup_collections_title: "Set up collections",
|
|
37125
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
37126
|
+
select_all: "Select all",
|
|
37127
|
+
deselect_all: "Deselect all",
|
|
37128
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
37129
|
+
collection_setup_success: "{{name}} has been set up",
|
|
37130
|
+
go_to_collection: "Go to collection",
|
|
36473
37131
|
add_your: "अपने",
|
|
36474
37132
|
database_collections: "डेटाबेस संग्रह",
|
|
36475
37133
|
to_firecms: "को FireCMS में जोड़ें",
|
|
@@ -36797,8 +37455,8 @@
|
|
|
36797
37455
|
// ─── Error states ─────────────────────────────────────────────
|
|
36798
37456
|
error: "Erro",
|
|
36799
37457
|
error_uploading_file: "Erro ao carregar ficheiro",
|
|
36800
|
-
error_deleting: "Erro ao eliminar",
|
|
36801
|
-
error_before_delete: "Erro antes de eliminar",
|
|
37458
|
+
error_deleting: "Erro ao eliminar: {{message}}",
|
|
37459
|
+
error_before_delete: "Erro antes de eliminar: {{message}}",
|
|
36802
37460
|
error_updating_asset: "Erro ao atualizar recurso",
|
|
36803
37461
|
error_deleting_asset: "Erro ao eliminar recurso",
|
|
36804
37462
|
error_firestore_index: "É necessário um índice Firestore para esta consulta.",
|
|
@@ -37063,8 +37721,8 @@
|
|
|
37063
37721
|
cms_users: "Utilizadores do CMS",
|
|
37064
37722
|
roles_menu: "Funções",
|
|
37065
37723
|
project_settings: "Definições do projeto",
|
|
37066
|
-
|
|
37067
|
-
|
|
37724
|
+
firestore_manager: "Gerenciador do Firestore",
|
|
37725
|
+
manage_your_firestore_data: "Gerencie os seus dados do Firestore",
|
|
37068
37726
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
37069
37727
|
build_admin_panel_in_minutes: "Construa o Seu Painel de Administração Firebase em Minutos",
|
|
37070
37728
|
go_live_instantly: "Entre em produção instantaneamente:",
|
|
@@ -37135,10 +37793,18 @@
|
|
|
37135
37793
|
auto_setup_collections_button: "Configurar coleções automaticamente",
|
|
37136
37794
|
auto_setup_collections_title: "Configurar coleções automaticamente?",
|
|
37137
37795
|
auto_setup_collections_desc: "Isto criará automaticamente configurações de coleção para coleções que <b>NÃO</b> estão já mapeadas",
|
|
37138
|
-
|
|
37796
|
+
setting_up_collections: "Configurando coleções",
|
|
37797
|
+
setting_up_collection: "Configurando {{name}}",
|
|
37139
37798
|
no_collections_found_to_setup: "Nenhuma coleção encontrada para configurar.",
|
|
37140
37799
|
collections_have_been_setup: "As coleções foram configuradas automaticamente.",
|
|
37141
37800
|
error_setting_up_collections: "Erro ao configurar coleções automaticamente",
|
|
37801
|
+
setup_collections_title: "Set up collections",
|
|
37802
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
37803
|
+
select_all: "Select all",
|
|
37804
|
+
deselect_all: "Deselect all",
|
|
37805
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
37806
|
+
collection_setup_success: "{{name}} has been set up",
|
|
37807
|
+
go_to_collection: "Go to collection",
|
|
37142
37808
|
// --- Home Suggestions ---
|
|
37143
37809
|
add_your: "Adicione as suas",
|
|
37144
37810
|
database_collections: "coleções da base de dados",
|
|
@@ -37331,6 +37997,685 @@
|
|
|
37331
37997
|
marketplace_link_error: "Erro ao vincular o projeto. Por favor, tente novamente.",
|
|
37332
37998
|
marketplace_no_account_id: "Nenhum ID de conta do GCP Marketplace encontrado. Por favor, comece pelo GCP Marketplace."
|
|
37333
37999
|
};
|
|
38000
|
+
const pl = {
|
|
38001
|
+
// ─── Form actions ────────────────────────────────────────────
|
|
38002
|
+
save: "Zapisz",
|
|
38003
|
+
create: "Utwórz",
|
|
38004
|
+
create_copy: "Utwórz kopię",
|
|
38005
|
+
save_and_close: "Zapisz i zamknij",
|
|
38006
|
+
create_copy_and_close: "Utwórz kopię i zamknij",
|
|
38007
|
+
create_and_close: "Utwórz i zamknij",
|
|
38008
|
+
discard: "Odrzuć",
|
|
38009
|
+
clear: "Wyczyść",
|
|
38010
|
+
cancel: "Anuluj",
|
|
38011
|
+
// ─── Entity actions ──────────────────────────────────────────
|
|
38012
|
+
edit: "Edytuj",
|
|
38013
|
+
copy: "Kopiuj",
|
|
38014
|
+
delete: "Usuń",
|
|
38015
|
+
// ─── Delete dialog ───────────────────────────────────────────
|
|
38016
|
+
delete_confirmation_title: "Usunąć?",
|
|
38017
|
+
delete_confirmation_body: "Spowoduje to usunięcie encji. Czy na pewno chcesz kontynuować?",
|
|
38018
|
+
delete_multiple_confirmation_body: "Spowoduje to usunięcie zaznaczonych encji. Czy na pewno chcesz kontynuować?",
|
|
38019
|
+
// ─── Unsaved-changes dialog ───────────────────────────────────
|
|
38020
|
+
unsaved_changes_title: "Niezapisane zmiany",
|
|
38021
|
+
unsaved_changes_body: "Masz niezapisane zmiany. Czy chcesz je odrzucić?",
|
|
38022
|
+
discard_changes: "Odrzuć zmiany",
|
|
38023
|
+
keep_editing: "Kontynuuj edycję",
|
|
38024
|
+
// ─── Collection table / toolbar ──────────────────────────────
|
|
38025
|
+
search: "Szukaj",
|
|
38026
|
+
find_by_id: "Znajdź po ID",
|
|
38027
|
+
find_entity_by_id: "Znajdź encję po ID",
|
|
38028
|
+
filter: "Filtr",
|
|
38029
|
+
filters: "Filtry",
|
|
38030
|
+
clear_filter: "Wyczyść filtr",
|
|
38031
|
+
clear_filter_sort: "Wyczyść filtr/sortowanie",
|
|
38032
|
+
clear_sort: "Wyczyść sortowanie",
|
|
38033
|
+
no_items: "Brak elementów",
|
|
38034
|
+
no_entries_found: "Nie znaleziono wpisów",
|
|
38035
|
+
all_entries_loaded: "Wczytano wszystkie wpisy ({{count}})",
|
|
38036
|
+
create_your_first_entry: "Utwórz swój pierwszy wpis",
|
|
38037
|
+
no_results_filter_sort: "Brak wyników dla zastosowanego filtra/sortowania",
|
|
38038
|
+
add: "Dodaj",
|
|
38039
|
+
remove: "Usuń",
|
|
38040
|
+
multiple_entities: "Wiele encji",
|
|
38041
|
+
unsaved_changes: "Masz niezapisane zmiany w kolekcji {{collectionName}}.",
|
|
38042
|
+
so_empty: "Tak pusto...",
|
|
38043
|
+
no_results: "Brak wyników dla zastosowanego filtra/sortowania",
|
|
38044
|
+
refresh_data: "Odśwież dane",
|
|
38045
|
+
dark_mode: "Ciemny",
|
|
38046
|
+
light_mode: "Jasny",
|
|
38047
|
+
system_mode: "Systemowy",
|
|
38048
|
+
ok: "Ok",
|
|
38049
|
+
save_collection_config: "Zapisz strukturę kolekcji",
|
|
38050
|
+
search_for_more_icons: "Szukaj więcej ikon…",
|
|
38051
|
+
ai_modified: "Zmodyfikowane przez AI",
|
|
38052
|
+
size_label: "Rozmiar",
|
|
38053
|
+
group_by: "Grupuj według",
|
|
38054
|
+
initialize_kanban_order: "Zainicjuj kolejność Kanban",
|
|
38055
|
+
copy_id: "Kopiuj ID",
|
|
38056
|
+
add_specific: "Dodaj {{name}}",
|
|
38057
|
+
select_specific: "Wybierz {{name}}",
|
|
38058
|
+
select_from: "Wybierz z {{name}}",
|
|
38059
|
+
done: "Gotowe",
|
|
38060
|
+
log_out: "Wyloguj się",
|
|
38061
|
+
license_needed: "Wymagana licencja",
|
|
38062
|
+
license_description: "Aby korzystać z FireCMS PRO, potrzebujesz ważnej licencji. Skontaktuj się z nami pod adresem {{email}}, aby uzyskać więcej informacji.",
|
|
38063
|
+
column_cannot_be_edited: "Ta kolumna nie może być edytowana bezpośrednio",
|
|
38064
|
+
close: "Zamknij",
|
|
38065
|
+
unsaved_local_changes: "Niezapisane zmiany lokalne",
|
|
38066
|
+
unsaved_local_changes_description: "Ten dokument został zmodyfikowany lokalnie i zawiera niezapisane zmiany. Zmiany te zostaną utracone, jeśli ich nie zastosujesz.",
|
|
38067
|
+
preview_changes: "Podgląd zmian",
|
|
38068
|
+
apply_changes: "Zastosuj zmiany",
|
|
38069
|
+
discard_local_changes: "Odrzuć zmiany lokalne",
|
|
38070
|
+
preview_local_changes: "Podgląd zmian lokalnych",
|
|
38071
|
+
preview_local_changes_description: "To są zmiany lokalne, które zostaną zastosowane do formularza.",
|
|
38072
|
+
type: "Typ",
|
|
38073
|
+
string: "tekst",
|
|
38074
|
+
number: "liczba",
|
|
38075
|
+
boolean: "wartość logiczna",
|
|
38076
|
+
date: "data",
|
|
38077
|
+
map: "mapa",
|
|
38078
|
+
array: "tablica",
|
|
38079
|
+
arrays_of_arrays_not_supported: "Tablice tablic nie są obsługiwane.",
|
|
38080
|
+
data_type_not_supported: "Typ danych {{dataType}} nie jest jeszcze obsługiwany",
|
|
38081
|
+
passkey_error_unsupported: "Twoje urządzenie lub przeglądarka nie obsługuje kluczy dostępu (passkeys).",
|
|
38082
|
+
admin: "Administrator",
|
|
38083
|
+
home: "Strona główna",
|
|
38084
|
+
this_form_has_errors: "Ten formularz zawiera błędy",
|
|
38085
|
+
error_loading_navigation: "Błąd wczytywania nawigacji",
|
|
38086
|
+
error_loading_auth: "Błąd wczytywania uwierzytelniania",
|
|
38087
|
+
this_form_has_been_modified: "Ten formularz został zmodyfikowany",
|
|
38088
|
+
current_form_in_sync: "Bieżący formularz jest zsynchronizowany z bazą danych",
|
|
38089
|
+
open_in_console: "Otwórz w konsoli",
|
|
38090
|
+
collection_does_not_exist: "Podana kolekcja nie istnieje. Sprawdź konsolę",
|
|
38091
|
+
unexpected_value: "Nieoczekiwana wartość",
|
|
38092
|
+
unexpected_value_click_to_edit: "Nieoczekiwana wartość. Kliknij, aby edytować",
|
|
38093
|
+
unexpected_reference_value: "Nieoczekiwana wartość referencji. Kliknij, aby edytować",
|
|
38094
|
+
copy_url_to_clipboard: "Kopiuj adres URL do schowka",
|
|
38095
|
+
open_image_in_new_tab: "Otwórz obraz w nowej karcie",
|
|
38096
|
+
reference_not_set: "Referencja nie ustawiona",
|
|
38097
|
+
reference_does_not_exist: "Referencja nie istnieje",
|
|
38098
|
+
entity_not_found: "Nie znaleziono encji",
|
|
38099
|
+
file_not_found: "Nie znaleziono pliku",
|
|
38100
|
+
unsaved_changes_in_entity: "Masz niezapisane zmiany w tej encji.",
|
|
38101
|
+
delete_this_role: "Usuń tę rolę",
|
|
38102
|
+
no_roles_yet: "Nie masz jeszcze żadnych ról.",
|
|
38103
|
+
create_default_roles: "Utwórz domyślne role",
|
|
38104
|
+
delete_role_confirmation: "Czy na pewno chcesz usunąć tę rolę?",
|
|
38105
|
+
delete_this_user: "Usuń tego użytkownika",
|
|
38106
|
+
no_users_yet: "Nie ma jeszcze żadnych użytkowników",
|
|
38107
|
+
add_logged_user_as_admin: "Dodaj zalogowanego użytkownika jako administratora",
|
|
38108
|
+
add_current_user_as_admin: "Dodaj bieżącego użytkownika jako administratora",
|
|
38109
|
+
create_default_roles_and_add_admin: "Utwórz domyślne role i dodaj bieżącego użytkownika jako administratora",
|
|
38110
|
+
delete_user_confirmation: "Czy na pewno chcesz usunąć tego użytkownika?",
|
|
38111
|
+
create_your_users_and_roles: "Utwórz użytkowników i role",
|
|
38112
|
+
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.",
|
|
38113
|
+
save_before_changing_schema: "Musisz zapisać dokument przed zmianą schematu",
|
|
38114
|
+
edit_schema_for_this_form: "Edytuj schemat tego formularza",
|
|
38115
|
+
no_permissions_to_edit_collection: "Nie masz uprawnień do edycji tej kolekcji",
|
|
38116
|
+
browser_does_not_support_audio: "Twoja przeglądarka nie obsługuje elementu audio.",
|
|
38117
|
+
user_not_found: "Nie znaleziono użytkownika: {{value}}",
|
|
38118
|
+
// ─── Collection view actions ──────────────────────────────────
|
|
38119
|
+
delete_selected: "Usuń",
|
|
38120
|
+
cannot_delete_selected: "Zaznaczono co najmniej jedną encję, której nie można usunąć",
|
|
38121
|
+
// ─── Array / field containers ─────────────────────────────────
|
|
38122
|
+
add_entry: "Dodaj",
|
|
38123
|
+
add_on_top: "Dodaj na górze",
|
|
38124
|
+
add_below: "Dodaj poniżej",
|
|
38125
|
+
add_to_field: "Dodaj do {{fieldName}}",
|
|
38126
|
+
value: "Wartość",
|
|
38127
|
+
key: "Klucz",
|
|
38128
|
+
drag_drop_multiple: "Przeciągnij i upuść pliki tutaj lub kliknij, aby je wybrać. Przeciągnij, aby zmienić kolejność.",
|
|
38129
|
+
drag_drop_single: "Przeciągnij i upuść plik tutaj lub kliknij, aby go wybrać",
|
|
38130
|
+
// ─── Navigation / scaffold ────────────────────────────────────
|
|
38131
|
+
open_menu: "Otwórz menu",
|
|
38132
|
+
close_drawer: "Zamknij panel boczny",
|
|
38133
|
+
navigation_drawer: "Panel nawigacyjny",
|
|
38134
|
+
// ─── Error states ─────────────────────────────────────────────
|
|
38135
|
+
error: "Błąd",
|
|
38136
|
+
error_uploading_file: "Błąd przesyłania pliku",
|
|
38137
|
+
error_deleting: "Błąd podczas usuwania: {{message}}",
|
|
38138
|
+
error_before_delete: "Błąd przed usunięciem: {{message}}",
|
|
38139
|
+
error_updating_asset: "Błąd aktualizacji zasobu",
|
|
38140
|
+
error_deleting_asset: "Błąd usuwania zasobu",
|
|
38141
|
+
error_firestore_index: "Dla tego zapytania wymagany jest indeks Firestore.",
|
|
38142
|
+
create_index: "Utwórz indeks",
|
|
38143
|
+
value_is_not_reference: "Wartość nie jest referencją.",
|
|
38144
|
+
click_to_edit: "Kliknij, aby edytować",
|
|
38145
|
+
data_is_not_array_of_references: "Dane nie są tablicą referencji",
|
|
38146
|
+
// ─── Misc ─────────────────────────────────────────────────────
|
|
38147
|
+
loading: "Wczytywanie",
|
|
38148
|
+
local_changes_applied: "Zmiany lokalne zastosowane w formularzu",
|
|
38149
|
+
local_changes_discarded: "Zmiany lokalne odrzucone",
|
|
38150
|
+
are_you_sure_leave: "Czy na pewno chcesz opuścić tę stronę?",
|
|
38151
|
+
see_console_details: "Więcej informacji w konsoli.",
|
|
38152
|
+
drop_here_create_group: "Upuść tutaj, aby utworzyć nową grupę",
|
|
38153
|
+
filter_for_null_values: "Filtruj puste wartości",
|
|
38154
|
+
value_updated_elsewhere: "Ta wartość została zaktualizowana gdzie indziej",
|
|
38155
|
+
add_property: "Dodaj właściwość",
|
|
38156
|
+
edit_name: "Edytuj {{name}}",
|
|
38157
|
+
this_entity_not_exist: "Ta encja nie istnieje w bazie danych",
|
|
38158
|
+
internal_error: "BŁĄD wewnętrzny",
|
|
38159
|
+
// ─── Rename group dialog ──────────────────────────────────────
|
|
38160
|
+
rename_group: "Zmień nazwę grupy",
|
|
38161
|
+
group_name_label: "Nazwa grupy",
|
|
38162
|
+
group_name_empty_error: "Nazwa grupy nie może być pusta.",
|
|
38163
|
+
group_name_exists_error: "Taka nazwa grupy już istnieje.",
|
|
38164
|
+
// ─── Search ───────────────────────────────────────────────────
|
|
38165
|
+
search_collections: "Szukaj kolekcji",
|
|
38166
|
+
// ─── Navigation groups ────────────────────────────────────────
|
|
38167
|
+
views_group: "Widoki",
|
|
38168
|
+
// ─── Entity Edit View ─────────────────────────────────────────
|
|
38169
|
+
youd_need_to_save_before_additional_collections: "Musisz zapisać encję przed dodaniem kolejnych kolekcji",
|
|
38170
|
+
// ─── Not Found Page ───────────────────────────────────────────
|
|
38171
|
+
page_not_found: "Nie znaleziono strony",
|
|
38172
|
+
page_not_found_body: "Ta strona nie istnieje lub nie masz do niej dostępu",
|
|
38173
|
+
back_to_home: "Wróć do strony głównej",
|
|
38174
|
+
// ─── Collection Editor ─────────────────────────────────────────
|
|
38175
|
+
default_collection_view: "Domyślny widok kolekcji",
|
|
38176
|
+
table_view: "Tabela",
|
|
38177
|
+
cards_view: "Karty",
|
|
38178
|
+
kanban_view: "Kanban",
|
|
38179
|
+
choose_how_entities_displayed_default: "Wybierz, jak encje mają być domyślnie wyświetlane",
|
|
38180
|
+
document_view: "Widok dokumentu",
|
|
38181
|
+
side_panel: "Panel boczny",
|
|
38182
|
+
full_screen: "Pełny ekran",
|
|
38183
|
+
should_documents_opened_full_screen: "Czy dokumenty mają być otwierane na pełnym ekranie, czy w bocznym oknie dialogowym",
|
|
38184
|
+
select_custom_view: "Wybierz widok niestandardowy",
|
|
38185
|
+
no_custom_views_defined: "Nie zdefiniowano żadnych widoków niestandardowych. Zdefiniuj je w ustawieniach dostosowywania przed użyciem tego okna dialogowego.",
|
|
38186
|
+
select_custom_action: "Wybierz akcję niestandardową",
|
|
38187
|
+
no_custom_actions_defined: "Nie zdefiniowano żadnych akcji niestandardowych. Zdefiniuj je w ustawieniach dostosowywania przed użyciem tego okna dialogowego.",
|
|
38188
|
+
no_collections_found: "Nie znaleziono kolekcji",
|
|
38189
|
+
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.",
|
|
38190
|
+
create_first_collection: "Utwórz swoją pierwszą kolekcję",
|
|
38191
|
+
define_collections_programmatically: "Kolekcje możesz też definiować programistycznie.",
|
|
38192
|
+
edit_collection: "Edytuj kolekcję",
|
|
38193
|
+
no_permissions_edit_collection: "Nie masz uprawnień do edycji tej kolekcji",
|
|
38194
|
+
no_permissions_create_collection: "Nie masz uprawnień do tworzenia kolekcji",
|
|
38195
|
+
create_collection: "Utwórz kolekcję",
|
|
38196
|
+
update_collection: "Zaktualizuj kolekcję",
|
|
38197
|
+
new_collection: "Nowa kolekcja",
|
|
38198
|
+
add_new_collection: "Dodaj nową kolekcję",
|
|
38199
|
+
collection_with_name: "Kolekcja {{name}}",
|
|
38200
|
+
change_icon: "Zmień ikonę",
|
|
38201
|
+
is_subcollection_of: "To jest podkolekcja",
|
|
38202
|
+
name: "Nazwa",
|
|
38203
|
+
collection_name_description: "Nazwa tej kolekcji, zwykle w liczbie mnogiej (np. Produkty)",
|
|
38204
|
+
path: "Ścieżka",
|
|
38205
|
+
relative_path_to_parent: "Ścieżka względna do elementu nadrzędnego (nie trzeba podawać ścieżki nadrzędnej)",
|
|
38206
|
+
path_in_database: "Ścieżka, pod którą ta kolekcja jest przechowywana w bazie danych",
|
|
38207
|
+
singular_name: "Nazwa w liczbie pojedynczej",
|
|
38208
|
+
singular_name_description: "Opcjonalnie zdefiniuj nazwę pojedynczą dla encji tej kolekcji",
|
|
38209
|
+
description: "Opis",
|
|
38210
|
+
description_of_collection: "Opis kolekcji, możesz użyć formatowania markdown",
|
|
38211
|
+
collection_id: "ID kolekcji",
|
|
38212
|
+
collection_id_description: "To ID identyfikuje tę kolekcję. Zazwyczaj jest takie samo jak ścieżka.",
|
|
38213
|
+
collection_group: "Grupa kolekcji",
|
|
38214
|
+
collection_group_description: "Grupa kolekcji obejmuje wszystkie kolekcje o tej samej ścieżce. Pozwala to na wykonywanie zapytań w wielu kolekcjach jednocześnie.",
|
|
38215
|
+
advanced_settings: "Ustawienia zaawansowane",
|
|
38216
|
+
doc_history_global: "Historia zmian dokumentu włączona, jeśli jest włączona globalnie",
|
|
38217
|
+
doc_history_enabled: "Historia zmian dokumentu WŁĄCZONA",
|
|
38218
|
+
doc_history_not_enabled: "Historia zmian dokumentu NIE jest włączona",
|
|
38219
|
+
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.",
|
|
38220
|
+
document_id_generation: "Generowanie ID dokumentów",
|
|
38221
|
+
code_defined: "Zdefiniowane w kodzie",
|
|
38222
|
+
users_must_define_id: "Użytkownicy muszą podać ID",
|
|
38223
|
+
users_can_define_id: "Użytkownicy mogą podać ID, ale nie jest to wymagane",
|
|
38224
|
+
doc_id_auto_generated: "ID dokumentu generowane jest automatycznie",
|
|
38225
|
+
config_doc_id_generation: "Skonfiguruj sposób generowania ID dokumentów podczas tworzenia nowych encji.",
|
|
38226
|
+
enable_text_search: "Włącz wyszukiwanie tekstowe dla tej kolekcji",
|
|
38227
|
+
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.",
|
|
38228
|
+
database_id: "ID bazy danych",
|
|
38229
|
+
default_text: "(domyślnie)",
|
|
38230
|
+
custom_actions: "Akcje niestandardowe",
|
|
38231
|
+
more_info: "Więcej informacji",
|
|
38232
|
+
define_custom_actions_cli: "Zdefiniuj własne akcje niestandardowe, przesyłając je za pomocą CLI.",
|
|
38233
|
+
action_defined_in_code: "Ta akcja jest zdefiniowana w kodzie pod kluczem",
|
|
38234
|
+
add_custom_entity_action: "Dodaj niestandardową akcję encji",
|
|
38235
|
+
remove_this_action: "Usunąć tę akcję?",
|
|
38236
|
+
remove_action_warning: "To nie usunie żadnych danych, tylko akcję w CMS",
|
|
38237
|
+
subcollections_of: "Podkolekcje kolekcji",
|
|
38238
|
+
add_subcollection: "Dodaj podkolekcję",
|
|
38239
|
+
custom_views: "Widoki niestandardowe",
|
|
38240
|
+
define_custom_views_cli: "Zdefiniuj własne widoki niestandardowe, przesyłając je za pomocą CLI.",
|
|
38241
|
+
view_defined_in_code: "Ten widok jest zdefiniowany w kodzie pod kluczem",
|
|
38242
|
+
add_custom_entity_view: "Dodaj niestandardowy widok encji",
|
|
38243
|
+
delete_this_subcollection: "Usunąć tę podkolekcję?",
|
|
38244
|
+
remove_collection_warning: "To nie usunie żadnych danych, tylko kolekcję w CMS",
|
|
38245
|
+
remove_this_view: "Usunąć ten widok?",
|
|
38246
|
+
remove_view_warning: "To nie usunie żadnych danych, tylko widok w CMS",
|
|
38247
|
+
no_collection_selected: "Nie wybrano kolekcji",
|
|
38248
|
+
code_for_collection: "Kod dla",
|
|
38249
|
+
use_config_define_json: "Użyj tej konfiguracji, aby zdefiniować kolekcję w formacie JSON.",
|
|
38250
|
+
customise_collection_code: "Jeśli chcesz dostosować kolekcję w kodzie, możesz dodać ten kod kolekcji do konfiguracji swojej aplikacji CMS.",
|
|
38251
|
+
copied: "Skopiowano",
|
|
38252
|
+
property_cant_be_edited: "Tej właściwości nie można edytować",
|
|
38253
|
+
property_not_editable_description: "Możesz nie mieć uprawnień do jej edycji lub jest ona zdefiniowana w kodzie z flagą editable ustawioną na false.",
|
|
38254
|
+
delete_this_property: "Usunąć tę właściwość?",
|
|
38255
|
+
delete_property_warning: "To nie usunie żadnych danych, tylko zmodyfikuje kolekcję.",
|
|
38256
|
+
error_must_specify_id: "Musisz podać ID dla tego pola",
|
|
38257
|
+
error_id_format: "ID może zawierać tylko litery, cyfry i podkreślenia (_) i nie może zaczynać się od cyfry",
|
|
38258
|
+
error_id_already_exists: "Istnieje już inne pole z tym ID",
|
|
38259
|
+
error_must_specify_title: "Musisz podać tytuł dla tego pola",
|
|
38260
|
+
custom_or_other: "Niestandardowe/Inne",
|
|
38261
|
+
select_property_widget: "Wybierz widżet właściwości",
|
|
38262
|
+
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.",
|
|
38263
|
+
required: "Wymagane",
|
|
38264
|
+
enum_form_dialog: "Okno dialogowe formularza wyliczeniowego",
|
|
38265
|
+
imported_data_preview: "Podgląd zaimportowanych danych",
|
|
38266
|
+
entities_with_same_id_overwritten: "Encje o tym samym ID zostaną nadpisane",
|
|
38267
|
+
collection_editor: "Edytor kolekcji",
|
|
38268
|
+
properties_in_this_group: "Właściwości w tej grupie",
|
|
38269
|
+
data_property_mapping: "Mapowanie danych na właściwości",
|
|
38270
|
+
property_edit_view: "Widok edycji właściwości",
|
|
38271
|
+
all_of_these: "Wszystkie z nich",
|
|
38272
|
+
any_of_these: "Dowolna z nich",
|
|
38273
|
+
only_admins_edit_roles: "Tylko administratorzy mogą edytować role",
|
|
38274
|
+
error_user_not_found: "Nie znaleziono użytkownika",
|
|
38275
|
+
role: "Rola",
|
|
38276
|
+
name_of_this_role: "Nazwa tej roli",
|
|
38277
|
+
id_of_this_role: "ID tej roli",
|
|
38278
|
+
create_entities: "Tworzenie encji",
|
|
38279
|
+
read_entities: "Odczyt encji",
|
|
38280
|
+
update_entities: "Aktualizacja encji",
|
|
38281
|
+
delete_entities: "Usuwanie encji",
|
|
38282
|
+
all_collections: "Wszystkie kolekcje",
|
|
38283
|
+
create_entities_in_collections: "Tworzenie encji w kolekcjach",
|
|
38284
|
+
access_all_data_in_every_collection: "Dostęp do wszystkich danych w każdej kolekcji",
|
|
38285
|
+
update_data_in_any_collection: "Aktualizacja danych w dowolnej kolekcji",
|
|
38286
|
+
delete_data_in_any_collection: "Usuwanie danych w dowolnej kolekcji",
|
|
38287
|
+
allow_all_permissions_in_this_collections: "Zezwól na wszystkie uprawnienia w tych kolekcjach",
|
|
38288
|
+
all: "Wszystkie",
|
|
38289
|
+
customise_permissions_description: "Możesz dostosować uprawnienia, jakie użytkownicy z tą rolą mają w encjach każdej kolekcji",
|
|
38290
|
+
create_collections: "Tworzenie kolekcji",
|
|
38291
|
+
yes: "Tak",
|
|
38292
|
+
no: "Nie",
|
|
38293
|
+
can_user_create_collections: "Czy użytkownik może tworzyć kolekcje",
|
|
38294
|
+
edit_collections: "Edycja kolekcji",
|
|
38295
|
+
only_own_collections: "Tylko swoje",
|
|
38296
|
+
own: "Własne",
|
|
38297
|
+
can_user_edit_collections: "Czy użytkownik może edytować kolekcje",
|
|
38298
|
+
delete_collections: "Usuwanie kolekcji",
|
|
38299
|
+
can_user_delete_collections: "Czy użytkownik może usuwać kolekcje",
|
|
38300
|
+
error_saving_role: "Wystąpił błąd podczas zapisywania tej roli",
|
|
38301
|
+
create_role: "Utwórz rolę",
|
|
38302
|
+
update: "Aktualizuj",
|
|
38303
|
+
only_admins_change_roles: "Tylko administratorzy mogą zmieniać role",
|
|
38304
|
+
must_be_at_least_one_admin: "Musi istnieć co najmniej jeden administrator",
|
|
38305
|
+
logged_user_not_found: "Nie znaleziono zalogowanego użytkownika",
|
|
38306
|
+
user: "Użytkownik",
|
|
38307
|
+
user_id: "ID użytkownika",
|
|
38308
|
+
name_of_this_user: "Nazwa tego użytkownika",
|
|
38309
|
+
email_of_this_user: "Adres e-mail tego użytkownika",
|
|
38310
|
+
roles: "Role",
|
|
38311
|
+
create_user: "Utwórz użytkownika",
|
|
38312
|
+
users: "Użytkownicy",
|
|
38313
|
+
add_user: "Dodaj użytkownika",
|
|
38314
|
+
add_role: "Dodaj rolę",
|
|
38315
|
+
is_admin: "Jest administratorem",
|
|
38316
|
+
default_permissions: "Domyślne uprawnienia",
|
|
38317
|
+
created_on: "Utworzono",
|
|
38318
|
+
email: "E-mail",
|
|
38319
|
+
id: "ID",
|
|
38320
|
+
read: "Odczyt",
|
|
38321
|
+
column_in_file: "Kolumna w pliku",
|
|
38322
|
+
map_to_property: "Zmapuj na właściwość",
|
|
38323
|
+
default_values: "Wartości domyślne",
|
|
38324
|
+
default_values_description: "Możesz wybrać wartość domyślną dla niezmapowanych kolumn i pustych wartości:",
|
|
38325
|
+
property: "Właściwość",
|
|
38326
|
+
default_value: "Wartość domyślna",
|
|
38327
|
+
autogenerate_id: "Generuj ID automatycznie",
|
|
38328
|
+
id_column_description: "Kolumna, która będzie używana jako ID dla każdego dokumentu",
|
|
38329
|
+
do_not_set_value: "Nie ustawiaj wartości",
|
|
38330
|
+
set_value_to_true: "Ustaw wartość na true",
|
|
38331
|
+
set_value_to_false: "Ustaw wartość na false",
|
|
38332
|
+
drag_and_drop_file: "Przeciągnij i upuść plik tutaj lub kliknij, aby go przesłać",
|
|
38333
|
+
error_saving_data: "Błąd zapisywania danych",
|
|
38334
|
+
retry: "Spróbuj ponownie",
|
|
38335
|
+
saving_data: "Zapisywanie danych",
|
|
38336
|
+
entities_saved: "zapisanych encji",
|
|
38337
|
+
do_not_close_tab: "Nie zamykaj tej karty, w przeciwnym razie import zostanie przerwany",
|
|
38338
|
+
import: "Importuj",
|
|
38339
|
+
import_data: "Importuj dane",
|
|
38340
|
+
upload_file_description: "Prześlij plik CSV, Excel lub JSON i zmapuj go do istniejącego schematu",
|
|
38341
|
+
back: "Wstecz",
|
|
38342
|
+
next: "Dalej",
|
|
38343
|
+
save_data: "Zapisz dane",
|
|
38344
|
+
use_column_as_id: "Użyj tej kolumny jako ID",
|
|
38345
|
+
do_not_import_property: "Nie importuj tej właściwości",
|
|
38346
|
+
entities_will_be_overwritten: "Encje o tym samym ID zostaną nadpisane",
|
|
38347
|
+
data_imported_successfully: "Dane zostały pomyślnie zaimportowane",
|
|
38348
|
+
export: "Eksportuj",
|
|
38349
|
+
export_data: "Eksportuj dane",
|
|
38350
|
+
download_table_csv: "Pobierz zawartość tej tabeli jako plik CSV",
|
|
38351
|
+
csv: "CSV",
|
|
38352
|
+
json: "JSON",
|
|
38353
|
+
dates_as_timestamps: "Daty jako znaczniki czasu",
|
|
38354
|
+
dates_as_strings: "Daty jako ciągi znaków",
|
|
38355
|
+
flatten_arrays: "Spłaszcz tablice",
|
|
38356
|
+
download: "Pobierz",
|
|
38357
|
+
large_number_of_documents: "Ta kolekcja zawiera dużą liczbę dokumentów ({{count}}).",
|
|
38358
|
+
include_undefined_values: "Uwzględnij niezdefiniowane wartości",
|
|
38359
|
+
submit: "Wyślij",
|
|
38360
|
+
no_filterable_properties: "Brak dostępnych właściwości do filtrowania",
|
|
38361
|
+
apply_filters: "Zastosuj filtry",
|
|
38362
|
+
list: "Lista",
|
|
38363
|
+
cards: "Karty",
|
|
38364
|
+
board: "Tablica",
|
|
38365
|
+
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.",
|
|
38366
|
+
kanban_view_not_available: "Widok Kanban jest niedostępny",
|
|
38367
|
+
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.",
|
|
38368
|
+
no_enum_values_configured: "Nie skonfigurowano wartości wyliczeniowych dla właściwości „{{property}}”",
|
|
38369
|
+
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ść.",
|
|
38370
|
+
initialize: "Zainicjuj",
|
|
38371
|
+
confirm_multiple_delete: "Potwierdzić wielokrotne usunięcie?",
|
|
38372
|
+
delete_entity_confirm_title: "Czy chcesz usunąć ten element: {{entityName}}?",
|
|
38373
|
+
/** AI Collection Generator Popover */
|
|
38374
|
+
generate_collection_with_ai: "Wygeneruj kolekcję za pomocą AI",
|
|
38375
|
+
modify_collection_with_ai: "Zmodyfikuj kolekcję za pomocą AI",
|
|
38376
|
+
describe_collection_to_create: "Opisz kolekcję, którą chcesz utworzyć.",
|
|
38377
|
+
describe_changes_to_make: "Opisz zmiany, które chcesz wprowadzić w tej kolekcji.",
|
|
38378
|
+
ai_placeholder_create: "np. Utwórz kolekcję produktów z nazwą, ceną, opisem i kategorią...",
|
|
38379
|
+
ai_placeholder_modify: "np. Dodaj pole obrazu miniatury z przechowywaniem, ustaw cenę jako wymaganą...",
|
|
38380
|
+
ai_assist: "Asystent AI",
|
|
38381
|
+
generating: "Generowanie...",
|
|
38382
|
+
/** Recently extracted strings for collection editor */
|
|
38383
|
+
this_is_subcollection_of: "To jest podkolekcja",
|
|
38384
|
+
use_existing_paths_database: "Użyj jednej z istniejących ścieżek w swojej bazie danych:",
|
|
38385
|
+
describe_collection_ai: "Opisz swoją kolekcję dla AI:",
|
|
38386
|
+
generate_with_ai: "Generuj za pomocą AI",
|
|
38387
|
+
create_from_json_config: "Utwórz z konfiguracji JSON:",
|
|
38388
|
+
paste_json_config: "Wklej konfigurację JSON",
|
|
38389
|
+
create_collection_from_file_formats: "Utwórz kolekcję z pliku (csv, json, xls, xlsx...)",
|
|
38390
|
+
select_template: "Wybierz szablon:",
|
|
38391
|
+
products: "Produkty",
|
|
38392
|
+
collection_products_subtitle: "Kolekcja produktów ze zdjęciami, cenami i stanem magazynowym",
|
|
38393
|
+
collection_users_subtitle: "Kolekcja użytkowników z adresami e-mail, imionami i rolami",
|
|
38394
|
+
blog_posts: "Wpisy na blogu",
|
|
38395
|
+
collection_blog_posts_subtitle: "Kolekcja wpisów na blogu ze zdjęciami, autorami i rozbudowaną treścią",
|
|
38396
|
+
pages: "Strony",
|
|
38397
|
+
collection_pages_subtitle: "Kolekcja stron ze zdjęciami, autorami i rozbudowaną treścią",
|
|
38398
|
+
continue_from_scratch: "Kontynuuj od zera",
|
|
38399
|
+
/** Admin views config */
|
|
38400
|
+
cms_users: "Użytkownicy CMS",
|
|
38401
|
+
roles_menu: "Role",
|
|
38402
|
+
project_settings: "Ustawienia projektu",
|
|
38403
|
+
firestore_manager: "Menedżer Firestore",
|
|
38404
|
+
manage_your_firestore_data: "Zarządzaj danymi w Firestore",
|
|
38405
|
+
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
38406
|
+
build_admin_panel_in_minutes: "Zbuduj panel administracyjny Firebase w kilka minut",
|
|
38407
|
+
go_live_instantly: "Uruchom natychmiast:",
|
|
38408
|
+
create_production_ready_back_offices: "Twórz gotowe do wdrożenia panele administracyjne",
|
|
38409
|
+
without_the_frontend_hassle: "bez kłopotów z frontendem.",
|
|
38410
|
+
automatic_setup: "Automatyczna konfiguracja",
|
|
38411
|
+
from_your_existing_firestore_data: "na podstawie Twoich istniejących danych w Firestore.",
|
|
38412
|
+
seamless_real_time_firebase_integration: "Płynna integracja z Firebase w czasie rzeczywistym.",
|
|
38413
|
+
intuitive_spreadsheet_like_ui: "Intuicyjny interfejs przypominający arkusz kalkulacyjny,",
|
|
38414
|
+
your_whole_team_can_use: "z którego może korzystać cały Twój zespół.",
|
|
38415
|
+
focus_on_your_app: "Skup się na swojej aplikacji,",
|
|
38416
|
+
not_the_admin_panel: "a nie na panelu administracyjnym.",
|
|
38417
|
+
join_our_newsletter: "Dołącz do naszego newslettera. Bez spamu, tylko ważne aktualizacje!",
|
|
38418
|
+
by_signing_in_you_agree_to_our: "Logując się, akceptujesz nasz",
|
|
38419
|
+
terms_and_conditions: "Regulamin",
|
|
38420
|
+
and_our: "oraz naszą",
|
|
38421
|
+
privacy_policy: "Politykę prywatności",
|
|
38422
|
+
firecms_cloud_google_disclosure: "Korzystanie i przekazywanie przez FireCMS Cloud informacji uzyskanych z API Google do jakiejkolwiek innej aplikacji będzie zgodne z",
|
|
38423
|
+
google_api_services_user_data_policy: "Polityką dotyczącą danych użytkowników usług API Google",
|
|
38424
|
+
including_the_limited_use_requirements: "w tym z wymaganiami dotyczącymi ograniczonego użytkowania.",
|
|
38425
|
+
email_password: "E-mail/hasło",
|
|
38426
|
+
sign_in_with_google: "Zaloguj się przez Google",
|
|
38427
|
+
// --- Auth error messages ---
|
|
38428
|
+
auth_user_not_found: "Nie znaleziono użytkownika",
|
|
38429
|
+
auth_wrong_password: "Nieprawidłowe hasło. Spróbuj ponownie.",
|
|
38430
|
+
auth_user_disabled: "Użytkownik jest zablokowany. Skontaktuj się z pomocą techniczną.",
|
|
38431
|
+
auth_account_exists_with_different_credential: "Konto istnieje z inną metodą logowania",
|
|
38432
|
+
auth_email_already_in_use: "Ten adres e-mail jest już używany",
|
|
38433
|
+
auth_google_permissions_required: "Musisz przyznać dodatkowe uprawnienia, aby zarządzać swoimi projektami Google Cloud",
|
|
38434
|
+
auth_invalid_email_password: "Podaj zarówno adres e-mail, jak i hasło",
|
|
38435
|
+
auth_enter_email_first: "Najpierw podaj swój adres e-mail",
|
|
38436
|
+
auth_password_reset_sent: "Wysłano e-mail resetujący hasło",
|
|
38437
|
+
auth_sign_in_account: "Zaloguj się do swojego konta",
|
|
38438
|
+
auth_create_new_account: "Utwórz nowe konto",
|
|
38439
|
+
auth_password: "Hasło",
|
|
38440
|
+
auth_reset_password: "Zresetuj hasło",
|
|
38441
|
+
auth_new_user: "Nowy użytkownik?",
|
|
38442
|
+
auth_have_account: "Masz już konto?",
|
|
38443
|
+
auth_sign_in: "Zaloguj się",
|
|
38444
|
+
auth_sign_up: "Zarejestruj się",
|
|
38445
|
+
// --- SaaS Subscriptions ---
|
|
38446
|
+
subscriptions: "Subskrypcje",
|
|
38447
|
+
manage_your_subscriptions_in_stripe: "Zarządzaj swoimi subskrypcjami w Stripe",
|
|
38448
|
+
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.",
|
|
38449
|
+
your_pro_licenses: "Twoje licencje PRO",
|
|
38450
|
+
create_new_license: "Utwórz nową licencję",
|
|
38451
|
+
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.",
|
|
38452
|
+
if_you_are_an_agency: "Jeśli jesteś agencją, możesz swobodnie odsprzedawać swoją licencję swoim klientom.",
|
|
38453
|
+
if_you_have_any_questions: "Jeśli masz pytania lub potrzebujesz pomocy, skontaktuj się z nami pod adresem",
|
|
38454
|
+
you_have_not_created_any_pro_licenses: "Nie masz jeszcze żadnych licencji FireCMS PRO",
|
|
38455
|
+
archive: "Archiwizuj",
|
|
38456
|
+
licensed_projects_lowercase: "licencjonowanych projektów",
|
|
38457
|
+
manage: "Zarządzaj",
|
|
38458
|
+
update_payment_method: "Zaktualizuj metodę płatności",
|
|
38459
|
+
your_firecms_cloud_projects: "Twoje projekty FireCMS Cloud",
|
|
38460
|
+
status_active: "Aktywna",
|
|
38461
|
+
status_trialing: "Okres próbny",
|
|
38462
|
+
status_past_due: "Zaległa płatność",
|
|
38463
|
+
status_canceled: "Anulowana",
|
|
38464
|
+
status_unpaid: "Nieopłacona",
|
|
38465
|
+
status_incomplete: "Niekompletna",
|
|
38466
|
+
status_incomplete_expired: "Niekompletna, wygasła",
|
|
38467
|
+
status_unknown: "Nieznany",
|
|
38468
|
+
plan_free: "Brak subskrypcji",
|
|
38469
|
+
plan_cloud_plus: "Subskrybowany",
|
|
38470
|
+
plan_pro: "Pro",
|
|
38471
|
+
plan_unknown: "Nieznany plan",
|
|
38472
|
+
auto_setup_collections_button: "Automatycznie skonfiguruj kolekcje",
|
|
38473
|
+
auto_setup_collections_title: "Automatycznie skonfigurować kolekcje?",
|
|
38474
|
+
auto_setup_collections_desc: "Spowoduje to automatyczne utworzenie konfiguracji kolekcji dla kolekcji, które <b>NIE</b> są jeszcze zmapowane",
|
|
38475
|
+
setting_up_collections: "Konfigurowanie kolekcji",
|
|
38476
|
+
setting_up_collection: "Konfigurowanie {{name}}",
|
|
38477
|
+
no_collections_found_to_setup: "Nie znaleziono kolekcji do skonfigurowania.",
|
|
38478
|
+
collections_have_been_setup: "Kolekcje zostały automatycznie skonfigurowane.",
|
|
38479
|
+
error_setting_up_collections: "Błąd podczas automatycznej konfiguracji kolekcji",
|
|
38480
|
+
setup_collections_title: "Skonfiguruj kolekcje",
|
|
38481
|
+
setup_collections_select_desc: "Wybierz kolekcje do automatycznej konfiguracji:",
|
|
38482
|
+
select_all: "Zaznacz wszystkie",
|
|
38483
|
+
deselect_all: "Odznacz wszystkie",
|
|
38484
|
+
setup_collections_confirm: "Skonfiguruj ({{count}})",
|
|
38485
|
+
collection_setup_success: "{{name}} została skonfigurowana",
|
|
38486
|
+
go_to_collection: "Przejdź do kolekcji",
|
|
38487
|
+
// --- Home Suggestions ---
|
|
38488
|
+
add_your: "Dodaj swoje",
|
|
38489
|
+
database_collections: "kolekcje bazy danych",
|
|
38490
|
+
to_firecms: "do FireCMS",
|
|
38491
|
+
no_unmapped_collections: "Brak niezmapowanych kolekcji w bazie danych",
|
|
38492
|
+
query_and_update_with_datatalk: "Odpytuj i aktualizuj swoje dane w języku naturalnym za pomocą",
|
|
38493
|
+
// --- SaaS Welcome ---
|
|
38494
|
+
welcome_to_firecms: "Witamy w FireCMS Cloud",
|
|
38495
|
+
admin_panel_ready_bring_data: "Twój panel administracyjny jest gotowy. Wprowadźmy Twoje dane.",
|
|
38496
|
+
admin_panel_ready_get_started: "Twój panel administracyjny jest gotowy. Oto jak zacząć.",
|
|
38497
|
+
auto_detect_collections: "Automatyczne wykrywanie kolekcji",
|
|
38498
|
+
auto_detect_collections_desc: "Pozwól AI przeskanować Twoją bazę danych i automatycznie wygenerować schematy kolekcji.",
|
|
38499
|
+
create_a_collection: "Utwórz kolekcję",
|
|
38500
|
+
create_collection_desc: "Ręcznie zdefiniuj swoją pierwszą kolekcję od podstaw za pomocą edytora wizualnego.",
|
|
38501
|
+
read_the_docs: "Przeczytaj dokumentację",
|
|
38502
|
+
read_the_docs_desc: "Dowiedz się, jak dostosowywać pola, widoki, akcje i więcej.",
|
|
38503
|
+
explore_docs: "Poznaj dokumentację",
|
|
38504
|
+
want_to_customize_with_code: "Chcesz dostosować za pomocą kodu? Uruchom",
|
|
38505
|
+
to_scaffold_a_local_project: "aby wygenerować lokalny projekt.",
|
|
38506
|
+
// ─── Collection Editor — Validation ──────────────────────────
|
|
38507
|
+
validation: "Walidacja",
|
|
38508
|
+
unique: "Unikalne",
|
|
38509
|
+
required_message: "Treść komunikatu o wymaganym polu",
|
|
38510
|
+
required_tooltip: "Nie będzie można zapisać tej encji, jeśli ta wartość nie jest ustawiona",
|
|
38511
|
+
unique_tooltip: "Nie może istnieć wiele encji z tą samą wartością",
|
|
38512
|
+
lowercase: "Małe litery",
|
|
38513
|
+
uppercase: "Wielkie litery",
|
|
38514
|
+
trim: "Przytnij",
|
|
38515
|
+
exact_length: "Dokładna długość",
|
|
38516
|
+
min_length: "Minimalna długość",
|
|
38517
|
+
max_length: "Maksymalna długość",
|
|
38518
|
+
matches_regex: "Pasuje do wyrażenia regularnego",
|
|
38519
|
+
not_valid_regexp: "Nieprawidłowe wyrażenie regularne",
|
|
38520
|
+
regex_helper: "np. /^\\d+$/ tylko dla cyfr",
|
|
38521
|
+
min_value: "Wartość minimalna",
|
|
38522
|
+
max_value: "Wartość maksymalna",
|
|
38523
|
+
less_than: "Mniejsza niż",
|
|
38524
|
+
more_than: "Większa niż",
|
|
38525
|
+
positive_value: "Wartość dodatnia",
|
|
38526
|
+
negative_value: "Wartość ujemna",
|
|
38527
|
+
integer_value: "Wartość całkowita",
|
|
38528
|
+
// ─── Collection Editor — Property Edit ───────────────────────
|
|
38529
|
+
invalid_regular_expression: "Nieprawidłowe wyrażenie regularne",
|
|
38530
|
+
must_specify_target_collection: "Musisz określić docelową kolekcję dla tego pola",
|
|
38531
|
+
need_specify_repeat_field: "Musisz określić pole powtarzalne",
|
|
38532
|
+
need_specify_block_properties: "Musisz określić właściwości tego bloku",
|
|
38533
|
+
incomplete_condition: "Niekompletny warunek – wybierz pole",
|
|
38534
|
+
field_name: "Nazwa pola",
|
|
38535
|
+
// ─── Collection Editor — Display & Config ────────────────────
|
|
38536
|
+
kanban_column_property: "Właściwość kolumny Kanban",
|
|
38537
|
+
select_a_property: "Wybierz właściwość",
|
|
38538
|
+
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.",
|
|
38539
|
+
no_enum_string_properties: "Nie znaleziono tekstowych właściwości wyliczeniowych. Dodaj właściwość tekstową z enumValues, aby użyć widoku Kanban.",
|
|
38540
|
+
kanban_column_description: "Wybierz właściwość tekstową z wartościami wyliczeniowymi, aby grupować encje w kolumny",
|
|
38541
|
+
create_property: "+ Utwórz właściwość „{{property}}”",
|
|
38542
|
+
order_property: "Właściwość kolejności",
|
|
38543
|
+
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.",
|
|
38544
|
+
no_number_properties: "Nie znaleziono właściwości liczbowych. Dodaj właściwość liczbową, aby włączyć sortowanie.",
|
|
38545
|
+
order_property_description: "Wybierz właściwość liczbową, aby zachować kolejność elementów",
|
|
38546
|
+
display_settings: "Ustawienia wyświetlania",
|
|
38547
|
+
default_row_size: "Domyślny rozmiar wiersza",
|
|
38548
|
+
side_dialog_width: "Szerokość okna bocznego",
|
|
38549
|
+
side_dialog_width_description: "Opcjonalnie zdefiniuj szerokość (w pikselach) bocznego okna encji. Wartość domyślna to 768px",
|
|
38550
|
+
inline_editing_enabled: "Dane można edytować bezpośrednio w widoku tabeli",
|
|
38551
|
+
inline_editing_disabled: "Dane można edytować tylko w widoku formularza",
|
|
38552
|
+
inline_editing_description: "Zezwól na edycję danych bezpośrednio w widoku tabeli, bez otwierania widoku formularza.",
|
|
38553
|
+
include_json_view: "Uwzględnij widok JSON",
|
|
38554
|
+
no_json_view: "Nie uwzględniaj widoku JSON",
|
|
38555
|
+
json_view_description: "Uwzględnij reprezentację JSON dokumentu.",
|
|
38556
|
+
not_found_suffix: "nie znaleziono",
|
|
38557
|
+
// ─── Editor ─────────────────────────────────────────────────
|
|
38558
|
+
editor_text: "Tekst",
|
|
38559
|
+
editor_text_description: "Po prostu zacznij pisać zwykły tekst.",
|
|
38560
|
+
editor_heading_1: "Nagłówek 1",
|
|
38561
|
+
editor_heading_1_description: "Duży nagłówek sekcji.",
|
|
38562
|
+
editor_heading_2: "Nagłówek 2",
|
|
38563
|
+
editor_heading_2_description: "Średni nagłówek sekcji.",
|
|
38564
|
+
editor_heading_3: "Nagłówek 3",
|
|
38565
|
+
editor_heading_3_description: "Mały nagłówek sekcji.",
|
|
38566
|
+
editor_todo_list: "Lista zadań",
|
|
38567
|
+
editor_todo_list_description: "Śledź zadania za pomocą listy do zrobienia.",
|
|
38568
|
+
editor_bullet_list: "Lista punktowana",
|
|
38569
|
+
editor_bullet_list_description: "Utwórz prostą listę punktowaną.",
|
|
38570
|
+
editor_numbered_list: "Lista numerowana",
|
|
38571
|
+
editor_numbered_list_description: "Utwórz listę z numeracją.",
|
|
38572
|
+
editor_quote: "Cytat",
|
|
38573
|
+
editor_quote_description: "Uchwyć cytat.",
|
|
38574
|
+
editor_code: "Kod",
|
|
38575
|
+
editor_code_description: "Wstaw fragment kodu.",
|
|
38576
|
+
editor_image: "Obraz",
|
|
38577
|
+
editor_image_description: "Prześlij obraz ze swojego komputera.",
|
|
38578
|
+
editor_multiple: "Wielokrotne",
|
|
38579
|
+
editor_link: "Link",
|
|
38580
|
+
editor_save: "Zapisz",
|
|
38581
|
+
editor_cancel: "Anuluj",
|
|
38582
|
+
editor_remove_link: "Usuń link",
|
|
38583
|
+
editor_paste_or_type_link: "Wklej lub wpisz link",
|
|
38584
|
+
editor_open_in_new_window: "Otwórz w nowym oknie",
|
|
38585
|
+
editor_bold: "Pogrubienie",
|
|
38586
|
+
editor_italic: "Kursywa",
|
|
38587
|
+
editor_underline: "Podkreślenie",
|
|
38588
|
+
editor_strikethrough: "Przekreślenie",
|
|
38589
|
+
editor_autocomplete: "Autouzupełnianie",
|
|
38590
|
+
editor_autocomplete_description: "Dodaj tekst na podstawie kontekstu.",
|
|
38591
|
+
// ─── Text Search Dialog ─────────────────────────────────────
|
|
38592
|
+
text_search_dialog_title: "Włącz wyszukiwanie tekstowe",
|
|
38593
|
+
text_search_local_not_recommended: "Lokalne wyszukiwanie tekstowe nie jest zalecane dla dużych kolekcji.",
|
|
38594
|
+
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.",
|
|
38595
|
+
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.",
|
|
38596
|
+
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.",
|
|
38597
|
+
text_search_own_implementation: "Zaimplementowano własny kontroler wyszukiwania tekstowego. Możesz włączyć wyszukiwanie tekstowe dla swojej kolekcji.",
|
|
38598
|
+
text_search_enable_for_collection: "Włącz dla tej kolekcji",
|
|
38599
|
+
text_search_enable_for_project: "Włącz dla projektu",
|
|
38600
|
+
text_search_enabled_snackbar: "Lokalne wyszukiwanie tekstowe włączone",
|
|
38601
|
+
// ─── Cloud Project Settings ──────────────────────────────────
|
|
38602
|
+
settings_subscription_plan: "Plan subskrypcji",
|
|
38603
|
+
settings_subscribed_to: "Obecnie subskrybujesz",
|
|
38604
|
+
settings_no_active_subscription: "Obecnie ten projekt nie ma aktywnej subskrypcji.",
|
|
38605
|
+
settings_trial_valid_until: "Twój okres próbny jest ważny do {{date}}.",
|
|
38606
|
+
settings_features_intro: "Oto niektóre z funkcji, z których już korzystasz, używając FireCMS Cloud",
|
|
38607
|
+
settings_feature_managed_service: "Zarządzana, zawsze aktualna usługa",
|
|
38608
|
+
settings_feature_local_text_search: "Lokalne wyszukiwanie tekstowe",
|
|
38609
|
+
settings_feature_unlimited_users_roles: "Nieograniczona liczba użytkowników i ról",
|
|
38610
|
+
settings_feature_theme_logo: "Dostosowywanie motywu i logo",
|
|
38611
|
+
settings_feature_custom_fields_views: "Niestandardowe pola formularzy i widoki",
|
|
38612
|
+
settings_feature_secondary_databases: "Dodatkowe bazy danych",
|
|
38613
|
+
settings_feature_ai_content: "Generowanie treści AI za pomocą OpenAI i Google",
|
|
38614
|
+
settings_feature_unlimited_export: "Nieograniczony eksport danych",
|
|
38615
|
+
settings_feature_appcheck: "AppCheck",
|
|
38616
|
+
settings_heading: "Ustawienia",
|
|
38617
|
+
settings_project_name: "Nazwa projektu",
|
|
38618
|
+
settings_default_language: "Język domyślny",
|
|
38619
|
+
settings_default_language_caption: "Wybierz język bazowy dla tego projektu. Użytkownicy mogą zmienić tę preferencję w swoich ustawieniach osobistych.",
|
|
38620
|
+
settings_enable_local_text_search: "Włącz lokalne wyszukiwanie tekstowe",
|
|
38621
|
+
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.",
|
|
38622
|
+
settings_doc_history_all_collections: "Historia dokumentów włączona dla wszystkich kolekcji",
|
|
38623
|
+
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.",
|
|
38624
|
+
settings_theme: "Motyw",
|
|
38625
|
+
settings_primary_color: "Kolor podstawowy",
|
|
38626
|
+
settings_secondary_color: "Kolor dodatkowy",
|
|
38627
|
+
settings_sample_theme_components: "Przykładowe komponenty motywu",
|
|
38628
|
+
settings_drag_drop_logo: "Przeciągnij i upuść tutaj swoje logo",
|
|
38629
|
+
settings_create_subscription: "Utwórz subskrypcję",
|
|
38630
|
+
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.",
|
|
38631
|
+
settings_subscription_is: "Subskrypcja jest",
|
|
38632
|
+
settings_next_payment_on: "Następna płatność nastąpi {{date}}.",
|
|
38633
|
+
settings_seats_count: "Masz",
|
|
38634
|
+
settings_seat: "miejsce",
|
|
38635
|
+
settings_seats: "miejsc",
|
|
38636
|
+
settings_per_seat: "po {{price}}/miejsce/{{interval}}",
|
|
38637
|
+
settings_current_price: "Aktualna cena to",
|
|
38638
|
+
settings_per_user_usage: "na użytkownika (zależnie od zużycia).",
|
|
38639
|
+
settings_cancelled_active_until: "Ta subskrypcja została anulowana i będzie aktywna do {{date}}.",
|
|
38640
|
+
settings_no_additional_charges: "Po anulowaniu nie zostaną naliczone żadne dodatkowe opłaty.",
|
|
38641
|
+
settings_manage_subscription: "Zarządzaj subskrypcją",
|
|
38642
|
+
settings_security_rules: "Reguły bezpieczeństwa",
|
|
38643
|
+
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.",
|
|
38644
|
+
settings_security_rules_add_domain: "Pamiętaj, aby dodać domenę {{domain}} do listy dozwolonych domen u swojego dostawcy",
|
|
38645
|
+
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.",
|
|
38646
|
+
settings_appcheck: "AppCheck",
|
|
38647
|
+
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.",
|
|
38648
|
+
settings_appcheck_add_domain: "Pamiętaj, aby dodać domenę {{domain}} do listy dozwolonych domen u swojego dostawcy",
|
|
38649
|
+
settings_appcheck_enable: "Włącz AppCheck",
|
|
38650
|
+
settings_appcheck_site_key: "Klucz witryny",
|
|
38651
|
+
settings_appcheck_update: "Zaktualizuj AppCheck",
|
|
38652
|
+
settings_appcheck_refresh_note: "Po zapisaniu może być konieczne odświeżenie strony, aby zobaczyć zmiany.",
|
|
38653
|
+
settings_appcheck_updated: "AppCheck zaktualizowany",
|
|
38654
|
+
settings_appcheck_error: "Błąd podczas aktualizacji AppCheck",
|
|
38655
|
+
// --- Permission Error View ---
|
|
38656
|
+
missing_firestore_security_rules: "Brak reguł bezpieczeństwa Firestore",
|
|
38657
|
+
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",
|
|
38658
|
+
cannot_be_accessed_without_it: "nie może być dostępna bez tej reguły.",
|
|
38659
|
+
required_security_rule: "Wymagana reguła bezpieczeństwa",
|
|
38660
|
+
fix_automatically: "Napraw automatycznie",
|
|
38661
|
+
open_firebase_rules: "Otwórz reguły Firebase",
|
|
38662
|
+
security_rules_updated_successfully: "Reguły bezpieczeństwa zostały pomyślnie zaktualizowane! Odśwież stronę, aby wczytać dane.",
|
|
38663
|
+
sec_rules_fixing: "Naprawianie...",
|
|
38664
|
+
sec_rules_fixed: "Naprawiono!",
|
|
38665
|
+
// ─── GCP Marketplace ─────────────────────────────────────────
|
|
38666
|
+
marketplace_managed_by_gcp: "Zarządzane przez GCP Marketplace",
|
|
38667
|
+
marketplace_billing_note: "Twoja subskrypcja jest zarządzana przez Google Cloud Marketplace. Zmiany planu, rozliczenia i anulowanie są obsługiwane w konsoli GCP.",
|
|
38668
|
+
marketplace_manage_in_gcp_console: "Zarządzaj w konsoli GCP",
|
|
38669
|
+
marketplace_plan_changes_note: "Aby zmienić plan lub anulować subskrypcję, odwiedź swoje zamówienia w GCP Marketplace.",
|
|
38670
|
+
marketplace_welcome_title: "Witamy z GCP Marketplace!",
|
|
38671
|
+
marketplace_welcome_subtitle: "Twoja subskrypcja Google Cloud Marketplace jest aktywna. Wybierz istniejący projekt lub utwórz nowy, aby go połączyć.",
|
|
38672
|
+
marketplace_select_or_create_project: "Wybierz lub utwórz projekt",
|
|
38673
|
+
marketplace_link_project: "Połącz projekt",
|
|
38674
|
+
marketplace_linking: "Łączenie projektu…",
|
|
38675
|
+
marketplace_link_success: "Projekt został pomyślnie połączony! Przekierowywanie…",
|
|
38676
|
+
marketplace_link_error: "Błąd podczas łączenia projektu. Spróbuj ponownie.",
|
|
38677
|
+
marketplace_no_account_id: "Nie znaleziono ID konta GCP Marketplace. Rozpocznij od GCP Marketplace."
|
|
38678
|
+
};
|
|
37334
38679
|
const FIRECMS_NS = "firecms_core";
|
|
37335
38680
|
const FIRECMS_LOCALE_STORAGE_KEY = "firecms_locale";
|
|
37336
38681
|
function FireCMSi18nProvider({
|
|
@@ -37430,6 +38775,11 @@
|
|
|
37430
38775
|
[FIRECMS_NS]: {
|
|
37431
38776
|
...pt
|
|
37432
38777
|
}
|
|
38778
|
+
},
|
|
38779
|
+
pl: {
|
|
38780
|
+
[FIRECMS_NS]: {
|
|
38781
|
+
...pl
|
|
38782
|
+
}
|
|
37433
38783
|
}
|
|
37434
38784
|
};
|
|
37435
38785
|
if (!translations) return resources;
|
|
@@ -38408,6 +39758,44 @@
|
|
|
38408
39758
|
const md = markdownIt({
|
|
38409
39759
|
html: false
|
|
38410
39760
|
}).use(markdownItTaskLists).use(markdownItMark).use(markdownItIns);
|
|
39761
|
+
md.inline.ruler.at("escape", function escapeOverride(state, silent) {
|
|
39762
|
+
let pos = state.pos;
|
|
39763
|
+
const max = state.posMax;
|
|
39764
|
+
if (state.src.charCodeAt(pos) !== 92) return false;
|
|
39765
|
+
pos++;
|
|
39766
|
+
if (pos >= max) return false;
|
|
39767
|
+
const ch1 = state.src.charCodeAt(pos);
|
|
39768
|
+
if (ch1 === 10) {
|
|
39769
|
+
if (!silent) {
|
|
39770
|
+
state.pending += "\\";
|
|
39771
|
+
}
|
|
39772
|
+
state.pos = pos;
|
|
39773
|
+
return true;
|
|
39774
|
+
}
|
|
39775
|
+
let escapedStr = state.src[pos];
|
|
39776
|
+
if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max) {
|
|
39777
|
+
const ch2 = state.src.charCodeAt(pos + 1);
|
|
39778
|
+
if (ch2 >= 56320 && ch2 <= 57343) {
|
|
39779
|
+
escapedStr += state.src[pos + 1];
|
|
39780
|
+
pos++;
|
|
39781
|
+
}
|
|
39782
|
+
}
|
|
39783
|
+
const origStr = "\\" + escapedStr;
|
|
39784
|
+
if (!silent) {
|
|
39785
|
+
const isEscapable = ch1 < 256 && /[\\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-]/.test(String.fromCharCode(ch1));
|
|
39786
|
+
const token = state.push("text_special", "", 0);
|
|
39787
|
+
if (isEscapable) {
|
|
39788
|
+
token.content = escapedStr;
|
|
39789
|
+
} else {
|
|
39790
|
+
token.content = origStr;
|
|
39791
|
+
}
|
|
39792
|
+
token.markup = origStr;
|
|
39793
|
+
token.info = "escape";
|
|
39794
|
+
}
|
|
39795
|
+
state.pos = pos + 1;
|
|
39796
|
+
return true;
|
|
39797
|
+
});
|
|
39798
|
+
md.inline.ruler.disable(["newline"]);
|
|
38411
39799
|
md.core.ruler.after("inline", "image-to-block", (state) => {
|
|
38412
39800
|
const tokens = state.tokens;
|
|
38413
39801
|
for (let i = tokens.length - 2; i >= 1; i--) {
|
|
@@ -38493,6 +39881,28 @@
|
|
|
38493
39881
|
table_cell() {
|
|
38494
39882
|
},
|
|
38495
39883
|
table_header() {
|
|
39884
|
+
},
|
|
39885
|
+
// Custom text serializer: since our parser override keeps `\` as
|
|
39886
|
+
// literal text (instead of consuming it), we must avoid the default
|
|
39887
|
+
// esc() from double-escaping it. We escape all standard markdown
|
|
39888
|
+
// specials *except* the backslash itself.
|
|
39889
|
+
text(state, node) {
|
|
39890
|
+
const escaped = node.text.replace(/[`*~\[\]_]/g, (m, i) => {
|
|
39891
|
+
if (m === "_" && i > 0 && i + 1 < node.text.length && /\w/.test(node.text[i - 1]) && /\w/.test(node.text[i + 1])) {
|
|
39892
|
+
return m;
|
|
39893
|
+
}
|
|
39894
|
+
return "\\" + m;
|
|
39895
|
+
});
|
|
39896
|
+
const lines = escaped.split("\n");
|
|
39897
|
+
for (let i = 0; i < lines.length; i++) {
|
|
39898
|
+
state.write();
|
|
39899
|
+
let line = lines[i];
|
|
39900
|
+
if (state.atBlockStart || i > 0) {
|
|
39901
|
+
line = line.replace(/^(\+[ ]|[-*>])/, "\\$&").replace(/^(\s*)(#{1,6})(\s|$)/, "$1\\$2$3").replace(/^(\s*\d+)\.\s/, "$1\\. ");
|
|
39902
|
+
}
|
|
39903
|
+
state.out += line;
|
|
39904
|
+
if (i !== lines.length - 1) state.out += "\n";
|
|
39905
|
+
}
|
|
38496
39906
|
}
|
|
38497
39907
|
}, {
|
|
38498
39908
|
...prosemirrorMarkdown.defaultMarkdownSerializer.marks,
|
|
@@ -41294,7 +42704,7 @@
|
|
|
41294
42704
|
"lg": "prose-lg"
|
|
41295
42705
|
};
|
|
41296
42706
|
const FireCMSEditor = (t0) => {
|
|
41297
|
-
const $ = reactCompilerRuntime.c(
|
|
42707
|
+
const $ = reactCompilerRuntime.c(78);
|
|
41298
42708
|
const {
|
|
41299
42709
|
content,
|
|
41300
42710
|
onJsonContentChange,
|
|
@@ -41466,63 +42876,87 @@
|
|
|
41466
42876
|
} = useProseMirror(t10);
|
|
41467
42877
|
const view = t11;
|
|
41468
42878
|
const doc = state?.doc;
|
|
42879
|
+
const mountedRef = React.useRef(false);
|
|
41469
42880
|
let t12;
|
|
41470
|
-
|
|
42881
|
+
let t13;
|
|
42882
|
+
if ($[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
41471
42883
|
t12 = () => {
|
|
42884
|
+
const raf = requestAnimationFrame(() => {
|
|
42885
|
+
mountedRef.current = true;
|
|
42886
|
+
});
|
|
42887
|
+
return () => cancelAnimationFrame(raf);
|
|
42888
|
+
};
|
|
42889
|
+
t13 = [];
|
|
42890
|
+
$[20] = t12;
|
|
42891
|
+
$[21] = t13;
|
|
42892
|
+
} else {
|
|
42893
|
+
t12 = $[20];
|
|
42894
|
+
t13 = $[21];
|
|
42895
|
+
}
|
|
42896
|
+
React.useEffect(t12, t13);
|
|
42897
|
+
let t14;
|
|
42898
|
+
if ($[22] !== flushChanges || $[23] !== state) {
|
|
42899
|
+
t14 = () => {
|
|
41472
42900
|
if (!state) {
|
|
41473
42901
|
return;
|
|
41474
42902
|
}
|
|
42903
|
+
if (!mountedRef.current) {
|
|
42904
|
+
return;
|
|
42905
|
+
}
|
|
41475
42906
|
const timeout_0 = setTimeout(() => {
|
|
41476
42907
|
flushChanges(state);
|
|
41477
42908
|
}, 250);
|
|
41478
42909
|
return () => clearTimeout(timeout_0);
|
|
41479
42910
|
};
|
|
41480
|
-
$[
|
|
41481
|
-
$[
|
|
41482
|
-
$[
|
|
42911
|
+
$[22] = flushChanges;
|
|
42912
|
+
$[23] = state;
|
|
42913
|
+
$[24] = t14;
|
|
41483
42914
|
} else {
|
|
41484
|
-
|
|
42915
|
+
t14 = $[24];
|
|
41485
42916
|
}
|
|
41486
|
-
let
|
|
41487
|
-
if ($[
|
|
41488
|
-
|
|
41489
|
-
$[
|
|
41490
|
-
$[
|
|
42917
|
+
let t15;
|
|
42918
|
+
if ($[25] !== doc) {
|
|
42919
|
+
t15 = [doc];
|
|
42920
|
+
$[25] = doc;
|
|
42921
|
+
$[26] = t15;
|
|
41491
42922
|
} else {
|
|
41492
|
-
|
|
42923
|
+
t15 = $[26];
|
|
41493
42924
|
}
|
|
41494
|
-
React.useEffect(
|
|
41495
|
-
let
|
|
41496
|
-
if ($[
|
|
41497
|
-
|
|
42925
|
+
React.useEffect(t14, t15);
|
|
42926
|
+
let t16;
|
|
42927
|
+
if ($[27] !== flushChanges || $[28] !== view) {
|
|
42928
|
+
t16 = () => {
|
|
41498
42929
|
if (!view) {
|
|
41499
42930
|
return;
|
|
41500
42931
|
}
|
|
41501
42932
|
const dom2 = view.dom;
|
|
41502
42933
|
const handleBlur = () => {
|
|
42934
|
+
if (!mountedRef.current) {
|
|
42935
|
+
return;
|
|
42936
|
+
}
|
|
41503
42937
|
flushChanges(view.state);
|
|
41504
42938
|
};
|
|
41505
42939
|
dom2.addEventListener("blur", handleBlur);
|
|
41506
42940
|
return () => dom2.removeEventListener("blur", handleBlur);
|
|
41507
42941
|
};
|
|
41508
|
-
$[
|
|
41509
|
-
$[
|
|
41510
|
-
$[
|
|
42942
|
+
$[27] = flushChanges;
|
|
42943
|
+
$[28] = view;
|
|
42944
|
+
$[29] = t16;
|
|
41511
42945
|
} else {
|
|
41512
|
-
|
|
42946
|
+
t16 = $[29];
|
|
41513
42947
|
}
|
|
41514
|
-
let
|
|
41515
|
-
if ($[
|
|
41516
|
-
|
|
41517
|
-
$[
|
|
41518
|
-
$[
|
|
42948
|
+
let t17;
|
|
42949
|
+
if ($[30] !== view) {
|
|
42950
|
+
t17 = [view];
|
|
42951
|
+
$[30] = view;
|
|
42952
|
+
$[31] = t17;
|
|
41519
42953
|
} else {
|
|
41520
|
-
|
|
42954
|
+
t17 = $[31];
|
|
41521
42955
|
}
|
|
41522
|
-
React.useEffect(
|
|
41523
|
-
let
|
|
41524
|
-
if ($[
|
|
41525
|
-
|
|
42956
|
+
React.useEffect(t16, t17);
|
|
42957
|
+
let t18;
|
|
42958
|
+
if ($[32] !== highlight || $[33] !== view) {
|
|
42959
|
+
t18 = () => {
|
|
41526
42960
|
if (view) {
|
|
41527
42961
|
if (highlight) {
|
|
41528
42962
|
highlightCommands.toggleAutocompleteHighlight(highlight)(view.state, view.dispatch);
|
|
@@ -41531,80 +42965,80 @@
|
|
|
41531
42965
|
}
|
|
41532
42966
|
}
|
|
41533
42967
|
};
|
|
41534
|
-
$[
|
|
41535
|
-
$[
|
|
41536
|
-
$[
|
|
42968
|
+
$[32] = highlight;
|
|
42969
|
+
$[33] = view;
|
|
42970
|
+
$[34] = t18;
|
|
41537
42971
|
} else {
|
|
41538
|
-
|
|
42972
|
+
t18 = $[34];
|
|
41539
42973
|
}
|
|
41540
|
-
const
|
|
41541
|
-
const
|
|
41542
|
-
let
|
|
41543
|
-
if ($[
|
|
41544
|
-
|
|
41545
|
-
$[33] = t17;
|
|
41546
|
-
$[34] = t18;
|
|
42974
|
+
const t19 = highlight?.from;
|
|
42975
|
+
const t20 = highlight?.to;
|
|
42976
|
+
let t21;
|
|
42977
|
+
if ($[35] !== t19 || $[36] !== t20) {
|
|
42978
|
+
t21 = [t19, t20];
|
|
41547
42979
|
$[35] = t19;
|
|
42980
|
+
$[36] = t20;
|
|
42981
|
+
$[37] = t21;
|
|
41548
42982
|
} else {
|
|
41549
|
-
|
|
42983
|
+
t21 = $[37];
|
|
41550
42984
|
}
|
|
41551
|
-
React.useEffect(
|
|
42985
|
+
React.useEffect(t18, t21);
|
|
41552
42986
|
const proseClass = proseClasses[textSize];
|
|
41553
|
-
const
|
|
41554
|
-
const
|
|
41555
|
-
let
|
|
41556
|
-
if ($[
|
|
41557
|
-
|
|
41558
|
-
$[
|
|
41559
|
-
$[37] = t20;
|
|
41560
|
-
$[38] = t21;
|
|
42987
|
+
const t22 = isMarkdownMode ? "Switch to Visual Editor" : "Switch to Markdown";
|
|
42988
|
+
const t23 = isMarkdownMode ? "Visual" : "Markdown";
|
|
42989
|
+
let t24;
|
|
42990
|
+
if ($[38] !== handleToggleMarkdown || $[39] !== t22 || $[40] !== t23) {
|
|
42991
|
+
t24 = /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: handleToggleMarkdown, title: t22, className: "absolute top-2 right-2 z-10 px-2 py-1 text-xs font-medium text-surface-400 hover:text-surface-700 dark:text-surface-600 dark:hover:text-surface-300 transition-colors opacity-50 hover:opacity-100 bg-transparent rounded", children: t23 });
|
|
42992
|
+
$[38] = handleToggleMarkdown;
|
|
41561
42993
|
$[39] = t22;
|
|
42994
|
+
$[40] = t23;
|
|
42995
|
+
$[41] = t24;
|
|
41562
42996
|
} else {
|
|
41563
|
-
|
|
42997
|
+
t24 = $[41];
|
|
41564
42998
|
}
|
|
41565
|
-
let
|
|
41566
|
-
if ($[
|
|
41567
|
-
|
|
42999
|
+
let t25;
|
|
43000
|
+
if ($[42] !== state || $[43] !== view) {
|
|
43001
|
+
t25 = {
|
|
41568
43002
|
state,
|
|
41569
43003
|
view
|
|
41570
43004
|
};
|
|
41571
|
-
$[
|
|
41572
|
-
$[
|
|
41573
|
-
$[
|
|
43005
|
+
$[42] = state;
|
|
43006
|
+
$[43] = view;
|
|
43007
|
+
$[44] = t25;
|
|
41574
43008
|
} else {
|
|
41575
|
-
|
|
43009
|
+
t25 = $[44];
|
|
41576
43010
|
}
|
|
41577
|
-
const
|
|
41578
|
-
let
|
|
41579
|
-
if ($[
|
|
41580
|
-
|
|
41581
|
-
display:
|
|
43011
|
+
const t26 = isMarkdownMode ? "none" : "block";
|
|
43012
|
+
let t27;
|
|
43013
|
+
if ($[45] !== t26) {
|
|
43014
|
+
t27 = {
|
|
43015
|
+
display: t26
|
|
41582
43016
|
};
|
|
41583
|
-
$[
|
|
41584
|
-
$[
|
|
43017
|
+
$[45] = t26;
|
|
43018
|
+
$[46] = t27;
|
|
41585
43019
|
} else {
|
|
41586
|
-
|
|
43020
|
+
t27 = $[46];
|
|
41587
43021
|
}
|
|
41588
|
-
let
|
|
41589
|
-
if ($[
|
|
41590
|
-
|
|
41591
|
-
$[
|
|
41592
|
-
$[
|
|
43022
|
+
let t28;
|
|
43023
|
+
if ($[47] !== proseClass) {
|
|
43024
|
+
t28 = ui.cls(proseClass, "prose-headings:font-title font-default focus:outline-none max-w-full p-12");
|
|
43025
|
+
$[47] = proseClass;
|
|
43026
|
+
$[48] = t28;
|
|
41593
43027
|
} else {
|
|
41594
|
-
|
|
43028
|
+
t28 = $[48];
|
|
41595
43029
|
}
|
|
41596
|
-
let
|
|
41597
|
-
if ($[
|
|
41598
|
-
|
|
41599
|
-
$[
|
|
41600
|
-
$[
|
|
41601
|
-
$[
|
|
43030
|
+
let t29;
|
|
43031
|
+
if ($[49] !== editorRef || $[50] !== t28) {
|
|
43032
|
+
t29 = /* @__PURE__ */ jsxRuntime.jsx("div", { ref: editorRef, className: t28 });
|
|
43033
|
+
$[49] = editorRef;
|
|
43034
|
+
$[50] = t28;
|
|
43035
|
+
$[51] = t29;
|
|
41602
43036
|
} else {
|
|
41603
|
-
|
|
43037
|
+
t29 = $[51];
|
|
41604
43038
|
}
|
|
41605
|
-
let
|
|
41606
|
-
if ($[
|
|
41607
|
-
|
|
43039
|
+
let t30;
|
|
43040
|
+
if ($[52] !== editorRef || $[53] !== openLink || $[54] !== openNode || $[55] !== view) {
|
|
43041
|
+
t30 = view && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
41608
43042
|
/* @__PURE__ */ jsxRuntime.jsxs(EditorBubble, { options: {
|
|
41609
43043
|
placement: "top",
|
|
41610
43044
|
offset: 6
|
|
@@ -41621,81 +43055,81 @@
|
|
|
41621
43055
|
} }),
|
|
41622
43056
|
/* @__PURE__ */ jsxRuntime.jsx(TableBubble, {})
|
|
41623
43057
|
] });
|
|
41624
|
-
$[
|
|
41625
|
-
$[
|
|
41626
|
-
$[
|
|
41627
|
-
$[
|
|
41628
|
-
$[
|
|
43058
|
+
$[52] = editorRef;
|
|
43059
|
+
$[53] = openLink;
|
|
43060
|
+
$[54] = openNode;
|
|
43061
|
+
$[55] = view;
|
|
43062
|
+
$[56] = t30;
|
|
41629
43063
|
} else {
|
|
41630
|
-
|
|
43064
|
+
t30 = $[56];
|
|
41631
43065
|
}
|
|
41632
|
-
let
|
|
41633
|
-
if ($[
|
|
41634
|
-
|
|
41635
|
-
$[
|
|
41636
|
-
$[
|
|
41637
|
-
$[
|
|
43066
|
+
let t31;
|
|
43067
|
+
if ($[57] !== aiController || $[58] !== handleImageUpload) {
|
|
43068
|
+
t31 = /* @__PURE__ */ jsxRuntime.jsx(SlashCommandMenu, { upload: handleImageUpload, aiController });
|
|
43069
|
+
$[57] = aiController;
|
|
43070
|
+
$[58] = handleImageUpload;
|
|
43071
|
+
$[59] = t31;
|
|
41638
43072
|
} else {
|
|
41639
|
-
|
|
43073
|
+
t31 = $[59];
|
|
41640
43074
|
}
|
|
41641
|
-
let
|
|
41642
|
-
if ($[
|
|
41643
|
-
|
|
41644
|
-
|
|
41645
|
-
|
|
41646
|
-
|
|
43075
|
+
let t32;
|
|
43076
|
+
if ($[60] !== t27 || $[61] !== t29 || $[62] !== t30 || $[63] !== t31) {
|
|
43077
|
+
t32 = /* @__PURE__ */ jsxRuntime.jsxs("div", { style: t27, children: [
|
|
43078
|
+
t29,
|
|
43079
|
+
t30,
|
|
43080
|
+
t31
|
|
41647
43081
|
] });
|
|
41648
|
-
$[
|
|
41649
|
-
$[59] = t27;
|
|
41650
|
-
$[60] = t28;
|
|
43082
|
+
$[60] = t27;
|
|
41651
43083
|
$[61] = t29;
|
|
41652
43084
|
$[62] = t30;
|
|
43085
|
+
$[63] = t31;
|
|
43086
|
+
$[64] = t32;
|
|
41653
43087
|
} else {
|
|
41654
|
-
|
|
43088
|
+
t32 = $[64];
|
|
41655
43089
|
}
|
|
41656
|
-
let
|
|
41657
|
-
if ($[
|
|
41658
|
-
|
|
43090
|
+
let t33;
|
|
43091
|
+
if ($[65] !== handleMarkdownBlur || $[66] !== handleMarkdownChange || $[67] !== internalMarkdown || $[68] !== isMarkdownMode || $[69] !== proseClass) {
|
|
43092
|
+
t33 = isMarkdownMode && /* @__PURE__ */ jsxRuntime.jsx(ui.TextareaAutosize, { value: internalMarkdown, onChange: handleMarkdownChange, onBlur: handleMarkdownBlur, className: ui.cls("w-full min-h-[300px] p-12 bg-transparent resize-none font-mono focus:ring-0 focus:outline-none outline-none", proseClass), style: {
|
|
41659
43093
|
tabSize: 4,
|
|
41660
43094
|
outline: "none",
|
|
41661
43095
|
border: "none",
|
|
41662
43096
|
boxShadow: "none"
|
|
41663
43097
|
} });
|
|
41664
|
-
$[
|
|
41665
|
-
$[
|
|
41666
|
-
$[
|
|
41667
|
-
$[
|
|
41668
|
-
$[
|
|
41669
|
-
$[
|
|
43098
|
+
$[65] = handleMarkdownBlur;
|
|
43099
|
+
$[66] = handleMarkdownChange;
|
|
43100
|
+
$[67] = internalMarkdown;
|
|
43101
|
+
$[68] = isMarkdownMode;
|
|
43102
|
+
$[69] = proseClass;
|
|
43103
|
+
$[70] = t33;
|
|
41670
43104
|
} else {
|
|
41671
|
-
|
|
43105
|
+
t33 = $[70];
|
|
41672
43106
|
}
|
|
41673
|
-
let
|
|
41674
|
-
if ($[
|
|
41675
|
-
|
|
41676
|
-
|
|
41677
|
-
|
|
43107
|
+
let t34;
|
|
43108
|
+
if ($[71] !== t25 || $[72] !== t32 || $[73] !== t33) {
|
|
43109
|
+
t34 = /* @__PURE__ */ jsxRuntime.jsxs(ProseMirrorContext.Provider, { value: t25, children: [
|
|
43110
|
+
t32,
|
|
43111
|
+
t33
|
|
41678
43112
|
] });
|
|
41679
|
-
$[
|
|
41680
|
-
$[70] = t30;
|
|
41681
|
-
$[71] = t31;
|
|
43113
|
+
$[71] = t25;
|
|
41682
43114
|
$[72] = t32;
|
|
43115
|
+
$[73] = t33;
|
|
43116
|
+
$[74] = t34;
|
|
41683
43117
|
} else {
|
|
41684
|
-
|
|
43118
|
+
t34 = $[74];
|
|
41685
43119
|
}
|
|
41686
|
-
let
|
|
41687
|
-
if ($[
|
|
41688
|
-
|
|
41689
|
-
|
|
41690
|
-
|
|
43120
|
+
let t35;
|
|
43121
|
+
if ($[75] !== t24 || $[76] !== t34) {
|
|
43122
|
+
t35 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative min-h-[300px] w-full", children: [
|
|
43123
|
+
t24,
|
|
43124
|
+
t34
|
|
41691
43125
|
] });
|
|
41692
|
-
$[
|
|
41693
|
-
$[
|
|
41694
|
-
$[
|
|
43126
|
+
$[75] = t24;
|
|
43127
|
+
$[76] = t34;
|
|
43128
|
+
$[77] = t35;
|
|
41695
43129
|
} else {
|
|
41696
|
-
|
|
43130
|
+
t35 = $[77];
|
|
41697
43131
|
}
|
|
41698
|
-
return
|
|
43132
|
+
return t35;
|
|
41699
43133
|
};
|
|
41700
43134
|
const cssStyles = `
|
|
41701
43135
|
.ProseMirror {
|
|
@@ -41941,6 +43375,7 @@ ul[data-type="taskList"] li[data-checked="true"] > div > p {
|
|
|
41941
43375
|
exports2.DrawerLogo = DrawerLogo;
|
|
41942
43376
|
exports2.DrawerNavigationGroup = DrawerNavigationGroup;
|
|
41943
43377
|
exports2.DrawerNavigationItem = DrawerNavigationItem;
|
|
43378
|
+
exports2.DrawerToggle = DrawerToggle;
|
|
41944
43379
|
exports2.EmptyValue = EmptyValue;
|
|
41945
43380
|
exports2.EntityCard = EntityCard;
|
|
41946
43381
|
exports2.EntityCollectionCardView = EntityCollectionCardView;
|
|
@@ -41967,6 +43402,8 @@ ul[data-type="taskList"] li[data-checked="true"] > div > p {
|
|
|
41967
43402
|
exports2.FormEntry = FormEntry;
|
|
41968
43403
|
exports2.FormLayout = FormLayout;
|
|
41969
43404
|
exports2.GeoPoint = GeoPoint;
|
|
43405
|
+
exports2.GeopointFieldBinding = GeopointFieldBinding;
|
|
43406
|
+
exports2.GeopointPropertyPreview = GeopointPropertyPreview;
|
|
41970
43407
|
exports2.IconForView = IconForView;
|
|
41971
43408
|
exports2.ImagePreview = ImagePreview;
|
|
41972
43409
|
exports2.InternalUserManagementContext = InternalUserManagementContext;
|
|
@@ -42044,15 +43481,18 @@ ul[data-type="taskList"] li[data-checked="true"] > div > p {
|
|
|
42044
43481
|
exports2.canDeleteEntity = canDeleteEntity;
|
|
42045
43482
|
exports2.canEditEntity = canEditEntity;
|
|
42046
43483
|
exports2.copyEntityAction = copyEntityAction;
|
|
43484
|
+
exports2.decodeEntityId = decodeEntityId;
|
|
42047
43485
|
exports2.defaultDateFormat = defaultDateFormat;
|
|
42048
43486
|
exports2.deleteEntityAction = deleteEntityAction;
|
|
42049
43487
|
exports2.deleteEntityWithCallbacks = deleteEntityWithCallbacks;
|
|
42050
43488
|
exports2.editEntityAction = editEntityAction;
|
|
42051
43489
|
exports2.en = en;
|
|
43490
|
+
exports2.encodeEntityId = encodeEntityId;
|
|
42052
43491
|
exports2.enumToObjectEntries = enumToObjectEntries;
|
|
42053
43492
|
exports2.es = es;
|
|
42054
43493
|
exports2.evaluateCondition = evaluateCondition;
|
|
42055
43494
|
exports2.flattenObject = flattenObject;
|
|
43495
|
+
exports2.formatGeoPoint = formatGeoPoint;
|
|
42056
43496
|
exports2.fullPathToCollectionSegments = fullPathToCollectionSegments;
|
|
42057
43497
|
exports2.getArrayResolvedProperties = getArrayResolvedProperties;
|
|
42058
43498
|
exports2.getArrayValuesCount = getArrayValuesCount;
|
|
@@ -42074,6 +43514,7 @@ ul[data-type="taskList"] li[data-checked="true"] > div > p {
|
|
|
42074
43514
|
exports2.getFieldConfig = getFieldConfig;
|
|
42075
43515
|
exports2.getFieldId = getFieldId;
|
|
42076
43516
|
exports2.getFormFieldKeys = getFormFieldKeys;
|
|
43517
|
+
exports2.getGeoPointCoordinates = getGeoPointCoordinates;
|
|
42077
43518
|
exports2.getHashValue = getHashValue;
|
|
42078
43519
|
exports2.getIcon = getIcon;
|
|
42079
43520
|
exports2.getIconForProperty = getIconForProperty;
|
|
@@ -42091,6 +43532,7 @@ ul[data-type="taskList"] li[data-checked="true"] > div > p {
|
|
|
42091
43532
|
exports2.hydrateRegExp = hydrateRegExp;
|
|
42092
43533
|
exports2.iconSynonyms = iconSynonyms;
|
|
42093
43534
|
exports2.iconsSearch = iconsSearch;
|
|
43535
|
+
exports2.isDataTypeFilterable = isDataTypeFilterable;
|
|
42094
43536
|
exports2.isDefaultFieldConfigId = isDefaultFieldConfigId;
|
|
42095
43537
|
exports2.isEmptyObject = isEmptyObject;
|
|
42096
43538
|
exports2.isEnumValueDisabled = isEnumValueDisabled;
|
|
@@ -42110,6 +43552,8 @@ ul[data-type="taskList"] li[data-checked="true"] > div > p {
|
|
|
42110
43552
|
exports2.mergeDeep = mergeDeep;
|
|
42111
43553
|
exports2.mergeEntityActions = mergeEntityActions;
|
|
42112
43554
|
exports2.navigateToEntity = navigateToEntity;
|
|
43555
|
+
exports2.normalizeGeoPoint = normalizeGeoPoint;
|
|
43556
|
+
exports2.parseGeoPoint = parseGeoPoint;
|
|
42113
43557
|
exports2.pick = pick;
|
|
42114
43558
|
exports2.plural = plural;
|
|
42115
43559
|
exports2.prettifyIdentifier = prettifyIdentifier;
|