@powerhousedao/connect 2.5.0-dev.13 → 2.5.0-dev.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.env +1 -1
- package/dist/assets/{app-CfLgnxyV.js → app-hPryiyDI.js} +227 -58
- package/dist/assets/{app-CfLgnxyV.js.map → app-hPryiyDI.js.map} +1 -1
- package/dist/assets/{app-loader-Da3bAkvN.js → app-loader-DS5-Dfwa.js} +9 -8
- package/dist/assets/{app-loader-Da3bAkvN.js.map → app-loader-DS5-Dfwa.js.map} +1 -1
- package/dist/assets/{ccip-XyzcC2OO.js → ccip-DH547iaJ.js} +4 -4
- package/dist/assets/{ccip-XyzcC2OO.js.map → ccip-DH547iaJ.js.map} +1 -1
- package/dist/assets/{content-moRQPp_g.js → content-DlN34Bwh.js} +73 -72
- package/dist/assets/{content-moRQPp_g.js.map → content-DlN34Bwh.js.map} +1 -1
- package/dist/assets/{index-C5pmKsbl.js → index-6q7n6Ivh.js} +19 -12
- package/dist/assets/index-6q7n6Ivh.js.map +1 -0
- package/dist/assets/{index-BX6L7YIm.js → index-BJmNbekQ.js} +5 -5
- package/dist/assets/{index-BX6L7YIm.js.map → index-BJmNbekQ.js.map} +1 -1
- package/dist/assets/{index-CS-ArJoi.js → index-BUtFFErf.js} +4 -4
- package/dist/assets/{index-CS-ArJoi.js.map → index-BUtFFErf.js.map} +1 -1
- package/dist/assets/{index-47_dwZnB.js → index-CDh49cXw.js} +4 -4
- package/dist/assets/{index-47_dwZnB.js.map → index-CDh49cXw.js.map} +1 -1
- package/dist/assets/{index-DpU1evrL.js → index-CXBJ8Kyq.js} +4 -4
- package/dist/assets/{index-DpU1evrL.js.map → index-CXBJ8Kyq.js.map} +1 -1
- package/dist/assets/{main.DP5LHvly.js → main.CVpQ9ccT.js} +2 -2
- package/dist/assets/{main.DP5LHvly.js.map → main.CVpQ9ccT.js.map} +1 -1
- package/dist/assets/{nodefs-DPnN6Ar0.js → nodefs-DIvbXkeC.js} +4 -4
- package/dist/assets/{nodefs-DPnN6Ar0.js.map → nodefs-DIvbXkeC.js.map} +1 -1
- package/dist/assets/{opfs-ahp-CEfWDHTR.js → opfs-ahp-BsO_Wj5U.js} +4 -4
- package/dist/assets/{opfs-ahp-CEfWDHTR.js.map → opfs-ahp-BsO_Wj5U.js.map} +1 -1
- package/dist/assets/{reactor-analytics-CC_4d7Yq.js → reactor-analytics-B9_hqZG5.js} +21 -16
- package/dist/assets/reactor-analytics-B9_hqZG5.js.map +1 -0
- package/dist/assets/{router-CjiZKsCh.js → router-Be6-7U0G.js} +6 -6
- package/dist/assets/{router-CjiZKsCh.js.map → router-Be6-7U0G.js.map} +1 -1
- package/dist/index.html +2 -2
- package/dist/swEnv.js +1 -1
- package/dist/vite-envs.sh +3 -3
- package/package.json +10 -10
- package/dist/assets/index-C5pmKsbl.js.map +0 -1
- package/dist/assets/reactor-analytics-CC_4d7Yq.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { aP as BaseError, aQ as getUrl, aR as stringify, aS as decodeErrorResult, aT as isAddressEqual, aU as localBatchGatewayUrl, aV as localBatchGatewayRequest, aW as call, aX as concat, aY as encodeAbiParameters, aZ as HttpRequestError, a_ as isHex } from "./app-
|
|
2
|
-
import "./main.
|
|
1
|
+
import { aP as BaseError, aQ as getUrl, aR as stringify, aS as decodeErrorResult, aT as isAddressEqual, aU as localBatchGatewayUrl, aV as localBatchGatewayRequest, aW as call, aX as concat, aY as encodeAbiParameters, aZ as HttpRequestError, a_ as isHex } from "./app-hPryiyDI.js";
|
|
2
|
+
import "./main.CVpQ9ccT.js";
|
|
3
3
|
import "react/jsx-runtime";
|
|
4
4
|
import "react";
|
|
5
|
-
import "./app-loader-
|
|
5
|
+
import "./app-loader-DS5-Dfwa.js";
|
|
6
6
|
import "react-dom";
|
|
7
7
|
class OffchainLookupError extends BaseError {
|
|
8
8
|
constructor({ callbackSelector, cause, data, extraData, sender, urls }) {
|
|
@@ -165,4 +165,4 @@ export {
|
|
|
165
165
|
offchainLookupAbiItem,
|
|
166
166
|
offchainLookupSignature
|
|
167
167
|
};
|
|
168
|
-
//# sourceMappingURL=ccip-
|
|
168
|
+
//# sourceMappingURL=ccip-DH547iaJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ccip-
|
|
1
|
+
{"version":3,"file":"ccip-DH547iaJ.js","sources":["../../../../node_modules/.pnpm/viem@2.30.1_bufferutil@4.0.9_typescript@5.8.3_utf-8-validate@5.0.10_zod@3.25.28/node_modules/viem/_esm/errors/ccip.js","../../../../node_modules/.pnpm/viem@2.30.1_bufferutil@4.0.9_typescript@5.8.3_utf-8-validate@5.0.10_zod@3.25.28/node_modules/viem/_esm/utils/ccip.js"],"sourcesContent":["import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class OffchainLookupError extends BaseError {\n constructor({ callbackSelector, cause, data, extraData, sender, urls, }) {\n super(cause.shortMessage ||\n 'An error occurred while fetching for an offchain result.', {\n cause,\n metaMessages: [\n ...(cause.metaMessages || []),\n cause.metaMessages?.length ? '' : [],\n 'Offchain Gateway Call:',\n urls && [\n ' Gateway URL(s):',\n ...urls.map((url) => ` ${getUrl(url)}`),\n ],\n ` Sender: ${sender}`,\n ` Data: ${data}`,\n ` Callback selector: ${callbackSelector}`,\n ` Extra data: ${extraData}`,\n ].flat(),\n name: 'OffchainLookupError',\n });\n }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n constructor({ result, url }) {\n super('Offchain gateway response is malformed. Response data must be a hex value.', {\n metaMessages: [\n `Gateway URL: ${getUrl(url)}`,\n `Response: ${stringify(result)}`,\n ],\n name: 'OffchainLookupResponseMalformedError',\n });\n }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n constructor({ sender, to }) {\n super('Reverted sender address does not match target contract address (`to`).', {\n metaMessages: [\n `Contract address: ${to}`,\n `OffchainLookup sender address: ${sender}`,\n ],\n name: 'OffchainLookupSenderMismatchError',\n });\n }\n}\n//# sourceMappingURL=ccip.js.map","import { call } from '../actions/public/call.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { localBatchGatewayRequest, localBatchGatewayUrl, } from './ens/localBatchGatewayRequest.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n name: 'OffchainLookup',\n type: 'error',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'urls',\n type: 'string[]',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n {\n name: 'callbackFunction',\n type: 'bytes4',\n },\n {\n name: 'extraData',\n type: 'bytes',\n },\n ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n const { args } = decodeErrorResult({\n data,\n abi: [offchainLookupAbiItem],\n });\n const [sender, urls, callData, callbackSelector, extraData] = args;\n const { ccipRead } = client;\n const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function'\n ? ccipRead.request\n : ccipRequest;\n try {\n if (!isAddressEqual(to, sender))\n throw new OffchainLookupSenderMismatchError({ sender, to });\n const result = urls.includes(localBatchGatewayUrl)\n ? await localBatchGatewayRequest({\n data: callData,\n ccipRequest: ccipRequest_,\n })\n : await ccipRequest_({ data: callData, sender, urls });\n const { data: data_ } = await call(client, {\n blockNumber,\n blockTag,\n data: concat([\n callbackSelector,\n encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n ]),\n to,\n });\n return data_;\n }\n catch (err) {\n throw new OffchainLookupError({\n callbackSelector,\n cause: err,\n data,\n extraData,\n sender,\n urls,\n });\n }\n}\nexport async function ccipRequest({ data, sender, urls, }) {\n let error = new Error('An unknown error occurred.');\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n const method = url.includes('{data}') ? 'GET' : 'POST';\n const body = method === 'POST' ? { data, sender } : undefined;\n const headers = method === 'POST' ? { 'Content-Type': 'application/json' } : {};\n try {\n const response = await fetch(url.replace('{sender}', sender.toLowerCase()).replace('{data}', data), {\n body: JSON.stringify(body),\n headers,\n method,\n });\n let result;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n result = (await response.json()).data;\n }\n else {\n result = (await response.text());\n }\n if (!response.ok) {\n error = new HttpRequestError({\n body,\n details: result?.error\n ? stringify(result.error)\n : response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n continue;\n }\n if (!isHex(result)) {\n error = new OffchainLookupResponseMalformedError({\n result,\n url,\n });\n continue;\n }\n return result;\n }\n catch (err) {\n error = new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n }\n throw error;\n}\n//# sourceMappingURL=ccip.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment as Fragment$1 } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import React__default, { useState, useCallback, useMemo, useEffect, Fragment, useRef, useLayoutEffect, memo as memo$1, createElement, useSyncExternalStore, Suspense } from "react";
|
|
4
|
-
import { t as twMerge, B as Button, a$ as mergeClassNameProps, I as Icon, b0 as getDimensions, b1 as useDocumentDrives, h as useUiNodesContext, b2 as useDriveContext, b3 as FILE, H as ERROR, b4 as MISSING, G as CONFLICT, S as SUCCESS, b5 as SYNCING, b6 as INITIAL_SYNC, b7 as READ, b8 as nodeOptionsMap, b9 as defaultFileOptions, ba as ConnectDropdownMenu, bb as DELETE, bc as RENAME, bd as WRITE, be as DUPLICATE, bf as defaultFolderOptions, bg as useOnClickOutside, bh as useEventListener, bi as useCopyToClipboard, bj as Select, bk as Provider, bl as Root3, bm as Trigger, bn as Portal, bo as Content2, bp as UI_NODE, D as DRIVE, F as FILE$1, bq as validateInitialState, br as validateStateSchemaName, bs as validateModules, e as useDocumentDriveServer, k as useUnwrappedReactor, bt as useConnectDid, bu as useConnectCrypto, x as useTranslation, f as useModal, bv as useAtomValue, bw as themeAtom, bx as useUser, by as useUserPermissions$1, bz as useFileNodeDocument, bA as useGetDocumentModelModule, bB as exportFile, bC as addActionContext$1, bD as signOperation$1, bE as useHotkeys, bF as FOLDER, bG as DriveLayout, bH as DriveContextProvider, bI as SearchBar, V as
|
|
5
|
-
import { ad as buildSignedOperation, an as generateId$1, ax as isFolderNode, aB as generateNodesCopy, aC as copyNode, aA as moveNode, az as updateNode, ay as deleteNode, as as generateAddNodeAction, at as isFileNode, aw as addFolder, bV as garbageCollect, bW as sortOperations, bX as undo, bY as redo, $ as logger, bZ as openUrl, b_ as useDocumentDispatch$1, ak as module, ag as connectConfig } from "./app-loader-
|
|
6
|
-
import { E as ENSAvatar, u as useSwitchboard, a as ErrorBoundary, t as toast } from "./router-
|
|
4
|
+
import { t as twMerge, B as Button, a$ as mergeClassNameProps, I as Icon, b0 as getDimensions, b1 as useDocumentDrives, h as useUiNodesContext, b2 as useDriveContext, b3 as FILE, H as ERROR, b4 as MISSING, G as CONFLICT, S as SUCCESS, b5 as SYNCING, b6 as INITIAL_SYNC, b7 as READ, b8 as nodeOptionsMap, b9 as defaultFileOptions, ba as ConnectDropdownMenu, bb as DELETE, bc as RENAME, bd as WRITE, be as DUPLICATE, bf as defaultFolderOptions, bg as useOnClickOutside, bh as useEventListener, bi as useCopyToClipboard, bj as Select, bk as Provider, bl as Root3, bm as Trigger, bn as Portal, bo as Content2, bp as UI_NODE, D as DRIVE, F as FILE$1, bq as validateInitialState, br as validateStateSchemaName, bs as validateModules, e as useDocumentDriveServer, k as useUnwrappedReactor, bt as useConnectDid, bu as useConnectCrypto, x as useTranslation, f as useModal, bv as useAtomValue, bw as themeAtom, bx as useUser, by as useUserPermissions$1, bz as useFileNodeDocument, bA as useGetDocumentModelModule, bB as exportFile, bC as addActionContext$1, bD as signOperation$1, bE as useHotkeys, bF as FOLDER, bG as DriveLayout, bH as DriveContextProvider, bI as SearchBar, V as useAnalyticsStoreAsync, bJ as useQueryClient, u as useQuery, bK as AnalyticsPath, bL as useAnalyticsEngineAsync, bM as DateTime, bN as AnalyticsGranularity, bO as useGetEditor, bP as isSameDocument, w as useNavigate, A as useAsyncReactor, bQ as useFilteredDocumentModels, bR as useDriveEditor, K as useParams, y as useDocumentDrives$1 } from "./app-hPryiyDI.js";
|
|
5
|
+
import { ad as buildSignedOperation, an as generateId$1, ax as isFolderNode, aB as generateNodesCopy, aC as copyNode, aA as moveNode, az as updateNode, ay as deleteNode, as as generateAddNodeAction, at as isFileNode, aw as addFolder, bV as garbageCollect, bW as sortOperations, bX as undo, bY as redo, $ as logger, bZ as openUrl, b_ as useDocumentDispatch$1, ak as module, ag as connectConfig } from "./app-loader-DS5-Dfwa.js";
|
|
6
|
+
import { E as ENSAvatar, u as useSwitchboard, a as ErrorBoundary, t as toast } from "./router-Be6-7U0G.js";
|
|
7
7
|
import { flushSync } from "react-dom";
|
|
8
|
-
import "./main.
|
|
8
|
+
import "./main.CVpQ9ccT.js";
|
|
9
9
|
const PaginationButton = ({ active = false, ...props }) => {
|
|
10
10
|
const className = twMerge("h-8 min-w-8 border border-solid border-gray-300 bg-white px-3 py-1 text-xs text-gray-900 hover:bg-gray-100", !active && "border-0");
|
|
11
11
|
return jsx(Button, { color: "light", size: "small", ...mergeClassNameProps(props, className), children: props.children });
|
|
@@ -4214,20 +4214,22 @@ const GenericDriveExplorer = {
|
|
|
4214
4214
|
};
|
|
4215
4215
|
function useAnalyticsQueryWrapper(options) {
|
|
4216
4216
|
const { queryFn, ...queryOptions } = options;
|
|
4217
|
-
const store =
|
|
4218
|
-
const engine =
|
|
4217
|
+
const { data: store } = useAnalyticsStoreAsync();
|
|
4218
|
+
const { data: engine } = useAnalyticsEngineAsync();
|
|
4219
|
+
const enabled = ("enabled" in queryOptions ? queryOptions.enabled : true) && !!store && !!engine;
|
|
4219
4220
|
return useQuery({
|
|
4220
4221
|
...queryOptions,
|
|
4221
|
-
|
|
4222
|
+
enabled,
|
|
4223
|
+
queryFn: async () => {
|
|
4222
4224
|
if (!store || !engine) {
|
|
4223
4225
|
throw new Error("No analytics store available. Use within an AnalyticsProvider.");
|
|
4224
4226
|
}
|
|
4225
|
-
return queryFn({ store, engine });
|
|
4227
|
+
return await queryFn({ store, engine });
|
|
4226
4228
|
}
|
|
4227
4229
|
});
|
|
4228
4230
|
}
|
|
4229
4231
|
function useAnalyticsQuery(query, options) {
|
|
4230
|
-
const store =
|
|
4232
|
+
const { data: store } = useAnalyticsStoreAsync();
|
|
4231
4233
|
const { data: querySources } = useQuerySources(query);
|
|
4232
4234
|
const queryClient = useQueryClient();
|
|
4233
4235
|
const subscriptions = useRef([]);
|
|
@@ -4291,9 +4293,67 @@ const getBarSize = (value) => {
|
|
|
4291
4293
|
return 3;
|
|
4292
4294
|
return 4;
|
|
4293
4295
|
};
|
|
4296
|
+
function addItemsDividers(items) {
|
|
4297
|
+
if (!items.length)
|
|
4298
|
+
return [];
|
|
4299
|
+
const result = [];
|
|
4300
|
+
items.forEach((item, index) => {
|
|
4301
|
+
result.push(item);
|
|
4302
|
+
if (index < items.length - 1) {
|
|
4303
|
+
const currentDate = new Date(item.startDate);
|
|
4304
|
+
const nextDate = new Date(items[index + 1].startDate);
|
|
4305
|
+
const currentHour = currentDate.getHours();
|
|
4306
|
+
const nextHour = nextDate.getHours();
|
|
4307
|
+
const currentDay = currentDate.toDateString();
|
|
4308
|
+
const nextDay = nextDate.toDateString();
|
|
4309
|
+
if (currentDay !== nextDay || currentDay === nextDay && Math.abs(nextHour - currentHour) > 1) {
|
|
4310
|
+
result.push({
|
|
4311
|
+
id: `divider-${item.id}-${items[index + 1].id}`,
|
|
4312
|
+
type: "divider",
|
|
4313
|
+
revision: 0
|
|
4314
|
+
});
|
|
4315
|
+
}
|
|
4316
|
+
}
|
|
4317
|
+
});
|
|
4318
|
+
return result;
|
|
4319
|
+
}
|
|
4320
|
+
function metricsToItems(metrics) {
|
|
4321
|
+
if (!metrics)
|
|
4322
|
+
return [];
|
|
4323
|
+
const items = metrics.sort((a, b) => {
|
|
4324
|
+
const aDate = new Date(a.start);
|
|
4325
|
+
const bDate = new Date(b.start);
|
|
4326
|
+
return aDate.getTime() - bDate.getTime();
|
|
4327
|
+
}).filter((result) => {
|
|
4328
|
+
return result.rows.every((row) => row.value > 0);
|
|
4329
|
+
}).map((result) => {
|
|
4330
|
+
const { additions, deletions } = result.rows.reduce((acc, row) => {
|
|
4331
|
+
if (row.dimensions.changes.path === "changes/add") {
|
|
4332
|
+
acc.additions += row.value;
|
|
4333
|
+
} else if (row.dimensions.changes.path === "changes/remove") {
|
|
4334
|
+
acc.deletions += row.value;
|
|
4335
|
+
}
|
|
4336
|
+
return acc;
|
|
4337
|
+
}, { additions: 0, deletions: 0 });
|
|
4338
|
+
const startDate = new Date(result.start);
|
|
4339
|
+
return {
|
|
4340
|
+
id: startDate.toISOString(),
|
|
4341
|
+
type: "bar",
|
|
4342
|
+
addSize: getBarSize(additions),
|
|
4343
|
+
delSize: getBarSize(deletions),
|
|
4344
|
+
additions,
|
|
4345
|
+
deletions,
|
|
4346
|
+
timestamp: startDate.toISOString(),
|
|
4347
|
+
startDate,
|
|
4348
|
+
endDate: new Date(result.end),
|
|
4349
|
+
revision: 0
|
|
4350
|
+
};
|
|
4351
|
+
});
|
|
4352
|
+
return addItemsDividers(items);
|
|
4353
|
+
}
|
|
4294
4354
|
const useTimelineItems = (documentId, startTimestamp) => {
|
|
4295
4355
|
const start = startTimestamp ? DateTime.fromISO(startTimestamp) : DateTime.now().startOf("day");
|
|
4296
|
-
|
|
4356
|
+
return useAnalyticsQuery({
|
|
4297
4357
|
start,
|
|
4298
4358
|
end: DateTime.now().endOf("day"),
|
|
4299
4359
|
granularity: AnalyticsGranularity.Hourly,
|
|
@@ -4305,68 +4365,9 @@ const useTimelineItems = (documentId, startTimestamp) => {
|
|
|
4305
4365
|
lod: {
|
|
4306
4366
|
changes: 2
|
|
4307
4367
|
}
|
|
4368
|
+
}, {
|
|
4369
|
+
select: metricsToItems
|
|
4308
4370
|
});
|
|
4309
|
-
const mappedResult = useMemo(() => {
|
|
4310
|
-
if (!diffResult)
|
|
4311
|
-
return [];
|
|
4312
|
-
return diffResult.sort((a, b) => {
|
|
4313
|
-
const aDate = new Date(a.start);
|
|
4314
|
-
const bDate = new Date(b.start);
|
|
4315
|
-
return aDate.getTime() - bDate.getTime();
|
|
4316
|
-
}).filter((result) => {
|
|
4317
|
-
return result.rows.every((row) => row.value > 0);
|
|
4318
|
-
}).map((result) => {
|
|
4319
|
-
const { additions, deletions } = result.rows.reduce((acc, row) => {
|
|
4320
|
-
if (row.dimensions.changes.path === "changes/add") {
|
|
4321
|
-
acc.additions += row.value;
|
|
4322
|
-
} else if (row.dimensions.changes.path === "changes/remove") {
|
|
4323
|
-
acc.deletions += row.value;
|
|
4324
|
-
}
|
|
4325
|
-
return acc;
|
|
4326
|
-
}, { additions: 0, deletions: 0 });
|
|
4327
|
-
const startDate = new Date(result.start);
|
|
4328
|
-
return {
|
|
4329
|
-
id: startDate.toISOString(),
|
|
4330
|
-
type: "bar",
|
|
4331
|
-
addSize: getBarSize(additions),
|
|
4332
|
-
delSize: getBarSize(deletions),
|
|
4333
|
-
additions,
|
|
4334
|
-
deletions,
|
|
4335
|
-
timestamp: startDate.toISOString(),
|
|
4336
|
-
startDate,
|
|
4337
|
-
endDate: new Date(result.end),
|
|
4338
|
-
revision: 0
|
|
4339
|
-
};
|
|
4340
|
-
});
|
|
4341
|
-
}, [diffResult]);
|
|
4342
|
-
const resultWithDividers = useMemo(() => {
|
|
4343
|
-
if (!mappedResult.length)
|
|
4344
|
-
return [];
|
|
4345
|
-
const result = [];
|
|
4346
|
-
mappedResult.forEach((item, index) => {
|
|
4347
|
-
result.push(item);
|
|
4348
|
-
if (index < mappedResult.length - 1) {
|
|
4349
|
-
const currentDate = new Date(item.startDate);
|
|
4350
|
-
const nextDate = new Date(mappedResult[index + 1].startDate);
|
|
4351
|
-
const currentHour = currentDate.getHours();
|
|
4352
|
-
const nextHour = nextDate.getHours();
|
|
4353
|
-
const currentDay = currentDate.toDateString();
|
|
4354
|
-
const nextDay = nextDate.toDateString();
|
|
4355
|
-
if (currentDay !== nextDay || currentDay === nextDay && Math.abs(nextHour - currentHour) > 1) {
|
|
4356
|
-
result.push({
|
|
4357
|
-
id: `divider-${item.id}-${mappedResult[index + 1].id}`,
|
|
4358
|
-
type: "divider",
|
|
4359
|
-
revision: 0
|
|
4360
|
-
});
|
|
4361
|
-
}
|
|
4362
|
-
}
|
|
4363
|
-
});
|
|
4364
|
-
return result;
|
|
4365
|
-
}, [mappedResult]);
|
|
4366
|
-
return {
|
|
4367
|
-
isLoading,
|
|
4368
|
-
data: resultWithDividers
|
|
4369
|
-
};
|
|
4370
4371
|
};
|
|
4371
4372
|
const getRevisionFromDate = (startDate, endDate, operations = []) => {
|
|
4372
4373
|
if (!startDate || !endDate)
|
|
@@ -5111,4 +5112,4 @@ function Content() {
|
|
|
5111
5112
|
export {
|
|
5112
5113
|
Content as default
|
|
5113
5114
|
};
|
|
5114
|
-
//# sourceMappingURL=content-
|
|
5115
|
+
//# sourceMappingURL=content-DlN34Bwh.js.map
|