@overmap-ai/core 1.0.60-sdk-refactor.20 → 1.0.61
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/index.d.ts +0 -4
- package/dist/overmap-core.js +1255 -12818
- package/dist/overmap-core.js.map +1 -1
- package/dist/overmap-core.umd.cjs +1264 -12828
- package/dist/overmap-core.umd.cjs.map +1 -1
- package/dist/sdk/services/BaseAttachmentService.d.ts +8 -4
- package/dist/sdk/services/BaseUploadService.d.ts +8 -0
- package/dist/sdk/services/FormService.d.ts +18 -0
- package/dist/sdk/services/FormSubmissionService.d.ts +24 -0
- package/dist/sdk/services/GeoImageService.d.ts +11 -0
- package/dist/sdk/services/IssueService.d.ts +1 -1
- package/dist/sdk/services/index.d.ts +3 -2
- package/dist/sdk/typings.d.ts +3 -2
- package/dist/store/slices/assetTypeSlice.d.ts +2 -8
- package/dist/store/slices/categorySlice.d.ts +11 -25
- package/dist/store/slices/documentSlice.d.ts +14 -14
- package/dist/store/slices/formRevisionAttachmentSlice.d.ts +21 -21
- package/dist/store/slices/formRevisionSlice.d.ts +21 -21
- package/dist/store/slices/formSlice.d.ts +20 -19
- package/dist/store/slices/formSubmissionAttachmentSlice.d.ts +20 -20
- package/dist/store/slices/formSubmissionSlice.d.ts +30 -26
- package/dist/store/slices/geoImageSlice.d.ts +48 -0
- package/dist/store/slices/index.d.ts +1 -0
- package/dist/store/slices/issueSlice.d.ts +2 -12
- package/dist/store/slices/licenseSlice.d.ts +2 -2
- package/dist/store/slices/organizationSlice.d.ts +6 -17
- package/dist/store/slices/projectAccessSlice.d.ts +2 -2
- package/dist/store/slices/projectFileSlice.d.ts +5 -17
- package/dist/store/slices/projectSlice.d.ts +1 -4
- package/dist/store/slices/teamSlice.d.ts +2 -2
- package/dist/store/slices/workspaceSlice.d.ts +5 -10
- package/dist/store/store.d.ts +2 -1
- package/dist/typings/colors.d.ts +0 -3
- package/dist/typings/models/{components.d.ts → assets.d.ts} +3 -4
- package/dist/typings/models/forms.d.ts +98 -12
- package/dist/typings/models/geo.d.ts +18 -6
- package/dist/typings/models/geoImages.d.ts +14 -0
- package/dist/typings/models/index.d.ts +2 -1
- package/dist/typings/models/issues.d.ts +6 -7
- package/dist/typings/models/projects.d.ts +3 -5
- package/dist/typings/models/store.d.ts +2 -2
- package/dist/utils/colors.d.ts +0 -6
- package/dist/utils/coordinates.d.ts +5 -7
- package/dist/utils/forms.d.ts +2 -2
- package/dist/utils/index.d.ts +1 -0
- package/package.json +13 -43
- package/dist/components/ColorPicker/ColorPicker.d.ts +0 -10
- package/dist/components/ColorPicker/index.d.ts +0 -1
- package/dist/components/FileBadge/FileBadge.d.ts +0 -8
- package/dist/components/FileBadge/index.d.ts +0 -1
- package/dist/components/FileCard/FileCard.d.ts +0 -8
- package/dist/components/FileCard/index.d.ts +0 -1
- package/dist/components/FileIcon/FileIcon.d.ts +0 -5
- package/dist/components/FileIcon/index.d.ts +0 -1
- package/dist/components/FileViewer/FileViewerProvider.d.ts +0 -2
- package/dist/components/FileViewer/context.d.ts +0 -5
- package/dist/components/FileViewer/index.d.ts +0 -3
- package/dist/components/FileViewer/typings.d.ts +0 -5
- package/dist/components/ImageCard/ImageCard.d.ts +0 -9
- package/dist/components/ImageCard/index.d.ts +0 -1
- package/dist/components/ImageMarkup/ImageMarkup.d.ts +0 -14
- package/dist/components/ImageMarkup/index.d.ts +0 -1
- package/dist/components/ImageViewer/ImageViewer.d.ts +0 -8
- package/dist/components/ImageViewer/constants.d.ts +0 -1
- package/dist/components/ImageViewer/index.d.ts +0 -2
- package/dist/components/PDFViewer/PDFViewer.d.ts +0 -8
- package/dist/components/PDFViewer/constants.d.ts +0 -1
- package/dist/components/PDFViewer/index.d.ts +0 -2
- package/dist/components/SpreadsheetViewer/SpreadsheetViewer.d.ts +0 -8
- package/dist/components/SpreadsheetViewer/constants.d.ts +0 -1
- package/dist/components/SpreadsheetViewer/index.d.ts +0 -2
- package/dist/components/index.d.ts +0 -10
- package/dist/forms/builder/DropDispatch.d.ts +0 -27
- package/dist/forms/builder/FieldActions.d.ts +0 -13
- package/dist/forms/builder/FieldBuilder.d.ts +0 -10
- package/dist/forms/builder/FieldSectionWithActions.d.ts +0 -11
- package/dist/forms/builder/FieldWithActions.d.ts +0 -10
- package/dist/forms/builder/FieldsEditor.d.ts +0 -6
- package/dist/forms/builder/FormBuilder.d.ts +0 -26
- package/dist/forms/builder/constants.d.ts +0 -18
- package/dist/forms/builder/hooks.d.ts +0 -7
- package/dist/forms/builder/index.d.ts +0 -2
- package/dist/forms/builder/typings.d.ts +0 -12
- package/dist/forms/builder/utils.d.ts +0 -24
- package/dist/forms/constants.d.ts +0 -2
- package/dist/forms/constantsJsx.d.ts +0 -9
- package/dist/forms/fields/BaseField/BaseField.d.ts +0 -52
- package/dist/forms/fields/BaseField/hooks.d.ts +0 -374
- package/dist/forms/fields/BaseField/index.d.ts +0 -4
- package/dist/forms/fields/BaseField/layouts.d.ts +0 -26
- package/dist/forms/fields/BaseField/typings.d.ts +0 -7
- package/dist/forms/fields/BooleanField/BooleanField.d.ts +0 -23
- package/dist/forms/fields/BooleanField/BooleanInput.d.ts +0 -4
- package/dist/forms/fields/BooleanField/index.d.ts +0 -2
- package/dist/forms/fields/CustomField/CustomField.d.ts +0 -24
- package/dist/forms/fields/CustomField/FieldInputClonerField/FieldInputCloner.d.ts +0 -8
- package/dist/forms/fields/CustomField/FieldInputClonerField/FieldInputClonerField.d.ts +0 -18
- package/dist/forms/fields/CustomField/FieldInputClonerField/index.d.ts +0 -3
- package/dist/forms/fields/CustomField/FieldInputClonerField/typings.d.ts +0 -5
- package/dist/forms/fields/CustomField/index.d.ts +0 -1
- package/dist/forms/fields/DateField/DateField.d.ts +0 -22
- package/dist/forms/fields/DateField/DateInput.d.ts +0 -4
- package/dist/forms/fields/DateField/index.d.ts +0 -2
- package/dist/forms/fields/FieldSection/FieldSection.d.ts +0 -33
- package/dist/forms/fields/FieldSection/FieldSectionLayout.d.ts +0 -7
- package/dist/forms/fields/FieldSection/index.d.ts +0 -1
- package/dist/forms/fields/MultiStringField/MultiStringField.d.ts +0 -40
- package/dist/forms/fields/MultiStringField/MultiStringInput.d.ts +0 -8
- package/dist/forms/fields/MultiStringField/index.d.ts +0 -2
- package/dist/forms/fields/NumberField/NumberField.d.ts +0 -46
- package/dist/forms/fields/NumberField/NumberInput.d.ts +0 -4
- package/dist/forms/fields/NumberField/index.d.ts +0 -2
- package/dist/forms/fields/QrField/QrField.d.ts +0 -21
- package/dist/forms/fields/QrField/QrInput.d.ts +0 -10
- package/dist/forms/fields/QrField/index.d.ts +0 -2
- package/dist/forms/fields/SelectField/BaseSelectField.d.ts +0 -34
- package/dist/forms/fields/SelectField/MultiSelectField.d.ts +0 -27
- package/dist/forms/fields/SelectField/MultiSelectInput.d.ts +0 -4
- package/dist/forms/fields/SelectField/SelectField.d.ts +0 -26
- package/dist/forms/fields/SelectField/SelectInput.d.ts +0 -4
- package/dist/forms/fields/SelectField/index.d.ts +0 -4
- package/dist/forms/fields/StringOrTextFields/StringField/StringField.d.ts +0 -26
- package/dist/forms/fields/StringOrTextFields/StringField/StringInput.d.ts +0 -4
- package/dist/forms/fields/StringOrTextFields/StringField/index.d.ts +0 -2
- package/dist/forms/fields/StringOrTextFields/StringOrTextField.d.ts +0 -34
- package/dist/forms/fields/StringOrTextFields/TextField/TextField.d.ts +0 -22
- package/dist/forms/fields/StringOrTextFields/TextField/TextInput.d.ts +0 -4
- package/dist/forms/fields/StringOrTextFields/TextField/index.d.ts +0 -2
- package/dist/forms/fields/StringOrTextFields/index.d.ts +0 -2
- package/dist/forms/fields/UploadField/UploadField.d.ts +0 -44
- package/dist/forms/fields/UploadField/UploadInput.d.ts +0 -4
- package/dist/forms/fields/UploadField/index.d.ts +0 -2
- package/dist/forms/fields/UploadField/utils.d.ts +0 -1
- package/dist/forms/fields/constants.d.ts +0 -106
- package/dist/forms/fields/hooks.d.ts +0 -6
- package/dist/forms/fields/index.d.ts +0 -12
- package/dist/forms/fields/typings.d.ts +0 -27
- package/dist/forms/fields/utils.d.ts +0 -17
- package/dist/forms/index.d.ts +0 -6
- package/dist/forms/provider.d.ts +0 -5
- package/dist/forms/renderer/FormRenderer/FormRenderer.d.ts +0 -31
- package/dist/forms/renderer/PatchForm/Field.d.ts +0 -17
- package/dist/forms/renderer/PatchForm/Provider.d.ts +0 -29
- package/dist/forms/renderer/PatchForm/index.d.ts +0 -2
- package/dist/forms/renderer/index.d.ts +0 -2
- package/dist/forms/typings.d.ts +0 -103
- package/dist/forms/utils.d.ts +0 -7
- package/dist/sdk/services/UserFormService.d.ts +0 -19
- package/dist/sdk/services/UserFormSubmissionService.d.ts +0 -26
- package/dist/style.css +0 -417
|
@@ -1,7 +1,92 @@
|
|
|
1
|
+
import { HTMLInputTypeAttribute } from "react";
|
|
1
2
|
import { CreatedByModel, OfflineModel, Payload, SubmittedAtModel } from "./base";
|
|
2
|
-
import { BaseSerializedObject, FieldValue, ISerializedField } from "../../forms";
|
|
3
3
|
import { FileWithNameModel } from '../files';
|
|
4
|
-
export interface
|
|
4
|
+
export interface BaseSerializedField<TIdentifier extends FieldTypeIdentifier = FieldTypeIdentifier> extends BaseSerializedObject<TIdentifier> {
|
|
5
|
+
label: string;
|
|
6
|
+
required: boolean;
|
|
7
|
+
image?: File | Promise<File>;
|
|
8
|
+
}
|
|
9
|
+
export interface SerializedCondition<TValue extends FieldValue = FieldValue> {
|
|
10
|
+
identifier: string;
|
|
11
|
+
value: TValue;
|
|
12
|
+
}
|
|
13
|
+
export interface SerializedFieldSection extends BaseSerializedObject {
|
|
14
|
+
label: string | null;
|
|
15
|
+
type: "section";
|
|
16
|
+
conditional: boolean;
|
|
17
|
+
condition: SerializedCondition | null;
|
|
18
|
+
fields: Exclude<ISerializedField, SerializedFieldSection>[];
|
|
19
|
+
}
|
|
20
|
+
interface BaseSerializedStringField extends BaseSerializedField {
|
|
21
|
+
minimum_length?: number;
|
|
22
|
+
maximum_length: number;
|
|
23
|
+
placeholder?: string;
|
|
24
|
+
}
|
|
25
|
+
export type StringInputType = Exclude<HTMLInputTypeAttribute, "checkbox" | "number" | "button">;
|
|
26
|
+
export interface SerializedStringField extends BaseSerializedStringField {
|
|
27
|
+
type: "string";
|
|
28
|
+
input_type?: StringInputType;
|
|
29
|
+
}
|
|
30
|
+
export interface SerializedQrField extends BaseSerializedField {
|
|
31
|
+
type: "qr";
|
|
32
|
+
}
|
|
33
|
+
export interface SerializedTextField extends BaseSerializedStringField {
|
|
34
|
+
type: "text";
|
|
35
|
+
}
|
|
36
|
+
export interface SerializedMultiStringField extends BaseSerializedStringField {
|
|
37
|
+
type: "multi-string";
|
|
38
|
+
}
|
|
39
|
+
export interface SerializedBooleanField extends BaseSerializedField {
|
|
40
|
+
type: "boolean";
|
|
41
|
+
}
|
|
42
|
+
export interface SerializedNumberField extends BaseSerializedField {
|
|
43
|
+
type: "number";
|
|
44
|
+
minimum: number | undefined;
|
|
45
|
+
maximum: number | undefined;
|
|
46
|
+
integers: boolean;
|
|
47
|
+
placeholder?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SerializedDateField extends BaseSerializedField {
|
|
50
|
+
type: "date";
|
|
51
|
+
}
|
|
52
|
+
export type SelectFieldOptionValue = string;
|
|
53
|
+
/** Represents an option in the select input. Not to be confused with the 'field options' of SelectField. */
|
|
54
|
+
export interface SelectFieldOption {
|
|
55
|
+
value: SelectFieldOptionValue;
|
|
56
|
+
label: string;
|
|
57
|
+
}
|
|
58
|
+
export interface SerializedSelectField extends BaseSerializedField {
|
|
59
|
+
type: "select";
|
|
60
|
+
options: SelectFieldOption[];
|
|
61
|
+
placeholder?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface SerializedMultiSelectField extends BaseSerializedField {
|
|
64
|
+
type: "multi-select";
|
|
65
|
+
options: SelectFieldOption[];
|
|
66
|
+
placeholder?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface SerializedUploadField extends BaseSerializedField {
|
|
69
|
+
type: "upload";
|
|
70
|
+
/** @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept */
|
|
71
|
+
extensions?: string[];
|
|
72
|
+
/** in bytes */
|
|
73
|
+
maximum_size?: number;
|
|
74
|
+
/** how many files the user can upload to this field
|
|
75
|
+
* @default 1
|
|
76
|
+
*/
|
|
77
|
+
maximum_files?: number;
|
|
78
|
+
}
|
|
79
|
+
export type ISerializedField = SerializedTextField | SerializedBooleanField | SerializedNumberField | SerializedDateField | SerializedStringField | SerializedSelectField | SerializedFieldSection | SerializedMultiStringField | SerializedMultiSelectField | SerializedUploadField | SerializedQrField;
|
|
80
|
+
export type ISerializedOnlyField = Exclude<ISerializedField, SerializedFieldSection>;
|
|
81
|
+
/** All the possible field values */
|
|
82
|
+
export type FieldValue = string | number | boolean | string[] | File[] | Date | null;
|
|
83
|
+
export type FieldTypeIdentifier = "string" | "text" | "boolean" | "number" | "date" | "select" | "custom" | "section" | "multi-string" | "multi-select" | "upload" | "qr";
|
|
84
|
+
export interface BaseSerializedObject<TIdentifier extends FieldTypeIdentifier = FieldTypeIdentifier> {
|
|
85
|
+
description?: string | null;
|
|
86
|
+
identifier: string;
|
|
87
|
+
type: TIdentifier;
|
|
88
|
+
}
|
|
89
|
+
export interface Form extends OfflineModel, SubmittedAtModel {
|
|
5
90
|
favorite: boolean;
|
|
6
91
|
created_by: number;
|
|
7
92
|
asset_type?: string;
|
|
@@ -9,17 +94,17 @@ export interface UserForm extends OfflineModel {
|
|
|
9
94
|
organization?: number;
|
|
10
95
|
project?: number;
|
|
11
96
|
}
|
|
12
|
-
export type
|
|
97
|
+
export type SubmittedForm = Form & OfflineModel & {
|
|
13
98
|
created_by: number;
|
|
14
99
|
submitted_at: string;
|
|
15
100
|
};
|
|
16
|
-
export type
|
|
101
|
+
export type CreatedForm = SubmittedForm & {
|
|
17
102
|
created_at: string;
|
|
18
103
|
};
|
|
19
|
-
export type
|
|
20
|
-
latestRevision:
|
|
104
|
+
export type CachedForm = SubmittedForm & {
|
|
105
|
+
latestRevision: FormRevision;
|
|
21
106
|
};
|
|
22
|
-
export interface
|
|
107
|
+
export interface FormRevision<TFields extends BaseSerializedObject = ISerializedField> extends OfflineModel {
|
|
23
108
|
form: string;
|
|
24
109
|
title: string;
|
|
25
110
|
description?: string;
|
|
@@ -28,20 +113,21 @@ export interface UserFormRevision<TFields extends BaseSerializedObject = ISerial
|
|
|
28
113
|
submitted_at: string;
|
|
29
114
|
revision: number | "Pending";
|
|
30
115
|
}
|
|
31
|
-
export type
|
|
32
|
-
export interface
|
|
116
|
+
export type FormRevisionPayload = Omit<Payload<FormRevision>, "created_by" | "revision" | "form" | "submitted_at">;
|
|
117
|
+
export interface FormSubmission extends OfflineModel, SubmittedAtModel, CreatedByModel {
|
|
33
118
|
form_revision: string;
|
|
34
119
|
values: Record<string, FieldValue>;
|
|
35
120
|
issue?: string;
|
|
36
121
|
asset?: string;
|
|
37
122
|
asset_stage?: string;
|
|
38
123
|
}
|
|
39
|
-
export interface
|
|
124
|
+
export interface FormSubmissionAttachment extends OfflineModel, FileWithNameModel {
|
|
40
125
|
submission: string;
|
|
41
126
|
field_identifier: string;
|
|
42
127
|
}
|
|
43
|
-
export interface
|
|
128
|
+
export interface FormRevisionAttachment extends OfflineModel, FileWithNameModel {
|
|
44
129
|
revision: string;
|
|
45
130
|
field_identifier: string;
|
|
46
131
|
}
|
|
47
|
-
export type
|
|
132
|
+
export type FormSubmissionPayload = Omit<Payload<FormSubmission>, "created_by" | "submitted_at">;
|
|
133
|
+
export {};
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
export type Coordinates = [number, number];
|
|
2
|
-
export
|
|
3
|
-
|
|
2
|
+
export type Bounds = [Coordinates, Coordinates];
|
|
3
|
+
export interface PointGeometry {
|
|
4
|
+
type: "Point";
|
|
4
5
|
coordinates: Coordinates;
|
|
5
6
|
}
|
|
6
|
-
export interface
|
|
7
|
-
type: "
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export interface MultiPointGeometry {
|
|
8
|
+
type: "MultiPoint";
|
|
9
|
+
coordinates: Bounds;
|
|
10
|
+
}
|
|
11
|
+
export interface BoundableModel {
|
|
12
|
+
bounds?: MultiPointGeometry;
|
|
13
|
+
}
|
|
14
|
+
export interface CanvasBoundableModel {
|
|
15
|
+
canvas_bounds?: MultiPointGeometry;
|
|
16
|
+
}
|
|
17
|
+
export interface MarkableModel {
|
|
18
|
+
geo_marker?: PointGeometry;
|
|
19
|
+
}
|
|
20
|
+
export interface CanvasMarkableModel {
|
|
21
|
+
canvas_marker?: PointGeometry;
|
|
10
22
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CreatedByModel, OfflineModel, SubmittedAtModel } from "./base";
|
|
2
|
+
import { CanvasMarkableModel, MarkableModel } from "./geo";
|
|
3
|
+
import { FileWithNameModel } from "../files";
|
|
4
|
+
export interface GeoImage extends OfflineModel, SubmittedAtModel, CreatedByModel, MarkableModel, CanvasMarkableModel, FileWithNameModel {
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
project: number;
|
|
8
|
+
direction?: number;
|
|
9
|
+
original_date?: string;
|
|
10
|
+
}
|
|
11
|
+
export type GeoImagePayload = Omit<GeoImage, "offline_id" | "submitted_at" | "created_by" | "file_name" | "file_sha1" | "file"> & {
|
|
12
|
+
file: File;
|
|
13
|
+
};
|
|
14
|
+
export type BulkGeoImagePayload = Omit<GeoImagePayload, "project">;
|
|
@@ -2,7 +2,7 @@ export * from "./access";
|
|
|
2
2
|
export * from "./attachments";
|
|
3
3
|
export * from "./base";
|
|
4
4
|
export * from "./categories";
|
|
5
|
-
export * from "./
|
|
5
|
+
export * from "./assets";
|
|
6
6
|
export * from "./forms";
|
|
7
7
|
export * from "./geo";
|
|
8
8
|
export * from "./issues";
|
|
@@ -18,3 +18,4 @@ export * from "./license";
|
|
|
18
18
|
export * from "./documents";
|
|
19
19
|
export * from "./teams";
|
|
20
20
|
export * from "./agents";
|
|
21
|
+
export * from "./geoImages";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CreatedByModel, Offline, OfflineModel } from "./base";
|
|
2
2
|
import { IssuePriority, IssueStatus } from "../../enums";
|
|
3
3
|
import { WorkspaceIndexedModel } from "./workspace";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { CanvasMarkableModel, MarkableModel } from "./geo";
|
|
5
|
+
import { CreatedForm, SubmittedForm, Form } from "./forms";
|
|
6
6
|
import { User } from "./users";
|
|
7
7
|
import { CSSColor } from "../colors";
|
|
8
8
|
import { CreatedDocument, SubmittedDocument } from "./documents";
|
|
@@ -10,13 +10,13 @@ import { CreatedDocument, SubmittedDocument } from "./documents";
|
|
|
10
10
|
* Represents a model instance that has been submitted to the backend. Some properties (depending on which model, but in
|
|
11
11
|
* all cases, the `offline_id`) are guaranteed to be set.
|
|
12
12
|
*/
|
|
13
|
-
export type Submitted<TModel> = Offline<TModel> & (TModel extends Issue ? SubmittedIssue : TModel extends
|
|
13
|
+
export type Submitted<TModel> = Offline<TModel> & (TModel extends Issue ? SubmittedIssue : TModel extends Form ? SubmittedForm : TModel extends Document ? SubmittedDocument : Omit<TModel, "created_at" | "created_by" | "id">);
|
|
14
14
|
/**
|
|
15
15
|
* Represents a model instance that has been submitted to the backend, accepted, then downloaded. Created models
|
|
16
16
|
* typically have additional properties that are only known once it has been processed and accepted by the API, such as
|
|
17
17
|
* the `created_at` timestamp, which is the time at which the data was written to the database.
|
|
18
18
|
*/
|
|
19
|
-
export type Created<TModel> = Submitted<TModel> & (TModel extends Issue ? CreatedIssue : TModel extends IssueComment ? CreatedIssueComment : TModel extends
|
|
19
|
+
export type Created<TModel> = Submitted<TModel> & (TModel extends Issue ? CreatedIssue : TModel extends IssueComment ? CreatedIssueComment : TModel extends Form ? CreatedForm : TModel extends Document ? CreatedDocument : TModel);
|
|
20
20
|
/**
|
|
21
21
|
* Model instances that are stored in the Redux store can be already-created (and will likely be gotten with the initial
|
|
22
22
|
* data load), or to-be-created. In the former case, you will get a `Created<TModel>`. In the latter case, you will get
|
|
@@ -27,7 +27,7 @@ export type Stored<TModel> = Created<TModel> | Submitted<TModel>;
|
|
|
27
27
|
* Represents the properties you can always expect on any object representing an issue. These are the minimal details
|
|
28
28
|
* required when creating an issue.
|
|
29
29
|
*/
|
|
30
|
-
export interface Issue extends Pick<WorkspaceIndexedModel, "index_workspace"
|
|
30
|
+
export interface Issue extends Pick<WorkspaceIndexedModel, "index_workspace">, MarkableModel, CanvasMarkableModel {
|
|
31
31
|
title?: string | null;
|
|
32
32
|
description?: string | null;
|
|
33
33
|
priority?: IssuePriority;
|
|
@@ -36,7 +36,6 @@ export interface Issue extends Pick<WorkspaceIndexedModel, "index_workspace"> {
|
|
|
36
36
|
due_date?: string | Date | null;
|
|
37
37
|
category?: string | null;
|
|
38
38
|
visible_in_workspaces: string[];
|
|
39
|
-
marker?: Marker | null;
|
|
40
39
|
issue_type?: string | null;
|
|
41
40
|
}
|
|
42
41
|
/**
|
|
@@ -57,7 +56,7 @@ export interface CreatedIssue extends SubmittedIssue, Pick<WorkspaceIndexedModel
|
|
|
57
56
|
assigned_to: Exclude<Issue["assigned_to"], undefined>;
|
|
58
57
|
due_date: Exclude<Issue["due_date"], undefined>;
|
|
59
58
|
category: Exclude<Issue["category"], undefined>;
|
|
60
|
-
|
|
59
|
+
geo_marker: Exclude<Issue["geo_marker"], undefined>;
|
|
61
60
|
created_at: string;
|
|
62
61
|
}
|
|
63
62
|
export interface IssueComment extends OfflineModel {
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { Model, OfflineModel } from "./base";
|
|
2
|
-
import L from "leaflet";
|
|
3
2
|
import { FileWithNameModel } from "../files";
|
|
4
|
-
|
|
3
|
+
import { BoundableModel, CanvasBoundableModel } from "./geo";
|
|
4
|
+
export interface Project extends Model, BoundableModel, CanvasBoundableModel {
|
|
5
5
|
id: number;
|
|
6
6
|
name: string;
|
|
7
7
|
owner_organization: number | null;
|
|
8
8
|
owner_user: number | null;
|
|
9
|
-
bounds: [L.LatLngTuple, L.LatLngTuple] | undefined;
|
|
10
9
|
invited?: boolean;
|
|
11
10
|
issues_count?: number;
|
|
12
11
|
form_submissions_count?: number;
|
|
13
12
|
}
|
|
14
|
-
export interface ProjectFile extends OfflineModel, FileWithNameModel {
|
|
13
|
+
export interface ProjectFile extends OfflineModel, FileWithNameModel, BoundableModel, CanvasBoundableModel {
|
|
15
14
|
submitted_at: string;
|
|
16
15
|
z_index: number;
|
|
17
|
-
bounds?: [L.LatLngTuple, L.LatLngTuple];
|
|
18
16
|
project: number;
|
|
19
17
|
}
|
|
20
18
|
export type ProjectPayload = Omit<Project, "id" | "file" | "fileBlob">;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="@redux-offline/redux-offline" />
|
|
2
2
|
import { OfflineState } from "@redux-offline/redux-offline/lib/types";
|
|
3
|
-
import { AgentsState, AssetAttachmentState, AssetStageCompletionState, AssetStageState, AssetState, AssetTypeAttachmentState, AssetTypeState, AuthState, CategoryState, DocumentAttachmentState, DocumentState, EmailDomainState, FileState, FormRevisionAttachmentState, FormRevisionState, FormState, FormSubmissionAttachmentState, FormSubmissionState, IssueAttachmentState, IssueCommentState, IssueState, IssueTypeState, IssueUpdateState, LicenseState, OrganizationAccessState, OrganizationState, OutboxState, ProjectAccessState, ProjectAttachmentState, ProjectFileState, ProjectState, RehydratedState, SettingState, TeamState, UserState, VERSION_REDUCER_KEY, WorkspaceState } from "../../store";
|
|
4
|
-
import { VersioningState } from "../../store/slices/versioningSlice";
|
|
3
|
+
import { AgentsState, AssetAttachmentState, AssetStageCompletionState, AssetStageState, AssetState, AssetTypeAttachmentState, AssetTypeState, AuthState, CategoryState, DocumentAttachmentState, DocumentState, EmailDomainState, FileState, FormRevisionAttachmentState, FormRevisionState, FormState, FormSubmissionAttachmentState, FormSubmissionState, GeoImageSliceState, IssueAttachmentState, IssueCommentState, IssueState, IssueTypeState, IssueUpdateState, LicenseState, OrganizationAccessState, OrganizationState, OutboxState, ProjectAccessState, ProjectAttachmentState, ProjectFileState, ProjectState, RehydratedState, SettingState, TeamState, UserState, VERSION_REDUCER_KEY, VersioningState, WorkspaceState } from "../../store";
|
|
5
4
|
export interface BaseState {
|
|
6
5
|
outboxReducer: OutboxState;
|
|
7
6
|
offline: OfflineState;
|
|
@@ -43,4 +42,5 @@ export interface OvermapRootState extends BaseState {
|
|
|
43
42
|
documentAttachmentReducer: DocumentAttachmentState;
|
|
44
43
|
teamReducer: TeamState;
|
|
45
44
|
agentsReducer: AgentsState;
|
|
45
|
+
geoImageReducer: GeoImageSliceState;
|
|
46
46
|
}
|
package/dist/utils/colors.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ThemeOptions } from "@overmap-ai/blocks";
|
|
2
1
|
import { CSSColor } from "../typings";
|
|
3
2
|
export declare const primaryColor: CSSColor;
|
|
4
3
|
export declare const successColor: CSSColor;
|
|
@@ -11,11 +10,6 @@ export interface BadgeColors {
|
|
|
11
10
|
textColor: CSSColor;
|
|
12
11
|
}
|
|
13
12
|
export declare const Colors: Record<string, CSSColor>;
|
|
14
|
-
/** This mapping is used to pick off a Radix-ui/themes Theme accentColor based on the passed in Radix-ui/colors
|
|
15
|
-
* hex color. We are currently offering the following colors in the "Colors" object defined above as possible colors for
|
|
16
|
-
* categories, any updates to those colors should also result in an update to this color mapping to ensure all Category
|
|
17
|
-
* Badges defined within the App receive the appropriate Radix-ui/themes accentColor, so they render properly. */
|
|
18
|
-
export declare const ColorsToString: Record<string, ThemeOptions["accentColor"]>;
|
|
19
13
|
export declare const AssetStageColors: Record<string, CSSColor>;
|
|
20
14
|
export declare const defaultBadgeColor: CSSColor;
|
|
21
15
|
export declare const generateBadgeColors: (rawColor: CSSColor) => BadgeColors;
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import L from "leaflet";
|
|
2
|
-
import { Coordinates,
|
|
2
|
+
import { Bounds, Coordinates, MultiPointGeometry, PointGeometry } from "../typings";
|
|
3
3
|
export declare const coordinatesToLiteral: (coordinates: Coordinates) => L.LatLngLiteral;
|
|
4
4
|
export declare const literalToCoordinates: (literal: L.LatLngLiteral) => Coordinates;
|
|
5
5
|
/**
|
|
6
6
|
* Flip coordinates from [lng, lat] to [lat, lng]
|
|
7
7
|
*/
|
|
8
8
|
export declare const flipCoordinates: (coordinates: L.LatLngTuple) => Coordinates;
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const flipBounds: (bounds: Bounds) => Bounds;
|
|
10
10
|
export declare function offsetPositionByMeters(originalPosition: L.LatLng, latMeters: number, lngMeters: number): L.LatLngLiteral;
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const createPointMarker: (coordinates: Coordinates) => Marker;
|
|
11
|
+
export declare const createPointGeometry: (coordinates: Coordinates) => PointGeometry;
|
|
13
12
|
export declare const coordinatesAreEqual: (a: Coordinates, b: Coordinates) => boolean;
|
|
14
13
|
export declare const coordinatesToText: (coordinates: Coordinates | null | undefined, decimalPlaces?: number) => string;
|
|
15
14
|
export declare const coordinatesToUrlText: (coordinates: Coordinates) => string;
|
|
16
|
-
export declare const getMarkerCoordinates: (marker: Marker | null) => Coordinates | undefined;
|
|
17
|
-
export declare const markerCoordinatesToText: (marker: Marker | null, decimalPlaces?: number) => string;
|
|
18
15
|
export declare const openCoordsInGoogleMaps: (coordinates: Coordinates) => void;
|
|
19
16
|
export declare const openDirectionsInGoogleMaps: (startingPoint: Coordinates, destination: Coordinates) => void;
|
|
20
|
-
export declare const worldBounds:
|
|
17
|
+
export declare const worldBounds: MultiPointGeometry;
|
|
18
|
+
export declare const createMultiPointGeometry: (coordinates: [Coordinates, Coordinates]) => MultiPointGeometry;
|
package/dist/utils/forms.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Stored,
|
|
2
|
-
export declare const formRevisionSortFn: (formRevisionA: Stored<
|
|
1
|
+
import { Stored, FormRevision } from "../typings";
|
|
2
|
+
export declare const formRevisionSortFn: (formRevisionA: Stored<FormRevision>, formRevisionB: Stored<FormRevision>) => 1 | -1;
|
package/dist/utils/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Core functionality for Overmap",
|
|
4
4
|
"author": "Wôrdn Inc.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.61",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "dist/overmap-core.umd.cjs",
|
|
9
9
|
"module": "dist/overmap-core.js",
|
|
@@ -16,70 +16,44 @@
|
|
|
16
16
|
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,html,sass,yaml}\"",
|
|
17
17
|
"preview": "vite preview",
|
|
18
18
|
"prepare": "husky install",
|
|
19
|
-
"storybook": "storybook dev -p 6006",
|
|
20
|
-
"build-storybook": "storybook build",
|
|
21
19
|
"test": "npx vitest"
|
|
22
20
|
},
|
|
23
21
|
"dependencies": {
|
|
24
|
-
"@
|
|
22
|
+
"@radix-ui/colors": "^3.0.0",
|
|
25
23
|
"@redux-offline/redux-offline": "^2.6.0",
|
|
26
24
|
"@reduxjs/toolkit": "^1.9.5",
|
|
25
|
+
"@types/file-saver": "^2.0.7",
|
|
27
26
|
"color": "^4.2.3",
|
|
28
27
|
"dependency-graph": "^1.0.0",
|
|
29
|
-
"eslint-plugin-vitest": "^0.3.20",
|
|
30
28
|
"file-saver": "^2.0.5",
|
|
31
|
-
"formik": "^2.4.5",
|
|
32
29
|
"idb": "^7.1.1",
|
|
33
30
|
"jwt-decode": "^3.1.2",
|
|
34
31
|
"leaflet-draw": "^1.0.4",
|
|
35
32
|
"leaflet.markercluster": "^1.5.3",
|
|
36
|
-
"linkify-react": "^4.1.3",
|
|
37
|
-
"linkifyjs": "^4.1.3",
|
|
38
33
|
"localforage": "^1.10.0",
|
|
39
|
-
"lodash.clonedeep": "^4.5.0",
|
|
40
|
-
"lodash.get": "^4.4.2",
|
|
41
|
-
"lodash.set": "^4.3.2",
|
|
42
|
-
"qr-scanner": "^1.4.2",
|
|
43
34
|
"react-leaflet": "^4.2.1",
|
|
44
|
-
"react-pdf": "^8.0.2",
|
|
45
|
-
"react-sketch-canvas": "^6.2.0",
|
|
46
|
-
"react-spreadsheet": "^0.9.4",
|
|
47
35
|
"redux-persist-migrate": "^5.0.0",
|
|
48
36
|
"superagent": "^8.1.2",
|
|
49
|
-
"uuid": "^9.0.0"
|
|
50
|
-
"xlsx": "^0.18.5"
|
|
37
|
+
"uuid": "^9.0.0"
|
|
51
38
|
},
|
|
52
39
|
"devDependencies": {
|
|
53
40
|
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
|
|
54
41
|
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
|
|
55
|
-
"@overmap-ai/blocks": "1.0.31-
|
|
42
|
+
"@overmap-ai/blocks": "1.0.31-tailwind-components.25",
|
|
56
43
|
"@rollup/plugin-commonjs": "^25.0.4",
|
|
57
|
-
"@storybook/addon-essentials": "7.3.2",
|
|
58
|
-
"@storybook/addon-interactions": "7.3.2",
|
|
59
|
-
"@storybook/addon-links": "7.3.2",
|
|
60
|
-
"@storybook/addon-onboarding": "1.0.8",
|
|
61
|
-
"@storybook/blocks": "7.3.2",
|
|
62
|
-
"@storybook/react": "7.3.2",
|
|
63
|
-
"@storybook/react-vite": "7.3.2",
|
|
64
|
-
"@storybook/testing-library": "0.2.0",
|
|
65
44
|
"@testing-library/dom": "^9.3.4",
|
|
66
45
|
"@testing-library/react": "^14.1.2",
|
|
67
46
|
"@testing-library/user-event": "^14.5.2",
|
|
68
47
|
"@tiptap/core": "^2.4.0",
|
|
69
48
|
"@types/color": "^3.0.4",
|
|
70
|
-
"@types/file-saver": "^2.0.7",
|
|
71
49
|
"@types/jwt-decode": "^3.1.0",
|
|
72
50
|
"@types/leaflet": "^1.9.3",
|
|
73
|
-
"@types/lodash.clonedeep": "^4.5.9",
|
|
74
|
-
"@types/lodash.get": "^4.4.9",
|
|
75
|
-
"@types/lodash.set": "^4.3.9",
|
|
76
51
|
"@types/node": "^20.12.11",
|
|
77
|
-
"@types/react": "^
|
|
78
|
-
"@types/react-dom": "^
|
|
52
|
+
"@types/react": "^19.0.8",
|
|
53
|
+
"@types/react-dom": "^19.0.3",
|
|
79
54
|
"@types/react-redux": "^7.1.26",
|
|
80
55
|
"@types/superagent": "^4.1.18",
|
|
81
56
|
"@types/uuid": "^9.0.3",
|
|
82
|
-
"@types/xlsx": "^0.0.36",
|
|
83
57
|
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
|
84
58
|
"@typescript-eslint/parser": "^6.4.1",
|
|
85
59
|
"@vitejs/plugin-react-swc": "^3.3.2",
|
|
@@ -92,22 +66,19 @@
|
|
|
92
66
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
93
67
|
"eslint-plugin-react-refresh": "^0.4.3",
|
|
94
68
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
95
|
-
"eslint-plugin-
|
|
69
|
+
"eslint-plugin-vitest": "^0.3.20",
|
|
96
70
|
"happy-dom": "^13.3.1",
|
|
97
71
|
"husky": "^8.0.3",
|
|
98
72
|
"jsdom": "^23.2.0",
|
|
99
73
|
"leaflet": "^1.9.0",
|
|
100
74
|
"lint-staged": "^15.1.0",
|
|
101
75
|
"prettier": "^3.0.2",
|
|
102
|
-
"react": "^
|
|
103
|
-
"react-dom": "^
|
|
76
|
+
"react": "^19.0.0",
|
|
77
|
+
"react-dom": "^19.0.0",
|
|
104
78
|
"react-hooks": "^1.0.1",
|
|
105
|
-
"react-icons": "^5.4.0",
|
|
106
79
|
"react-redux": "^8.1.2",
|
|
107
80
|
"redux": "^4.2.1",
|
|
108
81
|
"rollup-plugin-polyfill-node": "^0.12.0",
|
|
109
|
-
"sass": "^1.66.1",
|
|
110
|
-
"storybook": "7.3.2",
|
|
111
82
|
"typescript": "^5.2.2",
|
|
112
83
|
"vite": "^4.4.5",
|
|
113
84
|
"vite-plugin-dts": "^3.5.2",
|
|
@@ -115,12 +86,11 @@
|
|
|
115
86
|
"vitest": "^1.2.1"
|
|
116
87
|
},
|
|
117
88
|
"peerDependencies": {
|
|
118
|
-
"@overmap-ai/blocks": "1.0.31-
|
|
89
|
+
"@overmap-ai/blocks": "1.0.31-tailwind-components.25",
|
|
119
90
|
"@tiptap/core": "^2.4.0",
|
|
120
91
|
"leaflet": "^1.9.0",
|
|
121
|
-
"react": "
|
|
122
|
-
"react-dom": "
|
|
123
|
-
"react-icons": "^1.3.0",
|
|
92
|
+
"react": ">=18.2.0 <20.0.0",
|
|
93
|
+
"react-dom": ">=18.2.0 <20.0.0",
|
|
124
94
|
"react-redux": "^8.1.2"
|
|
125
95
|
},
|
|
126
96
|
"resolutions": {
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ReactElement } from "react";
|
|
2
|
-
import { CSSColor } from "../../typings";
|
|
3
|
-
interface ColorPickerProps {
|
|
4
|
-
selectedColor: CSSColor | null;
|
|
5
|
-
allColors: CSSColor[];
|
|
6
|
-
onFinish: (color: CSSColor) => void;
|
|
7
|
-
trigger: ReactElement;
|
|
8
|
-
}
|
|
9
|
-
export declare const ColorPicker: import("react").MemoExoticComponent<(props: ColorPickerProps) => import("react/jsx-runtime").JSX.Element>;
|
|
10
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./ColorPicker";
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { BadgeProps } from "@overmap-ai/blocks";
|
|
3
|
-
export interface FileBadgeProps extends Omit<BadgeProps, "children"> {
|
|
4
|
-
file: File;
|
|
5
|
-
truncateLength?: number;
|
|
6
|
-
hideName?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare const FileBadge: import("react").MemoExoticComponent<(props: FileBadgeProps) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./FileBadge";
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { OvermapItemProps } from "@overmap-ai/blocks";
|
|
3
|
-
export interface FileCardProps extends Omit<OvermapItemProps, "children" | "leftSlot"> {
|
|
4
|
-
file: File | null;
|
|
5
|
-
truncateLength?: number;
|
|
6
|
-
error?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare const FileCard: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<FileCardProps & import("react").RefAttributes<HTMLDivElement>>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./FileCard";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./FileIcon";
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { FileViewerConfig } from "./typings";
|
|
3
|
-
export type FileViewerContextType = (func: (close: () => void) => FileViewerConfig) => void;
|
|
4
|
-
export declare const FileViewerContext: import("react").Context<FileViewerContextType>;
|
|
5
|
-
export declare const useFileViewer: () => FileViewerContextType;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { OvermapItemProps } from "@overmap-ai/blocks";
|
|
3
|
-
export interface ImageCardProps extends Omit<OvermapItemProps, "children" | "leftSlot"> {
|
|
4
|
-
file: File | null;
|
|
5
|
-
alt?: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
truncateLength?: number;
|
|
8
|
-
}
|
|
9
|
-
export declare const ImageCard: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<ImageCardProps & import("react").RefAttributes<HTMLDivElement>>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./ImageCard";
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
type FileWithObjectURL = File & {
|
|
3
|
-
objectURL?: string;
|
|
4
|
-
};
|
|
5
|
-
export interface AttachmentMarkupProps {
|
|
6
|
-
file: FileWithObjectURL;
|
|
7
|
-
onClose: () => void;
|
|
8
|
-
onSave: (imageWithMarkup: FileWithObjectURL) => void;
|
|
9
|
-
onDelete: (imageFile: FileWithObjectURL) => void;
|
|
10
|
-
dirty: boolean;
|
|
11
|
-
onDirty: (dirty: boolean) => void;
|
|
12
|
-
}
|
|
13
|
-
export declare const ImageMarkup: React.MemoExoticComponent<(props: AttachmentMarkupProps) => import("react/jsx-runtime").JSX.Element>;
|
|
14
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./ImageMarkup";
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
interface ImageViewerProps {
|
|
3
|
-
file: File;
|
|
4
|
-
onClose: () => void;
|
|
5
|
-
onDelete?: (file: File) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare const ImageViewer: import("react").MemoExoticComponent<(props: ImageViewerProps) => import("react/jsx-runtime").JSX.Element>;
|
|
8
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const SUPPORTED_IMAGE_FILE_TYPES: string[];
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
interface PDFViewerProps {
|
|
3
|
-
file: File;
|
|
4
|
-
onDelete?: (file: File) => void;
|
|
5
|
-
onClose: () => void;
|
|
6
|
-
}
|
|
7
|
-
export declare const PDFViewer: import("react").MemoExoticComponent<(props: PDFViewerProps) => import("react/jsx-runtime").JSX.Element>;
|
|
8
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const SUPPORTED_PDF_FILE_TYPES: string[];
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
interface SpreadsheetViewerProps {
|
|
3
|
-
file: File;
|
|
4
|
-
onClose: () => void;
|
|
5
|
-
onDelete?: (file: File) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare const SpreadsheetViewer: import("react").MemoExoticComponent<(props: SpreadsheetViewerProps) => import("react/jsx-runtime").JSX.Element>;
|
|
8
|
-
export {};
|