@flamingo-stack/openframe-frontend-core 0.0.291 → 0.0.292-snapshot.20260619040151
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-ODR6A6FC.js → chunk-26PKDALD.js} +7 -67
- package/dist/chunk-26PKDALD.js.map +1 -0
- package/dist/{chunk-EGSAB76W.js → chunk-2U2M2TG2.js} +4 -4
- package/dist/{chunk-EI4WALN2.cjs → chunk-4W7NYJ3B.cjs} +39 -29
- package/dist/chunk-4W7NYJ3B.cjs.map +1 -0
- package/dist/{chunk-KBKZYJRI.cjs → chunk-5E2HOSSH.cjs} +66 -19
- package/dist/chunk-5E2HOSSH.cjs.map +1 -0
- package/dist/{chunk-6BWZFRUG.cjs → chunk-6G2INVGG.cjs} +24 -22
- package/dist/chunk-6G2INVGG.cjs.map +1 -0
- package/dist/{chunk-7NM7DEUK.js → chunk-6GCI7JOE.js} +2 -2
- package/dist/{chunk-N6ZM5PYZ.js → chunk-7RIYT7ZH.js} +49 -2
- package/dist/chunk-7RIYT7ZH.js.map +1 -0
- package/dist/{chunk-AGRSALEN.js → chunk-BRNHX6C6.js} +15 -13
- package/dist/chunk-BRNHX6C6.js.map +1 -0
- package/dist/{chunk-Z2EOXZBW.js → chunk-DOMJSNXW.js} +262 -162
- package/dist/chunk-DOMJSNXW.js.map +1 -0
- package/dist/{chunk-7EYWERFT.js → chunk-E4XABBSU.js} +16 -8
- package/dist/{chunk-7EYWERFT.js.map → chunk-E4XABBSU.js.map} +1 -1
- package/dist/{chunk-ZLN6SM2U.js → chunk-EJXHZX2E.js} +3 -3
- package/dist/{chunk-3SDBXXDP.cjs → chunk-EYEW6PTA.cjs} +44 -36
- package/dist/chunk-EYEW6PTA.cjs.map +1 -0
- package/dist/{chunk-D4R2MUPA.js → chunk-FJDPUPXC.js} +5 -5
- package/dist/{chunk-VRSXJ5QJ.js → chunk-FQJK446R.js} +10 -3
- package/dist/chunk-FQJK446R.js.map +1 -0
- package/dist/{chunk-I6ZPGKZ2.cjs → chunk-FT4FCV7L.cjs} +6 -6
- package/dist/{chunk-I6ZPGKZ2.cjs.map → chunk-FT4FCV7L.cjs.map} +1 -1
- package/dist/{chunk-Y4JNA4W6.cjs → chunk-J54Z3OCR.cjs} +10 -3
- package/dist/chunk-J54Z3OCR.cjs.map +1 -0
- package/dist/{chunk-ZYBUFVQV.cjs → chunk-JSOMFVEV.cjs} +30 -30
- package/dist/{chunk-ZYBUFVQV.cjs.map → chunk-JSOMFVEV.cjs.map} +1 -1
- package/dist/{chunk-D6RK5YXX.cjs → chunk-KXCRGTRN.cjs} +10 -70
- package/dist/chunk-KXCRGTRN.cjs.map +1 -0
- package/dist/{chunk-5KD3S25X.cjs → chunk-LFGGF7OT.cjs} +139 -2
- package/dist/chunk-LFGGF7OT.cjs.map +1 -0
- package/dist/{chunk-R2KT5GDD.js → chunk-NSPOYUBH.js} +14 -4
- package/dist/chunk-NSPOYUBH.js.map +1 -0
- package/dist/{chunk-TYZEMPPH.js → chunk-OQ6X7ZOC.js} +138 -1
- package/dist/chunk-OQ6X7ZOC.js.map +1 -0
- package/dist/{chunk-2YSC3API.cjs → chunk-RJL6PIOK.cjs} +1091 -991
- package/dist/chunk-RJL6PIOK.cjs.map +1 -0
- package/dist/{chunk-CSL3ECOF.js → chunk-SOJCR63T.js} +4 -4
- package/dist/{chunk-BVNYQDZE.cjs → chunk-TYMUKFP2.cjs} +40 -40
- package/dist/{chunk-BVNYQDZE.cjs.map → chunk-TYMUKFP2.cjs.map} +1 -1
- package/dist/{chunk-VMRPM24G.cjs → chunk-VTY7S2QG.cjs} +25 -19
- package/dist/chunk-VTY7S2QG.cjs.map +1 -0
- package/dist/{chunk-Z4GAFSNM.cjs → chunk-X3TSMCKX.cjs} +12 -12
- package/dist/{chunk-Z4GAFSNM.cjs.map → chunk-X3TSMCKX.cjs.map} +1 -1
- package/dist/{chunk-RSIFEDZX.js → chunk-YICTMMXP.js} +13 -7
- package/dist/{chunk-RSIFEDZX.js.map → chunk-YICTMMXP.js.map} +1 -1
- package/dist/{chunk-EL5GCMPU.cjs → chunk-YIGPRLQY.cjs} +9 -9
- package/dist/{chunk-EL5GCMPU.cjs.map → chunk-YIGPRLQY.cjs.map} +1 -1
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.d.ts +15 -0
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/roadmap-card.d.ts +7 -1
- package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +9 -7
- package/dist/components/chat/index.cjs.map +1 -1
- 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 +8 -6
- package/dist/components/chat/remark-mention-chips.d.ts +30 -0
- package/dist/components/chat/remark-mention-chips.d.ts.map +1 -0
- package/dist/components/chat/types/api.types.d.ts +4 -0
- package/dist/components/chat/types/api.types.d.ts.map +1 -1
- package/dist/components/chat/types/component.types.d.ts +24 -0
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/chat/types/context-item.types.d.ts +5 -0
- package/dist/components/chat/types/context-item.types.d.ts.map +1 -1
- package/dist/components/chat/types/processing.types.d.ts +4 -0
- package/dist/components/chat/types/processing.types.d.ts.map +1 -1
- package/dist/components/chat/utils/chunk-parser.d.ts.map +1 -1
- package/dist/components/chat/utils/nav-anchor-props.d.ts +8 -3
- package/dist/components/chat/utils/nav-anchor-props.d.ts.map +1 -1
- package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +8 -8
- package/dist/components/contact/index.js +7 -7
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/embeds/index.cjs +8 -8
- package/dist/components/embeds/index.js +7 -7
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/index.cjs +8 -8
- package/dist/components/faq/index.js +7 -7
- package/dist/components/features/index.cjs +7 -7
- package/dist/components/features/index.js +6 -6
- package/dist/components/index.cjs +216 -193
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +52 -29
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +7 -7
- package/dist/components/navigation/index.js +6 -6
- package/dist/components/onboarding-guides/index.cjs +24 -24
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +8 -8
- package/dist/components/related-content/index.js +7 -7
- package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-row.d.ts +8 -1
- package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
- package/dist/components/tickets/help-center-card.d.ts +7 -1
- package/dist/components/tickets/help-center-card.d.ts.map +1 -1
- package/dist/components/tickets/help-center-list.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +82 -73
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +24 -15
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/tickets/ticket-center.d.ts.map +1 -1
- package/dist/components/tickets/ticket-row.d.ts +6 -1
- package/dist/components/tickets/ticket-row.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +9 -7
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +8 -6
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/components/ui/tag.d.ts +10 -1
- package/dist/components/ui/tag.d.ts.map +1 -1
- package/dist/hooks/index.cjs +5 -3
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -2
- package/dist/hooks/use-scroll-to-hash.d.ts +17 -0
- package/dist/hooks/use-scroll-to-hash.d.ts.map +1 -0
- package/dist/index.cjs +21 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -7
- package/dist/utils/dev-sections/dev-section-param-keys.d.ts +10 -0
- package/dist/utils/dev-sections/dev-section-param-keys.d.ts.map +1 -1
- package/dist/utils/index.cjs +92 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +88 -11
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/same-page-hash-nav.d.ts +37 -0
- package/dist/utils/same-page-hash-nav.d.ts.map +1 -0
- package/dist/utils/scroll-into-view.d.ts +12 -0
- package/dist/utils/scroll-into-view.d.ts.map +1 -1
- package/dist/utils/source-icons.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/chat-message-enhanced.tsx +71 -9
- package/src/components/chat/chat-message-list.tsx +2 -0
- package/src/components/chat/embeddable-chat.tsx +50 -6
- package/src/components/chat/entity-cards/roadmap-card.tsx +8 -1
- package/src/components/chat/hooks/use-realtime-chunk-processor.ts +1 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/remark-mention-chips.ts +72 -0
- package/src/components/chat/types/api.types.ts +1 -1
- package/src/components/chat/types/component.types.ts +18 -0
- package/src/components/chat/types/context-item.types.ts +5 -0
- package/src/components/chat/types/processing.types.ts +8 -1
- package/src/components/chat/utils/chunk-parser.ts +11 -0
- package/src/components/chat/utils/nav-anchor-props.ts +22 -4
- package/src/components/chat/utils/process-historical-messages.ts +22 -0
- package/src/components/docs/use-document-tree.ts +45 -3
- package/src/components/faq/faq-section.tsx +22 -9
- package/src/components/shared/delivery/delivery-lists.tsx +9 -0
- package/src/components/shared/delivery/delivery-row.tsx +15 -2
- package/src/components/shared/delivery/delivery-table.tsx +7 -1
- package/src/components/shared/roadmap/roadmap-grid.tsx +7 -0
- package/src/components/shared/roadmap/roadmap-view.tsx +11 -0
- package/src/components/tickets/help-center-card.tsx +9 -17
- package/src/components/tickets/help-center-list.tsx +13 -0
- package/src/components/tickets/ticket-center.tsx +2 -0
- package/src/components/tickets/ticket-row.tsx +7 -1
- package/src/components/ui/simple-markdown-renderer.tsx +14 -11
- package/src/components/ui/tag.tsx +12 -2
- package/src/hooks/index.ts +5 -0
- package/src/hooks/use-scroll-to-hash.ts +74 -0
- package/src/utils/.source-icons.md +1 -1
- package/src/utils/dev-sections/dev-section-param-keys.ts +14 -0
- package/src/utils/index.ts +17 -1
- package/src/utils/same-page-hash-nav.ts +115 -0
- package/src/utils/scroll-into-view.ts +51 -9
- package/src/utils/source-icons.ts +7 -1
- package/dist/chunk-2YSC3API.cjs.map +0 -1
- package/dist/chunk-3SDBXXDP.cjs.map +0 -1
- package/dist/chunk-5KD3S25X.cjs.map +0 -1
- package/dist/chunk-6BWZFRUG.cjs.map +0 -1
- package/dist/chunk-AGRSALEN.js.map +0 -1
- package/dist/chunk-D6RK5YXX.cjs.map +0 -1
- package/dist/chunk-EI4WALN2.cjs.map +0 -1
- package/dist/chunk-KBKZYJRI.cjs.map +0 -1
- package/dist/chunk-N6ZM5PYZ.js.map +0 -1
- package/dist/chunk-ODR6A6FC.js.map +0 -1
- package/dist/chunk-R2KT5GDD.js.map +0 -1
- package/dist/chunk-TYZEMPPH.js.map +0 -1
- package/dist/chunk-VMRPM24G.cjs.map +0 -1
- package/dist/chunk-VRSXJ5QJ.js.map +0 -1
- package/dist/chunk-Y4JNA4W6.cjs.map +0 -1
- package/dist/chunk-Z2EOXZBW.js.map +0 -1
- /package/dist/{chunk-EGSAB76W.js.map → chunk-2U2M2TG2.js.map} +0 -0
- /package/dist/{chunk-7NM7DEUK.js.map → chunk-6GCI7JOE.js.map} +0 -0
- /package/dist/{chunk-ZLN6SM2U.js.map → chunk-EJXHZX2E.js.map} +0 -0
- /package/dist/{chunk-D4R2MUPA.js.map → chunk-FJDPUPXC.js.map} +0 -0
- /package/dist/{chunk-CSL3ECOF.js.map → chunk-SOJCR63T.js.map} +0 -0
|
@@ -19,4 +19,14 @@ export declare const DEV_SECTION_PARAM_KEYS: {
|
|
|
19
19
|
/** Delivery (bug-fix / enhancement) task-type filter. */
|
|
20
20
|
readonly deliveryTaskType: "task_type";
|
|
21
21
|
};
|
|
22
|
+
/** Section keys that participate in `<section>-<id>` anchor IDs.
|
|
23
|
+
* The URL composer (`appendSearchAndHash` in hub `dev-section-url.ts`)
|
|
24
|
+
* and the row components (`DeliveryRow`, `RoadmapCard`, `HelpCenterCard`)
|
|
25
|
+
* both call `devSectionAnchorId` so the DOM `id` and the URL hash stay
|
|
26
|
+
* in lockstep — adding a new section means adding the literal here
|
|
27
|
+
* ONCE, not at every render site. */
|
|
28
|
+
export type DevSectionAnchorKind = 'roadmap' | 'delivery' | 'ticket';
|
|
29
|
+
/** Compose the canonical `<section>-<id>` anchor id used by the dev-center
|
|
30
|
+
* rows + URL composer. */
|
|
31
|
+
export declare function devSectionAnchorId(section: DevSectionAnchorKind, id: string): string;
|
|
22
32
|
//# sourceMappingURL=dev-section-param-keys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-section-param-keys.d.ts","sourceRoot":"","sources":["../../../src/utils/dev-sections/dev-section-param-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB;IACjC,iEAAiE;;IAEjE,uDAAuD;;IAEvD,8CAA8C;;IAE9C,yDAAyD;;CAEjD,CAAA"}
|
|
1
|
+
{"version":3,"file":"dev-section-param-keys.d.ts","sourceRoot":"","sources":["../../../src/utils/dev-sections/dev-section-param-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB;IACjC,iEAAiE;;IAEjE,uDAAuD;;IAEvD,8CAA8C;;IAE9C,yDAAyD;;CAEjD,CAAA;AAEV;;;;;sCAKsC;AACtC,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEpE;2BAC2B;AAC3B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEpF"}
|
package/dist/utils/index.cjs
CHANGED
|
@@ -1569,6 +1569,9 @@ var DEV_SECTION_PARAM_KEYS = {
|
|
|
1569
1569
|
/** Delivery (bug-fix / enhancement) task-type filter. */
|
|
1570
1570
|
deliveryTaskType: "task_type"
|
|
1571
1571
|
};
|
|
1572
|
+
function devSectionAnchorId(section, id) {
|
|
1573
|
+
return `${section}-${id}`;
|
|
1574
|
+
}
|
|
1572
1575
|
var OpenFrameLogoIcon = ({ className }) => React2.createElement(OpenFrameLogo, { className, upperPathColor: "currentColor" });
|
|
1573
1576
|
var ICON_REGISTRY = {
|
|
1574
1577
|
// lucide-react (kebab-case)
|
|
@@ -2615,7 +2618,13 @@ var SOURCE_LABELS_BY_TABLE = {
|
|
|
2615
2618
|
"github-pr-reviews-public": "OpenFrame PR Reviews",
|
|
2616
2619
|
// HubSpot
|
|
2617
2620
|
"hubspot-tickets": "HubSpot Tickets",
|
|
2618
|
-
"
|
|
2621
|
+
// Anon + self share the "Tickets" root so the chip vocabulary is
|
|
2622
|
+
// uniform across logged-out (everyone's resolved support tickets,
|
|
2623
|
+
// anonymized → "Tickets") and logged-in (user-scoped → "My Tickets")
|
|
2624
|
+
// surfaces. The full-PII `hubspot-tickets` entry above is product-hub
|
|
2625
|
+
// internal only (admin view), kept as "HubSpot Tickets" to flag the
|
|
2626
|
+
// distinct scope.
|
|
2627
|
+
"hubspot-tickets-anon": "Tickets",
|
|
2619
2628
|
"hubspot-tickets-self": "My Tickets",
|
|
2620
2629
|
// Communications
|
|
2621
2630
|
"slack-messages": "OpenMSP Community"
|
|
@@ -3308,22 +3317,34 @@ function cancelActiveScroll() {
|
|
|
3308
3317
|
}
|
|
3309
3318
|
}
|
|
3310
3319
|
var easeOutCubic = (t) => 1 - Math.pow(1 - t, 3);
|
|
3320
|
+
function getScrollableAncestor(el) {
|
|
3321
|
+
for (let node = el.parentElement; node; node = node.parentElement) {
|
|
3322
|
+
const overflowY = getComputedStyle(node).overflowY;
|
|
3323
|
+
if ((overflowY === "auto" || overflowY === "scroll" || overflowY === "overlay") && node.scrollHeight > node.clientHeight) {
|
|
3324
|
+
return node;
|
|
3325
|
+
}
|
|
3326
|
+
}
|
|
3327
|
+
return null;
|
|
3328
|
+
}
|
|
3311
3329
|
function scrollElementIntoView(target, options = {}) {
|
|
3312
3330
|
if (typeof window === "undefined" || !target) return;
|
|
3313
3331
|
const { headerOffset = 0, behavior = "smooth", adjustTargetY, durationMs = 320 } = options;
|
|
3332
|
+
const container = getScrollableAncestor(target);
|
|
3333
|
+
const readCurrent = () => container ? container.scrollTop : window.scrollY;
|
|
3334
|
+
const writeTo = (y) => {
|
|
3335
|
+
if (container) container.scrollTop = y;
|
|
3336
|
+
else window.scrollTo(0, y);
|
|
3337
|
+
};
|
|
3314
3338
|
const computeTarget = () => {
|
|
3315
|
-
const raw = target.getBoundingClientRect().top + window.scrollY - headerOffset;
|
|
3339
|
+
const raw = container ? container.scrollTop + (target.getBoundingClientRect().top - container.getBoundingClientRect().top) - headerOffset : target.getBoundingClientRect().top + window.scrollY - headerOffset;
|
|
3316
3340
|
const adjusted = adjustTargetY ? adjustTargetY(raw) : raw;
|
|
3317
|
-
const maxScroll = Math.max(
|
|
3318
|
-
0,
|
|
3319
|
-
document.documentElement.scrollHeight - window.innerHeight
|
|
3320
|
-
);
|
|
3341
|
+
const maxScroll = container ? Math.max(0, container.scrollHeight - container.clientHeight) : Math.max(0, document.documentElement.scrollHeight - window.innerHeight);
|
|
3321
3342
|
return Math.min(Math.max(0, adjusted), maxScroll);
|
|
3322
3343
|
};
|
|
3323
3344
|
cancelActiveScroll();
|
|
3324
3345
|
const prefersReduced = typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
3325
3346
|
if (behavior === "instant" || behavior === "auto" || prefersReduced) {
|
|
3326
|
-
|
|
3347
|
+
writeTo(computeTarget());
|
|
3327
3348
|
return;
|
|
3328
3349
|
}
|
|
3329
3350
|
let startY = null;
|
|
@@ -3337,17 +3358,17 @@ function scrollElementIntoView(target, options = {}) {
|
|
|
3337
3358
|
};
|
|
3338
3359
|
const step = (now) => {
|
|
3339
3360
|
if (startY === null) {
|
|
3340
|
-
startY =
|
|
3361
|
+
startY = readCurrent();
|
|
3341
3362
|
startTime = now;
|
|
3342
3363
|
}
|
|
3343
3364
|
const targetY = computeTarget();
|
|
3344
3365
|
const t = Math.min(1, (now - startTime) / durationMs);
|
|
3345
3366
|
const y = startY + (targetY - startY) * easeOutCubic(t);
|
|
3346
|
-
|
|
3367
|
+
writeTo(y);
|
|
3347
3368
|
if (t < 1) {
|
|
3348
3369
|
activeRaf = requestAnimationFrame(step);
|
|
3349
3370
|
} else {
|
|
3350
|
-
|
|
3371
|
+
writeTo(computeTarget());
|
|
3351
3372
|
activeRaf = 0;
|
|
3352
3373
|
if (teardownActive) {
|
|
3353
3374
|
teardownActive();
|
|
@@ -3358,6 +3379,62 @@ function scrollElementIntoView(target, options = {}) {
|
|
|
3358
3379
|
activeRaf = requestAnimationFrame(step);
|
|
3359
3380
|
}
|
|
3360
3381
|
|
|
3382
|
+
// src/utils/same-page-hash-nav.ts
|
|
3383
|
+
var STICKY_HEADER_OFFSET_PX = 96;
|
|
3384
|
+
var HUB_HEADER_OFFSET_PX = 80;
|
|
3385
|
+
function normalizeHashFragment(hash) {
|
|
3386
|
+
if (!hash) return "";
|
|
3387
|
+
const second = hash.indexOf("#", 1);
|
|
3388
|
+
return second < 0 ? hash : hash.slice(0, second);
|
|
3389
|
+
}
|
|
3390
|
+
function navigateSamePageHash(target, options = {}) {
|
|
3391
|
+
if (typeof window === "undefined") return false;
|
|
3392
|
+
const { headerOffset = 0, history: historyMode = "push" } = options;
|
|
3393
|
+
const normalizedTarget = target.startsWith("#") ? window.location.pathname + window.location.search + target : target;
|
|
3394
|
+
let url;
|
|
3395
|
+
try {
|
|
3396
|
+
url = new URL(normalizedTarget, window.location.href);
|
|
3397
|
+
} catch {
|
|
3398
|
+
return false;
|
|
3399
|
+
}
|
|
3400
|
+
if (url.origin !== window.location.origin || url.pathname !== window.location.pathname || url.search !== window.location.search) {
|
|
3401
|
+
return false;
|
|
3402
|
+
}
|
|
3403
|
+
const current = window.location.pathname + window.location.search + window.location.hash;
|
|
3404
|
+
const normalizedHash = normalizeHashFragment(url.hash);
|
|
3405
|
+
if (process.env.NODE_ENV === "development" && normalizedHash !== url.hash) {
|
|
3406
|
+
console.warn(
|
|
3407
|
+
`[navigateSamePageHash] malformed fragment "${url.hash}" \u2192 normalizing to "${normalizedHash}". Fix the upstream composer.`
|
|
3408
|
+
);
|
|
3409
|
+
}
|
|
3410
|
+
const next = url.pathname + url.search + normalizedHash;
|
|
3411
|
+
const id = normalizedHash && normalizedHash !== "#" ? normalizedHash.slice(1) : "";
|
|
3412
|
+
if (!id && next !== current) return false;
|
|
3413
|
+
if (next !== current) {
|
|
3414
|
+
const oldURL = window.location.href;
|
|
3415
|
+
if (historyMode === "replace") {
|
|
3416
|
+
window.history.replaceState(null, "", next);
|
|
3417
|
+
} else {
|
|
3418
|
+
window.history.pushState(null, "", next);
|
|
3419
|
+
}
|
|
3420
|
+
window.dispatchEvent(new HashChangeEvent("hashchange", {
|
|
3421
|
+
oldURL,
|
|
3422
|
+
newURL: window.location.href
|
|
3423
|
+
}));
|
|
3424
|
+
}
|
|
3425
|
+
const el = id ? document.getElementById(id) : null;
|
|
3426
|
+
if (id && !el && process.env.NODE_ENV === "development") {
|
|
3427
|
+
console.warn(
|
|
3428
|
+
`[navigateSamePageHash] anchor "#${id}" not found \u2014 scrolling to top.`
|
|
3429
|
+
);
|
|
3430
|
+
}
|
|
3431
|
+
scrollElementIntoView(el ?? document.documentElement, {
|
|
3432
|
+
behavior: "smooth",
|
|
3433
|
+
headerOffset
|
|
3434
|
+
});
|
|
3435
|
+
return true;
|
|
3436
|
+
}
|
|
3437
|
+
|
|
3361
3438
|
// src/utils/list-url.ts
|
|
3362
3439
|
var ALIASES = { blog_post_existing: "blog_post" };
|
|
3363
3440
|
function canonicalContentRefType(contentRefType) {
|
|
@@ -3828,6 +3905,7 @@ exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD;
|
|
|
3828
3905
|
exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS;
|
|
3829
3906
|
exports.HEX_PATTERN = HEX_PATTERN;
|
|
3830
3907
|
exports.HONEYPOT_FIELD = HONEYPOT_FIELD;
|
|
3908
|
+
exports.HUB_HEADER_OFFSET_PX = HUB_HEADER_OFFSET_PX;
|
|
3831
3909
|
exports.ICON_REGISTRY = ICON_REGISTRY;
|
|
3832
3910
|
exports.OPENFRAME_DEV_SECTIONS = OPENFRAME_DEV_SECTIONS;
|
|
3833
3911
|
exports.OS_PLATFORMS = OS_PLATFORMS;
|
|
@@ -3837,6 +3915,7 @@ exports.SCROLL_ANCHOR = SCROLL_ANCHOR;
|
|
|
3837
3915
|
exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY;
|
|
3838
3916
|
exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES;
|
|
3839
3917
|
exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE;
|
|
3918
|
+
exports.STICKY_HEADER_OFFSET_PX = STICKY_HEADER_OFFSET_PX;
|
|
3840
3919
|
exports.TICKET_STATUS_OPTIONS = TICKET_STATUS_OPTIONS;
|
|
3841
3920
|
exports.analyzeImageColor = analyzeImageColor;
|
|
3842
3921
|
exports.applyProxyAuth = applyProxyAuth;
|
|
@@ -3858,6 +3937,7 @@ exports.deepClone = deepClone;
|
|
|
3858
3937
|
exports.delay = delay;
|
|
3859
3938
|
exports.deriveActiveColor = deriveActiveColor;
|
|
3860
3939
|
exports.deriveHoverColor = deriveHoverColor;
|
|
3940
|
+
exports.devSectionAnchorId = devSectionAnchorId;
|
|
3861
3941
|
exports.embedAuthedFetch = embedAuthedFetch;
|
|
3862
3942
|
exports.escapeMarkdownInline = escapeMarkdownInline;
|
|
3863
3943
|
exports.evaluateHumanitySignals = evaluateHumanitySignals;
|
|
@@ -3981,8 +4061,10 @@ exports.isWithinMinutes = isWithinMinutes;
|
|
|
3981
4061
|
exports.makeComposeContentUrl = makeComposeContentUrl;
|
|
3982
4062
|
exports.markdownToPlainText = markdownToPlainText;
|
|
3983
4063
|
exports.nameInitials = nameInitials;
|
|
4064
|
+
exports.navigateSamePageHash = navigateSamePageHash;
|
|
3984
4065
|
exports.normalizeDocPath = normalizeDocPath;
|
|
3985
4066
|
exports.normalizeDomain = normalizeDomain;
|
|
4067
|
+
exports.normalizeHashFragment = normalizeHashFragment;
|
|
3986
4068
|
exports.normalizeIconKey = normalizeIconKey;
|
|
3987
4069
|
exports.normalizeOSType = normalizeOSType;
|
|
3988
4070
|
exports.normalizeToolType = normalizeToolType;
|