woodsportal-client-sdk 4.1.2-dev.1 → 4.1.2-dev.3

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 (50) hide show
  1. package/dist/adapters/angular/index.d.ts +9 -2
  2. package/dist/adapters/angular/index.js +5 -5
  3. package/dist/adapters/angular/index.js.map +1 -1
  4. package/dist/adapters/native/index.d.ts +1 -1
  5. package/dist/adapters/native/index.js +4 -4
  6. package/dist/adapters/react/index.d.ts +9 -2
  7. package/dist/adapters/react/index.js +4 -4
  8. package/dist/adapters/vue/index.d.ts +9 -2
  9. package/dist/adapters/vue/index.js +5 -5
  10. package/dist/adapters/vue/index.js.map +1 -1
  11. package/dist/{chunk-R6CZONMV.js → chunk-7X7PB27Z.js} +15 -7
  12. package/dist/chunk-7X7PB27Z.js.map +1 -0
  13. package/dist/chunk-CUVU6DCT.js +3 -0
  14. package/dist/{chunk-55MIERLJ.js.map → chunk-CUVU6DCT.js.map} +1 -1
  15. package/dist/{chunk-T553DXBI.js → chunk-I3JF5QOY.js} +5 -4
  16. package/dist/chunk-I3JF5QOY.js.map +1 -0
  17. package/dist/chunk-P5EWTH5Q.js +16 -0
  18. package/dist/chunk-P5EWTH5Q.js.map +1 -0
  19. package/dist/{chunk-3VH52USP.js → chunk-QREX7YVN.js} +6 -5
  20. package/dist/chunk-QREX7YVN.js.map +1 -0
  21. package/dist/{chunk-X6NNUGP7.js → chunk-T4YJV6MP.js} +22 -3
  22. package/dist/chunk-T4YJV6MP.js.map +1 -0
  23. package/dist/{chunk-N4SV7IQN.js → chunk-THFXCWVY.js} +4 -4
  24. package/dist/{chunk-N4SV7IQN.js.map → chunk-THFXCWVY.js.map} +1 -1
  25. package/dist/chunk-UCBM5ZFU.js +343 -0
  26. package/dist/chunk-UCBM5ZFU.js.map +1 -0
  27. package/dist/{chunk-JCYGLNF4.js → chunk-WRHS4HT3.js} +91 -22
  28. package/dist/chunk-WRHS4HT3.js.map +1 -0
  29. package/dist/{crmCacheRefresh-VRgYlnBv.d.ts → crmCacheRefresh-B9sAQzI7.d.ts} +9 -1
  30. package/dist/{cross-tab-session-VJBW7BK6.js → cross-tab-session-QIUHW33Y.js} +6 -6
  31. package/dist/{cross-tab-session-VJBW7BK6.js.map → cross-tab-session-QIUHW33Y.js.map} +1 -1
  32. package/dist/entries/auth.js +4 -4
  33. package/dist/entries/crm.d.ts +17 -3
  34. package/dist/entries/crm.js +10 -9
  35. package/dist/entries/crm.js.map +1 -1
  36. package/dist/index.d.ts +17 -3
  37. package/dist/index.js +13 -12
  38. package/dist/index.js.map +1 -1
  39. package/dist/{use-sync-B4xio81b.d.ts → use-sync-BQfzHacf.d.ts} +6 -1
  40. package/package.json +1 -1
  41. package/dist/chunk-3VH52USP.js.map +0 -1
  42. package/dist/chunk-55MIERLJ.js +0 -3
  43. package/dist/chunk-7XZSJGCX.js +0 -16
  44. package/dist/chunk-7XZSJGCX.js.map +0 -1
  45. package/dist/chunk-JCYGLNF4.js.map +0 -1
  46. package/dist/chunk-R6CZONMV.js.map +0 -1
  47. package/dist/chunk-T553DXBI.js.map +0 -1
  48. package/dist/chunk-X6NNUGP7.js.map +0 -1
  49. package/dist/chunk-YKA26CVL.js +0 -110
  50. package/dist/chunk-YKA26CVL.js.map +0 -1
@@ -0,0 +1,343 @@
1
+ import { createStore, isLoadingPrependRow } from './chunk-T4YJV6MP.js';
2
+
3
+ // src/main/state/crm/use-object.ts
4
+ var OBJECT_DATA_META_KEYS = /* @__PURE__ */ new Set(["createdAt", "updatedAt", "id"]);
5
+ var objectStore = createStore({
6
+ object: null,
7
+ id: ""
8
+ });
9
+ function resolveRecordId(source, data) {
10
+ const fromSource = source?.params?.id ?? source?.recordId ?? source?.id;
11
+ if (fromSource != null && fromSource !== "") {
12
+ return String(fromSource);
13
+ }
14
+ const fromData = data?.id ?? data?.hs_object_id?.value ?? data?.hs_object_id;
15
+ if (fromData != null && fromData !== "") {
16
+ return String(fromData);
17
+ }
18
+ return "";
19
+ }
20
+ function isObjectField(key, value) {
21
+ if (OBJECT_DATA_META_KEYS.has(key) || key === "associations") {
22
+ return false;
23
+ }
24
+ if (value == null || typeof value !== "object" || Array.isArray(value)) {
25
+ return false;
26
+ }
27
+ const field = value;
28
+ return "fieldType" in field || "isEditableField" in field || "isPrimaryDisplayProperty" in field || "value" in field;
29
+ }
30
+ function mergeObjectFields(existing, data) {
31
+ const next = { ...existing };
32
+ for (const [key, value] of Object.entries(data)) {
33
+ if (!isObjectField(key, value)) {
34
+ continue;
35
+ }
36
+ const existingField = existing[key];
37
+ next[key] = existingField != null && typeof existingField === "object" && !Array.isArray(existingField) ? { ...existingField, ...value } : value;
38
+ }
39
+ return next;
40
+ }
41
+ function patchAssociationRecord(associations, recordId, data) {
42
+ for (const [key, group] of Object.entries(associations)) {
43
+ const rows = group?.data;
44
+ if (!Array.isArray(rows)) {
45
+ continue;
46
+ }
47
+ const index = rows.findIndex((row) => resolveRecordId(row, row) === recordId);
48
+ if (index === -1) {
49
+ continue;
50
+ }
51
+ const nextRows = [...rows];
52
+ nextRows[index] = mergeObjectFields(rows[index] ?? {}, data);
53
+ return {
54
+ ...associations,
55
+ [key]: {
56
+ ...group,
57
+ data: nextRows
58
+ }
59
+ };
60
+ }
61
+ return null;
62
+ }
63
+ function resolveAssociationObjectTypeId(props) {
64
+ const objectTypeId = props?.params?.hubspotObjectTypeId ?? props?.hubspotObjectTypeId;
65
+ return objectTypeId != null && objectTypeId !== "" ? String(objectTypeId) : "";
66
+ }
67
+ function findAssociationGroupKey(associations, objectTypeId) {
68
+ for (const [key, group] of Object.entries(associations)) {
69
+ if (group?.objectTypeId != null && String(group.objectTypeId) === objectTypeId) {
70
+ return key;
71
+ }
72
+ }
73
+ for (const key of Object.keys(associations)) {
74
+ if (key === objectTypeId || key.startsWith(`${objectTypeId}_`)) {
75
+ return key;
76
+ }
77
+ }
78
+ return void 0;
79
+ }
80
+ function isLoadingAssociationRow(row) {
81
+ if (!row || typeof row !== "object") {
82
+ return false;
83
+ }
84
+ const values = Object.values(row);
85
+ if (values.length === 0) {
86
+ return false;
87
+ }
88
+ return values.every((value) => value === "loading" || value != null && typeof value === "object" && !Array.isArray(value) && value.value === "loading");
89
+ }
90
+ function toLoadingAssociationRow(template) {
91
+ if (template != null && typeof template === "object" && !Array.isArray(template)) {
92
+ return Object.fromEntries(
93
+ Object.entries(template).map(([key, value]) => {
94
+ if (value != null && typeof value === "object" && !Array.isArray(value) && "value" in value) {
95
+ return [key, { ...value, value: "loading" }];
96
+ }
97
+ return [key, "loading"];
98
+ })
99
+ );
100
+ }
101
+ return { name: { value: "loading" } };
102
+ }
103
+ function toAssociationRow(data) {
104
+ const row = {};
105
+ for (const [key, value] of Object.entries(data)) {
106
+ if (!isObjectField(key, value)) {
107
+ continue;
108
+ }
109
+ row[key] = value;
110
+ }
111
+ return row;
112
+ }
113
+ function setAssociationGroup(state, associations, key, group, rows, total) {
114
+ objectStore.setState({
115
+ object: {
116
+ ...state.object,
117
+ data: {
118
+ ...state.object.data,
119
+ associations: {
120
+ ...associations,
121
+ [key]: {
122
+ ...group,
123
+ data: rows,
124
+ ...total != null ? { total } : {}
125
+ }
126
+ }
127
+ }
128
+ }
129
+ });
130
+ }
131
+ var actions = {
132
+ setObjectData(response, payload) {
133
+ const data = response?.data;
134
+ const id = resolveRecordId(payload, data);
135
+ objectStore.setState({
136
+ object: response ?? null,
137
+ id
138
+ });
139
+ },
140
+ updateObjectData(response, payload) {
141
+ const data = response?.data;
142
+ const recordId = resolveRecordId(payload, data);
143
+ const state = objectStore.getState();
144
+ if (!data || !state.object) {
145
+ return response;
146
+ }
147
+ const existingData = state.object.data ?? {};
148
+ const associations = existingData.associations;
149
+ const isParentRecordUpdate = !state.id || !recordId || state.id === recordId;
150
+ if (!isParentRecordUpdate) {
151
+ const nextAssociations = associations && typeof associations === "object" ? patchAssociationRecord(associations, recordId, data) : null;
152
+ if (!nextAssociations) {
153
+ return response;
154
+ }
155
+ objectStore.setState({
156
+ object: {
157
+ ...state.object,
158
+ data: {
159
+ ...existingData,
160
+ associations: nextAssociations
161
+ }
162
+ }
163
+ });
164
+ return response;
165
+ }
166
+ const nextData = mergeObjectFields(existingData, data);
167
+ objectStore.setState({
168
+ object: {
169
+ ...state.object,
170
+ data: nextData,
171
+ ...response?.configurations != null ? { configurations: response.configurations } : {},
172
+ ...response?.info != null ? { info: response.info } : {}
173
+ },
174
+ id: state.id || recordId
175
+ });
176
+ return response;
177
+ },
178
+ async setObjectAssociationPrependData(response, props) {
179
+ const state = objectStore.getState();
180
+ const associations = state.object?.data?.associations;
181
+ const objectTypeId = resolveAssociationObjectTypeId(props);
182
+ if (!associations || typeof associations !== "object" || !objectTypeId) {
183
+ return;
184
+ }
185
+ const key = findAssociationGroupKey(associations, objectTypeId);
186
+ if (!key) {
187
+ return;
188
+ }
189
+ const group = associations[key];
190
+ const rows = Array.isArray(group?.data) ? [...group.data] : [];
191
+ if (response === "loading") {
192
+ rows.unshift(toLoadingAssociationRow(rows[0]));
193
+ setAssociationGroup(state, associations, key, group, rows);
194
+ return;
195
+ }
196
+ const data = response?.data;
197
+ if (!data) {
198
+ return;
199
+ }
200
+ const hadLoading = isLoadingAssociationRow(rows[0]);
201
+ const row = toAssociationRow(data);
202
+ if (hadLoading) {
203
+ rows[0] = row;
204
+ } else {
205
+ rows.unshift(row);
206
+ }
207
+ const baseTotal = typeof group?.total === "number" ? group.total : Math.max((Array.isArray(group?.data) ? group.data.length : 0) - (hadLoading ? 1 : 0), 0);
208
+ setAssociationGroup(state, associations, key, group, rows, baseTotal + 1);
209
+ },
210
+ clearLatestObjectAssociationPrependData(props) {
211
+ const state = objectStore.getState();
212
+ const associations = state.object?.data?.associations;
213
+ const objectTypeId = resolveAssociationObjectTypeId(props);
214
+ if (!associations || typeof associations !== "object" || !objectTypeId) {
215
+ return;
216
+ }
217
+ const key = findAssociationGroupKey(associations, objectTypeId);
218
+ if (!key) {
219
+ return;
220
+ }
221
+ const group = associations[key];
222
+ const rows = Array.isArray(group?.data) ? group.data : [];
223
+ if (rows.length === 0 || !isLoadingAssociationRow(rows[0])) {
224
+ return;
225
+ }
226
+ setAssociationGroup(state, associations, key, group, rows.slice(1));
227
+ },
228
+ clearObjectData() {
229
+ objectStore.setState({
230
+ object: null,
231
+ id: ""
232
+ });
233
+ }
234
+ };
235
+
236
+ // src/main/state/crm/use-multi-object.ts
237
+ var multiObjectStore = createStore({
238
+ objects: {},
239
+ objectsPrependData: {},
240
+ meta: {}
241
+ });
242
+ function getObjectKey(payload) {
243
+ return String(payload?.params?.hubspotObjectTypeId ?? "");
244
+ }
245
+ var actions2 = {
246
+ setMultiObjectData(response, payload) {
247
+ const key = getObjectKey(payload);
248
+ const state = multiObjectStore.getState();
249
+ const rows = response?.data?.results?.rows ?? [];
250
+ const rowIds = new Set(
251
+ rows.map((row) => row.id ?? row.hs_object_id).filter((id) => id != null && id !== "").map((id) => String(id))
252
+ );
253
+ let newPrependForKey = (state.objectsPrependData[key] ?? []).filter((item) => {
254
+ const itemId = item.id ?? item.hs_object_id;
255
+ if (itemId == null || itemId === "") return true;
256
+ return !rowIds.has(String(itemId));
257
+ });
258
+ const selectedPipeline = payload?.queryParams?.selectedPipeline ?? "";
259
+ const viewType = response?.info?.viewType ?? "";
260
+ const prevMeta = state.meta[key];
261
+ if (response?.data?.total < 1 || payload?.queryParams?.componentName) {
262
+ newPrependForKey = [];
263
+ }
264
+ if (prevMeta?.viewType && prevMeta.viewType !== viewType) {
265
+ newPrependForKey = [];
266
+ }
267
+ if (prevMeta?.selectedPipeline && prevMeta.selectedPipeline !== selectedPipeline) {
268
+ newPrependForKey = [];
269
+ }
270
+ multiObjectStore.setState({
271
+ objects: { ...state.objects, [key]: response },
272
+ objectsPrependData: { ...state.objectsPrependData, [key]: newPrependForKey },
273
+ meta: {
274
+ ...state.meta,
275
+ [key]: { selectedPipeline, viewType }
276
+ }
277
+ });
278
+ },
279
+ clearMultiObjectPrependData(hubspotObjectTypeId) {
280
+ const state = multiObjectStore.getState();
281
+ if (!hubspotObjectTypeId) {
282
+ multiObjectStore.setState({ objectsPrependData: {} });
283
+ return;
284
+ }
285
+ const key = String(hubspotObjectTypeId);
286
+ const { [key]: _, ...rest } = state.objectsPrependData;
287
+ multiObjectStore.setState({ objectsPrependData: rest });
288
+ },
289
+ clearLatestMultiObjectPrependData(hubspotObjectTypeId) {
290
+ if (!hubspotObjectTypeId) {
291
+ return;
292
+ }
293
+ const key = String(hubspotObjectTypeId);
294
+ const state = multiObjectStore.getState();
295
+ const prependRows = state.objectsPrependData[key] ?? [];
296
+ const latest = prependRows[0];
297
+ if (!latest || !isLoadingPrependRow(latest)) {
298
+ return;
299
+ }
300
+ multiObjectStore.setState({
301
+ objectsPrependData: { ...state.objectsPrependData, [key]: prependRows.slice(1) }
302
+ });
303
+ },
304
+ async setMultiObjectPrependData(response, props) {
305
+ const key = getObjectKey(props);
306
+ const state = multiObjectStore.getState();
307
+ const tableResponse = state.objects[key];
308
+ let rows = state.objectsPrependData[key] ?? [];
309
+ if (tableResponse?.data?.total > 1) {
310
+ if (response === "loading") {
311
+ const row = tableResponse?.data?.results?.columns.reduce((acc, item) => {
312
+ if (!item.hidden) {
313
+ acc[item.key] = "loading";
314
+ }
315
+ return acc;
316
+ }, {});
317
+ rows = [row, ...rows];
318
+ } else if (response?.data) {
319
+ const data = response?.data;
320
+ if (!data) {
321
+ multiObjectStore.setState({
322
+ objectsPrependData: { ...state.objectsPrependData, [key]: [] }
323
+ });
324
+ return;
325
+ }
326
+ const row = Object.fromEntries(Object.entries(data).map(([k, value]) => [k, value?.value ?? value]));
327
+ rows = [...rows];
328
+ if (rows.length > 0) {
329
+ rows[0] = row;
330
+ } else {
331
+ rows.push(row);
332
+ }
333
+ }
334
+ }
335
+ multiObjectStore.setState({
336
+ objectsPrependData: { ...state.objectsPrependData, [key]: rows }
337
+ });
338
+ }
339
+ };
340
+
341
+ export { actions2 as actions, actions as actions2, multiObjectStore, objectStore };
342
+ //# sourceMappingURL=chunk-UCBM5ZFU.js.map
343
+ //# sourceMappingURL=chunk-UCBM5ZFU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/main/state/crm/use-object.ts","../src/main/state/crm/use-multi-object.ts"],"names":["actions"],"mappings":"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","file":"chunk-UCBM5ZFU.js","sourcesContent":["import { createStore } from './store'\n\nexport interface ObjectState {\n object: any\n id: string\n}\n\nconst OBJECT_DATA_META_KEYS = new Set(['createdAt', 'updatedAt', 'id'])\n\nexport const objectStore = createStore<ObjectState>({\n object: null,\n id: ''\n})\n\nfunction resolveRecordId(source: any, data?: any): string {\n const fromSource = source?.params?.id ?? source?.recordId ?? source?.id\n if (fromSource != null && fromSource !== '') {\n return String(fromSource)\n }\n\n const fromData = data?.id ?? data?.hs_object_id?.value ?? data?.hs_object_id\n if (fromData != null && fromData !== '') {\n return String(fromData)\n }\n\n return ''\n}\n\nfunction isObjectField(key: string, value: unknown): boolean {\n if (OBJECT_DATA_META_KEYS.has(key) || key === 'associations') {\n return false\n }\n\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return false\n }\n\n const field = value as Record<string, unknown>\n return 'fieldType' in field || 'isEditableField' in field || 'isPrimaryDisplayProperty' in field || 'value' in field\n}\n\nfunction mergeObjectFields(existing: Record<string, any>, data: Record<string, any>): Record<string, any> {\n const next = { ...existing }\n\n for (const [key, value] of Object.entries(data)) {\n if (!isObjectField(key, value)) {\n continue\n }\n\n const existingField = existing[key]\n next[key] =\n existingField != null && typeof existingField === 'object' && !Array.isArray(existingField)\n ? { ...existingField, ...(value as Record<string, unknown>) }\n : value\n }\n\n return next\n}\n\nfunction patchAssociationRecord(associations: Record<string, any>, recordId: string, data: Record<string, any>): Record<string, any> | null {\n for (const [key, group] of Object.entries(associations)) {\n const rows = group?.data\n if (!Array.isArray(rows)) {\n continue\n }\n\n const index = rows.findIndex((row: any) => resolveRecordId(row, row) === recordId)\n if (index === -1) {\n continue\n }\n\n const nextRows = [...rows]\n nextRows[index] = mergeObjectFields(rows[index] ?? {}, data)\n\n return {\n ...associations,\n [key]: {\n ...group,\n data: nextRows\n }\n }\n }\n\n return null\n}\n\nfunction resolveAssociationObjectTypeId(props?: any): string {\n const objectTypeId = props?.params?.hubspotObjectTypeId ?? props?.hubspotObjectTypeId\n return objectTypeId != null && objectTypeId !== '' ? String(objectTypeId) : ''\n}\n\nfunction findAssociationGroupKey(associations: Record<string, any>, objectTypeId: string): string | undefined {\n for (const [key, group] of Object.entries(associations)) {\n if (group?.objectTypeId != null && String(group.objectTypeId) === objectTypeId) {\n return key\n }\n }\n\n for (const key of Object.keys(associations)) {\n if (key === objectTypeId || key.startsWith(`${objectTypeId}_`)) {\n return key\n }\n }\n\n return undefined\n}\n\nfunction isLoadingAssociationRow(row: any): boolean {\n if (!row || typeof row !== 'object') {\n return false\n }\n\n const values = Object.values(row)\n if (values.length === 0) {\n return false\n }\n\n return values.every((value) => value === 'loading' || (value != null && typeof value === 'object' && !Array.isArray(value) && (value as any).value === 'loading'))\n}\n\nfunction toLoadingAssociationRow(template?: any): Record<string, any> {\n if (template != null && typeof template === 'object' && !Array.isArray(template)) {\n return Object.fromEntries(\n Object.entries(template).map(([key, value]) => {\n if (value != null && typeof value === 'object' && !Array.isArray(value) && 'value' in (value as object)) {\n return [key, { ...(value as Record<string, unknown>), value: 'loading' }]\n }\n\n return [key, 'loading']\n })\n )\n }\n\n return { name: { value: 'loading' } }\n}\n\nfunction toAssociationRow(data: Record<string, any>): Record<string, any> {\n const row: Record<string, any> = {}\n\n for (const [key, value] of Object.entries(data)) {\n if (!isObjectField(key, value)) {\n continue\n }\n\n row[key] = value\n }\n\n return row\n}\n\nfunction setAssociationGroup(state: ObjectState, associations: Record<string, any>, key: string, group: any, rows: any[], total?: number) {\n objectStore.setState({\n object: {\n ...state.object,\n data: {\n ...state.object.data,\n associations: {\n ...associations,\n [key]: {\n ...group,\n data: rows,\n ...(total != null ? { total } : {})\n }\n }\n }\n }\n })\n}\n\nexport const actions = {\n setObjectData(response: any, payload?: any) {\n const data = response?.data\n const id = resolveRecordId(payload, data)\n\n objectStore.setState({\n object: response ?? null,\n id\n })\n },\n\n updateObjectData(response: any, payload?: any) {\n const data = response?.data\n const recordId = resolveRecordId(payload, data)\n const state = objectStore.getState()\n\n if (!data || !state.object) {\n return response\n }\n\n const existingData = state.object.data ?? {}\n const associations = existingData.associations\n const isParentRecordUpdate = !state.id || !recordId || state.id === recordId\n\n if (!isParentRecordUpdate) {\n const nextAssociations = associations && typeof associations === 'object' ? patchAssociationRecord(associations, recordId, data) : null\n\n if (!nextAssociations) {\n return response\n }\n\n objectStore.setState({\n object: {\n ...state.object,\n data: {\n ...existingData,\n associations: nextAssociations\n }\n }\n })\n\n return response\n }\n\n const nextData = mergeObjectFields(existingData, data)\n\n objectStore.setState({\n object: {\n ...state.object,\n data: nextData,\n ...(response?.configurations != null ? { configurations: response.configurations } : {}),\n ...(response?.info != null ? { info: response.info } : {})\n },\n id: state.id || recordId\n })\n\n return response\n },\n\n async setObjectAssociationPrependData(response: any, props?: any) {\n const state = objectStore.getState()\n const associations = state.object?.data?.associations\n const objectTypeId = resolveAssociationObjectTypeId(props)\n\n if (!associations || typeof associations !== 'object' || !objectTypeId) {\n return\n }\n\n const key = findAssociationGroupKey(associations, objectTypeId)\n if (!key) {\n return\n }\n\n const group = associations[key]\n const rows = Array.isArray(group?.data) ? [...group.data] : []\n\n if (response === 'loading') {\n rows.unshift(toLoadingAssociationRow(rows[0]))\n setAssociationGroup(state, associations, key, group, rows)\n return\n }\n\n const data = response?.data\n if (!data) {\n return\n }\n\n const hadLoading = isLoadingAssociationRow(rows[0])\n const row = toAssociationRow(data)\n if (hadLoading) {\n rows[0] = row\n } else {\n rows.unshift(row)\n }\n\n const baseTotal = typeof group?.total === 'number' ? group.total : Math.max((Array.isArray(group?.data) ? group.data.length : 0) - (hadLoading ? 1 : 0), 0)\n setAssociationGroup(state, associations, key, group, rows, baseTotal + 1)\n },\n\n clearLatestObjectAssociationPrependData(props?: any) {\n const state = objectStore.getState()\n const associations = state.object?.data?.associations\n const objectTypeId = resolveAssociationObjectTypeId(props)\n\n if (!associations || typeof associations !== 'object' || !objectTypeId) {\n return\n }\n\n const key = findAssociationGroupKey(associations, objectTypeId)\n if (!key) {\n return\n }\n\n const group = associations[key]\n const rows = Array.isArray(group?.data) ? group.data : []\n if (rows.length === 0 || !isLoadingAssociationRow(rows[0])) {\n return\n }\n\n setAssociationGroup(state, associations, key, group, rows.slice(1))\n },\n\n clearObjectData() {\n objectStore.setState({\n object: null,\n id: ''\n })\n }\n}\n","import { createStore } from './store'\nimport { isLoadingPrependRow } from './prepend-row'\n\nexport interface MultiObjectTableState {\n objects: Record<string, any>\n objectsPrependData: Record<string, any[]>\n meta: Record<string, { selectedPipeline: string; viewType: string }>\n}\n\nexport const multiObjectStore = createStore<MultiObjectTableState>({\n objects: {},\n objectsPrependData: {},\n meta: {}\n})\n\nfunction getObjectKey(payload: any): string {\n return String(payload?.params?.hubspotObjectTypeId ?? '')\n}\n\nexport const actions = {\n setMultiObjectData(response: any, payload: any) {\n const key = getObjectKey(payload)\n const state = multiObjectStore.getState()\n\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 newPrependForKey = (state.objectsPrependData[key] ?? []).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 selectedPipeline = payload?.queryParams?.selectedPipeline ?? ''\n const viewType = response?.info?.viewType ?? ''\n const prevMeta = state.meta[key]\n\n if (response?.data?.total < 1 || payload?.queryParams?.componentName) {\n newPrependForKey = []\n }\n\n if (prevMeta?.viewType && prevMeta.viewType !== viewType) {\n newPrependForKey = []\n }\n\n if (prevMeta?.selectedPipeline && prevMeta.selectedPipeline !== selectedPipeline) {\n newPrependForKey = []\n }\n\n multiObjectStore.setState({\n objects: { ...state.objects, [key]: response },\n objectsPrependData: { ...state.objectsPrependData, [key]: newPrependForKey },\n meta: {\n ...state.meta,\n [key]: { selectedPipeline, viewType }\n }\n })\n },\n\n clearMultiObjectPrependData(hubspotObjectTypeId?: string) {\n const state = multiObjectStore.getState()\n\n if (!hubspotObjectTypeId) {\n multiObjectStore.setState({ objectsPrependData: {} })\n return\n }\n\n const key = String(hubspotObjectTypeId)\n const { [key]: _, ...rest } = state.objectsPrependData\n multiObjectStore.setState({ objectsPrependData: rest })\n },\n\n clearLatestMultiObjectPrependData(hubspotObjectTypeId?: string) {\n if (!hubspotObjectTypeId) {\n return\n }\n\n const key = String(hubspotObjectTypeId)\n const state = multiObjectStore.getState()\n const prependRows = state.objectsPrependData[key] ?? []\n const latest = prependRows[0]\n\n if (!latest || !isLoadingPrependRow(latest)) {\n return\n }\n\n multiObjectStore.setState({\n objectsPrependData: { ...state.objectsPrependData, [key]: prependRows.slice(1) }\n })\n },\n\n async setMultiObjectPrependData(response: any, props?: any) {\n const key = getObjectKey(props)\n const state = multiObjectStore.getState()\n const tableResponse = state.objects[key]\n let rows: any[] = state.objectsPrependData[key] ?? []\n\n if (tableResponse?.data?.total > 1) {\n if (response === 'loading') {\n const row = tableResponse?.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, ...rows]\n } else if (response?.data) {\n const data = response?.data\n if (!data) {\n multiObjectStore.setState({\n objectsPrependData: { ...state.objectsPrependData, [key]: [] }\n })\n return\n }\n\n const row = Object.fromEntries(Object.entries(data).map(([k, value]: any) => [k, value?.value ?? value]))\n\n rows = [...rows]\n if (rows.length > 0) {\n rows[0] = row\n } else {\n rows.push(row)\n }\n }\n }\n\n multiObjectStore.setState({\n objectsPrependData: { ...state.objectsPrependData, [key]: rows }\n })\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { getParamDetails, getRouteDetails, updateLink, getParam, decodeToBase64, generatePath, getPath, getRouteMenu, tableUiActions, ticketHubspotObjectTypeId, makePreviewParams, tableStore, actions2, userStore, isPipelineBoardObjectTypeId, tableUiStore, fileStore, actions7, emailStore, actions5, noteStore, actions4, resetAllStore, breadcrumbStage, isMessingParentLastItem, isMessingParent, generateUrl } from './chunk-X6NNUGP7.js';
1
+ import { getParamDetails, getRouteDetails, updateLink, getParam, decodeToBase64, generatePath, getPath, getRouteMenu, tableUiActions, ticketHubspotObjectTypeId, makePreviewParams, tableStore, actions2, userStore, isPipelineBoardObjectTypeId, tableUiStore, fileStore, actions7, emailStore, actions5, noteStore, actions4, resetAllStore, breadcrumbStage, isMessingParentLastItem, isMessingParent, generateUrl } from './chunk-T4YJV6MP.js';
2
2
  import { getRuntimeHttpClientApiDate, config, configureLogger, setIframeStorageMode, setRefreshBufferSeconds, setRefreshCallback, hydrateSessionRefreshState, logger, isHttpTracingEnabled, getAccessToken, sanitizeAxiosErrorData, classifyRefreshHttpError, shouldLogoutAfterRefreshFailure, setRefreshToken, storAccessToken, classifyRefreshResponseWithoutToken, storage, HUBSPOT_DATA, setRuntimeHttpClientHubContext, isServiceUnavailableError, refreshSession, ensureValidRefresh, HUB_ID, DEV_PORTAL_ID, PORTAL_ID, DEV_API_URL, isAccessTokenExpired } from './chunk-JVJMM4SZ.js';
3
3
  import { getClientType, configureStorageKeys } from './chunk-32ERSTFY.js';
4
4
  import { AuthErrorCode } from './chunk-COHBSTHF.js';
@@ -517,7 +517,7 @@ function initializeHttpClient(clientConfig) {
517
517
  migrateLegacyStorageKeys();
518
518
  }).catch(() => {
519
519
  });
520
- void import('./cross-tab-session-VJBW7BK6.js').then(({ installCrossTabSessionListener }) => {
520
+ void import('./cross-tab-session-QIUHW33Y.js').then(({ installCrossTabSessionListener }) => {
521
521
  installCrossTabSessionListener();
522
522
  }).catch(() => {
523
523
  });
@@ -1666,6 +1666,49 @@ async function purgeEngagementCachesInternal(options) {
1666
1666
  pollIntervalMs: options.pollIntervalMs
1667
1667
  });
1668
1668
  }
1669
+ async function purgeCrmAssociationCaches(options) {
1670
+ const parentObjectTypeId = options.parentObjectTypeId?.trim();
1671
+ const parentRecordId = options.parentRecordId?.trim();
1672
+ if (!parentObjectTypeId || !parentRecordId) {
1673
+ return {
1674
+ ok: false,
1675
+ errorCode: "VALIDATION",
1676
+ message: "parentObjectTypeId and parentRecordId are required"
1677
+ };
1678
+ }
1679
+ const childIds = [
1680
+ ...options.childObjectTypeIds ?? [],
1681
+ ...options.objectTypeId ? [options.objectTypeId] : []
1682
+ ].map((id) => String(id).trim()).filter((id, index, all) => id.length > 0 && all.indexOf(id) === index);
1683
+ const parentListQuery = {
1684
+ ...options.listQuery ?? { page: 1, limit: 10, view: "LIST" },
1685
+ parentObjectTypeId,
1686
+ parentObjectRecordId: parentRecordId
1687
+ };
1688
+ const listTargets = childIds.flatMap(
1689
+ (childId) => options.postCrmWrite ? buildPostWriteListPurgeTargets(childId, parentListQuery, options.recordIds) : [buildCrmListPurgeTarget(childId, parentListQuery, options.recordIds)]
1690
+ );
1691
+ const singleTarget = buildCrmSinglePurgeTarget(parentObjectTypeId, [parentRecordId], parentListQuery);
1692
+ const engagementViews = options.engagementViews?.filter(Boolean) ?? [];
1693
+ const engagementTargets = engagementViews.length > 0 ? [
1694
+ buildEngagementPurgeTarget(parentObjectTypeId, [parentRecordId], engagementViews, {
1695
+ listQuery: parentListQuery,
1696
+ fileIds: options.fileIds,
1697
+ engagementItemIds: options.engagementItemIds
1698
+ })
1699
+ ] : [];
1700
+ if (listTargets.length === 0 && engagementTargets.length === 0) {
1701
+ return purgeCrmCombined({
1702
+ ...options,
1703
+ targets: [singleTarget]
1704
+ });
1705
+ }
1706
+ return purgeCrmCombined({
1707
+ ...options,
1708
+ objectTypeId: childIds[0] ?? parentObjectTypeId,
1709
+ targets: mergePurgeTargets(...listTargets, singleTarget, ...engagementTargets)
1710
+ });
1711
+ }
1669
1712
  async function purgeCrmCombined(options) {
1670
1713
  const request = buildCachePurgeRequest(options.targets, {
1671
1714
  mode: options.mode,
@@ -1781,7 +1824,7 @@ var recordWriteContext = (paramsObject) => {
1781
1824
  });
1782
1825
  return Object.keys(context).length > 0 ? context : void 0;
1783
1826
  };
1784
- var triggerPostWriteListPurge = (props) => {
1827
+ var triggerPostWriteListPurge = async (props) => {
1785
1828
  const objectTypeId = props.hubspotObjectTypeId;
1786
1829
  if (!objectTypeId) {
1787
1830
  return;
@@ -1790,22 +1833,40 @@ var triggerPostWriteListPurge = (props) => {
1790
1833
  return;
1791
1834
  }
1792
1835
  const { queryParams, multiObjectsQueryParams } = tableStore.getState();
1836
+ const writeContext = recordWriteContext(props.paramsObject);
1793
1837
  const listQuery = resolveCrmListPurgeQuery({
1794
1838
  componentName: props.componentName,
1795
1839
  hubspotObjectTypeId: objectTypeId,
1796
1840
  tableQueryParams: queryParams,
1797
1841
  multiObjectsQueryParams,
1798
- writeContext: recordWriteContext(props.paramsObject)
1842
+ writeContext
1799
1843
  });
1800
1844
  const recordIds = props.recordId ? [String(props.recordId)] : void 0;
1801
- void purgeCrmListCacheAfterCrmWrite({
1802
- objectTypeId: String(objectTypeId),
1803
- listQuery,
1804
- recordIds,
1805
- waitForWarm: true,
1806
- pollTimeoutMs: 45e3
1807
- }).catch(() => {
1808
- });
1845
+ const parentObjectTypeId = writeContext?.parentObjectTypeId;
1846
+ const parentRecordId = writeContext?.parentObjectRecordId;
1847
+ try {
1848
+ if (parentObjectTypeId && parentRecordId) {
1849
+ await purgeCrmAssociationCaches({
1850
+ objectTypeId: String(objectTypeId),
1851
+ parentObjectTypeId,
1852
+ parentRecordId,
1853
+ listQuery,
1854
+ recordIds,
1855
+ postCrmWrite: true,
1856
+ waitForWarm: true,
1857
+ pollTimeoutMs: 45e3
1858
+ });
1859
+ return;
1860
+ }
1861
+ await purgeCrmListCacheAfterCrmWrite({
1862
+ objectTypeId: String(objectTypeId),
1863
+ listQuery,
1864
+ recordIds,
1865
+ waitForWarm: true,
1866
+ pollTimeoutMs: 45e3
1867
+ });
1868
+ } catch {
1869
+ }
1809
1870
  };
1810
1871
  var mergeRecordWriteBody = (payload, paramsObject, options) => {
1811
1872
  const base = { ...payload || {} };
@@ -2097,13 +2158,21 @@ var crmClient = {
2097
2158
  });
2098
2159
  const apiUrl = generateApiUrl({ route: API_ENDPOINTS.RECORDS_CREATE, params, queryParams });
2099
2160
  const response = await HttpClient.post(apiUrl, body);
2100
- if (props?.componentName !== "sidebarAssociation") {
2101
- triggerPostWriteListPurge({
2102
- hubspotObjectTypeId: props?.params?.hubspotObjectTypeId,
2103
- componentName: props?.componentName,
2104
- paramsObject,
2105
- recordId: extractHubspotRecordIdFromWriteResponse(response)
2106
- });
2161
+ const writeParams = {
2162
+ ...paramsObject,
2163
+ ...props?.queryParams && typeof props.queryParams === "object" ? props.queryParams : {},
2164
+ ...props?.params && typeof props.params === "object" ? props.params : {}
2165
+ };
2166
+ const purgeArgs = {
2167
+ hubspotObjectTypeId: props?.params?.hubspotObjectTypeId,
2168
+ componentName: props?.componentName,
2169
+ paramsObject: writeParams,
2170
+ recordId: extractHubspotRecordIdFromWriteResponse(response)
2171
+ };
2172
+ if (props?.componentName === "sidebarAssociation") {
2173
+ await triggerPostWriteListPurge(purgeArgs);
2174
+ } else {
2175
+ void triggerPostWriteListPurge(purgeArgs);
2107
2176
  }
2108
2177
  return response;
2109
2178
  },
@@ -2662,6 +2731,6 @@ function createMutation(mutationFn, options) {
2662
2731
  };
2663
2732
  }
2664
2733
 
2665
- export { API_ENDPOINTS, Client, HttpClient, applyContractApiDate, buildCachePurgeRequest, buildCrmListPurgeTarget, buildCrmSinglePurgeTarget, buildEngagementPurgeTarget, buildPortalConfigPurgeTarget, buildUserSessionPurgeTarget, createCachePurgeJob, createMutation, extractEngagementItemIdFromWriteResponse, extractHubspotRecordIdFromWriteResponse, generateApiUrl, getAuthRefreshToken, getConfiguredContractApiDate, getFieldErrors, getFormErrors, initializeHttpClient, mergePurgeTargets, navigationApi, purgeCrmCombined, purgeCrmDetailAndListAfterCrmWrite, purgeCrmListCache, purgeCrmListCacheAfterCrmWrite, purgeCrmObjectDataCache, purgeCrmRecordCache, purgeEngagementCaches, purgeEngagementCachesAfterCrmWrite, resolveCrmListPurgeQuery, resolveListTableParams, setEditorPreviewMockHandler, startVisibilityRefreshScheduler, stopVisibilityRefreshScheduler, toCachePurgeListQuery };
2666
- //# sourceMappingURL=chunk-JCYGLNF4.js.map
2667
- //# sourceMappingURL=chunk-JCYGLNF4.js.map
2734
+ export { API_ENDPOINTS, Client, HttpClient, applyContractApiDate, buildCachePurgeRequest, buildCrmListPurgeTarget, buildCrmSinglePurgeTarget, buildEngagementPurgeTarget, buildPortalConfigPurgeTarget, buildUserSessionPurgeTarget, createCachePurgeJob, createMutation, extractEngagementItemIdFromWriteResponse, extractHubspotRecordIdFromWriteResponse, generateApiUrl, getAuthRefreshToken, getConfiguredContractApiDate, getFieldErrors, getFormErrors, initializeHttpClient, mergePurgeTargets, navigationApi, purgeCrmAssociationCaches, purgeCrmCombined, purgeCrmDetailAndListAfterCrmWrite, purgeCrmListCache, purgeCrmListCacheAfterCrmWrite, purgeCrmObjectDataCache, purgeCrmRecordCache, purgeEngagementCaches, purgeEngagementCachesAfterCrmWrite, resolveCrmListPurgeQuery, resolveListTableParams, setEditorPreviewMockHandler, startVisibilityRefreshScheduler, stopVisibilityRefreshScheduler, toCachePurgeListQuery };
2735
+ //# sourceMappingURL=chunk-WRHS4HT3.js.map
2736
+ //# sourceMappingURL=chunk-WRHS4HT3.js.map