@bagelink/blox 1.20.31 → 1.20.36

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.
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "./PreviewApp.vue_vue_type_style_index_0_lang-B_1HZLks.js";
1
+ import { _ as _sfc_main } from "./PreviewApp.vue_vue_type_style_index_0_lang-BCjIJwcy.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BY4OFOi6.cjs");
3
+ const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BJuZ_Jwy.cjs");
4
4
  exports.default = PreviewApp_vue_vue_type_style_index_0_lang._sfc_main;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, inject, ref, h, provide, onMounted, onUnmounted, openBlock, createElementBlock, createVNode, unref, nextTick } from "vue";
2
- import { e as BLOX_REGISTRY_KEY, r as resolveBlockProps, u as useLocale, f as BLOX_RUNTIME_KEY } from "./appRuntime-DbIMo4Ow.js";
2
+ import { e as BLOX_REGISTRY_KEY, r as resolveBlockProps, u as useLocale, f as BLOX_RUNTIME_KEY } from "./appRuntime-BtCOb8Gp.js";
3
3
  function sendToEditor(msg) {
4
4
  window.parent.postMessage(cloneForPostMessage(msg), "*");
5
5
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
- const appRuntime = require("./appRuntime-7hLqxk2p.cjs");
3
+ const appRuntime = require("./appRuntime-C0h8E4nN.cjs");
4
4
  function sendToEditor(msg) {
5
5
  window.parent.postMessage(cloneForPostMessage(msg), "*");
6
6
  }
@@ -49,6 +49,31 @@ export interface AttributionOptions {
49
49
  maxAgeSeconds?: number;
50
50
  browser?: AttributionBrowser;
51
51
  }
52
+ interface CookiebotState {
53
+ consent?: {
54
+ marketing?: boolean;
55
+ };
56
+ consented?: boolean;
57
+ declined?: boolean;
58
+ hasResponse?: boolean;
59
+ }
60
+ /**
61
+ * Cookiebot's marketing choice, once the visitor has actually answered.
62
+ *
63
+ * An unanswered banner is not a denial. Consent Mode and Cookiebot both
64
+ * start as `marketing: false`, so reading that before the banner is answered
65
+ * would stamp every lead as denied. Until there is a response, return ''.
66
+ */
67
+ export declare function readAdConsent(cookiebot?: CookiebotState, cookie?: string): string;
68
+ /**
69
+ * Wait until Cookiebot has the visitor's answer, within a short cap.
70
+ *
71
+ * The banner is not on the page until the tag manager starts, which is after
72
+ * the first interaction. A form sent in that gap would otherwise record no
73
+ * choice. Returns immediately when the visitor already answered.
74
+ */
75
+ export declare function whenAdConsentKnown(): Promise<void>;
52
76
  /** Capture or read attribution and return a complete, empty-string-safe wire object. */
53
77
  export declare function captureAttribution(options?: AttributionOptions): AttributionSnapshot;
78
+ export {};
54
79
  //# sourceMappingURL=attribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../src/analytics/attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,yBAAyB,2JAG5B,CAAA;AAEV,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CAClB;AASD,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,MAAM,CAAA;IACjB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAC5B;AAwGD,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,mBAAmB,CAqDxF"}
1
+ {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../src/analytics/attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,yBAAyB,2JAG5B,CAAA;AAEV,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CAClB;AASD,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,MAAM,CAAA;IACjB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAC5B;AAqBD,UAAU,cAAc;IACvB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IACjC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC5B,SAAS,CAAC,EAAE,cAAc,EAC1B,MAAM,SAAK,GACT,MAAM,CAOR;AAcD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBlD;AA2ED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,mBAAmB,CAuDxF"}
@@ -809,8 +809,8 @@ class BloxInstance {
809
809
  router.addRoute({
810
810
  path: "/_blox_preview",
811
811
  name: BLOX_PREVIEW_ROUTE_NAME,
812
- component: () => import("./PreviewApp-DNvYww-1.js"),
813
- beforeEnter: () => typeof window === "undefined" || window.parent !== window ? true : "/"
812
+ component: () => import("./PreviewApp-BuieYD3_.js"),
813
+ beforeEnter: () => typeof window === "undefined" || window.self !== window.top ? true : "/"
814
814
  });
815
815
  }
816
816
  if (!router.hasRoute(BLOX_CMS_ROUTE_NAME)) {
@@ -810,8 +810,8 @@ class BloxInstance {
810
810
  router.addRoute({
811
811
  path: "/_blox_preview",
812
812
  name: BLOX_PREVIEW_ROUTE_NAME,
813
- component: () => Promise.resolve().then(() => require("./PreviewApp-B9zGzNoj.cjs")),
814
- beforeEnter: () => typeof window === "undefined" || window.parent !== window ? true : "/"
813
+ component: () => Promise.resolve().then(() => require("./PreviewApp-C9NowtfO.cjs")),
814
+ beforeEnter: () => typeof window === "undefined" || window.self !== window.top ? true : "/"
815
815
  });
816
816
  }
817
817
  if (!router.hasRoute(BLOX_CMS_ROUTE_NAME)) {
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const index = require("./index-De9SLPcI.cjs");
4
- const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BY4OFOi6.cjs");
5
- const appRuntime = require("./appRuntime-7hLqxk2p.cjs");
4
+ const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BJuZ_Jwy.cjs");
5
+ const appRuntime = require("./appRuntime-C0h8E4nN.cjs");
6
6
  const vue = require("vue");
7
7
  const ssg_client = require("./client-AoDTJJXJ.cjs");
8
8
  const vueRouter = require("vue-router");
@@ -480,11 +480,37 @@ function cookieMap(raw) {
480
480
  return name ? [[name, decodeURIComponent(parts.join("="))]] : [];
481
481
  }));
482
482
  }
483
+ function readAdConsent(cookiebot, cookie = "") {
484
+ var _a;
485
+ const answered = (cookiebot == null ? void 0 : cookiebot.consented) === true || (cookiebot == null ? void 0 : cookiebot.declined) === true || (cookiebot == null ? void 0 : cookiebot.hasResponse) === true || /(?:^|;\s*)CookieConsent=/.test(cookie);
486
+ if (!answered) return "";
487
+ return ((_a = cookiebot == null ? void 0 : cookiebot.consent) == null ? void 0 : _a.marketing) === true ? "granted" : "denied";
488
+ }
489
+ function currentCookiebot() {
490
+ return globalThis.Cookiebot;
491
+ }
483
492
  function defaultAdConsent() {
484
- var _a, _b;
485
- const target = globalThis;
486
- const marketing = (_b = (_a = target.Cookiebot) == null ? void 0 : _a.consent) == null ? void 0 : _b.marketing;
487
- return marketing === true ? "granted" : "denied";
493
+ const cookie = typeof document === "undefined" ? "" : document.cookie;
494
+ return readAdConsent(currentCookiebot(), cookie);
495
+ }
496
+ const CONSENT_EVENTS = ["CookiebotOnConsentReady", "CookiebotOnAccept", "CookiebotOnDecline"];
497
+ const CONSENT_WAIT_MS = 1500;
498
+ function whenAdConsentKnown() {
499
+ if (typeof window === "undefined" || typeof window.addEventListener !== "function") {
500
+ return Promise.resolve();
501
+ }
502
+ if (readAdConsent(currentCookiebot(), document.cookie)) return Promise.resolve();
503
+ return new Promise((resolve) => {
504
+ let settled = false;
505
+ const finish = () => {
506
+ if (settled) return;
507
+ settled = true;
508
+ for (const event of CONSENT_EVENTS) window.removeEventListener(event, finish);
509
+ resolve();
510
+ };
511
+ for (const event of CONSENT_EVENTS) window.addEventListener(event, finish);
512
+ setTimeout(finish, CONSENT_WAIT_MS);
513
+ });
488
514
  }
489
515
  function browser() {
490
516
  if (typeof window === "undefined" || typeof document === "undefined") return void 0;
@@ -601,7 +627,9 @@ function captureAttribution(options = {}) {
601
627
  browser: browserName(env.userAgent),
602
628
  user_agent_raw: env.userAgent,
603
629
  in_app_source: inAppSource(env.userAgent),
604
- ad_consent: ((_b = env.adConsent) == null ? void 0 : _b.call(env)) ?? "denied"
630
+ // No provider means no answer, not a denial. A site that wants the
631
+ // fail-closed default passes its own adConsent.
632
+ ad_consent: ((_b = env.adConsent) == null ? void 0 : _b.call(env)) ?? ""
605
633
  };
606
634
  }
607
635
  function defineBloxSite(config) {
@@ -744,10 +772,12 @@ exports.injectPlausible = injectPlausible;
744
772
  exports.installDocumentNavigation = installDocumentNavigation;
745
773
  exports.installGtm = installGtm;
746
774
  exports.isGtmInstalled = isGtmInstalled;
775
+ exports.readAdConsent = readAdConsent;
747
776
  exports.serializeRegistry = serializeRegistry;
748
777
  exports.useBloxRuntime = useBloxRuntime;
749
778
  exports.useContentSeo = useContentSeo;
750
779
  exports.useGlobalBlock = useGlobalBlock;
751
780
  exports.useLocaleNav = useLocaleNav;
752
781
  exports.usePageContext = usePageContext;
782
+ exports.whenAdConsentKnown = whenAdConsentKnown;
753
783
  exports.withLocaleRoutes = withLocaleRoutes;
package/dist/index.d.ts CHANGED
@@ -27,7 +27,7 @@ export { createBloxApp, injectPlausible } from './createBloxApp';
27
27
  export type { BloxAppResult, CreateBloxAppOptions, PlausibleOptions } from './createBloxApp';
28
28
  export { injectGtm, installGtm, isGtmInstalled } from './analytics/gtm';
29
29
  export type { GtmOptions, GtmStrategy } from './analytics/gtm';
30
- export { ATTRIBUTION_CAMPAIGN_KEYS, captureAttribution } from './analytics/attribution';
30
+ export { ATTRIBUTION_CAMPAIGN_KEYS, captureAttribution, readAdConsent, whenAdConsentKnown } from './analytics/attribution';
31
31
  export type { AttributionBrowser, AttributionOptions, AttributionSnapshot, } from './analytics/attribution';
32
32
  export { defineBloxSite } from './siteConfig';
33
33
  export type { BloxSiteConfig } from './siteConfig';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import { useBloxApi, getItemBySlug, getItemById, provideBloxApi } from "./index-9Rzzo_yF.js";
2
2
  import { configureApi, createBloxApi, getCollectionResolver, getWebsiteId, getWebsiteIdSync, listItems, resolvePath, setApiOrigin, setCollectionResolver } from "./index-9Rzzo_yF.js";
3
- import { _, P, s, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-B_1HZLks.js";
4
- import { g as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, f as BLOX_RUNTIME_KEY, h as useSeo, j as getRegistryData, k as getContentRoute, p as provideBloxData, b as provideBloxLocale, i as installBloxRuntime, d as setActiveLocale, l as isMissingPageDocument, m as installSmartLinks, o as BLOX_CMS_ROUTE_NAME, q as BLOX_PREVIEW_ROUTE_NAME } from "./appRuntime-DbIMo4Ow.js";
5
- import { _ as _2, t, v, w, x, y, z, A, C, P as P2, D, E, c, a as a2, F, G, H, I, J, K, L, M, N, O, Q, R, r, s as s2, S, T, U, V } from "./appRuntime-DbIMo4Ow.js";
3
+ import { _, P, s, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-BCjIJwcy.js";
4
+ import { g as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, f as BLOX_RUNTIME_KEY, h as useSeo, j as getRegistryData, k as getContentRoute, p as provideBloxData, b as provideBloxLocale, i as installBloxRuntime, d as setActiveLocale, l as isMissingPageDocument, m as installSmartLinks, o as BLOX_CMS_ROUTE_NAME, q as BLOX_PREVIEW_ROUTE_NAME } from "./appRuntime-BtCOb8Gp.js";
5
+ import { _ as _2, t, v, w, x, y, z, A, C, P as P2, D, E, c, a as a2, F, G, H, I, J, K, L, M, N, O, Q, R, r, s as s2, S, T, U, V } from "./appRuntime-BtCOb8Gp.js";
6
6
  import { defineComponent, resolveComponent, openBlock, createBlock, withCtx, Transition, resolveDynamicComponent, inject, ref, watch, onMounted, onUnmounted, computed, onServerPrefetch, toValue, h, Suspense, createSSRApp, createApp } from "vue";
7
7
  import { r as readBloxHydration } from "./client-Ce9fRCGH.js";
8
8
  import { useRouter, useRoute } from "vue-router";
@@ -481,11 +481,37 @@ function cookieMap(raw) {
481
481
  return name ? [[name, decodeURIComponent(parts.join("="))]] : [];
482
482
  }));
483
483
  }
484
+ function readAdConsent(cookiebot, cookie = "") {
485
+ var _a;
486
+ const answered = (cookiebot == null ? void 0 : cookiebot.consented) === true || (cookiebot == null ? void 0 : cookiebot.declined) === true || (cookiebot == null ? void 0 : cookiebot.hasResponse) === true || /(?:^|;\s*)CookieConsent=/.test(cookie);
487
+ if (!answered) return "";
488
+ return ((_a = cookiebot == null ? void 0 : cookiebot.consent) == null ? void 0 : _a.marketing) === true ? "granted" : "denied";
489
+ }
490
+ function currentCookiebot() {
491
+ return globalThis.Cookiebot;
492
+ }
484
493
  function defaultAdConsent() {
485
- var _a, _b;
486
- const target = globalThis;
487
- const marketing = (_b = (_a = target.Cookiebot) == null ? void 0 : _a.consent) == null ? void 0 : _b.marketing;
488
- return marketing === true ? "granted" : "denied";
494
+ const cookie = typeof document === "undefined" ? "" : document.cookie;
495
+ return readAdConsent(currentCookiebot(), cookie);
496
+ }
497
+ const CONSENT_EVENTS = ["CookiebotOnConsentReady", "CookiebotOnAccept", "CookiebotOnDecline"];
498
+ const CONSENT_WAIT_MS = 1500;
499
+ function whenAdConsentKnown() {
500
+ if (typeof window === "undefined" || typeof window.addEventListener !== "function") {
501
+ return Promise.resolve();
502
+ }
503
+ if (readAdConsent(currentCookiebot(), document.cookie)) return Promise.resolve();
504
+ return new Promise((resolve) => {
505
+ let settled = false;
506
+ const finish = () => {
507
+ if (settled) return;
508
+ settled = true;
509
+ for (const event of CONSENT_EVENTS) window.removeEventListener(event, finish);
510
+ resolve();
511
+ };
512
+ for (const event of CONSENT_EVENTS) window.addEventListener(event, finish);
513
+ setTimeout(finish, CONSENT_WAIT_MS);
514
+ });
489
515
  }
490
516
  function browser() {
491
517
  if (typeof window === "undefined" || typeof document === "undefined") return void 0;
@@ -602,7 +628,9 @@ function captureAttribution(options = {}) {
602
628
  browser: browserName(env.userAgent),
603
629
  user_agent_raw: env.userAgent,
604
630
  in_app_source: inAppSource(env.userAgent),
605
- ad_consent: ((_b = env.adConsent) == null ? void 0 : _b.call(env)) ?? "denied"
631
+ // No provider means no answer, not a denial. A site that wants the
632
+ // fail-closed default passes its own adConsent.
633
+ ad_consent: ((_b = env.adConsent) == null ? void 0 : _b.call(env)) ?? ""
606
634
  };
607
635
  }
608
636
  function defineBloxSite(config) {
@@ -730,6 +758,7 @@ export {
730
758
  Q as normalizeTo,
731
759
  provideBloxData,
732
760
  R as provideContentItem,
761
+ readAdConsent,
733
762
  readBloxHydration,
734
763
  r as resolveBlockProps,
735
764
  resolvePath,
@@ -752,5 +781,6 @@ export {
752
781
  useLocaleNav,
753
782
  usePageContext,
754
783
  useSeo,
784
+ whenAdConsentKnown,
755
785
  withLocaleRoutes
756
786
  };
@@ -26,7 +26,7 @@ const llmArtifacts = require("../validate-output-DFoN6pkw.cjs");
26
26
  const ssg_buildGrant = require("./build-grant.cjs");
27
27
  const ssg_client = require("../client-AoDTJJXJ.cjs");
28
28
  const vue = require("vue");
29
- const appRuntime = require("../appRuntime-7hLqxk2p.cjs");
29
+ const appRuntime = require("../appRuntime-C0h8E4nN.cjs");
30
30
  const localeStrategy = require("../localeStrategy-OwRIn35C.cjs");
31
31
  const index = require("../index-De9SLPcI.cjs");
32
32
  function timestamp(value) {
@@ -3,7 +3,7 @@ import { o, q, f, r, s, t, w, g, x, y, z, A, C, D, p, a, E, F, u, d, v } from ".
3
3
  import { parseBloxBuildGrantBody, resolveBloxBuildGrant } from "./build-grant.mjs";
4
4
  import { a as BLOX_HYDRATION_WINDOW_KEY } from "../client-Ce9fRCGH.js";
5
5
  import { createSSRApp, h, Suspense } from "vue";
6
- import { c as collectBloxData, a as collectBloxSeo, s as setSsrPageLocale, p as provideBloxData, b as provideBloxLocale, B as BLOX_SSR_ROUTE_STATE_KEY, i as installBloxRuntime, d as setActiveLocale } from "../appRuntime-DbIMo4Ow.js";
6
+ import { c as collectBloxData, a as collectBloxSeo, s as setSsrPageLocale, p as provideBloxData, b as provideBloxLocale, B as BLOX_SSR_ROUTE_STATE_KEY, i as installBloxRuntime, d as setActiveLocale } from "../appRuntime-BtCOb8Gp.js";
7
7
  import { s as setPageSlugMap } from "../localeStrategy-hXlNof1E.js";
8
8
  import { provideBloxApi, getCollectionResolver } from "../index-9Rzzo_yF.js";
9
9
  function timestamp(value) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/blox",
3
3
  "type": "module",
4
- "version": "1.20.31",
4
+ "version": "1.20.36",
5
5
  "description": "Blox page builder library for drag-and-drop page building and static data management",
6
6
  "author": {
7
7
  "name": "Bagel Studio",
@@ -112,7 +112,7 @@
112
112
  "vue": "^3.5.43",
113
113
  "vue-router": "^4.6.4",
114
114
  "vue-tsc": "^2.2.12",
115
- "@bagelink/sdk": "1.20.31"
115
+ "@bagelink/sdk": "1.20.36"
116
116
  },
117
117
  "dependencies": {
118
118
  "magic-string": "^0.30.21",