@overmap-ai/core 1.0.50-fix-error-messaging.0 → 1.0.51-add-submitted-at-to-form-revisions.0

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.
@@ -1,6 +1,6 @@
1
1
  import { BaseApiService } from "./BaseApiService";
2
2
  import type { OptimisticModelResult } from "../typings";
3
- import { ComponentAttachment, ComponentTypeAttachment, Created, IssueAttachment, MaybeObjectURL, AttachmentPayload, Stored, ProjectAttachment, Project } from "../../typings";
3
+ import { ComponentAttachment, ComponentTypeAttachment, Created, IssueAttachment, MaybeObjectURL, AttachmentPayload, Stored, ProjectAttachment, DocumentAttachment, ProjectDocument } from "../../typings";
4
4
  /**
5
5
  * Handles creation and caching of attachments
6
6
  */
@@ -15,24 +15,25 @@ interface CreatedAttachments {
15
15
  component_attachments: Created<ComponentAttachment>[];
16
16
  component_type_attachments: Created<ComponentTypeAttachment>[];
17
17
  project_attachments: Created<ProjectAttachment>[];
18
+ document_attachments: Created<DocumentAttachment>[];
18
19
  }
19
20
  export declare class AttachmentService extends BaseApiService {
20
21
  fetchAll(projectId: number): [StoredAttachments, Promise<CreatedAttachments>];
21
22
  addIssueAttachment(attachmentPayload: AttachmentPayload<IssueAttachment>): Promise<OptimisticModelResult<IssueAttachment>>;
22
23
  addComponentAttachment(attachmentPayload: AttachmentPayload<ComponentAttachment>): Promise<OptimisticModelResult<ComponentAttachment>>;
23
24
  addComponentTypeAttachment(attachmentPayload: AttachmentPayload<ComponentTypeAttachment>): Promise<OptimisticModelResult<ComponentTypeAttachment>>;
24
- addProjectAttachment(attachmentPayload: AttachmentPayload<ProjectAttachment>): Promise<OptimisticModelResult<ProjectAttachment>>;
25
+ addDocumentAttachment(attachmentPayload: AttachmentPayload<DocumentAttachment>): Promise<OptimisticModelResult<DocumentAttachment>>;
25
26
  /** the outer Promise is needed to await the hashing of each file, which is required before offline use. If wanting to
26
27
  * attach promise handlers to the request to add the attachment in the backend, apply it on the promise returned from the
27
28
  * OptimisticModelResult. */
28
29
  attachFilesToIssue(filesToSubmit: File[], issueId: string): Promise<OptimisticModelResult<IssueAttachment>>[];
29
30
  attachFilesToComponent(filesToSubmit: File[], componentId: string): Promise<OptimisticModelResult<ComponentAttachment>>[];
30
31
  attachFilesToComponentType(filesToSubmit: File[], componentTypeId: string): Promise<OptimisticModelResult<ComponentTypeAttachment>>[];
31
- attachFilesToProject(filesToSubmit: File[], projectId: Project["id"]): Promise<OptimisticModelResult<ProjectAttachment>>[];
32
+ attachFilesToDocument(filesToSubmit: File[], documentId: ProjectDocument["offline_id"]): Promise<OptimisticModelResult<DocumentAttachment>>[];
32
33
  replaceIssueAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<IssueAttachment>>;
33
34
  replaceComponentAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<ComponentAttachment>>;
34
35
  replaceComponentTypeAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<ComponentTypeAttachment>>;
35
- replaceProjectAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<ProjectAttachment>>;
36
+ replaceDocumentAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<DocumentAttachment>>;
36
37
  /**
37
38
  * Deletes an attachment and associated data in the cloud, in the Redux store and the cache.
38
39
  * @param issueAttachmentId
@@ -40,6 +41,6 @@ export declare class AttachmentService extends BaseApiService {
40
41
  deleteIssueAttachment(issueAttachmentId: string): Promise<undefined>;
41
42
  deleteComponentAttachment(componentAttachmentId: string): Promise<undefined>;
42
43
  deleteComponentTypeAttachment(componentTypeAttachmentId: string): Promise<undefined>;
43
- deleteProjectAttachment(projectAttachmentId: string): Promise<undefined>;
44
+ deleteDocumentAttachment(documentAttachmentId: string): Promise<undefined>;
44
45
  }
45
46
  export {};
@@ -55,6 +55,7 @@ export declare const selectNumberOfComponentsOfComponentType: SelectorWithArgs<s
55
55
  export declare const selectComponentTypesFromIds: SelectorWithArgs<string[], ComponentType[]>;
56
56
  export declare const selectComponentAttachmentMapping: (state: RootState) => Record<string, Stored<ComponentAttachment>>;
57
57
  export declare const selectAllComponentAttachments: Selector<Stored<ComponentAttachment>[]>;
58
+ export declare const selectComponentAttachment: SelectorWithArgs<string, Stored<ComponentAttachment>>;
58
59
  export declare const selectAttachmentsOfComponent: (args: string) => (state: RootState) => Stored<ComponentAttachment>[];
59
60
  export declare const selectAttachmentsOfComponentByType: (args: string) => (state: RootState) => {
60
61
  fileAttachments: Stored<ComponentAttachment>[];
@@ -56,6 +56,7 @@ export declare const selectComponentTypesByName: SelectorWithArgs<string, Compon
56
56
  export declare const selectHiddenComponentTypeIds: AppSelector<Record<string, boolean | undefined>>;
57
57
  export declare const selectComponentTypeAttachmentMapping: (state: RootState) => Record<string, ComponentTypeAttachment>;
58
58
  export declare const selectAllComponentTypeAttachments: Selector<Stored<ComponentTypeAttachment>[]>;
59
+ export declare const selectComponentTypeAttachment: SelectorWithArgs<string, Stored<ComponentTypeAttachment>>;
59
60
  export declare const selectAttachmentsOfComponentType: (args: string) => (state: RootState) => Stored<ComponentTypeAttachment>[];
60
61
  export declare const selectAttachmentsOfComponentTypeByType: (args: string) => (state: RootState) => {
61
62
  fileAttachments: Stored<ComponentTypeAttachment>[];
@@ -1,9 +1,10 @@
1
1
  /// <reference types="@redux-offline/redux-offline" />
2
2
  import { Reducer } from "@reduxjs/toolkit";
3
- import { MovePosition, ProjectDocument, RootState, Stored, Submitted } from "../../typings";
3
+ import { DocumentAttachment, MovePosition, ProjectDocument, RootState, Selector, SelectorWithArgs, Stored, Submitted } from "../../typings";
4
4
  import { AppSelector } from "./componentTypeSlice";
5
5
  export interface DocumentState {
6
6
  documents: Record<string, Stored<ProjectDocument>>;
7
+ attachments: Record<string, Stored<DocumentAttachment>>;
7
8
  }
8
9
  export interface MoveDocumentPayload {
9
10
  documentId: ProjectDocument["offline_id"];
@@ -26,8 +27,32 @@ export declare const documentSlice: import("@reduxjs/toolkit").Slice<DocumentSta
26
27
  removeDocuments: (state: import("immer/dist/internal.js").WritableDraft<DocumentState>, action: {
27
28
  payload: string[];
28
29
  }) => void;
30
+ setDocumentAttachments: (state: DocumentState, action: {
31
+ payload: import('../../typings/models/issues').Created<DocumentAttachment>[];
32
+ type: string;
33
+ }) => void;
34
+ addDocumentAttachment: (state: DocumentState, action: {
35
+ payload: Submitted<DocumentAttachment>;
36
+ type: string;
37
+ }) => void;
38
+ addDocumentAttachments: (state: DocumentState, action: {
39
+ payload: Submitted<DocumentAttachment>[];
40
+ type: string;
41
+ }) => void;
42
+ updateDocumentAttachment: (state: DocumentState, action: {
43
+ payload: Submitted<DocumentAttachment>;
44
+ type: string;
45
+ }) => void;
46
+ removeDocumentAttachment: (state: DocumentState, action: {
47
+ payload: string;
48
+ type: string;
49
+ }) => void;
50
+ removeDocumentAttachments: (state: DocumentState, action: {
51
+ payload: string[];
52
+ type: string;
53
+ }) => void;
29
54
  }, "documents">;
30
- export declare const setDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectDocument[], "documents/setDocuments">, addDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectDocument[], "documents/addDocuments">, updateDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<Partial<ProjectDocument>>[], "documents/updateDocuments">, moveDocument: import("@reduxjs/toolkit").ActionCreatorWithPayload<MoveDocumentPayload, "documents/moveDocument">, removeDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "documents/removeDocuments">;
55
+ export declare const setDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectDocument[], "documents/setDocuments">, addDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectDocument[], "documents/addDocuments">, updateDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<Partial<ProjectDocument>>[], "documents/updateDocuments">, moveDocument: import("@reduxjs/toolkit").ActionCreatorWithPayload<MoveDocumentPayload, "documents/moveDocument">, removeDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "documents/removeDocuments">, setDocumentAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues').Created<DocumentAttachment>[], "documents/setDocumentAttachments">, addDocumentAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<DocumentAttachment>, "documents/addDocumentAttachment">, addDocumentAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<DocumentAttachment>[], "documents/addDocumentAttachments">, updateDocumentAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<DocumentAttachment>, "documents/updateDocumentAttachment">, removeDocumentAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "documents/removeDocumentAttachment">, removeDocumentAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "documents/removeDocumentAttachments">;
31
56
  export declare const selectDocumentsMapping: AppSelector<Record<string, Stored<ProjectDocument>>>;
32
57
  export declare const selectDocuments: AppSelector<Stored<ProjectDocument>[]>;
33
58
  export declare const selectDocument: (args: string) => (state: RootState) => Stored<ProjectDocument> | undefined;
@@ -64,4 +89,12 @@ export declare const selectRootDocuments: ((state: import("redux").EmptyObject &
64
89
  }> & {
65
90
  clearCache: () => void;
66
91
  };
92
+ export declare const selectDocumentAttachmentMapping: (state: RootState) => Record<string, Stored<DocumentAttachment>>;
93
+ export declare const selectAllDocumentAttachments: Selector<Stored<DocumentAttachment>[]>;
94
+ export declare const selectDocumentAttachment: SelectorWithArgs<string, Stored<DocumentAttachment>>;
95
+ export declare const selectAttachmentsOfDocument: (args: string) => (state: RootState) => Stored<DocumentAttachment>[];
96
+ export declare const selectAttachmentsOfDocumentByType: (args: string) => (state: RootState) => {
97
+ fileAttachments: Stored<DocumentAttachment>[];
98
+ imageAttachments: Stored<DocumentAttachment>[];
99
+ };
67
100
  export declare const documentsReducer: Reducer<DocumentState>;
@@ -106,6 +106,7 @@ export declare const selectCommentsOfIssue: (args: string) => (state: RootState)
106
106
  export declare const selectIssueUpdateMapping: (state: RootState) => Record<string, Stored<IssueUpdate>>;
107
107
  export declare const selectIssueUpdatesOfIssue: (args: string) => (state: RootState) => Stored<IssueUpdate>[];
108
108
  export declare const selectAttachmentsOfIssue: (args: string) => (state: RootState) => Stored<IssueAttachment>[];
109
+ export declare const selectIssueAttachment: SelectorWithArgs<string, Stored<IssueAttachment>>;
109
110
  export declare const selectAttachmentsOfIssueByType: (args: string) => (state: RootState) => {
110
111
  fileAttachments: Stored<IssueAttachment>[];
111
112
  imageAttachments: Stored<IssueAttachment>[];
@@ -1,6 +1,7 @@
1
1
  import { OfflineModel } from "./base";
2
2
  import { MaybeObjectURL, UploadedFileModel } from "../files";
3
3
  import { Project } from "./projects";
4
+ import { ProjectDocument } from "./documents";
4
5
  export interface Attachment extends OfflineModel, UploadedFileModel {
5
6
  description?: string;
6
7
  file_name: string;
@@ -20,6 +21,9 @@ export interface ComponentTypeAttachment extends Attachment, UploadedFileModel {
20
21
  export interface ProjectAttachment extends Attachment, UploadedFileModel {
21
22
  project: Project["id"];
22
23
  }
24
+ export interface DocumentAttachment extends Attachment, UploadedFileModel {
25
+ document: ProjectDocument["offline_id"];
26
+ }
23
27
  /** to get an AttachmentPayload for a specific type, pass in the given AttachmentType
24
28
  * ex. AttachmentPayload<IssueAttachment> */
25
29
  export type AttachmentPayload<TAttachment> = Omit<TAttachment, "file" | "submitted_at" | "created_by"> & {
@@ -28,9 +28,10 @@ export interface UserFormRevision<TFields extends BaseSerializedObject = ISerial
28
28
  description?: string;
29
29
  fields: TFields[];
30
30
  created_by: number;
31
+ submitted_at: string;
31
32
  revision: number | "Pending";
32
33
  }
33
- export type UserFormRevisionPayload = Omit<Payload<UserFormRevision>, "created_by" | "revision" | "form">;
34
+ export type UserFormRevisionPayload = Omit<Payload<UserFormRevision>, "created_by" | "revision" | "form" | "submitted_at">;
34
35
  export interface UserFormSubmission extends OfflineModel {
35
36
  form_revision: string;
36
37
  values: Record<string, FieldValue>;
package/package.json CHANGED
@@ -1,152 +1,152 @@
1
- {
2
- "name": "@overmap-ai/core",
3
- "description": "Core functionality for Overmap",
4
- "author": "Wôrdn Inc.",
5
- "license": "UNLICENSED",
6
- "version": "1.0.50-fix-error-messaging.0",
7
- "type": "module",
8
- "main": "dist/overmap-core.umd.cjs",
9
- "module": "dist/overmap-core.js",
10
- "types": "dist/index.d.ts",
11
- "scripts": {
12
- "dev": "vite",
13
- "build": "tsc --noEmit && vite build",
14
- "lint": "tsc --noEmit && eslint . --ext ts,tsx,js,jsx --report-unused-disable-directives --max-warnings 0",
15
- "lint:fix": "eslint . --ext ts,tsx,js,jsx --report-unused-disable-directives --max-warnings 0 --fix",
16
- "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,html,sass,yaml}\"",
17
- "preview": "vite preview",
18
- "prepare": "husky install",
19
- "storybook": "storybook dev -p 6006",
20
- "build-storybook": "storybook build",
21
- "test": "npx vitest"
22
- },
23
- "dependencies": {
24
- "@hello-pangea/dnd": "^16.5.0",
25
- "@redux-offline/redux-offline": "^2.6.0",
26
- "@reduxjs/toolkit": "^1.9.5",
27
- "color": "^4.2.3",
28
- "dependency-graph": "^1.0.0",
29
- "eslint-plugin-vitest": "^0.3.20",
30
- "file-saver": "^2.0.5",
31
- "formik": "^2.4.5",
32
- "idb": "^7.1.1",
33
- "jwt-decode": "^3.1.2",
34
- "leaflet-draw": "^1.0.4",
35
- "leaflet.markercluster": "^1.5.3",
36
- "linkify-react": "^4.1.3",
37
- "linkifyjs": "^4.1.3",
38
- "localforage": "^1.10.0",
39
- "lodash.clonedeep": "^4.5.0",
40
- "lodash.get": "^4.4.2",
41
- "lodash.set": "^4.3.2",
42
- "react-leaflet": "^4.2.1",
43
- "react-pdf": "^8.0.2",
44
- "react-sketch-canvas": "^6.2.0",
45
- "react-spreadsheet": "^0.9.4",
46
- "redux-persist-migrate": "^5.0.0",
47
- "superagent": "^8.1.2",
48
- "uuid": "^9.0.0",
49
- "xlsx": "^0.18.5"
50
- },
51
- "devDependencies": {
52
- "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
53
- "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
54
- "@overmap-ai/blocks": "^1.0.29-alpha.1",
55
- "@rollup/plugin-commonjs": "^25.0.4",
56
- "@storybook/addon-essentials": "7.3.2",
57
- "@storybook/addon-interactions": "7.3.2",
58
- "@storybook/addon-links": "7.3.2",
59
- "@storybook/addon-onboarding": "1.0.8",
60
- "@storybook/blocks": "7.3.2",
61
- "@storybook/react": "7.3.2",
62
- "@storybook/react-vite": "7.3.2",
63
- "@storybook/testing-library": "0.2.0",
64
- "@testing-library/dom": "^9.3.4",
65
- "@testing-library/react": "^14.1.2",
66
- "@testing-library/user-event": "^14.5.2",
67
- "@tiptap/core": "^2.4.0",
68
- "@types/color": "^3.0.4",
69
- "@types/file-saver": "^2.0.7",
70
- "@types/jwt-decode": "^3.1.0",
71
- "@types/leaflet": "^1.9.3",
72
- "@types/lodash.clonedeep": "^4.5.9",
73
- "@types/lodash.get": "^4.4.9",
74
- "@types/lodash.set": "^4.3.9",
75
- "@types/node": "^20.12.11",
76
- "@types/react": "^18.3.1",
77
- "@types/react-dom": "^18.2.7",
78
- "@types/react-redux": "^7.1.26",
79
- "@types/superagent": "^4.1.18",
80
- "@types/uuid": "^9.0.3",
81
- "@types/xlsx": "^0.0.36",
82
- "@typescript-eslint/eslint-plugin": "^6.4.1",
83
- "@typescript-eslint/parser": "^6.4.1",
84
- "@vitejs/plugin-react-swc": "^3.3.2",
85
- "@vitest/coverage-v8": "^1.2.1",
86
- "eslint": "^8.47.0",
87
- "eslint-config-prettier": "^9.0.0",
88
- "eslint-plugin-import": "^2.28.1",
89
- "eslint-plugin-prettier": "^5.0.0",
90
- "eslint-plugin-react": "^7.33.2",
91
- "eslint-plugin-react-hooks": "^4.6.0",
92
- "eslint-plugin-react-refresh": "^0.4.3",
93
- "eslint-plugin-simple-import-sort": "^10.0.0",
94
- "eslint-plugin-storybook": "^0.6.13",
95
- "happy-dom": "^13.3.1",
96
- "husky": "^8.0.3",
97
- "jsdom": "^23.2.0",
98
- "leaflet": "^1.9.0",
99
- "lint-staged": "^15.1.0",
100
- "prettier": "^3.0.2",
101
- "react": "^18.2.0",
102
- "react-dom": "^18.2.0",
103
- "react-hooks": "^1.0.1",
104
- "react-redux": "^8.1.2",
105
- "redux": "^4.2.1",
106
- "rollup-plugin-polyfill-node": "^0.12.0",
107
- "sass": "^1.66.1",
108
- "storybook": "7.3.2",
109
- "typescript": "^5.2.2",
110
- "vite": "^4.4.5",
111
- "vite-plugin-dts": "^3.5.2",
112
- "vite-plugin-externalize-deps": "^0.7.0",
113
- "vitest": "^1.2.1"
114
- },
115
- "peerDependencies": {
116
- "@overmap-ai/blocks": "1.0.8",
117
- "@tiptap/core": "^2.4.0",
118
- "leaflet": "^1.9.0",
119
- "react": "^18.2.0",
120
- "react-dom": "^18.2.0",
121
- "react-redux": "^8.1.2"
122
- },
123
- "resolutions": {
124
- "//": "Workaround for eslint issue: https://github.com/eslint/eslint/discussions/17215",
125
- "strip-ansi": "6.0.1",
126
- "string-width": "4.2.2",
127
- "wrap-ansi": "7.0.0"
128
- },
129
- "lint-staged": {
130
- "src/**/*.{js,jsx,ts,tsx}": [
131
- "yarn lint",
132
- "yarn format"
133
- ]
134
- },
135
- "files": [
136
- "dist"
137
- ],
138
- "keywords": [
139
- "react",
140
- "geospacial",
141
- "map",
142
- "components"
143
- ],
144
- "homepage": "https://overmap.ai",
145
- "repository": {
146
- "type": "git",
147
- "url": "git+https://github.com/hemora-app/overmap-core.git"
148
- },
149
- "bugs": {
150
- "url": "https://github.com/hemora-app/overmap-core/issues"
151
- }
152
- }
1
+ {
2
+ "name": "@overmap-ai/core",
3
+ "description": "Core functionality for Overmap",
4
+ "author": "Wôrdn Inc.",
5
+ "license": "UNLICENSED",
6
+ "version": "1.0.51-add-submitted-at-to-form-revisions.0",
7
+ "type": "module",
8
+ "main": "dist/overmap-core.umd.cjs",
9
+ "module": "dist/overmap-core.js",
10
+ "types": "dist/index.d.ts",
11
+ "scripts": {
12
+ "dev": "vite",
13
+ "build": "tsc --noEmit && vite build",
14
+ "lint": "tsc --noEmit && eslint . --ext ts,tsx,js,jsx --report-unused-disable-directives --max-warnings 0",
15
+ "lint:fix": "eslint . --ext ts,tsx,js,jsx --report-unused-disable-directives --max-warnings 0 --fix",
16
+ "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,html,sass,yaml}\"",
17
+ "preview": "vite preview",
18
+ "prepare": "husky install",
19
+ "storybook": "storybook dev -p 6006",
20
+ "build-storybook": "storybook build",
21
+ "test": "npx vitest"
22
+ },
23
+ "dependencies": {
24
+ "@hello-pangea/dnd": "^16.5.0",
25
+ "@redux-offline/redux-offline": "^2.6.0",
26
+ "@reduxjs/toolkit": "^1.9.5",
27
+ "color": "^4.2.3",
28
+ "dependency-graph": "^1.0.0",
29
+ "eslint-plugin-vitest": "^0.3.20",
30
+ "file-saver": "^2.0.5",
31
+ "formik": "^2.4.5",
32
+ "idb": "^7.1.1",
33
+ "jwt-decode": "^3.1.2",
34
+ "leaflet-draw": "^1.0.4",
35
+ "leaflet.markercluster": "^1.5.3",
36
+ "linkify-react": "^4.1.3",
37
+ "linkifyjs": "^4.1.3",
38
+ "localforage": "^1.10.0",
39
+ "lodash.clonedeep": "^4.5.0",
40
+ "lodash.get": "^4.4.2",
41
+ "lodash.set": "^4.3.2",
42
+ "react-leaflet": "^4.2.1",
43
+ "react-pdf": "^8.0.2",
44
+ "react-sketch-canvas": "^6.2.0",
45
+ "react-spreadsheet": "^0.9.4",
46
+ "redux-persist-migrate": "^5.0.0",
47
+ "superagent": "^8.1.2",
48
+ "uuid": "^9.0.0",
49
+ "xlsx": "^0.18.5"
50
+ },
51
+ "devDependencies": {
52
+ "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
53
+ "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
54
+ "@overmap-ai/blocks": "^1.0.29-alpha.1",
55
+ "@rollup/plugin-commonjs": "^25.0.4",
56
+ "@storybook/addon-essentials": "7.3.2",
57
+ "@storybook/addon-interactions": "7.3.2",
58
+ "@storybook/addon-links": "7.3.2",
59
+ "@storybook/addon-onboarding": "1.0.8",
60
+ "@storybook/blocks": "7.3.2",
61
+ "@storybook/react": "7.3.2",
62
+ "@storybook/react-vite": "7.3.2",
63
+ "@storybook/testing-library": "0.2.0",
64
+ "@testing-library/dom": "^9.3.4",
65
+ "@testing-library/react": "^14.1.2",
66
+ "@testing-library/user-event": "^14.5.2",
67
+ "@tiptap/core": "^2.4.0",
68
+ "@types/color": "^3.0.4",
69
+ "@types/file-saver": "^2.0.7",
70
+ "@types/jwt-decode": "^3.1.0",
71
+ "@types/leaflet": "^1.9.3",
72
+ "@types/lodash.clonedeep": "^4.5.9",
73
+ "@types/lodash.get": "^4.4.9",
74
+ "@types/lodash.set": "^4.3.9",
75
+ "@types/node": "^20.12.11",
76
+ "@types/react": "^18.3.1",
77
+ "@types/react-dom": "^18.2.7",
78
+ "@types/react-redux": "^7.1.26",
79
+ "@types/superagent": "^4.1.18",
80
+ "@types/uuid": "^9.0.3",
81
+ "@types/xlsx": "^0.0.36",
82
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
83
+ "@typescript-eslint/parser": "^6.4.1",
84
+ "@vitejs/plugin-react-swc": "^3.3.2",
85
+ "@vitest/coverage-v8": "^1.2.1",
86
+ "eslint": "^8.47.0",
87
+ "eslint-config-prettier": "^9.0.0",
88
+ "eslint-plugin-import": "^2.28.1",
89
+ "eslint-plugin-prettier": "^5.0.0",
90
+ "eslint-plugin-react": "^7.33.2",
91
+ "eslint-plugin-react-hooks": "^4.6.0",
92
+ "eslint-plugin-react-refresh": "^0.4.3",
93
+ "eslint-plugin-simple-import-sort": "^10.0.0",
94
+ "eslint-plugin-storybook": "^0.6.13",
95
+ "happy-dom": "^13.3.1",
96
+ "husky": "^8.0.3",
97
+ "jsdom": "^23.2.0",
98
+ "leaflet": "^1.9.0",
99
+ "lint-staged": "^15.1.0",
100
+ "prettier": "^3.0.2",
101
+ "react": "^18.2.0",
102
+ "react-dom": "^18.2.0",
103
+ "react-hooks": "^1.0.1",
104
+ "react-redux": "^8.1.2",
105
+ "redux": "^4.2.1",
106
+ "rollup-plugin-polyfill-node": "^0.12.0",
107
+ "sass": "^1.66.1",
108
+ "storybook": "7.3.2",
109
+ "typescript": "^5.2.2",
110
+ "vite": "^4.4.5",
111
+ "vite-plugin-dts": "^3.5.2",
112
+ "vite-plugin-externalize-deps": "^0.7.0",
113
+ "vitest": "^1.2.1"
114
+ },
115
+ "peerDependencies": {
116
+ "@overmap-ai/blocks": "1.0.8",
117
+ "@tiptap/core": "^2.4.0",
118
+ "leaflet": "^1.9.0",
119
+ "react": "^18.2.0",
120
+ "react-dom": "^18.2.0",
121
+ "react-redux": "^8.1.2"
122
+ },
123
+ "resolutions": {
124
+ "//": "Workaround for eslint issue: https://github.com/eslint/eslint/discussions/17215",
125
+ "strip-ansi": "6.0.1",
126
+ "string-width": "4.2.2",
127
+ "wrap-ansi": "7.0.0"
128
+ },
129
+ "lint-staged": {
130
+ "src/**/*.{js,jsx,ts,tsx}": [
131
+ "yarn lint",
132
+ "yarn format"
133
+ ]
134
+ },
135
+ "files": [
136
+ "dist"
137
+ ],
138
+ "keywords": [
139
+ "react",
140
+ "geospacial",
141
+ "map",
142
+ "components"
143
+ ],
144
+ "homepage": "https://overmap.ai",
145
+ "repository": {
146
+ "type": "git",
147
+ "url": "git+https://github.com/hemora-app/overmap-core.git"
148
+ },
149
+ "bugs": {
150
+ "url": "https://github.com/hemora-app/overmap-core/issues"
151
+ }
152
+ }