@overmap-ai/core 1.0.60-sdk-refactor.20 → 1.0.60

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.
Files changed (147) hide show
  1. package/dist/index.d.ts +0 -4
  2. package/dist/overmap-core.js +1231 -12798
  3. package/dist/overmap-core.js.map +1 -1
  4. package/dist/overmap-core.umd.cjs +1240 -12808
  5. package/dist/overmap-core.umd.cjs.map +1 -1
  6. package/dist/sdk/services/BaseAttachmentService.d.ts +8 -4
  7. package/dist/sdk/services/BaseUploadService.d.ts +8 -0
  8. package/dist/sdk/services/FormService.d.ts +18 -0
  9. package/dist/sdk/services/FormSubmissionService.d.ts +24 -0
  10. package/dist/sdk/services/GeoImageService.d.ts +11 -0
  11. package/dist/sdk/services/IssueService.d.ts +1 -1
  12. package/dist/sdk/services/index.d.ts +3 -2
  13. package/dist/sdk/typings.d.ts +3 -2
  14. package/dist/store/slices/assetTypeSlice.d.ts +2 -8
  15. package/dist/store/slices/categorySlice.d.ts +11 -25
  16. package/dist/store/slices/documentSlice.d.ts +14 -14
  17. package/dist/store/slices/formRevisionAttachmentSlice.d.ts +21 -21
  18. package/dist/store/slices/formRevisionSlice.d.ts +21 -21
  19. package/dist/store/slices/formSlice.d.ts +20 -19
  20. package/dist/store/slices/formSubmissionAttachmentSlice.d.ts +20 -20
  21. package/dist/store/slices/formSubmissionSlice.d.ts +26 -26
  22. package/dist/store/slices/geoImageSlice.d.ts +48 -0
  23. package/dist/store/slices/index.d.ts +1 -0
  24. package/dist/store/slices/issueSlice.d.ts +2 -12
  25. package/dist/store/slices/organizationSlice.d.ts +6 -17
  26. package/dist/store/slices/projectFileSlice.d.ts +5 -17
  27. package/dist/store/slices/projectSlice.d.ts +1 -4
  28. package/dist/store/slices/workspaceSlice.d.ts +5 -10
  29. package/dist/store/store.d.ts +2 -1
  30. package/dist/typings/colors.d.ts +0 -3
  31. package/dist/typings/models/{components.d.ts → assets.d.ts} +3 -4
  32. package/dist/typings/models/forms.d.ts +98 -12
  33. package/dist/typings/models/geo.d.ts +18 -6
  34. package/dist/typings/models/geoImages.d.ts +14 -0
  35. package/dist/typings/models/index.d.ts +2 -1
  36. package/dist/typings/models/issues.d.ts +6 -7
  37. package/dist/typings/models/projects.d.ts +3 -5
  38. package/dist/typings/models/store.d.ts +2 -2
  39. package/dist/utils/colors.d.ts +0 -6
  40. package/dist/utils/coordinates.d.ts +5 -7
  41. package/dist/utils/forms.d.ts +2 -2
  42. package/dist/utils/index.d.ts +1 -0
  43. package/package.json +13 -43
  44. package/dist/components/ColorPicker/ColorPicker.d.ts +0 -10
  45. package/dist/components/ColorPicker/index.d.ts +0 -1
  46. package/dist/components/FileBadge/FileBadge.d.ts +0 -8
  47. package/dist/components/FileBadge/index.d.ts +0 -1
  48. package/dist/components/FileCard/FileCard.d.ts +0 -8
  49. package/dist/components/FileCard/index.d.ts +0 -1
  50. package/dist/components/FileIcon/FileIcon.d.ts +0 -5
  51. package/dist/components/FileIcon/index.d.ts +0 -1
  52. package/dist/components/FileViewer/FileViewerProvider.d.ts +0 -2
  53. package/dist/components/FileViewer/context.d.ts +0 -5
  54. package/dist/components/FileViewer/index.d.ts +0 -3
  55. package/dist/components/FileViewer/typings.d.ts +0 -5
  56. package/dist/components/ImageCard/ImageCard.d.ts +0 -9
  57. package/dist/components/ImageCard/index.d.ts +0 -1
  58. package/dist/components/ImageMarkup/ImageMarkup.d.ts +0 -14
  59. package/dist/components/ImageMarkup/index.d.ts +0 -1
  60. package/dist/components/ImageViewer/ImageViewer.d.ts +0 -8
  61. package/dist/components/ImageViewer/constants.d.ts +0 -1
  62. package/dist/components/ImageViewer/index.d.ts +0 -2
  63. package/dist/components/PDFViewer/PDFViewer.d.ts +0 -8
  64. package/dist/components/PDFViewer/constants.d.ts +0 -1
  65. package/dist/components/PDFViewer/index.d.ts +0 -2
  66. package/dist/components/SpreadsheetViewer/SpreadsheetViewer.d.ts +0 -8
  67. package/dist/components/SpreadsheetViewer/constants.d.ts +0 -1
  68. package/dist/components/SpreadsheetViewer/index.d.ts +0 -2
  69. package/dist/components/index.d.ts +0 -10
  70. package/dist/forms/builder/DropDispatch.d.ts +0 -27
  71. package/dist/forms/builder/FieldActions.d.ts +0 -13
  72. package/dist/forms/builder/FieldBuilder.d.ts +0 -10
  73. package/dist/forms/builder/FieldSectionWithActions.d.ts +0 -11
  74. package/dist/forms/builder/FieldWithActions.d.ts +0 -10
  75. package/dist/forms/builder/FieldsEditor.d.ts +0 -6
  76. package/dist/forms/builder/FormBuilder.d.ts +0 -26
  77. package/dist/forms/builder/constants.d.ts +0 -18
  78. package/dist/forms/builder/hooks.d.ts +0 -7
  79. package/dist/forms/builder/index.d.ts +0 -2
  80. package/dist/forms/builder/typings.d.ts +0 -12
  81. package/dist/forms/builder/utils.d.ts +0 -24
  82. package/dist/forms/constants.d.ts +0 -2
  83. package/dist/forms/constantsJsx.d.ts +0 -9
  84. package/dist/forms/fields/BaseField/BaseField.d.ts +0 -52
  85. package/dist/forms/fields/BaseField/hooks.d.ts +0 -374
  86. package/dist/forms/fields/BaseField/index.d.ts +0 -4
  87. package/dist/forms/fields/BaseField/layouts.d.ts +0 -26
  88. package/dist/forms/fields/BaseField/typings.d.ts +0 -7
  89. package/dist/forms/fields/BooleanField/BooleanField.d.ts +0 -23
  90. package/dist/forms/fields/BooleanField/BooleanInput.d.ts +0 -4
  91. package/dist/forms/fields/BooleanField/index.d.ts +0 -2
  92. package/dist/forms/fields/CustomField/CustomField.d.ts +0 -24
  93. package/dist/forms/fields/CustomField/FieldInputClonerField/FieldInputCloner.d.ts +0 -8
  94. package/dist/forms/fields/CustomField/FieldInputClonerField/FieldInputClonerField.d.ts +0 -18
  95. package/dist/forms/fields/CustomField/FieldInputClonerField/index.d.ts +0 -3
  96. package/dist/forms/fields/CustomField/FieldInputClonerField/typings.d.ts +0 -5
  97. package/dist/forms/fields/CustomField/index.d.ts +0 -1
  98. package/dist/forms/fields/DateField/DateField.d.ts +0 -22
  99. package/dist/forms/fields/DateField/DateInput.d.ts +0 -4
  100. package/dist/forms/fields/DateField/index.d.ts +0 -2
  101. package/dist/forms/fields/FieldSection/FieldSection.d.ts +0 -33
  102. package/dist/forms/fields/FieldSection/FieldSectionLayout.d.ts +0 -7
  103. package/dist/forms/fields/FieldSection/index.d.ts +0 -1
  104. package/dist/forms/fields/MultiStringField/MultiStringField.d.ts +0 -40
  105. package/dist/forms/fields/MultiStringField/MultiStringInput.d.ts +0 -8
  106. package/dist/forms/fields/MultiStringField/index.d.ts +0 -2
  107. package/dist/forms/fields/NumberField/NumberField.d.ts +0 -46
  108. package/dist/forms/fields/NumberField/NumberInput.d.ts +0 -4
  109. package/dist/forms/fields/NumberField/index.d.ts +0 -2
  110. package/dist/forms/fields/QrField/QrField.d.ts +0 -21
  111. package/dist/forms/fields/QrField/QrInput.d.ts +0 -10
  112. package/dist/forms/fields/QrField/index.d.ts +0 -2
  113. package/dist/forms/fields/SelectField/BaseSelectField.d.ts +0 -34
  114. package/dist/forms/fields/SelectField/MultiSelectField.d.ts +0 -27
  115. package/dist/forms/fields/SelectField/MultiSelectInput.d.ts +0 -4
  116. package/dist/forms/fields/SelectField/SelectField.d.ts +0 -26
  117. package/dist/forms/fields/SelectField/SelectInput.d.ts +0 -4
  118. package/dist/forms/fields/SelectField/index.d.ts +0 -4
  119. package/dist/forms/fields/StringOrTextFields/StringField/StringField.d.ts +0 -26
  120. package/dist/forms/fields/StringOrTextFields/StringField/StringInput.d.ts +0 -4
  121. package/dist/forms/fields/StringOrTextFields/StringField/index.d.ts +0 -2
  122. package/dist/forms/fields/StringOrTextFields/StringOrTextField.d.ts +0 -34
  123. package/dist/forms/fields/StringOrTextFields/TextField/TextField.d.ts +0 -22
  124. package/dist/forms/fields/StringOrTextFields/TextField/TextInput.d.ts +0 -4
  125. package/dist/forms/fields/StringOrTextFields/TextField/index.d.ts +0 -2
  126. package/dist/forms/fields/StringOrTextFields/index.d.ts +0 -2
  127. package/dist/forms/fields/UploadField/UploadField.d.ts +0 -44
  128. package/dist/forms/fields/UploadField/UploadInput.d.ts +0 -4
  129. package/dist/forms/fields/UploadField/index.d.ts +0 -2
  130. package/dist/forms/fields/UploadField/utils.d.ts +0 -1
  131. package/dist/forms/fields/constants.d.ts +0 -106
  132. package/dist/forms/fields/hooks.d.ts +0 -6
  133. package/dist/forms/fields/index.d.ts +0 -12
  134. package/dist/forms/fields/typings.d.ts +0 -27
  135. package/dist/forms/fields/utils.d.ts +0 -17
  136. package/dist/forms/index.d.ts +0 -6
  137. package/dist/forms/provider.d.ts +0 -5
  138. package/dist/forms/renderer/FormRenderer/FormRenderer.d.ts +0 -31
  139. package/dist/forms/renderer/PatchForm/Field.d.ts +0 -17
  140. package/dist/forms/renderer/PatchForm/Provider.d.ts +0 -29
  141. package/dist/forms/renderer/PatchForm/index.d.ts +0 -2
  142. package/dist/forms/renderer/index.d.ts +0 -2
  143. package/dist/forms/typings.d.ts +0 -103
  144. package/dist/forms/utils.d.ts +0 -7
  145. package/dist/sdk/services/UserFormService.d.ts +0 -19
  146. package/dist/sdk/services/UserFormSubmissionService.d.ts +0 -26
  147. 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 UserForm extends OfflineModel {
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 SubmittedUserForm = UserForm & OfflineModel & {
97
+ export type SubmittedForm = Form & OfflineModel & {
13
98
  created_by: number;
14
99
  submitted_at: string;
15
100
  };
16
- export type CreatedUserForm = SubmittedUserForm & {
101
+ export type CreatedForm = SubmittedForm & {
17
102
  created_at: string;
18
103
  };
19
- export type CachedUserForm = SubmittedUserForm & {
20
- latestRevision: UserFormRevision;
104
+ export type CachedForm = SubmittedForm & {
105
+ latestRevision: FormRevision;
21
106
  };
22
- export interface UserFormRevision<TFields extends BaseSerializedObject = ISerializedField> extends OfflineModel {
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 UserFormRevisionPayload = Omit<Payload<UserFormRevision>, "created_by" | "revision" | "form" | "submitted_at">;
32
- export interface UserFormSubmission extends OfflineModel, SubmittedAtModel, CreatedByModel {
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 UserFormSubmissionAttachment extends OfflineModel, FileWithNameModel {
124
+ export interface FormSubmissionAttachment extends OfflineModel, FileWithNameModel {
40
125
  submission: string;
41
126
  field_identifier: string;
42
127
  }
43
- export interface UserFormRevisionAttachment extends OfflineModel, FileWithNameModel {
128
+ export interface FormRevisionAttachment extends OfflineModel, FileWithNameModel {
44
129
  revision: string;
45
130
  field_identifier: string;
46
131
  }
47
- export type UserFormSubmissionPayload = Omit<Payload<UserFormSubmission>, "created_by" | "submitted_at">;
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 interface Geometry {
3
- type: string;
2
+ export type Bounds = [Coordinates, Coordinates];
3
+ export interface PointGeometry {
4
+ type: "Point";
4
5
  coordinates: Coordinates;
5
6
  }
6
- export interface Marker {
7
- type: "Feature";
8
- geometry: Geometry;
9
- properties: object;
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 "./components";
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 { Marker } from "./geo";
5
- import { CreatedUserForm, SubmittedUserForm, UserForm } from "./forms";
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 UserForm ? SubmittedUserForm : TModel extends Document ? SubmittedDocument : Omit<TModel, "created_at" | "created_by" | "id">);
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 UserForm ? CreatedUserForm : TModel extends Document ? CreatedDocument : TModel);
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
- marker: Exclude<Issue["marker"], undefined>;
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
- export interface Project extends Model {
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
  }
@@ -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, Geometry, Marker } from "../typings";
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 markerToCoordinates: (marker: Marker) => Coordinates;
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 coordinatesToPointGeometry: (coordinates: Coordinates) => Geometry;
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: [L.LatLngTuple, L.LatLngTuple];
17
+ export declare const worldBounds: MultiPointGeometry;
18
+ export declare const createMultiPointGeometry: (coordinates: [Coordinates, Coordinates]) => MultiPointGeometry;
@@ -1,2 +1,2 @@
1
- import { Stored, UserFormRevision } from "../typings";
2
- export declare const formRevisionSortFn: (formRevisionA: Stored<UserFormRevision>, formRevisionB: Stored<UserFormRevision>) => 1 | -1;
1
+ import { Stored, FormRevision } from "../typings";
2
+ export declare const formRevisionSortFn: (formRevisionA: Stored<FormRevision>, formRevisionB: Stored<FormRevision>) => 1 | -1;
@@ -9,3 +9,4 @@ export * from "./utils";
9
9
  export * from "./optimization";
10
10
  export * from "./colors";
11
11
  export * from "./date";
12
+ export * from "./async/DeferredPromise";
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.60-sdk-refactor.20",
6
+ "version": "1.0.60",
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
- "@hello-pangea/dnd": "^16.5.0",
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-clean-up.1",
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": "^18.3.1",
78
- "@types/react-dom": "^18.2.7",
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-storybook": "^0.6.13",
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": "^18.2.0",
103
- "react-dom": "^18.2.0",
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-clean-up.1",
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": "^18.2.0",
122
- "react-dom": "^18.2.0",
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,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface FileIconProps {
3
- fileType: string;
4
- }
5
- export declare const FileIcon: import("react").MemoExoticComponent<(props: FileIconProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1 +0,0 @@
1
- export * from "./FileIcon";
@@ -1,2 +0,0 @@
1
- import { PropsWithChildren } from "react";
2
- export declare const FileViewerProvider: import("react").MemoExoticComponent<(props: PropsWithChildren) => import("react/jsx-runtime").JSX.Element>;
@@ -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,3 +0,0 @@
1
- export * from "./context";
2
- export * from "./FileViewerProvider";
3
- export * from "./typings";
@@ -1,5 +0,0 @@
1
- export interface FileViewerConfig {
2
- file: File;
3
- onDelete?: (file: File) => void;
4
- onClose?: () => void;
5
- }
@@ -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,2 +0,0 @@
1
- export * from "./ImageViewer";
2
- export * from "./constants";
@@ -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,2 +0,0 @@
1
- export * from "./PDFViewer";
2
- export * from "./constants";
@@ -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 {};