@flamingo-stack/openframe-frontend-core 0.0.718 → 0.0.720
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/{chunk-MIQLUUVF.cjs → chunk-2C72EWQR.cjs} +93 -29
- package/dist/{chunk-IWCPXJEE.js → chunk-3HZ6XSZC.js} +2 -4
- package/dist/{chunk-ZXCZYMN4.cjs → chunk-4SIZCHVZ.cjs} +13 -15
- package/dist/{chunk-BOTM373R.cjs → chunk-5XDCCQ4A.cjs} +15 -15
- package/dist/{chunk-DXCBOZVT.cjs → chunk-6BLN5WDS.cjs} +41 -41
- package/dist/{chunk-DCD5WZUF.js → chunk-6W46LVK4.js} +5 -5
- package/dist/{chunk-JHQ334WS.js → chunk-742BGXNX.js} +2 -0
- package/dist/{chunk-AECTRMGQ.cjs → chunk-7GRPR7XA.cjs} +13 -1
- package/dist/{chunk-45F7PXUI.js → chunk-7HYEQKN6.js} +6 -6
- package/dist/{chunk-N2PF5CFX.js → chunk-7IOU6BJE.js} +12 -11
- package/dist/{chunk-BWIN42ZA.cjs → chunk-7LPR4RZ3.cjs} +34 -36
- package/dist/chunk-AFTRPEXO.js +13 -0
- package/dist/{chunk-JPD4NXH6.js → chunk-AZRI4XBP.js} +1 -1
- package/dist/{chunk-4QFWGLZO.js → chunk-B2N4YX66.js} +1 -1
- package/dist/{chunk-QXZCLQNV.js → chunk-B5LNX4GZ.js} +2 -2
- package/dist/{chunk-GN4A7PMB.cjs → chunk-DHNJSQGX.cjs} +91 -91
- package/dist/{chunk-NDZ5ZXOQ.cjs → chunk-DOPOHO6H.cjs} +20 -20
- package/dist/{chunk-Z3CVSPO3.cjs → chunk-DYDDAA6O.cjs} +519 -518
- package/dist/{chunk-2RKFMUNW.cjs → chunk-EVMM3JE6.cjs} +64 -63
- package/dist/chunk-EWPR7662.cjs +13 -0
- package/dist/{chunk-AGVXKD4K.js → chunk-FSQQZFVG.js} +12 -0
- package/dist/{chunk-TTVOLEUS.js → chunk-GANIUMRU.js} +89 -2
- package/dist/{chunk-S2FUFMLW.cjs → chunk-HFEYEPOG.cjs} +27 -27
- package/dist/{chunk-LE5WKGJV.cjs → chunk-HTS46FFY.cjs} +3 -3
- package/dist/{chunk-6A43ZDWV.cjs → chunk-IL3ZWNM2.cjs} +4 -4
- package/dist/{chunk-PSVSEN4J.cjs → chunk-IMTY3GRR.cjs} +2 -0
- package/dist/{chunk-YC5COB5V.cjs → chunk-ISCZ6UNF.cjs} +85 -89
- package/dist/{chunk-XGHGGBM3.js → chunk-K2BYVPGR.js} +3 -3
- package/dist/{chunk-HWVUR735.cjs → chunk-KSGMZHVV.cjs} +2 -2
- package/dist/{chunk-SGFTTJKO.js → chunk-LO3KCLEF.js} +1 -1
- package/dist/{chunk-MA4Q5RBP.cjs → chunk-NYSMDM4J.cjs} +2 -2
- package/dist/{chunk-67QBMN4R.js → chunk-O3MKJU6A.js} +6 -6
- package/dist/{chunk-APJZBDQN.js → chunk-PSMJYZMV.js} +27 -26
- package/dist/{chunk-JH2SIWPQ.js → chunk-PXAKSPLZ.js} +1586 -1263
- package/dist/{chunk-TBCZCRQ5.js → chunk-Q5327DXK.js} +13 -17
- package/dist/{chunk-EZC2F5OT.cjs → chunk-QF464PPL.cjs} +39 -39
- package/dist/{chunk-UWQWMGJ7.cjs → chunk-RDP5UZXQ.cjs} +888 -565
- package/dist/{chunk-ETYLOZOB.cjs → chunk-RFUOIQSG.cjs} +100 -13
- package/dist/{chunk-DC4RTYWK.cjs → chunk-RZQGIWK3.cjs} +3 -3
- package/dist/{chunk-PQ6HBLZ7.js → chunk-TORERAXD.js} +105 -41
- package/dist/{chunk-6YPTUHM7.js → chunk-URW23QUM.js} +1 -1
- package/dist/{chunk-QBCDSTLE.cjs → chunk-UWJMDFDO.cjs} +18 -18
- package/dist/{chunk-YEMCCYIF.js → chunk-V6B2FBZK.js} +5 -5
- package/dist/{chunk-JIWMBIVZ.js → chunk-VBHGJFA3.js} +10 -10
- package/dist/{chunk-Z5UWW3Z2.cjs → chunk-VF2CJXZ2.cjs} +81 -65
- package/dist/{chunk-DEZDMTBM.js → chunk-VYVPII4W.js} +8 -10
- package/dist/{chunk-MM7MCIXL.js → chunk-VYZCKY5K.js} +9 -9
- package/dist/{chunk-E7YCPY7K.cjs → chunk-XSM46FHD.cjs} +3 -3
- package/dist/{chunk-NZ5BHDFZ.js → chunk-XW3Q623Q.js} +1 -1
- package/dist/{chunk-LOYPRJWA.js → chunk-YK3X74SF.js} +67 -51
- package/dist/{chunk-WALCXC7J.cjs → chunk-ZHD3F2TH.cjs} +3 -3
- package/dist/{chunk-KBJJQFYU.js → chunk-ZPHOQDAE.js} +1 -1
- package/dist/{cloud-tenants-TAKOWXLD.js → cloud-tenants-RKQRSDNE.js} +9 -9
- package/dist/{cloud-tenants-PFDF7O5U.cjs → cloud-tenants-UQZASXUB.cjs} +10 -10
- package/dist/components/case-studies/index.cjs +23 -23
- package/dist/components/case-studies/index.js +10 -10
- package/dist/components/chat/ask-prompts.d.ts +10 -2
- package/dist/components/chat/ask-prompts.d.ts.map +1 -1
- package/dist/components/chat/assistant-ask-prompts.d.ts +27 -0
- package/dist/components/chat/assistant-ask-prompts.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
- package/dist/components/chat/hooks/index.d.ts +1 -0
- package/dist/components/chat/hooks/index.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-ask-prompts.d.ts +63 -0
- package/dist/components/chat/hooks/use-ask-prompts.d.ts.map +1 -0
- package/dist/components/chat/index.cjs +23 -6
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +22 -5
- package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +11 -11
- package/dist/components/contact/index.js +10 -10
- package/dist/components/docs/index.cjs +14 -14
- package/dist/components/docs/index.js +13 -13
- package/dist/components/embeds/index.cjs +11 -11
- package/dist/components/embeds/index.js +10 -10
- package/dist/components/faq/faq-ask-card.d.ts +44 -0
- package/dist/components/faq/faq-ask-card.d.ts.map +1 -0
- package/dist/components/faq/faq-document-page.d.ts +5 -1
- package/dist/components/faq/faq-document-page.d.ts.map +1 -1
- package/dist/components/faq/faq-section.d.ts +18 -5
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/index.cjs +13 -12
- package/dist/components/faq/index.d.ts +1 -0
- package/dist/components/faq/index.d.ts.map +1 -1
- package/dist/components/faq/index.js +12 -11
- package/dist/components/features/auth/auth-benefits-panel.d.ts.map +1 -1
- package/dist/components/features/index.cjs +10 -10
- package/dist/components/features/index.js +9 -9
- package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -2
- package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +104 -105
- package/dist/components/help-center-pages/index.js +28 -29
- package/dist/components/help-center-pages/trust-center-page.d.ts +4 -1
- package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
- package/dist/components/index.cjs +109 -197
- package/dist/components/index.js +228 -316
- package/dist/components/meeting-scheduler/index.cjs +50 -51
- package/dist/components/meeting-scheduler/index.js +12 -13
- package/dist/components/navigation/index.cjs +13 -13
- package/dist/components/navigation/index.js +12 -12
- package/dist/components/navigation/mingo-ai-button.d.ts +1 -1
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +13 -14
- package/dist/components/onboarding-guides/index.js +12 -13
- package/dist/components/product-demo/index.cjs +7 -7
- package/dist/components/product-demo/index.js +7 -7
- package/dist/components/related-content/index.cjs +5 -7
- package/dist/components/related-content/index.js +4 -6
- package/dist/components/related-content/related-content-section.d.ts +6 -6
- package/dist/components/related-content/related-content-section.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +15 -15
- package/dist/components/tickets/index.js +14 -14
- package/dist/components/ui/index.cjs +26 -10
- package/dist/components/ui/index.js +25 -9
- package/dist/contexts/assistant-runtime-context.d.ts +74 -0
- package/dist/contexts/assistant-runtime-context.d.ts.map +1 -0
- package/dist/contexts/index.cjs +7 -1
- package/dist/contexts/index.d.ts +1 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/contexts/index.js +6 -0
- package/dist/{devices-KRCGZMGA.cjs → devices-7Q2EUM7B.cjs} +11 -11
- package/dist/{devices-LHEX7O5T.js → devices-U3Y4IIW4.js} +9 -9
- package/dist/hooks/index.cjs +3 -4
- package/dist/hooks/index.js +2 -3
- package/dist/hooks/use-self-fetch.d.ts +3 -0
- package/dist/hooks/use-self-fetch.d.ts.map +1 -1
- package/dist/index.cjs +34 -14
- package/dist/index.js +33 -13
- package/dist/{knowledge-RZSFNR33.js → knowledge-NST53EXE.js} +9 -9
- package/dist/{knowledge-KLVPVEYZ.cjs → knowledge-UYIZ74MA.cjs} +11 -11
- package/dist/{logs-OX3XTVL2.cjs → logs-HTH7X7KV.cjs} +18 -18
- package/dist/{logs-E5DOV5JO.js → logs-JVTRG232.js} +9 -9
- package/dist/{policies-MC2S4S5G.js → policies-DTXTRK56.js} +9 -9
- package/dist/{policies-FOSCIZGK.cjs → policies-MXK2HB4W.cjs} +14 -14
- package/dist/{remote-session-JQ2BPIE3.js → remote-session-LAJZKQBN.js} +3 -3
- package/dist/{remote-session-DRFE5XZE.cjs → remote-session-SKKF4PBV.cjs} +5 -5
- package/dist/{software-update-D4OEIH65.js → software-update-6RHMPM3W.js} +9 -9
- package/dist/{software-update-HOBSTWVO.cjs → software-update-P6BSM6HX.cjs} +14 -14
- package/dist/utils/index.cjs +26 -2
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +25 -3
- package/dist/utils/list-url.d.ts.map +1 -1
- package/dist/utils/source-icons.d.ts.map +1 -1
- package/dist/utils/trial.d.ts +18 -0
- package/dist/utils/trial.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/chat/ask-prompts.tsx +25 -3
- package/src/components/chat/assistant-ask-prompts.tsx +78 -0
- package/src/components/chat/entity-cards/dispatch.tsx +38 -4
- package/src/components/chat/hooks/index.ts +12 -0
- package/src/components/chat/hooks/use-ask-prompts.ts +188 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/utils/icon-library.tsx +6 -0
- package/src/components/faq/faq-ask-card.tsx +115 -0
- package/src/components/faq/faq-document-page.tsx +6 -1
- package/src/components/faq/faq-section.tsx +27 -5
- package/src/components/faq/index.ts +1 -0
- package/src/components/features/auth/auth-benefits-panel.tsx +5 -4
- package/src/components/features/remote-session/remote-desktop-view.tsx +86 -63
- package/src/components/help-center-pages/trust-center-page.tsx +5 -2
- package/src/components/navigation/mingo-ai-button.tsx +27 -6
- package/src/components/related-content/related-content-section.tsx +46 -47
- package/src/contexts/assistant-runtime-context.tsx +84 -0
- package/src/contexts/index.ts +9 -0
- package/src/hooks/use-self-fetch.ts +7 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/list-url.ts +4 -0
- package/src/utils/source-icons.ts +10 -2
- package/src/utils/trial.ts +19 -0
- package/dist/chunk-AUMKE74M.cjs +0 -16
- package/dist/chunk-G3GRYDMS.js +0 -16
- package/dist/chunk-GEDY7HQI.cjs +0 -85
- package/dist/chunk-YBQQNDC7.js +0 -85
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var _chunkGEDY7HQIcjs = require('./chunk-GEDY7HQI.cjs');
|
|
5
|
-
|
|
6
|
-
|
|
7
4
|
var _chunkWBNAEYTQcjs = require('./chunk-WBNAEYTQ.cjs');
|
|
8
5
|
|
|
9
6
|
|
|
@@ -39,10 +36,11 @@ var _chunkWBNAEYTQcjs = require('./chunk-WBNAEYTQ.cjs');
|
|
|
39
36
|
|
|
40
37
|
|
|
41
38
|
|
|
42
|
-
|
|
39
|
+
|
|
40
|
+
var _chunkRFUOIQSGcjs = require('./chunk-RFUOIQSG.cjs');
|
|
43
41
|
|
|
44
42
|
|
|
45
|
-
var
|
|
43
|
+
var _chunk7GRPR7XAcjs = require('./chunk-7GRPR7XA.cjs');
|
|
46
44
|
|
|
47
45
|
// src/components/related-content/related-content-section.tsx
|
|
48
46
|
var _react = require('react');
|
|
@@ -440,13 +438,13 @@ function cardEntry(definition) {
|
|
|
440
438
|
}
|
|
441
439
|
function programEntry(configKey) {
|
|
442
440
|
return cardEntry({
|
|
443
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
441
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.ProgramCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
|
|
444
442
|
decode: decodeProgramRow,
|
|
445
443
|
render: (item, ctx) => {
|
|
446
444
|
const config = _optionalChain([ctx, 'access', _2 => _2.extras, 'optionalAccess', _3 => _3.programConfigs, 'optionalAccess', _4 => _4[configKey]]);
|
|
447
445
|
if (!config) return null;
|
|
448
446
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
449
|
-
|
|
447
|
+
_chunkRFUOIQSGcjs.ProgramCard,
|
|
450
448
|
{
|
|
451
449
|
config,
|
|
452
450
|
item,
|
|
@@ -463,10 +461,10 @@ function programEntry(configKey) {
|
|
|
463
461
|
}
|
|
464
462
|
function roadmapEntry(cardType) {
|
|
465
463
|
return cardEntry({
|
|
466
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
464
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.RoadmapCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
|
|
467
465
|
decode: decodeRoadmapRow,
|
|
468
466
|
render: (item, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
469
|
-
|
|
467
|
+
_chunkRFUOIQSGcjs.RoadmapCard,
|
|
470
468
|
{
|
|
471
469
|
item,
|
|
472
470
|
href: ctx.href,
|
|
@@ -483,10 +481,10 @@ function roadmapEntry(cardType) {
|
|
|
483
481
|
}
|
|
484
482
|
var RELATED_CARD_REGISTRY = {
|
|
485
483
|
blog_post_existing: cardEntry({
|
|
486
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
484
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.BlogCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
|
|
487
485
|
decode: decodeBlogRow,
|
|
488
486
|
render: (post, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
489
|
-
|
|
487
|
+
_chunkRFUOIQSGcjs.BlogCard,
|
|
490
488
|
{
|
|
491
489
|
post,
|
|
492
490
|
size: ctx.legacySize,
|
|
@@ -498,10 +496,10 @@ var RELATED_CARD_REGISTRY = {
|
|
|
498
496
|
)
|
|
499
497
|
}),
|
|
500
498
|
case_study: cardEntry({
|
|
501
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
499
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.CaseStudyCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
|
|
502
500
|
decode: decodeCaseStudyRow,
|
|
503
501
|
render: (study, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
504
|
-
|
|
502
|
+
_chunkRFUOIQSGcjs.CaseStudyCard,
|
|
505
503
|
{
|
|
506
504
|
study,
|
|
507
505
|
size: ctx.legacySize,
|
|
@@ -513,10 +511,10 @@ var RELATED_CARD_REGISTRY = {
|
|
|
513
511
|
)
|
|
514
512
|
}),
|
|
515
513
|
customer_interview: cardEntry({
|
|
516
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
514
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.CustomerInterviewCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
|
|
517
515
|
decode: decodeCustomerInterviewRow,
|
|
518
516
|
render: (interview, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
519
|
-
|
|
517
|
+
_chunkRFUOIQSGcjs.CustomerInterviewCard,
|
|
520
518
|
{
|
|
521
519
|
interview,
|
|
522
520
|
size: ctx.legacySize,
|
|
@@ -534,13 +532,13 @@ var RELATED_CARD_REGISTRY = {
|
|
|
534
532
|
* record, and the three props the rail sets itself are read off it.
|
|
535
533
|
*/
|
|
536
534
|
product_release: cardEntry({
|
|
537
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
535
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.ProductReleaseCardSkeleton, { size: size === "sm" ? "sm" : "lg" }),
|
|
538
536
|
decode: asRecord,
|
|
539
537
|
render: (release, ctx) => {
|
|
540
|
-
const buildReleaseProps = _nullishCoalesce(_optionalChain([ctx, 'access', _5 => _5.extras, 'optionalAccess', _6 => _6.buildProductReleaseCardProps]), () => (
|
|
538
|
+
const buildReleaseProps = _nullishCoalesce(_optionalChain([ctx, 'access', _5 => _5.extras, 'optionalAccess', _6 => _6.buildProductReleaseCardProps]), () => ( _chunkRFUOIQSGcjs.buildProductReleaseCardProps));
|
|
541
539
|
const releaseProps = buildReleaseProps(release);
|
|
542
540
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
543
|
-
|
|
541
|
+
_chunkRFUOIQSGcjs.ProductReleaseCard,
|
|
544
542
|
{
|
|
545
543
|
size: ctx.size === "sm" ? "sm" : "lg",
|
|
546
544
|
title: str(release, "title"),
|
|
@@ -556,10 +554,10 @@ var RELATED_CARD_REGISTRY = {
|
|
|
556
554
|
webinar: programEntry("webinar"),
|
|
557
555
|
event: programEntry("event"),
|
|
558
556
|
investor_update: cardEntry({
|
|
559
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
557
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.InvestorUpdateCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
|
|
560
558
|
decode: decodeInvestorUpdateRow,
|
|
561
559
|
render: (update, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
562
|
-
|
|
560
|
+
_chunkRFUOIQSGcjs.InvestorUpdateCard,
|
|
563
561
|
{
|
|
564
562
|
update,
|
|
565
563
|
size: ctx.legacySize,
|
|
@@ -574,10 +572,10 @@ var RELATED_CARD_REGISTRY = {
|
|
|
574
572
|
* step-numbered 'default' variant is for the guide detail page's "More in
|
|
575
573
|
* section" rail, not this full-width row. */
|
|
576
574
|
onboarding_guide: cardEntry({
|
|
577
|
-
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
575
|
+
skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.OnboardingGuideCardSkeleton, { size: size === "sm" ? "sm" : "catalog" }),
|
|
578
576
|
decode: decodeOnboardingGuideRow,
|
|
579
577
|
render: (guide, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
580
|
-
|
|
578
|
+
_chunkRFUOIQSGcjs.OnboardingGuideCard,
|
|
581
579
|
{
|
|
582
580
|
guide,
|
|
583
581
|
size: ctx.size === "sm" ? "sm" : "catalog",
|
|
@@ -594,10 +592,10 @@ var RELATED_CARD_REGISTRY = {
|
|
|
594
592
|
* href: an object with `href: undefined` is still truthy and would wrap the
|
|
595
593
|
* card in a dead <a>. */
|
|
596
594
|
what_i_shipped: cardEntry({
|
|
597
|
-
skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
595
|
+
skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.WhatIShippedCardSkeleton, {}),
|
|
598
596
|
decode: decodeEmployeeEntryRow,
|
|
599
597
|
render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
600
|
-
|
|
598
|
+
_chunkRFUOIQSGcjs.WhatIShippedCard,
|
|
601
599
|
{
|
|
602
600
|
entry,
|
|
603
601
|
placeholderUrl: ctx.placeholderUrl,
|
|
@@ -607,10 +605,10 @@ var RELATED_CARD_REGISTRY = {
|
|
|
607
605
|
}),
|
|
608
606
|
/** Same shared employee-entry shape + anchor contract as What I Shipped. */
|
|
609
607
|
how_i_work: cardEntry({
|
|
610
|
-
skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
608
|
+
skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.HowIWorkCardSkeleton, {}),
|
|
611
609
|
decode: decodeEmployeeEntryRow,
|
|
612
610
|
render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
613
|
-
|
|
611
|
+
_chunkRFUOIQSGcjs.HowIWorkCard,
|
|
614
612
|
{
|
|
615
613
|
entry,
|
|
616
614
|
placeholderUrl: ctx.placeholderUrl,
|
|
@@ -620,10 +618,10 @@ var RELATED_CARD_REGISTRY = {
|
|
|
620
618
|
}),
|
|
621
619
|
/** Same shared employee-entry shape + anchor contract as What I Shipped. */
|
|
622
620
|
ai_prompt: cardEntry({
|
|
623
|
-
skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
621
|
+
skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRFUOIQSGcjs.AiPromptCardSkeleton, {}),
|
|
624
622
|
decode: decodeEmployeeEntryRow,
|
|
625
623
|
render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
626
|
-
|
|
624
|
+
_chunkRFUOIQSGcjs.AiPromptCard,
|
|
627
625
|
{
|
|
628
626
|
entry,
|
|
629
627
|
placeholderUrl: ctx.placeholderUrl,
|
|
@@ -644,7 +642,7 @@ function DefaultLinkPropsProvider({
|
|
|
644
642
|
children
|
|
645
643
|
}) {
|
|
646
644
|
if (!href) return children(null);
|
|
647
|
-
const newTab =
|
|
645
|
+
const newTab = _chunkRFUOIQSGcjs.decideNewTab.call(void 0, { href, targetPlatform, currentSource: "" });
|
|
648
646
|
return children(newTab ? { href, target: "_blank", rel: "noopener noreferrer" } : { href });
|
|
649
647
|
}
|
|
650
648
|
function defaultResolveHref(ref) {
|
|
@@ -700,15 +698,20 @@ function CardForType({
|
|
|
700
698
|
function useGroupItems(type, refs, buildUrl) {
|
|
701
699
|
const ids = refs.map((r) => r.id);
|
|
702
700
|
const url = ids.length > 0 ? buildUrl(type, ids) : null;
|
|
703
|
-
const
|
|
704
|
-
const
|
|
705
|
-
|
|
701
|
+
const [pages, setPages] = _react.useState.call(void 0, () => /* @__PURE__ */ new Map());
|
|
702
|
+
const cached = url !== null ? pages.get(url) : void 0;
|
|
703
|
+
const { data, dataUrl, error } = _chunkRFUOIQSGcjs.useSelfFetch.call(void 0, cached ? null : url);
|
|
704
|
+
if (data != null && dataUrl !== null && !pages.has(dataUrl)) {
|
|
705
|
+
setPages(new Map(pages).set(dataUrl, _chunkRFUOIQSGcjs.extractItems.call(void 0, data)));
|
|
706
|
+
}
|
|
707
|
+
if (url === null) return { items: null, isLoading: false };
|
|
708
|
+
return { items: _nullishCoalesce(cached, () => ( (error ? [] : null))), isLoading: !cached && !error };
|
|
706
709
|
}
|
|
707
710
|
function gridClassFor(columns) {
|
|
708
711
|
return columns === 3 ? "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6" : "grid grid-cols-1 sm:grid-cols-2 gap-6";
|
|
709
712
|
}
|
|
710
713
|
function resolveGroupConfig(type) {
|
|
711
|
-
return _nullishCoalesce(
|
|
714
|
+
return _nullishCoalesce(_chunkRFUOIQSGcjs.CONTENT_REF_GROUPS[type], () => ( {
|
|
712
715
|
label: type,
|
|
713
716
|
order: 999,
|
|
714
717
|
layout: "grid",
|
|
@@ -727,38 +730,36 @@ function ContentGroup({
|
|
|
727
730
|
adminCampaignCard,
|
|
728
731
|
heading
|
|
729
732
|
}) {
|
|
730
|
-
const { items, isLoading } = useGroupItems(type, refs, buildUrl);
|
|
731
733
|
const config = resolveGroupConfig(type);
|
|
732
734
|
const isListLayout = config.layout === "list";
|
|
733
735
|
const cardSize = config.gridSize;
|
|
734
736
|
const [page, setPage] = _react.useState.call(void 0, 1);
|
|
735
737
|
const refsKey = refs.map((r) => r.id).join("|");
|
|
736
|
-
const
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
const
|
|
744
|
-
const
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
if (isLoading && !items) {
|
|
748
|
-
const skeletons = visibleGroupRefs.map((r) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: renderSkeletonForType(type, cardSize, adminCampaignCard) }, r.id));
|
|
738
|
+
const [pagedRefsKey, setPagedRefsKey] = _react.useState.call(void 0, refsKey);
|
|
739
|
+
if (pagedRefsKey !== refsKey) {
|
|
740
|
+
setPagedRefsKey(refsKey);
|
|
741
|
+
setPage(1);
|
|
742
|
+
}
|
|
743
|
+
const totalGroupPages = _chunk7GRPR7XAcjs.pageCount.call(void 0, refs.length, GROUP_PAGE_SIZE);
|
|
744
|
+
const pageRefs = refs.slice((page - 1) * GROUP_PAGE_SIZE, page * GROUP_PAGE_SIZE);
|
|
745
|
+
const { items, isLoading } = useGroupItems(type, pageRefs, buildUrl);
|
|
746
|
+
const groupPagination = totalGroupPages > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWBNAEYTQcjs.Pagination, { currentPage: page, totalPages: totalGroupPages, onPageChange: setPage }) : null;
|
|
747
|
+
if (isLoading) {
|
|
748
|
+
const skeletons = pageRefs.map((r) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: renderSkeletonForType(type, cardSize, adminCampaignCard) }, r.id));
|
|
749
749
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
|
|
750
750
|
heading,
|
|
751
|
-
isListLayout ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-4", children: skeletons }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: gridClassFor(columns), children: skeletons })
|
|
751
|
+
isListLayout ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-4", children: skeletons }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: gridClassFor(columns), children: skeletons }),
|
|
752
|
+
groupPagination
|
|
752
753
|
] });
|
|
753
754
|
}
|
|
754
|
-
if (!items
|
|
755
|
+
if (!items) return null;
|
|
755
756
|
const rowKey = (it) => {
|
|
756
|
-
const extracted =
|
|
757
|
+
const extracted = _chunkRFUOIQSGcjs.extractItemId.call(void 0, type, it);
|
|
757
758
|
if (extracted !== null) return extracted;
|
|
758
759
|
return String(typeof it === "object" && it !== null ? it.id : void 0);
|
|
759
760
|
};
|
|
760
761
|
const itemById = new Map(items.map((it) => [rowKey(it), it]));
|
|
761
|
-
const cards =
|
|
762
|
+
const cards = pageRefs.map((contentRef) => {
|
|
762
763
|
const itemId = String(contentRef.id);
|
|
763
764
|
const item = itemById.get(itemId);
|
|
764
765
|
if (!item) return null;
|
|
@@ -821,11 +822,11 @@ function RelatedContentSection({
|
|
|
821
822
|
types: includeTypes !== void 0 ? includeTypes.join(",") : void 0,
|
|
822
823
|
excludeTypes: excludeTypes && excludeTypes.length > 0 ? excludeTypes.join(",") : void 0
|
|
823
824
|
};
|
|
824
|
-
const authorUrl = contentRefs === void 0 && authorId && !suggestionsDisabled ?
|
|
825
|
+
const authorUrl = contentRefs === void 0 && authorId && !suggestionsDisabled ? _chunkRFUOIQSGcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
|
|
825
826
|
apiBaseUrl,
|
|
826
827
|
extraParams: { authorId, ...typeFilterParams }
|
|
827
828
|
}) : null;
|
|
828
|
-
const suggestUrl = _nullishCoalesce(authorUrl, () => ( (contentRefs === void 0 && entityType && entityId !== void 0 && entityId !== null && entityId !== "" && !suggestionsDisabled ?
|
|
829
|
+
const suggestUrl = _nullishCoalesce(authorUrl, () => ( (contentRefs === void 0 && entityType && entityId !== void 0 && entityId !== null && entityId !== "" && !suggestionsDisabled ? _chunkRFUOIQSGcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
|
|
829
830
|
apiBaseUrl,
|
|
830
831
|
entityType,
|
|
831
832
|
entityId,
|
|
@@ -842,9 +843,9 @@ function RelatedContentSection({
|
|
|
842
843
|
() => !suggestionsDisabled && initialItems ? { refs: initialItems } : void 0,
|
|
843
844
|
[initialItems, suggestionsDisabled]
|
|
844
845
|
);
|
|
845
|
-
const { data, isLoading } =
|
|
846
|
+
const { data, isLoading } = _chunkRFUOIQSGcjs.useSelfFetch.call(void 0, suggestUrl, { initialData });
|
|
846
847
|
const effectiveBuildListUrl = _react.useMemo.call(void 0,
|
|
847
|
-
() => _nullishCoalesce(buildListUrl2, () => ( ((type, ids) =>
|
|
848
|
+
() => _nullishCoalesce(buildListUrl2, () => ( ((type, ids) => _chunkRFUOIQSGcjs.buildListUrl.call(void 0, type, ids, apiBaseUrl)))),
|
|
848
849
|
[buildListUrl2, apiBaseUrl]
|
|
849
850
|
);
|
|
850
851
|
const refs = _nullishCoalesce(_nullishCoalesce(contentRefs, () => ( _optionalChain([data, 'optionalAccess', _10 => _10.refs]))), () => ( []));
|
|
@@ -855,12 +856,12 @@ function RelatedContentSection({
|
|
|
855
856
|
if (isLoading) {
|
|
856
857
|
const skeletonType = _nullishCoalesce(_nullishCoalesce(_optionalChain([includeTypes, 'optionalAccess', _11 => _11[0]]), () => ( entityType)), () => ( "blog_post_existing"));
|
|
857
858
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-8", children: [
|
|
858
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children:
|
|
859
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children: _chunkRFUOIQSGcjs.accentSentenceMarks.call(void 0, title) }),
|
|
859
860
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: gridClassFor(columns), children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: renderSkeletonForType(skeletonType, "default", adminCampaignCard) }, i)) })
|
|
860
861
|
] });
|
|
861
862
|
}
|
|
862
863
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-8", children: [
|
|
863
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-bold text-ods-text-primary", children:
|
|
864
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-bold text-ods-text-primary", children: _chunkRFUOIQSGcjs.accentSentenceMarks.call(void 0, title) }),
|
|
864
865
|
_nullishCoalesce(emptyState, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: emptyStateText })))
|
|
865
866
|
] });
|
|
866
867
|
}
|
|
@@ -869,16 +870,16 @@ function RelatedContentSection({
|
|
|
869
870
|
if (!grouped[ref.type]) grouped[ref.type] = [];
|
|
870
871
|
grouped[ref.type].push(ref);
|
|
871
872
|
}
|
|
872
|
-
let orderedTypes =
|
|
873
|
+
let orderedTypes = _chunkRFUOIQSGcjs.orderContentRefTypes.call(void 0, Object.keys(grouped));
|
|
873
874
|
if (entityType) {
|
|
874
|
-
const canonicalEntityType =
|
|
875
|
-
const sameType = orderedTypes.filter((t) =>
|
|
875
|
+
const canonicalEntityType = _chunkRFUOIQSGcjs.canonicalContentRefType.call(void 0, entityType);
|
|
876
|
+
const sameType = orderedTypes.filter((t) => _chunkRFUOIQSGcjs.canonicalContentRefType.call(void 0, t) === canonicalEntityType);
|
|
876
877
|
if (sameType.length > 0) {
|
|
877
|
-
orderedTypes = [...sameType, ...orderedTypes.filter((t) =>
|
|
878
|
+
orderedTypes = [...sameType, ...orderedTypes.filter((t) => _chunkRFUOIQSGcjs.canonicalContentRefType.call(void 0, t) !== canonicalEntityType)];
|
|
878
879
|
}
|
|
879
880
|
}
|
|
880
881
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-8", children: [
|
|
881
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children:
|
|
882
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children: _chunkRFUOIQSGcjs.accentSentenceMarks.call(void 0, title) }),
|
|
882
883
|
orderedTypes.map((type) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
883
884
|
ContentGroup,
|
|
884
885
|
{
|
|
@@ -890,7 +891,7 @@ function RelatedContentSection({
|
|
|
890
891
|
LinkProvider,
|
|
891
892
|
extras,
|
|
892
893
|
adminCampaignCard,
|
|
893
|
-
heading: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children:
|
|
894
|
+
heading: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children: _chunkRFUOIQSGcjs.getContentRefLabelOrTitleCase.call(void 0, type) })
|
|
894
895
|
},
|
|
895
896
|
type
|
|
896
897
|
))
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
+
|
|
3
|
+
// src/contexts/assistant-runtime-context.tsx
|
|
4
|
+
var _react = require('react');
|
|
5
|
+
var AssistantRuntimeContext = _react.createContext.call(void 0, null);
|
|
6
|
+
function useAssistantRuntime() {
|
|
7
|
+
return _react.useContext.call(void 0, AssistantRuntimeContext);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.AssistantRuntimeContext = AssistantRuntimeContext; exports.useAssistantRuntime = useAssistantRuntime;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
useChatRuntime
|
|
4
4
|
} from "./chunk-E4ABZWTJ.js";
|
|
5
|
+
import {
|
|
6
|
+
embedAuthedFetch,
|
|
7
|
+
hasEmbedAuthAdapter
|
|
8
|
+
} from "./chunk-ADBE7QF3.js";
|
|
5
9
|
|
|
6
10
|
// src/hooks/ui/use-image-edge-color.ts
|
|
7
11
|
import { useState, useEffect } from "react";
|
|
@@ -313,8 +317,16 @@ function useOgPlaceholderUrl({
|
|
|
313
317
|
}, [endpoints, title, siteName, aspect, enabled]);
|
|
314
318
|
}
|
|
315
319
|
|
|
320
|
+
// src/utils/embed-content-fetch.ts
|
|
321
|
+
var contentFetch = (input, init) => {
|
|
322
|
+
if (!hasEmbedAuthAdapter()) return fetch(input, init);
|
|
323
|
+
const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
|
|
324
|
+
return embedAuthedFetch(url, init);
|
|
325
|
+
};
|
|
326
|
+
|
|
316
327
|
export {
|
|
317
328
|
useImageEdgeColor,
|
|
329
|
+
contentFetch,
|
|
318
330
|
positiveInt,
|
|
319
331
|
PAGE_PARAM_LIMITS,
|
|
320
332
|
pageCount,
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
AvatarStack,
|
|
7
7
|
resolveIcon
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-742BGXNX.js";
|
|
9
9
|
import {
|
|
10
10
|
SquareAvatar,
|
|
11
11
|
Tag,
|
|
@@ -25,10 +25,11 @@ import {
|
|
|
25
25
|
} from "./chunk-FBZMAPWO.js";
|
|
26
26
|
import {
|
|
27
27
|
NEAR_VIEWPORT_ROOT_MARGIN,
|
|
28
|
+
contentFetch,
|
|
28
29
|
useImageEdgeColor,
|
|
29
30
|
useNearViewport,
|
|
30
31
|
useOgPlaceholderUrl
|
|
31
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-FSQQZFVG.js";
|
|
32
33
|
import {
|
|
33
34
|
useChatRuntime
|
|
34
35
|
} from "./chunk-E4ABZWTJ.js";
|
|
@@ -1888,6 +1889,10 @@ var BUILDERS = {
|
|
|
1888
1889
|
design_doc: (ids, b) => `${b}/api/design-docs?ids=${ids.join(",")}`,
|
|
1889
1890
|
openframe_tenant: (ids, b) => `${b}/api/openframe-tenants?ids=${ids.join(",")}`,
|
|
1890
1891
|
prospect_call: (ids, b) => `${b}/api/prospect-calls?ids=${ids.join(",")}`,
|
|
1892
|
+
// The public website's own pages (live source; ChatRef-shaped items like the objects above).
|
|
1893
|
+
site_page: (ids, b) => `${b}/api/site-pages?ids=${ids.join(",")}`,
|
|
1894
|
+
// The OpenMSP vendor directory (indexed source).
|
|
1895
|
+
vendor: (ids, b) => `${b}/api/vendors/cards?ids=${ids.join(",")}`,
|
|
1891
1896
|
// Code intelligence — per-object card hydration, same `handleEntityCardList`
|
|
1892
1897
|
// shape as the internal objects above.
|
|
1893
1898
|
code_rule: (ids, b) => `${b}/api/code-rules/cards?ids=${ids.join(",")}`,
|
|
@@ -5318,6 +5323,87 @@ function ProgramCard({
|
|
|
5318
5323
|
] });
|
|
5319
5324
|
}
|
|
5320
5325
|
|
|
5326
|
+
// src/hooks/use-self-fetch.ts
|
|
5327
|
+
import { useEffect as useEffect7, useRef as useRef4, useState as useState10 } from "react";
|
|
5328
|
+
function useSelfFetch(url, options) {
|
|
5329
|
+
const initialData = options?.initialData;
|
|
5330
|
+
const revalidateOnVisibleAfterMs = options?.revalidateOnVisibleAfterMs;
|
|
5331
|
+
const [data, setData] = useState10(initialData ?? null);
|
|
5332
|
+
const [dataUrl, setDataUrl] = useState10(initialData !== void 0 ? url : null);
|
|
5333
|
+
const [isLoading, setIsLoading] = useState10(initialData === void 0 && url !== null);
|
|
5334
|
+
const [error, setError] = useState10(false);
|
|
5335
|
+
const [reloadKey, setReloadKey] = useState10(0);
|
|
5336
|
+
const [mountedAt] = useState10(() => Date.now());
|
|
5337
|
+
const dataAtRef = useRef4(initialData !== void 0 ? mountedAt : 0);
|
|
5338
|
+
const dataUrlRef = useRef4(initialData !== void 0 ? url : null);
|
|
5339
|
+
const [syncedProps, setSyncedProps] = useState10({ url, initialData });
|
|
5340
|
+
if (syncedProps.url !== url || syncedProps.initialData !== initialData) {
|
|
5341
|
+
setSyncedProps({ url, initialData });
|
|
5342
|
+
if (syncedProps.initialData !== initialData && initialData !== void 0) {
|
|
5343
|
+
setData(initialData);
|
|
5344
|
+
setDataUrl(url);
|
|
5345
|
+
}
|
|
5346
|
+
if (syncedProps.url !== url && url === null) {
|
|
5347
|
+
setIsLoading(false);
|
|
5348
|
+
}
|
|
5349
|
+
}
|
|
5350
|
+
useEffect7(() => {
|
|
5351
|
+
if (url === null) return void 0;
|
|
5352
|
+
if (dataUrlRef.current === url) return void 0;
|
|
5353
|
+
const ctrl = new AbortController();
|
|
5354
|
+
let cancelled = false;
|
|
5355
|
+
async function load() {
|
|
5356
|
+
try {
|
|
5357
|
+
setIsLoading(true);
|
|
5358
|
+
setError(false);
|
|
5359
|
+
const res = await contentFetch(url, { signal: ctrl.signal });
|
|
5360
|
+
if (!res.ok) throw new Error(`Request failed (${res.status})`);
|
|
5361
|
+
const json = await res.json();
|
|
5362
|
+
if (!cancelled) {
|
|
5363
|
+
setData(json);
|
|
5364
|
+
setDataUrl(url);
|
|
5365
|
+
dataUrlRef.current = url;
|
|
5366
|
+
dataAtRef.current = Date.now();
|
|
5367
|
+
}
|
|
5368
|
+
} catch (err) {
|
|
5369
|
+
if (cancelled || err?.name === "AbortError") return;
|
|
5370
|
+
setError(true);
|
|
5371
|
+
console.error("useSelfFetch:", url, err);
|
|
5372
|
+
} finally {
|
|
5373
|
+
if (!cancelled) setIsLoading(false);
|
|
5374
|
+
}
|
|
5375
|
+
}
|
|
5376
|
+
void load();
|
|
5377
|
+
return () => {
|
|
5378
|
+
cancelled = true;
|
|
5379
|
+
ctrl.abort();
|
|
5380
|
+
};
|
|
5381
|
+
}, [url, reloadKey]);
|
|
5382
|
+
const forceReload = () => {
|
|
5383
|
+
dataUrlRef.current = null;
|
|
5384
|
+
setReloadKey((k) => k + 1);
|
|
5385
|
+
};
|
|
5386
|
+
useEffect7(() => {
|
|
5387
|
+
if (!revalidateOnVisibleAfterMs || url === null) return void 0;
|
|
5388
|
+
const onVisible = () => {
|
|
5389
|
+
if (document.visibilityState !== "visible") return;
|
|
5390
|
+
if (Date.now() - dataAtRef.current < revalidateOnVisibleAfterMs) return;
|
|
5391
|
+
forceReload();
|
|
5392
|
+
};
|
|
5393
|
+
document.addEventListener("visibilitychange", onVisible);
|
|
5394
|
+
return () => document.removeEventListener("visibilitychange", onVisible);
|
|
5395
|
+
}, [url, revalidateOnVisibleAfterMs]);
|
|
5396
|
+
return {
|
|
5397
|
+
data,
|
|
5398
|
+
dataUrl,
|
|
5399
|
+
setData,
|
|
5400
|
+
isLoading,
|
|
5401
|
+
error,
|
|
5402
|
+
// Force a re-fetch of the current url (error-retry affordance).
|
|
5403
|
+
reload: forceReload
|
|
5404
|
+
};
|
|
5405
|
+
}
|
|
5406
|
+
|
|
5321
5407
|
export {
|
|
5322
5408
|
Card,
|
|
5323
5409
|
CardHeader,
|
|
@@ -5420,6 +5506,7 @@ export {
|
|
|
5420
5506
|
eventAudience,
|
|
5421
5507
|
programMetaFormatters,
|
|
5422
5508
|
PROGRAM_META_RENDERERS,
|
|
5509
|
+
useSelfFetch,
|
|
5423
5510
|
decideNewTab,
|
|
5424
5511
|
isSameOriginAbsoluteHref,
|
|
5425
5512
|
computeIsNewTab,
|