woodsportal-client-sdk 1.1.4-dev.3 → 1.1.4-dev.30
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/CHANGELOG.md +4 -0
- package/README.md +47 -1
- package/dist/adapters/angular/index.d.ts +25 -0
- package/dist/adapters/angular/index.js +34 -0
- package/dist/adapters/angular/index.js.map +1 -0
- package/dist/adapters/react/index.d.ts +25 -0
- package/dist/adapters/react/index.js +18 -0
- package/dist/adapters/react/index.js.map +1 -0
- package/dist/adapters/vue/index.d.ts +25 -0
- package/dist/adapters/vue/index.js +25 -0
- package/dist/adapters/vue/index.js.map +1 -0
- package/dist/auth-utils-5SMVN55N.js +4 -0
- package/dist/auth-utils-5SMVN55N.js.map +1 -0
- package/dist/chunk-3OQK7XCZ.js +349 -0
- package/dist/chunk-3OQK7XCZ.js.map +1 -0
- package/dist/chunk-FLWPTIGZ.js +126 -0
- package/dist/chunk-FLWPTIGZ.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +9 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-XTASFMAW.js +54 -0
- package/dist/chunk-XTASFMAW.js.map +1 -0
- package/dist/chunk-Y5MRAAGK.js +10 -0
- package/dist/chunk-Y5MRAAGK.js.map +1 -0
- package/dist/index.d.ts +106 -2
- package/dist/index.js +443 -263
- package/dist/index.js.map +1 -1
- package/dist/use-sync-DX4o_EEr.d.ts +28 -0
- package/package.json +44 -8
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
|
+
- **`formatHubSpotActivityDateTime`**, **`formatHubSpotActivityDateTimeParts`**, **`formatGmtOffset`**, **`normalizeToTimestamp`**, and **`DEFAULT_HUBSPOT_TIMEZONE`** (`Asia/Kolkata`) for HubSpot-style activity timestamps (e.g. `May 27, 2026 at 11:31 PM GMT+5:30`).
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
12
16
|
- **`examples/smoke-consumer`**: local `file:` dependency + `npm run test:consumer` to validate `dist/` and types before publish.
|
|
13
17
|
- **`examples/smoke-consumer/smoke-live.mjs`** + **`npm run test:consumer:live`**: optional real dev login; loads **`examples/smoke-consumer/.env`** via **`dotenv`** using **`BASE_URL`**, **`USER_NAME`**, **`USER_PASSWORD`** (plus legacy `WOODSPORTAL_*` / camelCase aliases). Skips in CI when unset. **`.env.example`** and gitignore for local `.env`.
|
|
14
18
|
|
package/README.md
CHANGED
|
@@ -175,7 +175,53 @@ cd path/to/your-app
|
|
|
175
175
|
npm link woodsportal-client-sdk
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
-
Consume with the same import
|
|
178
|
+
Consume with the same import paths as npm:
|
|
179
|
+
|
|
180
|
+
```ts
|
|
181
|
+
import { api } from "woodsportal-client-sdk";
|
|
182
|
+
import { useTable, useSync } from "woodsportal-client-sdk/react";
|
|
183
|
+
// import { useTable, useSync } from "woodsportal-client-sdk/vue";
|
|
184
|
+
// import { useTable, useSync } from "woodsportal-client-sdk/angular";
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
After `npm run build`, the main entry and framework adapters (`/react`, `/vue`, `/angular`) share one `store2` state via ESM code-splitting — API calls like `api.objects.list()` update the same stores your composables subscribe to.
|
|
188
|
+
|
|
189
|
+
### React
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
import { useTable } from "woodsportal-client-sdk/react";
|
|
193
|
+
|
|
194
|
+
function ObjectsTable() {
|
|
195
|
+
const table = useTable();
|
|
196
|
+
// table.tableData, table.setTableData(...)
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Vue 3
|
|
201
|
+
|
|
202
|
+
Call composables inside `setup()` (or `<script setup>`):
|
|
203
|
+
|
|
204
|
+
```vue
|
|
205
|
+
<script setup lang="ts">
|
|
206
|
+
import { useTable } from "woodsportal-client-sdk/vue";
|
|
207
|
+
|
|
208
|
+
const table = useTable();
|
|
209
|
+
</script>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Angular (16+)
|
|
213
|
+
|
|
214
|
+
Call composables in an injection context (constructor, field initializer, or `runInInjectionContext`):
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
import { Component } from "@angular/core";
|
|
218
|
+
import { useTable } from "woodsportal-client-sdk/angular";
|
|
219
|
+
|
|
220
|
+
@Component({ /* ... */ })
|
|
221
|
+
export class ObjectsTableComponent {
|
|
222
|
+
readonly table = useTable();
|
|
223
|
+
}
|
|
224
|
+
```
|
|
179
225
|
|
|
180
226
|
---
|
|
181
227
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { E as EmailState, N as NoteState, S as SyncState, T as TableState } from '../../use-sync-DX4o_EEr.js';
|
|
2
|
+
|
|
3
|
+
declare const useTable: () => TableState & {
|
|
4
|
+
setTableData(response: any, payload: any): void;
|
|
5
|
+
clearTablePrependData(): void;
|
|
6
|
+
setTablePrependData(response: any, pipelineStage?: any): Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
declare const useNote: () => NoteState & {
|
|
9
|
+
setNotes(response: any, payload: any): void;
|
|
10
|
+
setPrependNote(response: any): Promise<void>;
|
|
11
|
+
updatePrependNote(response: any): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
declare const useEmail: () => EmailState & {
|
|
14
|
+
setEmails(response: any, payload: any): void;
|
|
15
|
+
setPrependEmail(response: any): Promise<void>;
|
|
16
|
+
updatePrependEmail(response: any): Promise<void>;
|
|
17
|
+
};
|
|
18
|
+
declare const useSync: () => SyncState & {
|
|
19
|
+
setIsSyncLoading(status: boolean): void;
|
|
20
|
+
setSync(status: boolean): void;
|
|
21
|
+
setApiSync(status: boolean): void;
|
|
22
|
+
setSyncDisable(status: boolean): void;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { useEmail, useNote, useSync, useTable };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { bindStoreWithActions } from '../../chunk-Y5MRAAGK.js';
|
|
2
|
+
import { createAdapterHooks } from '../../chunk-XTASFMAW.js';
|
|
3
|
+
import '../../chunk-3OQK7XCZ.js';
|
|
4
|
+
import '../../chunk-PZ5AY32C.js';
|
|
5
|
+
import { inject, DestroyRef, signal } from '@angular/core';
|
|
6
|
+
|
|
7
|
+
function createAngularStoreComposable(store, actions) {
|
|
8
|
+
return function useStore() {
|
|
9
|
+
const destroyRef = inject(DestroyRef);
|
|
10
|
+
const binding = bindStoreWithActions(store, actions);
|
|
11
|
+
const snapshot = signal(binding.getSnapshot());
|
|
12
|
+
destroyRef.onDestroy(
|
|
13
|
+
binding.subscribe(() => {
|
|
14
|
+
snapshot.set(binding.getSnapshot());
|
|
15
|
+
})
|
|
16
|
+
);
|
|
17
|
+
return new Proxy({}, {
|
|
18
|
+
get(_target, prop) {
|
|
19
|
+
const key = String(prop);
|
|
20
|
+
if (key in actions) {
|
|
21
|
+
return actions[key];
|
|
22
|
+
}
|
|
23
|
+
return snapshot()[key];
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// src/adapters/angular/index.ts
|
|
30
|
+
var { useTable, useNote, useEmail, useSync } = createAdapterHooks(createAngularStoreComposable);
|
|
31
|
+
|
|
32
|
+
export { useEmail, useNote, useSync, useTable };
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/shared/createAngularComposable.ts","../../../src/adapters/angular/index.ts"],"names":[],"mappings":";;;;;;AAGO,SAAS,4BAAA,CAGd,OAAkC,OAAA,EAAmB;AACnD,EAAA,OAAO,SAAS,QAAA,GAA8B;AAC1C,IAAA,MAAM,UAAA,GAAa,OAAO,UAAU,CAAA;AACpC,IAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,KAAA,EAAO,OAAO,CAAA;AACnD,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa,CAAA;AAE7C,IAAA,UAAA,CAAW,SAAA;AAAA,MACP,OAAA,CAAQ,UAAU,MAAM;AACpB,QAAA,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAa,CAAA;AAAA,MACtC,CAAC;AAAA,KACL;AAEA,IAAA,OAAO,IAAI,KAAA,CAAM,EAAC,EAAwB;AAAA,MACtC,GAAA,CAAI,SAAS,IAAA,EAAM;AACf,QAAA,MAAM,GAAA,GAAM,OAAO,IAAI,CAAA;AACvB,QAAA,IAAI,OAAO,OAAA,EAAS;AAChB,UAAA,OAAQ,QAAoC,GAAG,CAAA;AAAA,QACnD;AACA,QAAA,OAAO,QAAA,GAAW,GAAmB,CAAA;AAAA,MACzC;AAAA,KACH,CAAA;AAAA,EACL,CAAA;AACJ;;;ACzBO,IAAM,EAAE,QAAA,EAAU,OAAA,EAAS,UAAU,OAAA,EAAQ,GAAI,mBAAmB,4BAA4B","file":"index.js","sourcesContent":["import { DestroyRef, inject, signal } from \"@angular/core\";\nimport { bindStoreWithActions, type SubscribableStore } from \"./bindStoreWithActions\";\n\nexport function createAngularStoreComposable<\n TState extends object,\n TActions extends object,\n>(store: SubscribableStore<TState>, actions: TActions) {\n return function useStore(): TState & TActions {\n const destroyRef = inject(DestroyRef);\n const binding = bindStoreWithActions(store, actions);\n const snapshot = signal(binding.getSnapshot());\n\n destroyRef.onDestroy(\n binding.subscribe(() => {\n snapshot.set(binding.getSnapshot());\n }),\n );\n\n return new Proxy({} as TState & TActions, {\n get(_target, prop) {\n const key = String(prop);\n if (key in actions) {\n return (actions as Record<string, unknown>)[key];\n }\n return snapshot()[key as keyof TState];\n },\n });\n };\n}\n","import { createAdapterHooks } from \"../shared/createAdapterHooks\";\nimport { createAngularStoreComposable } from \"../shared/createAngularComposable\";\n\nexport const { useTable, useNote, useEmail, useSync } = createAdapterHooks(createAngularStoreComposable);\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { E as EmailState, N as NoteState, S as SyncState, T as TableState } from '../../use-sync-DX4o_EEr.js';
|
|
2
|
+
|
|
3
|
+
declare const useTable: () => TableState & {
|
|
4
|
+
setTableData(response: any, payload: any): void;
|
|
5
|
+
clearTablePrependData(): void;
|
|
6
|
+
setTablePrependData(response: any, pipelineStage?: any): Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
declare const useNote: () => NoteState & {
|
|
9
|
+
setNotes(response: any, payload: any): void;
|
|
10
|
+
setPrependNote(response: any): Promise<void>;
|
|
11
|
+
updatePrependNote(response: any): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
declare const useEmail: () => EmailState & {
|
|
14
|
+
setEmails(response: any, payload: any): void;
|
|
15
|
+
setPrependEmail(response: any): Promise<void>;
|
|
16
|
+
updatePrependEmail(response: any): Promise<void>;
|
|
17
|
+
};
|
|
18
|
+
declare const useSync: () => SyncState & {
|
|
19
|
+
setIsSyncLoading(status: boolean): void;
|
|
20
|
+
setSync(status: boolean): void;
|
|
21
|
+
setApiSync(status: boolean): void;
|
|
22
|
+
setSyncDisable(status: boolean): void;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { useEmail, useNote, useSync, useTable };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createAdapterHooks } from '../../chunk-XTASFMAW.js';
|
|
2
|
+
import '../../chunk-3OQK7XCZ.js';
|
|
3
|
+
import '../../chunk-PZ5AY32C.js';
|
|
4
|
+
import { useSyncExternalStore } from 'react';
|
|
5
|
+
|
|
6
|
+
function createReactStoreComposable(store, actions) {
|
|
7
|
+
return function useStore() {
|
|
8
|
+
const state = useSyncExternalStore(store.subscribe, store.getState, store.getState);
|
|
9
|
+
return { ...state, ...actions };
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// src/adapters/react/index.ts
|
|
14
|
+
var { useTable, useNote, useEmail, useSync } = createAdapterHooks(createReactStoreComposable);
|
|
15
|
+
|
|
16
|
+
export { useEmail, useNote, useSync, useTable };
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/shared/createReactComposable.ts","../../../src/adapters/react/index.ts"],"names":[],"mappings":";;;;;AAGO,SAAS,0BAAA,CAGd,OAAkC,OAAA,EAAmB;AACnD,EAAA,OAAO,SAAS,QAAA,GAA8B;AAC1C,IAAA,MAAM,QAAQ,oBAAA,CAAqB,KAAA,CAAM,WAAW,KAAA,CAAM,QAAA,EAAU,MAAM,QAAQ,CAAA;AAClF,IAAA,OAAO,EAAE,GAAG,KAAA,EAAO,GAAG,OAAA,EAAQ;AAAA,EAClC,CAAA;AACJ;;;ACRO,IAAM,EAAE,QAAA,EAAU,OAAA,EAAS,UAAU,OAAA,EAAQ,GAAI,mBAAmB,0BAA0B","file":"index.js","sourcesContent":["import { useSyncExternalStore } from \"react\";\nimport type { SubscribableStore } from \"./bindStoreWithActions\";\n\nexport function createReactStoreComposable<\n TState extends object,\n TActions extends object,\n>(store: SubscribableStore<TState>, actions: TActions) {\n return function useStore(): TState & TActions {\n const state = useSyncExternalStore(store.subscribe, store.getState, store.getState);\n return { ...state, ...actions };\n };\n}\n","import { createAdapterHooks } from \"../shared/createAdapterHooks\";\nimport { createReactStoreComposable } from \"../shared/createReactComposable\";\n\nexport const { useTable, useNote, useEmail, useSync } = createAdapterHooks(createReactStoreComposable);\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { E as EmailState, N as NoteState, S as SyncState, T as TableState } from '../../use-sync-DX4o_EEr.js';
|
|
2
|
+
|
|
3
|
+
declare const useTable: () => TableState & {
|
|
4
|
+
setTableData(response: any, payload: any): void;
|
|
5
|
+
clearTablePrependData(): void;
|
|
6
|
+
setTablePrependData(response: any, pipelineStage?: any): Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
declare const useNote: () => NoteState & {
|
|
9
|
+
setNotes(response: any, payload: any): void;
|
|
10
|
+
setPrependNote(response: any): Promise<void>;
|
|
11
|
+
updatePrependNote(response: any): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
declare const useEmail: () => EmailState & {
|
|
14
|
+
setEmails(response: any, payload: any): void;
|
|
15
|
+
setPrependEmail(response: any): Promise<void>;
|
|
16
|
+
updatePrependEmail(response: any): Promise<void>;
|
|
17
|
+
};
|
|
18
|
+
declare const useSync: () => SyncState & {
|
|
19
|
+
setIsSyncLoading(status: boolean): void;
|
|
20
|
+
setSync(status: boolean): void;
|
|
21
|
+
setApiSync(status: boolean): void;
|
|
22
|
+
setSyncDisable(status: boolean): void;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { useEmail, useNote, useSync, useTable };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { bindStoreWithActions } from '../../chunk-Y5MRAAGK.js';
|
|
2
|
+
import { createAdapterHooks } from '../../chunk-XTASFMAW.js';
|
|
3
|
+
import '../../chunk-3OQK7XCZ.js';
|
|
4
|
+
import '../../chunk-PZ5AY32C.js';
|
|
5
|
+
import { reactive, onScopeDispose } from 'vue';
|
|
6
|
+
|
|
7
|
+
function createVueStoreComposable(store, actions) {
|
|
8
|
+
return function useStore() {
|
|
9
|
+
const binding = bindStoreWithActions(store, actions);
|
|
10
|
+
const state = reactive(binding.getSnapshot());
|
|
11
|
+
onScopeDispose(
|
|
12
|
+
binding.subscribe(() => {
|
|
13
|
+
Object.assign(state, binding.getSnapshot());
|
|
14
|
+
})
|
|
15
|
+
);
|
|
16
|
+
return state;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/adapters/vue/index.ts
|
|
21
|
+
var { useTable, useNote, useEmail, useSync } = createAdapterHooks(createVueStoreComposable);
|
|
22
|
+
|
|
23
|
+
export { useEmail, useNote, useSync, useTable };
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/shared/createVueComposable.ts","../../../src/adapters/vue/index.ts"],"names":[],"mappings":";;;;;;AAGO,SAAS,wBAAA,CAGd,OAAkC,OAAA,EAAmB;AACnD,EAAA,OAAO,SAAS,QAAA,GAA8B;AAC1C,IAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,KAAA,EAAO,OAAO,CAAA;AACnD,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa,CAAA;AAE5C,IAAA,cAAA;AAAA,MACI,OAAA,CAAQ,UAAU,MAAM;AACpB,QAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,WAAA,EAAa,CAAA;AAAA,MAC9C,CAAC;AAAA,KACL;AAEA,IAAA,OAAO,KAAA;AAAA,EACX,CAAA;AACJ;;;AChBO,IAAM,EAAE,QAAA,EAAU,OAAA,EAAS,UAAU,OAAA,EAAQ,GAAI,mBAAmB,wBAAwB","file":"index.js","sourcesContent":["import { onScopeDispose, reactive } from \"vue\";\nimport { bindStoreWithActions, type SubscribableStore } from \"./bindStoreWithActions\";\n\nexport function createVueStoreComposable<\n TState extends object,\n TActions extends object,\n>(store: SubscribableStore<TState>, actions: TActions) {\n return function useStore(): TState & TActions {\n const binding = bindStoreWithActions(store, actions);\n const state = reactive(binding.getSnapshot()) as TState & TActions;\n\n onScopeDispose(\n binding.subscribe(() => {\n Object.assign(state, binding.getSnapshot());\n }),\n );\n\n return state;\n };\n}\n","import { createAdapterHooks } from \"../shared/createAdapterHooks\";\nimport { createVueStoreComposable } from \"../shared/createVueComposable\";\n\nexport const { useTable, useNote, useEmail, useSync } = createAdapterHooks(createVueStoreComposable);\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { getPortal, getProfile, getRefreshToken, getSubscriptionType, setAccessToken, setLoggedInDetails, setPortal, setRefreshToken, setSubscriptionType } from './chunk-FLWPTIGZ.js';
|
|
2
|
+
import './chunk-PZ5AY32C.js';
|
|
3
|
+
//# sourceMappingURL=auth-utils-5SMVN55N.js.map
|
|
4
|
+
//# sourceMappingURL=auth-utils-5SMVN55N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"auth-utils-5SMVN55N.js"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
// src/store2/store.ts
|
|
2
|
+
function createStore(initialState) {
|
|
3
|
+
let state = initialState;
|
|
4
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
5
|
+
return {
|
|
6
|
+
getState() {
|
|
7
|
+
return state;
|
|
8
|
+
},
|
|
9
|
+
setState(partial) {
|
|
10
|
+
state = {
|
|
11
|
+
...state,
|
|
12
|
+
...partial
|
|
13
|
+
};
|
|
14
|
+
listeners.forEach(
|
|
15
|
+
(listener) => listener(state)
|
|
16
|
+
);
|
|
17
|
+
},
|
|
18
|
+
subscribe(listener) {
|
|
19
|
+
listeners.add(listener);
|
|
20
|
+
return () => listeners.delete(listener);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/store2/use-table.ts
|
|
26
|
+
var tableStore = createStore({
|
|
27
|
+
tableData: [],
|
|
28
|
+
tablePrependData: [],
|
|
29
|
+
hubspotObjectTypeId: "",
|
|
30
|
+
selectedPipeline: "",
|
|
31
|
+
viewType: ""
|
|
32
|
+
});
|
|
33
|
+
var actions = {
|
|
34
|
+
setTableData(response, payload) {
|
|
35
|
+
const state = tableStore.getState();
|
|
36
|
+
const rows = response?.data?.results?.rows ?? [];
|
|
37
|
+
const rowIds = new Set(
|
|
38
|
+
rows.map((row) => row.id ?? row.hs_object_id).filter((id) => id != null && id !== "").map((id) => String(id))
|
|
39
|
+
);
|
|
40
|
+
let newTablePrependData = state.tablePrependData.filter((item) => {
|
|
41
|
+
const itemId = item.id ?? item.hs_object_id;
|
|
42
|
+
if (itemId == null || itemId === "") return true;
|
|
43
|
+
return !rowIds.has(String(itemId));
|
|
44
|
+
});
|
|
45
|
+
const hubspotObjectTypeId = payload?.hubspotObjectTypeId;
|
|
46
|
+
const selectedPipeline = payload?.selectedPipeline;
|
|
47
|
+
const viewType = response?.info?.viewType;
|
|
48
|
+
if (state.viewType && state.viewType != viewType) {
|
|
49
|
+
newTablePrependData = [];
|
|
50
|
+
}
|
|
51
|
+
if (state.hubspotObjectTypeId && state.hubspotObjectTypeId != hubspotObjectTypeId) {
|
|
52
|
+
newTablePrependData = [];
|
|
53
|
+
}
|
|
54
|
+
if (state.selectedPipeline && state.selectedPipeline != selectedPipeline) {
|
|
55
|
+
newTablePrependData = [];
|
|
56
|
+
}
|
|
57
|
+
tableStore.setState({
|
|
58
|
+
tableData: response,
|
|
59
|
+
tablePrependData: newTablePrependData,
|
|
60
|
+
hubspotObjectTypeId,
|
|
61
|
+
viewType
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
clearTablePrependData() {
|
|
65
|
+
tableStore.setState({
|
|
66
|
+
tablePrependData: []
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
async setTablePrependData(response, pipelineStage) {
|
|
70
|
+
const state = tableStore.getState();
|
|
71
|
+
let rows = [];
|
|
72
|
+
if (state.tableData?.info?.viewType == "BOARD") {
|
|
73
|
+
if (response === "loading") {
|
|
74
|
+
rows = state.tableData?.data?.results?.map(
|
|
75
|
+
({ id, data }) => {
|
|
76
|
+
const matchedPrepend = state.tablePrependData.find(
|
|
77
|
+
(item) => String(item.id) === String(id)
|
|
78
|
+
);
|
|
79
|
+
const prependRows = matchedPrepend?.data?.results?.rows ?? [];
|
|
80
|
+
const newRow = String(id) === String(pipelineStage) ? [
|
|
81
|
+
(data?.results?.columns ?? []).reduce(
|
|
82
|
+
(obj, column) => {
|
|
83
|
+
obj[column.key] = "loading";
|
|
84
|
+
return obj;
|
|
85
|
+
},
|
|
86
|
+
{}
|
|
87
|
+
)
|
|
88
|
+
] : [];
|
|
89
|
+
return {
|
|
90
|
+
id,
|
|
91
|
+
data: {
|
|
92
|
+
results: {
|
|
93
|
+
columns: data?.results?.columns ?? [],
|
|
94
|
+
// prepend loading row + prepend rows
|
|
95
|
+
rows: [
|
|
96
|
+
...newRow,
|
|
97
|
+
...prependRows
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
console.log(rows);
|
|
105
|
+
} else {
|
|
106
|
+
const data = response?.data;
|
|
107
|
+
const hs_pipeline_stage = data?.hs_pipeline_stage?.value?.value || data?.hs_pipeline_stage?.value;
|
|
108
|
+
if (!data) {
|
|
109
|
+
tableStore.setState({
|
|
110
|
+
tablePrependData: []
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
rows = state?.tablePrependData.map((row) => {
|
|
114
|
+
const matchedPrepend = state.tablePrependData.find(
|
|
115
|
+
(item) => String(item.id) === String(row.id)
|
|
116
|
+
);
|
|
117
|
+
const prependRows = matchedPrepend?.data?.results?.rows ?? [];
|
|
118
|
+
if (String(row.id) === String(hs_pipeline_stage)) {
|
|
119
|
+
const updatedRow = (row?.data?.results?.columns ?? []).reduce(
|
|
120
|
+
(obj, column) => {
|
|
121
|
+
const key = column.key;
|
|
122
|
+
obj[key] = data?.[key]?.value ?? data?.[key] ?? "";
|
|
123
|
+
return obj;
|
|
124
|
+
},
|
|
125
|
+
{}
|
|
126
|
+
);
|
|
127
|
+
prependRows[0] = updatedRow;
|
|
128
|
+
return {
|
|
129
|
+
...row,
|
|
130
|
+
data: {
|
|
131
|
+
...row.data,
|
|
132
|
+
results: {
|
|
133
|
+
...row.data.results,
|
|
134
|
+
rows: prependRows
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return row;
|
|
140
|
+
});
|
|
141
|
+
console.log("rows", rows);
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
if (response === "loading") {
|
|
145
|
+
const row = await state.tableData?.data?.results?.columns.reduce((acc, item) => {
|
|
146
|
+
if (!item.hidden) {
|
|
147
|
+
acc[item.key] = "loading";
|
|
148
|
+
}
|
|
149
|
+
return acc;
|
|
150
|
+
}, {});
|
|
151
|
+
rows = [row, ...state.tablePrependData];
|
|
152
|
+
} else if (response?.data) {
|
|
153
|
+
const data = response?.data;
|
|
154
|
+
if (!data) {
|
|
155
|
+
tableStore.setState({
|
|
156
|
+
tablePrependData: []
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
const row = await Object.fromEntries(
|
|
160
|
+
Object.entries(data).map(([key, value]) => [
|
|
161
|
+
key,
|
|
162
|
+
value?.value ?? value
|
|
163
|
+
])
|
|
164
|
+
);
|
|
165
|
+
rows = [...state.tablePrependData];
|
|
166
|
+
if (rows.length > 0) {
|
|
167
|
+
rows[0] = row;
|
|
168
|
+
} else {
|
|
169
|
+
rows.push(row);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
tableStore.setState({
|
|
174
|
+
tablePrependData: rows
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
// src/store2/use-note.ts
|
|
180
|
+
var noteStore = createStore({
|
|
181
|
+
notes: [],
|
|
182
|
+
prependNotes: [],
|
|
183
|
+
id: ""
|
|
184
|
+
});
|
|
185
|
+
var actions2 = {
|
|
186
|
+
setNotes(response, payload) {
|
|
187
|
+
const state = noteStore.getState();
|
|
188
|
+
const rows = response?.data?.results?.rows ?? [];
|
|
189
|
+
const rowIds = new Set(
|
|
190
|
+
rows.map((row) => row.id ?? row.hs_object_id).filter((id2) => id2 != null && id2 !== "").map((id2) => String(id2))
|
|
191
|
+
);
|
|
192
|
+
let newPrependNotes = state.prependNotes.filter((item) => {
|
|
193
|
+
const itemId = item.id ?? item.hs_object_id;
|
|
194
|
+
if (itemId == null || itemId === "") return true;
|
|
195
|
+
return !rowIds.has(String(itemId));
|
|
196
|
+
});
|
|
197
|
+
const id = payload?.params?.id;
|
|
198
|
+
if (state.id && state.id != id) {
|
|
199
|
+
newPrependNotes = [];
|
|
200
|
+
}
|
|
201
|
+
noteStore.setState({
|
|
202
|
+
notes: response,
|
|
203
|
+
prependNotes: newPrependNotes,
|
|
204
|
+
id
|
|
205
|
+
});
|
|
206
|
+
},
|
|
207
|
+
async setPrependNote(response) {
|
|
208
|
+
const state = noteStore.getState();
|
|
209
|
+
let rows = [];
|
|
210
|
+
if (response === "loading") {
|
|
211
|
+
const row = await state.notes?.data?.results?.columns.reduce((acc, item) => {
|
|
212
|
+
if (!item.hidden) {
|
|
213
|
+
acc[item.key] = "loading";
|
|
214
|
+
}
|
|
215
|
+
return acc;
|
|
216
|
+
}, {});
|
|
217
|
+
rows = [row, ...state.prependNotes];
|
|
218
|
+
} else if (response?.data) {
|
|
219
|
+
const data = response?.data;
|
|
220
|
+
if (!data) {
|
|
221
|
+
noteStore.setState({
|
|
222
|
+
prependNotes: []
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
const row = await Object.fromEntries(
|
|
226
|
+
Object.entries(data).map(([key, value]) => [
|
|
227
|
+
key,
|
|
228
|
+
value?.value ?? value
|
|
229
|
+
])
|
|
230
|
+
);
|
|
231
|
+
rows = [...state.prependNotes];
|
|
232
|
+
if (rows.length > 0) {
|
|
233
|
+
rows[0] = row;
|
|
234
|
+
} else {
|
|
235
|
+
rows.push(row);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
noteStore.setState({
|
|
239
|
+
prependNotes: rows
|
|
240
|
+
});
|
|
241
|
+
},
|
|
242
|
+
async updatePrependNote(response) {
|
|
243
|
+
const state = noteStore.getState();
|
|
244
|
+
const prependNotes = state.prependNotes || [];
|
|
245
|
+
const note = response.data || null;
|
|
246
|
+
const notes = prependNotes.map(
|
|
247
|
+
(item) => item?.hs_object_id === note?.hs_object_id?.value ? {
|
|
248
|
+
...item,
|
|
249
|
+
...Object.fromEntries(
|
|
250
|
+
Object.entries(note).map(([key, value]) => [
|
|
251
|
+
key,
|
|
252
|
+
value?.value ?? value
|
|
253
|
+
])
|
|
254
|
+
)
|
|
255
|
+
} : item
|
|
256
|
+
);
|
|
257
|
+
noteStore.setState({
|
|
258
|
+
prependNotes: notes
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
// src/store2/use-email.ts
|
|
264
|
+
var emailStore = createStore({
|
|
265
|
+
emails: [],
|
|
266
|
+
prependEmails: [],
|
|
267
|
+
id: ""
|
|
268
|
+
});
|
|
269
|
+
var actions3 = {
|
|
270
|
+
setEmails(response, payload) {
|
|
271
|
+
const state = emailStore.getState();
|
|
272
|
+
const rows = response?.data?.results?.rows ?? [];
|
|
273
|
+
const rowIds = new Set(
|
|
274
|
+
rows.map((row) => row.id ?? row.hs_object_id).filter((id2) => id2 != null && id2 !== "").map((id2) => String(id2))
|
|
275
|
+
);
|
|
276
|
+
let newPrependEmails = state.prependEmails.filter((item) => {
|
|
277
|
+
const itemId = item.id ?? item.hs_object_id;
|
|
278
|
+
if (itemId == null || itemId === "") return true;
|
|
279
|
+
return !rowIds.has(String(itemId));
|
|
280
|
+
});
|
|
281
|
+
const id = payload?.params?.id;
|
|
282
|
+
if (state.id && state.id != id) {
|
|
283
|
+
newPrependEmails = [];
|
|
284
|
+
}
|
|
285
|
+
emailStore.setState({
|
|
286
|
+
emails: response,
|
|
287
|
+
prependEmails: newPrependEmails,
|
|
288
|
+
id
|
|
289
|
+
});
|
|
290
|
+
},
|
|
291
|
+
async setPrependEmail(response) {
|
|
292
|
+
const state = emailStore.getState();
|
|
293
|
+
let rows = [];
|
|
294
|
+
if (response === "loading") {
|
|
295
|
+
const row = await state.emails?.data?.results?.columns.reduce((acc, item) => {
|
|
296
|
+
if (!item.hidden) {
|
|
297
|
+
acc[item.key] = "loading";
|
|
298
|
+
}
|
|
299
|
+
return acc;
|
|
300
|
+
}, {});
|
|
301
|
+
rows = [row, ...state.prependEmails];
|
|
302
|
+
} else if (response?.data) {
|
|
303
|
+
const data = response?.data;
|
|
304
|
+
if (!data) {
|
|
305
|
+
emailStore.setState({
|
|
306
|
+
prependEmails: []
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
const row = await Object.fromEntries(
|
|
310
|
+
Object.entries(data).map(([key, value]) => [
|
|
311
|
+
key,
|
|
312
|
+
value?.value ?? value
|
|
313
|
+
])
|
|
314
|
+
);
|
|
315
|
+
rows = [...state.prependEmails];
|
|
316
|
+
if (rows.length > 0) {
|
|
317
|
+
rows[0] = row;
|
|
318
|
+
} else {
|
|
319
|
+
rows.push(row);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
emailStore.setState({
|
|
323
|
+
prependEmails: rows
|
|
324
|
+
});
|
|
325
|
+
},
|
|
326
|
+
async updatePrependEmail(response) {
|
|
327
|
+
const state = emailStore.getState();
|
|
328
|
+
const prependEmails = state.prependEmails || [];
|
|
329
|
+
const email = response.data || null;
|
|
330
|
+
const emails = prependEmails.map(
|
|
331
|
+
(item) => item?.hs_object_id === email?.hs_object_id?.value ? {
|
|
332
|
+
...item,
|
|
333
|
+
...Object.fromEntries(
|
|
334
|
+
Object.entries(email).map(([key, value]) => [
|
|
335
|
+
key,
|
|
336
|
+
value?.value ?? value
|
|
337
|
+
])
|
|
338
|
+
)
|
|
339
|
+
} : item
|
|
340
|
+
);
|
|
341
|
+
emailStore.setState({
|
|
342
|
+
prependEmails: emails
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
export { actions, actions2, actions3, createStore, emailStore, noteStore, tableStore };
|
|
348
|
+
//# sourceMappingURL=chunk-3OQK7XCZ.js.map
|
|
349
|
+
//# sourceMappingURL=chunk-3OQK7XCZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/store2/store.ts","../src/store2/use-table.ts","../src/store2/use-note.ts","../src/store2/use-email.ts"],"names":["actions","id"],"mappings":"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","file":"chunk-3OQK7XCZ.js","sourcesContent":["type Listener<T> = (state: T) => void;\n\nexport function createStore<T>(initialState: T) {\n let state = initialState;\n\n const listeners = new Set<Listener<T>>();\n\n return {\n getState() {\n return state;\n },\n\n setState(partial: Partial<T>) {\n state = {\n ...state,\n ...partial,\n };\n\n listeners.forEach((listener) =>\n listener(state)\n );\n },\n\n subscribe(listener: Listener<T>) {\n listeners.add(listener);\n\n return () => listeners.delete(listener);\n },\n };\n}","import { createStore } from \"./store\";\n\nexport interface TableState {\n tableData: any;\n tablePrependData: any[];\n hubspotObjectTypeId: string;\n selectedPipeline: string;\n viewType: string;\n}\n\nexport const tableStore = createStore<TableState>({\n tableData: [],\n tablePrependData: [],\n hubspotObjectTypeId: \"\",\n selectedPipeline: \"\",\n viewType: \"\",\n});\n\nexport const actions = {\n\n setTableData(\n response: any,\n payload: any\n ) {\n const state = tableStore.getState();\n const rows = response?.data?.results?.rows ?? [];\n const rowIds = new Set(\n rows\n .map((row: any) => row.id ?? row.hs_object_id)\n .filter((id: unknown) => id != null && id !== \"\")\n .map((id: unknown) => String(id))\n );\n\n let newTablePrependData = state.tablePrependData.filter((item: any) => {\n const itemId = item.id ?? item.hs_object_id;\n if (itemId == null || itemId === \"\") return true;\n return !rowIds.has(String(itemId));\n });\n\n const hubspotObjectTypeId = payload?.hubspotObjectTypeId;\n const selectedPipeline = payload?.selectedPipeline;\n const viewType = response?.info?.viewType;\n\n if(state.viewType && (state.viewType != viewType)) {\n newTablePrependData = [];\n }\n\n if(state.hubspotObjectTypeId && (state.hubspotObjectTypeId != hubspotObjectTypeId)) {\n newTablePrependData = [];\n }\n\n if(state.selectedPipeline && (state.selectedPipeline != selectedPipeline)) {\n newTablePrependData = [];\n }\n\n tableStore.setState({\n tableData: response,\n tablePrependData: newTablePrependData,\n hubspotObjectTypeId: hubspotObjectTypeId,\n viewType: viewType,\n });\n },\n\n clearTablePrependData() {\n tableStore.setState({\n tablePrependData: [],\n });\n },\n\n async setTablePrependData(\n response: any,\n pipelineStage?: any\n ) {\n const state: any = tableStore.getState();\n let rows: any = [];\n\n if(state.tableData?.info?.viewType == \"BOARD\") {\n if (response === 'loading') { // set empty loading columns\n\n rows = state.tableData?.data?.results?.map(\n ({ id, data }: any) => {\n // existing rows\n \n // match prepend data\n const matchedPrepend = state.tablePrependData.find(\n (item: any) => String(item.id) === String(id)\n );\n \n // existing prepend rows\n const prependRows = matchedPrepend?.data?.results?.rows ?? [];\n \n // create new loading row\n const newRow =\n String(id) === String(pipelineStage)\n ? [\n (data?.results?.columns ?? []).reduce(\n (obj: Record<string, string>, column: any) => {\n obj[column.key] = \"loading\";\n return obj;\n },\n {}\n ),\n ]\n : [];\n \n return {\n id,\n data: {\n results: {\n columns: data?.results?.columns ?? [],\n \n // prepend loading row + prepend rows\n rows: [\n ...newRow,\n ...prependRows\n ],\n },\n },\n };\n }\n );\n \n console.log(rows);\n } else {\n\n const data = response?.data\n const hs_pipeline_stage = data?.hs_pipeline_stage?.value?.value || data?.hs_pipeline_stage?.value\n\n if (!data) {\n tableStore.setState({\n tablePrependData: []\n });\n }\n\n rows = state?.tablePrependData.map((row: any) => {\n\n // match prepend data\n const matchedPrepend = state.tablePrependData.find(\n (item: any) => String(item.id) === String(row.id)\n );\n \n // existing prepend rows\n const prependRows = matchedPrepend?.data?.results?.rows ?? [];\n\n // match row id with hs_pipeline_stage\n if (String(row.id) === String(hs_pipeline_stage)) {\n // create object from columns\n const updatedRow = (row?.data?.results?.columns ?? []).reduce(\n (obj: any, column: any) => {\n const key = column.key;\n \n // set actual data value\n obj[key] = data?.[key]?.value ?? data?.[key] ?? \"\";\n \n return obj;\n },\n {}\n );\n\n prependRows[0] = updatedRow; // replace loading row\n \n return {\n ...row,\n data: {\n ...row.data,\n results: {\n ...row.data.results,\n rows: prependRows,\n },\n },\n };\n }\n \n return row;\n });\n \n console.log(\"rows\", rows);\n\n }\n } else {\n\n if (response === 'loading') { // set empty loading columns\n const row = await state.tableData?.data?.results?.columns.reduce((acc: any, item: any) => {\n if (!item.hidden) {\n acc[item.key] = \"loading\";\n }\n return acc;\n }, {});\n rows = [row, ...state.tablePrependData];\n } else if (response?.data) { // set real columns data\n\n const data = response?.data\n if (!data) {\n tableStore.setState({\n tablePrependData: []\n });\n }\n\n const row = await Object.fromEntries(\n Object.entries(data).map(([key, value]: any) => [\n key,\n value?.value ?? value,\n ])\n );\n\n rows = [...state.tablePrependData];\n // replace empty loading columns with real data\n if (rows.length > 0) {\n rows[0] = row;\n } else {\n rows.push(row);\n }\n }\n\n }\n\n tableStore.setState({\n tablePrependData: rows\n });\n }\n}","import { createStore } from \"./store\";\n\nexport interface NoteState {\n notes: any;\n prependNotes: any[];\n id: string;\n}\n\nexport const noteStore = createStore<NoteState>({\n notes: [],\n prependNotes: [],\n id: \"\"\n});\n\nexport const actions = {\n\n setNotes(\n response: any,\n payload: any\n ) {\n const state = noteStore.getState();\n const rows = response?.data?.results?.rows ?? [];\n const rowIds = new Set(\n rows\n .map((row: any) => row.id ?? row.hs_object_id)\n .filter((id: unknown) => id != null && id !== \"\")\n .map((id: unknown) => String(id))\n );\n\n let newPrependNotes = state.prependNotes.filter((item: any) => {\n const itemId = item.id ?? item.hs_object_id;\n if (itemId == null || itemId === \"\") return true;\n return !rowIds.has(String(itemId));\n });\n\n const id = payload?.params?.id;\n\n if(state.id && (state.id != id)) {\n newPrependNotes = [];\n }\n\n noteStore.setState({\n notes: response,\n prependNotes: newPrependNotes,\n id: id,\n });\n },\n\n async setPrependNote(\n response: any\n ) {\n const state: any = noteStore.getState();\n let rows: any = [];\n\n if (response === 'loading') { // set empty loading columns\n const row = await state.notes?.data?.results?.columns.reduce((acc: any, item: any) => {\n if (!item.hidden) {\n acc[item.key] = \"loading\";\n }\n return acc;\n }, {});\n rows = [row, ...state.prependNotes];\n } else if (response?.data) { // set real columns data\n\n const data = response?.data\n if (!data) {\n noteStore.setState({\n prependNotes: []\n });\n }\n\n const row = await Object.fromEntries(\n Object.entries(data).map(([key, value]: any) => [\n key,\n value?.value ?? value,\n ])\n );\n\n rows = [...state.prependNotes];\n // replace empty loading columns with real data\n if (rows.length > 0) {\n rows[0] = row;\n } else {\n rows.push(row);\n }\n }\n\n noteStore.setState({\n prependNotes: rows\n });\n },\n\n async updatePrependNote (response: any) {\n const state: any = noteStore.getState();\n const prependNotes = state.prependNotes || [];\n\n const note = response.data || null;\n\n const notes = prependNotes.map((item: any) =>\n item?.hs_object_id === note?.hs_object_id?.value\n ? {\n ...item,\n ...Object.fromEntries(\n Object.entries(note).map(([key, value]: [string, any]) => [\n key,\n value?.value ?? value,\n ])\n ),\n }\n : item\n );\n\n noteStore.setState({\n prependNotes: notes\n });\n }\n}","import { createStore } from \"./store\";\n\nexport interface EmailState {\n emails: any;\n prependEmails: any[];\n id: string;\n}\n\nexport const emailStore = createStore<EmailState>({\n emails: [],\n prependEmails: [],\n id: \"\",\n});\n\nexport const actions = {\n\n setEmails(\n response: any,\n payload: any\n ) {\n const state = emailStore.getState();\n const rows = response?.data?.results?.rows ?? [];\n const rowIds = new Set(\n rows\n .map((row: any) => row.id ?? row.hs_object_id)\n .filter((id: unknown) => id != null && id !== \"\")\n .map((id: unknown) => String(id))\n );\n\n let newPrependEmails = state.prependEmails.filter((item: any) => {\n const itemId = item.id ?? item.hs_object_id;\n if (itemId == null || itemId === \"\") return true;\n return !rowIds.has(String(itemId));\n });\n\n const id = payload?.params?.id;\n\n if(state.id && (state.id != id)) {\n newPrependEmails = [];\n }\n\n emailStore.setState({\n emails: response,\n prependEmails: newPrependEmails,\n id: id,\n });\n },\n\n async setPrependEmail(\n response: any\n ) {\n const state: any = emailStore.getState();\n let rows: any = [];\n\n if (response === 'loading') { // set empty loading columns\n const row = await state.emails?.data?.results?.columns.reduce((acc: any, item: any) => {\n if (!item.hidden) {\n acc[item.key] = \"loading\";\n }\n return acc;\n }, {});\n rows = [row, ...state.prependEmails];\n } else if (response?.data) { // set real columns data\n\n const data = response?.data\n if (!data) {\n emailStore.setState({\n prependEmails: []\n });\n }\n\n const row = await Object.fromEntries(\n Object.entries(data).map(([key, value]: any) => [\n key,\n value?.value ?? value,\n ])\n );\n\n rows = [...state.prependEmails];\n // replace empty loading columns with real data\n if (rows.length > 0) {\n rows[0] = row;\n } else {\n rows.push(row);\n }\n }\n\n emailStore.setState({\n prependEmails: rows\n });\n },\n\n async updatePrependEmail (response: any) {\n const state: any = emailStore.getState();\n const prependEmails = state.prependEmails || [];\n\n const email = response.data || null;\n\n const emails = prependEmails.map((item: any) =>\n item?.hs_object_id === email?.hs_object_id?.value\n ? {\n ...item,\n ...Object.fromEntries(\n Object.entries(email).map(([key, value]: [string, any]) => [\n key,\n value?.value ?? value,\n ])\n ),\n }\n : item\n );\n\n emailStore.setState({\n prependEmails: emails\n });\n }\n}"]}
|