@makeswift/runtime 0.28.0-canary.2 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  2. package/dist/cjs/builder/serialization/control-serialization.js +10 -7
  3. package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
  4. package/dist/cjs/client/index.js +5 -4
  5. package/dist/cjs/client/index.js.map +1 -1
  6. package/dist/cjs/global.d.js.map +1 -1
  7. package/dist/cjs/next/components/tests/controls/style-control/fixtures.js +38 -2
  8. package/dist/cjs/next/components/tests/controls/style-control/fixtures.js.map +1 -1
  9. package/dist/cjs/next/fetch.js +30 -0
  10. package/dist/cjs/next/fetch.js.map +1 -0
  11. package/dist/cjs/next/index.js +5 -2
  12. package/dist/cjs/next/index.js.map +1 -1
  13. package/dist/cjs/next/runtime.js +2 -5
  14. package/dist/cjs/next/runtime.js.map +1 -1
  15. package/dist/cjs/runtimes/react/components/GoogleFontLink.js +1 -2
  16. package/dist/cjs/runtimes/react/components/GoogleFontLink.js.map +1 -1
  17. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js +33 -0
  18. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  19. package/dist/cjs/runtimes/react/controls/style.js +3 -1
  20. package/dist/cjs/runtimes/react/controls/style.js.map +1 -1
  21. package/dist/cjs/state/builder-api/actions.js +2 -2
  22. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  23. package/dist/cjs/state/builder-api/api.js +17 -0
  24. package/dist/cjs/state/builder-api/api.js.map +1 -0
  25. package/dist/cjs/state/builder-api/message-channel.js +35 -31
  26. package/dist/cjs/state/builder-api/message-channel.js.map +1 -1
  27. package/dist/cjs/state/builder-api/navigation-listener.js +90 -0
  28. package/dist/cjs/state/builder-api/navigation-listener.js.map +1 -0
  29. package/dist/cjs/state/builder-api/proxy.js +19 -9
  30. package/dist/cjs/state/builder-api/proxy.js.map +1 -1
  31. package/dist/cjs/state/middleware/read-write/builder-api/index.js +3 -0
  32. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
  33. package/dist/cjs/state/read-write-state.js +1 -1
  34. package/dist/cjs/state/read-write-state.js.map +1 -1
  35. package/dist/cjs/state/store.js +2 -2
  36. package/dist/cjs/state/store.js.map +1 -1
  37. package/dist/cjs/unstable-framework-support/index.js +3 -0
  38. package/dist/cjs/unstable-framework-support/index.js.map +1 -1
  39. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  40. package/dist/esm/builder/serialization/control-serialization.js +12 -8
  41. package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
  42. package/dist/esm/client/index.js +5 -4
  43. package/dist/esm/client/index.js.map +1 -1
  44. package/dist/esm/global.d.js.map +1 -1
  45. package/dist/esm/next/components/tests/controls/style-control/fixtures.js +35 -1
  46. package/dist/esm/next/components/tests/controls/style-control/fixtures.js.map +1 -1
  47. package/dist/esm/next/fetch.js +6 -0
  48. package/dist/esm/next/fetch.js.map +1 -0
  49. package/dist/esm/next/index.js +3 -1
  50. package/dist/esm/next/index.js.map +1 -1
  51. package/dist/esm/next/runtime.js +2 -5
  52. package/dist/esm/next/runtime.js.map +1 -1
  53. package/dist/esm/runtimes/react/components/GoogleFontLink.js +1 -2
  54. package/dist/esm/runtimes/react/components/GoogleFontLink.js.map +1 -1
  55. package/dist/esm/runtimes/react/components/MakeswiftFonts.js +9 -0
  56. package/dist/esm/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  57. package/dist/esm/runtimes/react/controls/style.js +3 -1
  58. package/dist/esm/runtimes/react/controls/style.js.map +1 -1
  59. package/dist/esm/state/builder-api/actions.js +2 -2
  60. package/dist/esm/state/builder-api/actions.js.map +1 -1
  61. package/dist/esm/state/builder-api/api.js +1 -0
  62. package/dist/esm/state/builder-api/api.js.map +1 -0
  63. package/dist/esm/state/builder-api/message-channel.js +35 -31
  64. package/dist/esm/state/builder-api/message-channel.js.map +1 -1
  65. package/dist/esm/state/builder-api/navigation-listener.js +66 -0
  66. package/dist/esm/state/builder-api/navigation-listener.js.map +1 -0
  67. package/dist/esm/state/builder-api/proxy.js +20 -10
  68. package/dist/esm/state/builder-api/proxy.js.map +1 -1
  69. package/dist/esm/state/middleware/read-write/builder-api/index.js +3 -0
  70. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
  71. package/dist/esm/state/read-write-state.js +1 -1
  72. package/dist/esm/state/read-write-state.js.map +1 -1
  73. package/dist/esm/state/store.js +2 -2
  74. package/dist/esm/state/store.js.map +1 -1
  75. package/dist/esm/unstable-framework-support/index.js +2 -0
  76. package/dist/esm/unstable-framework-support/index.js.map +1 -1
  77. package/dist/types/builder/serialization/control-serialization.d.ts +10 -6
  78. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  79. package/dist/types/client/index.d.ts +3 -0
  80. package/dist/types/client/index.d.ts.map +1 -1
  81. package/dist/types/next/components/tests/controls/style-control/fixtures.d.ts +2 -0
  82. package/dist/types/next/components/tests/controls/style-control/fixtures.d.ts.map +1 -1
  83. package/dist/types/next/fetch.d.ts +3 -0
  84. package/dist/types/next/fetch.d.ts.map +1 -0
  85. package/dist/types/next/index.d.ts +1 -0
  86. package/dist/types/next/index.d.ts.map +1 -1
  87. package/dist/types/next/runtime.d.ts.map +1 -1
  88. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts.map +1 -1
  89. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts +7 -0
  90. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts.map +1 -0
  91. package/dist/types/runtimes/react/controls/style.d.ts.map +1 -1
  92. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts +5 -0
  93. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -0
  94. package/dist/types/state/builder-api/actions.d.ts +3 -7
  95. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  96. package/dist/types/state/builder-api/api.d.ts +8 -0
  97. package/dist/types/state/builder-api/api.d.ts.map +1 -0
  98. package/dist/types/state/builder-api/message-channel.d.ts +3 -6
  99. package/dist/types/state/builder-api/message-channel.d.ts.map +1 -1
  100. package/dist/types/state/builder-api/navigation-listener.d.ts +6 -0
  101. package/dist/types/state/builder-api/navigation-listener.d.ts.map +1 -0
  102. package/dist/types/state/builder-api/proxy.d.ts +4 -3
  103. package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
  104. package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -1
  105. package/dist/types/state/read-write-state.d.ts +1 -1
  106. package/dist/types/state/read-write-state.d.ts.map +1 -1
  107. package/dist/types/unstable-framework-support/index.d.ts +1 -0
  108. package/dist/types/unstable-framework-support/index.d.ts.map +1 -1
  109. package/package.json +1 -1
  110. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-db.d.ts +0 -7
  111. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-db.d.ts.map +0 -1
@@ -19,7 +19,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var fixtures_exports = {};
20
20
  __export(fixtures_exports, {
21
21
  registerComponents: () => registerComponents,
22
- value: () => value
22
+ value: () => value,
23
+ valueWithCSSVariableFontFamily: () => valueWithCSSVariableFontFamily,
24
+ valueWithFontFamily: () => valueWithFontFamily
23
25
  });
24
26
  module.exports = __toCommonJS(fixtures_exports);
25
27
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -42,6 +44,38 @@ const value = {
42
44
  }
43
45
  ]
44
46
  };
47
+ const valueWithFontFamily = {
48
+ width: [{ deviceId: "desktop", value: { value: 100, unit: "%" } }],
49
+ textStyle: [
50
+ {
51
+ deviceId: "desktop",
52
+ value: {
53
+ fontFamily: "Arial",
54
+ letterSpacing: null,
55
+ fontSize: null,
56
+ fontWeight: null,
57
+ textTransform: [],
58
+ fontStyle: []
59
+ }
60
+ }
61
+ ]
62
+ };
63
+ const valueWithCSSVariableFontFamily = {
64
+ width: [{ deviceId: "desktop", value: { value: 100, unit: "%" } }],
65
+ textStyle: [
66
+ {
67
+ deviceId: "desktop",
68
+ value: {
69
+ fontFamily: "var(--font-heading)",
70
+ letterSpacing: null,
71
+ fontSize: null,
72
+ fontWeight: null,
73
+ textTransform: [],
74
+ fontStyle: []
75
+ }
76
+ }
77
+ ]
78
+ };
45
79
  const registerComponents = (runtime) => {
46
80
  runtime.registerComponent(Button, {
47
81
  type: import_constants.MakeswiftComponentType.Button,
@@ -55,6 +89,8 @@ const registerComponents = (runtime) => {
55
89
  // Annotate the CommonJS export names for ESM import in node:
56
90
  0 && (module.exports = {
57
91
  registerComponents,
58
- value
92
+ value,
93
+ valueWithCSSVariableFontFamily,
94
+ valueWithFontFamily
59
95
  });
60
96
  //# sourceMappingURL=fixtures.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/next/components/tests/controls/style-control/fixtures.tsx"],"sourcesContent":["import { type ValueType } from '@makeswift/controls'\nimport { Style, StyleDefinition, TextInput } from '../../../../../controls'\nimport { MakeswiftComponentType } from '../../../../../components/builtin/constants'\nimport { ReactRuntime } from '../../../../../runtimes/react/react-runtime'\n\nfunction Button({ className, title }: { className: string; title: string }) {\n return <button className={className}>{title}</button>\n}\n\nexport const value: ValueType<StyleDefinition> = {\n width: [{ deviceId: 'desktop', value: { value: 80, unit: '%' } }],\n margin: [\n {\n deviceId: 'desktop',\n value: {\n marginTop: { value: 4, unit: 'px' },\n marginLeft: undefined,\n marginRight: undefined,\n marginBottom: undefined,\n },\n },\n ],\n}\n\nexport const registerComponents = (runtime: ReactRuntime) => {\n runtime.registerComponent(Button, {\n type: MakeswiftComponentType.Button,\n label: 'Button',\n props: {\n className: Style(),\n title: TextInput({ defaultValue: 'Button' }),\n },\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMS;AALT,IAAAA,mBAAkD;AAClD,uBAAuC;AAGvC,SAAS,OAAO,EAAE,WAAW,MAAM,GAAyC;AAC1E,SAAO,4CAAC,YAAO,WAAuB,iBAAM;AAC9C;AAEO,MAAM,QAAoC;AAAA,EAC/C,OAAO,CAAC,EAAE,UAAU,WAAW,OAAO,EAAE,OAAO,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,EAChE,QAAQ;AAAA,IACN;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,QACL,WAAW,EAAE,OAAO,GAAG,MAAM,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,qBAAqB,CAAC,YAA0B;AAC3D,UAAQ,kBAAkB,QAAQ;AAAA,IAChC,MAAM,wCAAuB;AAAA,IAC7B,OAAO;AAAA,IACP,OAAO;AAAA,MACL,eAAW,wBAAM;AAAA,MACjB,WAAO,4BAAU,EAAE,cAAc,SAAS,CAAC;AAAA,IAC7C;AAAA,EACF,CAAC;AACH;","names":["import_controls"]}
1
+ {"version":3,"sources":["../../../../../../../src/next/components/tests/controls/style-control/fixtures.tsx"],"sourcesContent":["import { type ValueType } from '@makeswift/controls'\nimport { Style, StyleDefinition, TextInput } from '../../../../../controls'\nimport { MakeswiftComponentType } from '../../../../../components/builtin/constants'\nimport { ReactRuntime } from '../../../../../runtimes/react/react-runtime'\n\nfunction Button({ className, title }: { className: string; title: string }) {\n return <button className={className}>{title}</button>\n}\n\nexport const value: ValueType<StyleDefinition> = {\n width: [{ deviceId: 'desktop', value: { value: 80, unit: '%' } }],\n margin: [\n {\n deviceId: 'desktop',\n value: {\n marginTop: { value: 4, unit: 'px' },\n marginLeft: undefined,\n marginRight: undefined,\n marginBottom: undefined,\n },\n },\n ],\n}\n\nexport const valueWithFontFamily: ValueType<StyleDefinition> = {\n width: [{ deviceId: 'desktop', value: { value: 100, unit: '%' } }],\n textStyle: [\n {\n deviceId: 'desktop',\n value: {\n fontFamily: 'Arial',\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n },\n ],\n}\n\nexport const valueWithCSSVariableFontFamily: ValueType<StyleDefinition> = {\n width: [{ deviceId: 'desktop', value: { value: 100, unit: '%' } }],\n textStyle: [\n {\n deviceId: 'desktop',\n value: {\n fontFamily: 'var(--font-heading)',\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n },\n ],\n}\n\nexport const registerComponents = (runtime: ReactRuntime) => {\n runtime.registerComponent(Button, {\n type: MakeswiftComponentType.Button,\n label: 'Button',\n props: {\n className: Style(),\n title: TextInput({ defaultValue: 'Button' }),\n },\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMS;AALT,IAAAA,mBAAkD;AAClD,uBAAuC;AAGvC,SAAS,OAAO,EAAE,WAAW,MAAM,GAAyC;AAC1E,SAAO,4CAAC,YAAO,WAAuB,iBAAM;AAC9C;AAEO,MAAM,QAAoC;AAAA,EAC/C,OAAO,CAAC,EAAE,UAAU,WAAW,OAAO,EAAE,OAAO,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,EAChE,QAAQ;AAAA,IACN;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,QACL,WAAW,EAAE,OAAO,GAAG,MAAM,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,sBAAkD;AAAA,EAC7D,OAAO,CAAC,EAAE,UAAU,WAAW,OAAO,EAAE,OAAO,KAAK,MAAM,IAAI,EAAE,CAAC;AAAA,EACjE,WAAW;AAAA,IACT;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe,CAAC;AAAA,QAChB,WAAW,CAAC;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,iCAA6D;AAAA,EACxE,OAAO,CAAC,EAAE,UAAU,WAAW,OAAO,EAAE,OAAO,KAAK,MAAM,IAAI,EAAE,CAAC;AAAA,EACjE,WAAW;AAAA,IACT;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe,CAAC;AAAA,QAChB,WAAW,CAAC;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,qBAAqB,CAAC,YAA0B;AAC3D,UAAQ,kBAAkB,QAAQ;AAAA,IAChC,MAAM,wCAAuB;AAAA,IAC7B,OAAO;AAAA,IACP,OAAO;AAAA,MACL,eAAW,wBAAM;AAAA,MACjB,WAAO,4BAAU,EAAE,cAAc,SAAS,CAAC;AAAA,IAC7C;AAAA,EACF,CAAC;AACH;","names":["import_controls"]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var fetch_exports = {};
20
+ __export(fetch_exports, {
21
+ fetch: () => fetch
22
+ });
23
+ module.exports = __toCommonJS(fetch_exports);
24
+ var import_cache = require("./cache");
25
+ const fetch = (url, init) => globalThis.fetch(url, { ...init, next: { tags: [import_cache.MAKESWIFT_CACHE_TAG] } });
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ fetch
29
+ });
30
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/next/fetch.ts"],"sourcesContent":["import { type HttpFetch } from '../state/makeswift-api-client'\n\nimport { MAKESWIFT_CACHE_TAG } from './cache'\n\nexport const fetch: HttpFetch = (url, init) =>\n globalThis.fetch(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } })\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAoC;AAE7B,MAAM,QAAmB,CAAC,KAAK,SACpC,WAAW,MAAM,KAAK,EAAE,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,gCAAmB,EAAE,EAAE,CAAC;","names":[]}
@@ -24,7 +24,8 @@ __export(next_exports, {
24
24
  ReactRuntime: () => import_runtime.NextReactRuntime,
25
25
  ReactRuntimeProvider: () => import_runtime_provider.NextRuntimeProvider,
26
26
  RootStyleRegistry: () => import_root_style_registry.NextRootStyleRegistry,
27
- Slot: () => import_Slot.Slot
27
+ Slot: () => import_Slot.Slot,
28
+ fetch: () => import_fetch.fetch
28
29
  });
29
30
  module.exports = __toCommonJS(next_exports);
30
31
  var import_page = require("./components/page");
@@ -34,6 +35,7 @@ var import_client = require("./client");
34
35
  var import_root_style_registry = require("./root-style-registry");
35
36
  var import_runtime_provider = require("./runtime-provider");
36
37
  var import_runtime = require("./runtime");
38
+ var import_fetch = require("./fetch");
37
39
  // Annotate the CommonJS export names for ESM import in node:
38
40
  0 && (module.exports = {
39
41
  Makeswift,
@@ -42,6 +44,7 @@ var import_runtime = require("./runtime");
42
44
  ReactRuntime,
43
45
  ReactRuntimeProvider,
44
46
  RootStyleRegistry,
45
- Slot
47
+ Slot,
48
+ fetch
46
49
  });
47
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/index.tsx"],"sourcesContent":["export type { PageProps } from './components/page'\nexport { Page } from './components/page'\nexport { MakeswiftComponent } from '../runtimes/react/components/MakeswiftComponent'\nexport { Slot } from '../runtimes/react/components/Slot'\nexport type {\n MakeswiftPage,\n MakeswiftPageDocument,\n MakeswiftPageSnapshot,\n Sitemap,\n} from '../client'\nexport { Makeswift } from './client'\nexport { type SiteVersion } from '../api/site-version'\nexport { NextRootStyleRegistry as RootStyleRegistry } from './root-style-registry'\nexport { NextRuntimeProvider as ReactRuntimeProvider } from './runtime-provider'\nexport { NextReactRuntime as ReactRuntime } from './runtime'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAqB;AACrB,gCAAmC;AACnC,kBAAqB;AAOrB,oBAA0B;AAE1B,iCAA2D;AAC3D,8BAA4D;AAC5D,qBAAiD;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/index.tsx"],"sourcesContent":["export type { PageProps } from './components/page'\nexport { Page } from './components/page'\nexport { MakeswiftComponent } from '../runtimes/react/components/MakeswiftComponent'\nexport { Slot } from '../runtimes/react/components/Slot'\nexport type {\n MakeswiftPage,\n MakeswiftPageDocument,\n MakeswiftPageSnapshot,\n Sitemap,\n} from '../client'\nexport { Makeswift } from './client'\nexport { type SiteVersion } from '../api/site-version'\nexport { NextRootStyleRegistry as RootStyleRegistry } from './root-style-registry'\nexport { NextRuntimeProvider as ReactRuntimeProvider } from './runtime-provider'\nexport { NextReactRuntime as ReactRuntime } from './runtime'\nexport { fetch } from './fetch'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAqB;AACrB,gCAAmC;AACnC,kBAAqB;AAOrB,oBAA0B;AAE1B,iCAA2D;AAC3D,8BAA4D;AAC5D,qBAAiD;AACjD,mBAAsB;","names":[]}
@@ -22,13 +22,10 @@ __export(runtime_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(runtime_exports);
24
24
  var import_react_runtime = require("../runtimes/react/react-runtime");
25
- var import_cache = require("./cache");
25
+ var import_fetch = require("./fetch");
26
26
  class NextReactRuntime extends import_react_runtime.ReactRuntime {
27
27
  constructor(args = {}) {
28
- super({
29
- ...args,
30
- fetch: (url, init) => fetch(url, { ...init, next: { tags: [import_cache.MAKESWIFT_CACHE_TAG] } })
31
- });
28
+ super({ ...args, fetch: import_fetch.fetch });
32
29
  }
33
30
  }
34
31
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/runtime.ts"],"sourcesContent":["import { ReactRuntime } from '../runtimes/react/react-runtime'\nimport { type BreakpointsInput } from '../state/modules/breakpoints'\n\nimport { MAKESWIFT_CACHE_TAG } from './cache'\n\nexport class NextReactRuntime extends ReactRuntime {\n constructor(\n args: { appOrigin?: string; apiOrigin?: string; breakpoints?: BreakpointsInput } = {},\n ) {\n super({\n ...args,\n fetch: (url, init) => fetch(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } }),\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA6B;AAG7B,mBAAoC;AAE7B,MAAM,yBAAyB,kCAAa;AAAA,EACjD,YACE,OAAmF,CAAC,GACpF;AACA,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,EAAE,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,gCAAmB,EAAE,EAAE,CAAC;AAAA,IACrF,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/runtime.ts"],"sourcesContent":["import { ReactRuntime } from '../runtimes/react/react-runtime'\nimport { type BreakpointsInput } from '../state/modules/breakpoints'\n\nimport { fetch } from './fetch'\n\nexport class NextReactRuntime extends ReactRuntime {\n constructor(\n args: { appOrigin?: string; apiOrigin?: string; breakpoints?: BreakpointsInput } = {},\n ) {\n super({ ...args, fetch })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA6B;AAG7B,mBAAsB;AAEf,MAAM,yBAAyB,kCAAa;AAAA,EACjD,YACE,OAAmF,CAAC,GACpF;AACA,UAAM,EAAE,GAAG,MAAM,0BAAM,CAAC;AAAA,EAC1B;AACF;","names":[]}
@@ -30,8 +30,7 @@ var import_google_fonts_url = require("../utils/google-fonts-url");
30
30
  var import_head_tags = require("./page/head-tags");
31
31
  function GoogleFontLink({ fonts, siteId }) {
32
32
  const isInBuilder = (0, import_use_is_in_builder.useIsInBuilder)();
33
- const siteNodeId = siteId != null ? btoa(`Site:${siteId}`) : null;
34
- const site = useCachedSite(isInBuilder ? siteNodeId : null);
33
+ const site = useCachedSite(isInBuilder ? siteId : null);
35
34
  const fontFamilyParamValue = (0, import_react.useMemo)(() => {
36
35
  if (isInBuilder && site != null) {
37
36
  return (0, import_google_fonts_url.getGoogleFontsParamFromSite)(site);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/GoogleFontLink.tsx"],"sourcesContent":["'use client'\n\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { type Font } from '../../../client'\nimport { type Site } from '../../../api'\nimport { useIsInBuilder } from '../hooks/use-is-in-builder'\nimport { useMakeswiftHostApiClient } from '../host-api-client'\n\nimport {\n getGoogleFontsParamFromFonts,\n getGoogleFontsParamFromSite,\n getGoogleFontsUrl,\n} from '../utils/google-fonts-url'\nimport { PageLink } from './page/head-tags'\n\ntype Props = {\n fonts: Font[]\n siteId: string | null\n}\n\n/**\n * This is experimental, and some of the logic here is duplicated in the `PageHead` component.\n * \n * For now we want to avoid putting this on the critical path for rendering Makeswift pages, so we haven't\n * deduplicated the two.\n */\nexport function GoogleFontLink({ fonts, siteId }: Props) {\n const isInBuilder = useIsInBuilder()\n\n const siteNodeId = siteId != null ? btoa(`Site:${siteId}`) : null\n const site = useCachedSite(isInBuilder ? siteNodeId : null)\n\n const fontFamilyParamValue = useMemo(() => {\n if (isInBuilder && site != null) {\n return getGoogleFontsParamFromSite(site)\n }\n return getGoogleFontsParamFromFonts(fonts)\n }, [isInBuilder, site, fonts])\n\n const url = getGoogleFontsUrl(fontFamilyParamValue)\n if (url === '') {\n return null\n }\n\n return (\n <PageLink precedence=\"medium\" rel=\"stylesheet\" href={url} />\n )\n}\n\nfunction useCachedSite(siteId: string | null): Site | null {\n const client = useMakeswiftHostApiClient()\n const getSnapshot = () => (siteId == null ? null : client.readSite(siteId))\n\n return useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8CI;AA5CJ,mBAA8C;AAI9C,+BAA+B;AAC/B,6BAA0C;AAE1C,8BAIO;AACP,uBAAyB;AAalB,SAAS,eAAe,EAAE,OAAO,OAAO,GAAU;AACvD,QAAM,kBAAc,yCAAe;AAEnC,QAAM,aAAa,UAAU,OAAO,KAAK,QAAQ,MAAM,EAAE,IAAI;AAC7D,QAAM,OAAO,cAAc,cAAc,aAAa,IAAI;AAE1D,QAAM,2BAAuB,sBAAQ,MAAM;AACzC,QAAI,eAAe,QAAQ,MAAM;AAC/B,iBAAO,qDAA4B,IAAI;AAAA,IACzC;AACA,eAAO,sDAA6B,KAAK;AAAA,EAC3C,GAAG,CAAC,aAAa,MAAM,KAAK,CAAC;AAE7B,QAAM,UAAM,2CAAkB,oBAAoB;AAClD,MAAI,QAAQ,IAAI;AACd,WAAO;AAAA,EACT;AAEA,SACE,4CAAC,6BAAS,YAAW,UAAS,KAAI,cAAa,MAAM,KAAK;AAE9D;AAEA,SAAS,cAAc,QAAoC;AACzD,QAAM,aAAS,kDAA0B;AACzC,QAAM,cAAc,MAAO,UAAU,OAAO,OAAO,OAAO,SAAS,MAAM;AAEzE,aAAO,mCAAqB,OAAO,WAAW,aAAa,WAAW;AACxE;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/GoogleFontLink.tsx"],"sourcesContent":["'use client'\n\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { type Font } from '../../../client'\nimport { type Site } from '../../../api'\nimport { useIsInBuilder } from '../hooks/use-is-in-builder'\nimport { useMakeswiftHostApiClient } from '../host-api-client'\n\nimport {\n getGoogleFontsParamFromFonts,\n getGoogleFontsParamFromSite,\n getGoogleFontsUrl,\n} from '../utils/google-fonts-url'\nimport { PageLink } from './page/head-tags'\n\ntype Props = {\n fonts: Font[]\n siteId: string | null\n}\n\n/**\n * This is experimental, and some of the logic here is duplicated in the `PageHead` component.\n * \n * For now we want to avoid putting this on the critical path for rendering Makeswift pages, so we haven't\n * deduplicated the two.\n */\nexport function GoogleFontLink({ fonts, siteId }: Props) {\n const isInBuilder = useIsInBuilder()\n\n const site = useCachedSite(isInBuilder ? siteId : null)\n\n const fontFamilyParamValue = useMemo(() => {\n if (isInBuilder && site != null) {\n return getGoogleFontsParamFromSite(site)\n }\n return getGoogleFontsParamFromFonts(fonts)\n }, [isInBuilder, site, fonts])\n\n const url = getGoogleFontsUrl(fontFamilyParamValue)\n if (url === '') {\n return null\n }\n\n return (\n <PageLink precedence=\"medium\" rel=\"stylesheet\" href={url} />\n )\n}\n\nfunction useCachedSite(siteId: string | null): Site | null {\n const client = useMakeswiftHostApiClient()\n const getSnapshot = () => (siteId == null ? null : client.readSite(siteId))\n\n return useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6CI;AA3CJ,mBAA8C;AAI9C,+BAA+B;AAC/B,6BAA0C;AAE1C,8BAIO;AACP,uBAAyB;AAalB,SAAS,eAAe,EAAE,OAAO,OAAO,GAAU;AACvD,QAAM,kBAAc,yCAAe;AAEnC,QAAM,OAAO,cAAc,cAAc,SAAS,IAAI;AAEtD,QAAM,2BAAuB,sBAAQ,MAAM;AACzC,QAAI,eAAe,QAAQ,MAAM;AAC/B,iBAAO,qDAA4B,IAAI;AAAA,IACzC;AACA,eAAO,sDAA6B,KAAK;AAAA,EAC3C,GAAG,CAAC,aAAa,MAAM,KAAK,CAAC;AAE7B,QAAM,UAAM,2CAAkB,oBAAoB;AAClD,MAAI,QAAQ,IAAI;AACd,WAAO;AAAA,EACT;AAEA,SACE,4CAAC,6BAAS,YAAW,UAAS,KAAI,cAAa,MAAM,KAAK;AAE9D;AAEA,SAAS,cAAc,QAAoC;AACzD,QAAM,aAAS,kDAA0B;AACzC,QAAM,cAAc,MAAO,UAAU,OAAO,OAAO,OAAO,SAAS,MAAM;AAEzE,aAAO,mCAAqB,OAAO,WAAW,aAAa,WAAW;AACxE;","names":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var MakeswiftFonts_exports = {};
20
+ __export(MakeswiftFonts_exports, {
21
+ MakeswiftFonts: () => MakeswiftFonts
22
+ });
23
+ module.exports = __toCommonJS(MakeswiftFonts_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_GoogleFontLink = require("./GoogleFontLink");
26
+ function MakeswiftFonts({ fonts }) {
27
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_GoogleFontLink.GoogleFontLink, { fonts: fonts.googleFonts, siteId: fonts.siteId });
28
+ }
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ MakeswiftFonts
32
+ });
33
+ //# sourceMappingURL=MakeswiftFonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/MakeswiftFonts.tsx"],"sourcesContent":["import { type GetFontsAPI } from '../../../client'\nimport { GoogleFontLink } from './GoogleFontLink'\n\ntype Props = {\n fonts: GetFontsAPI\n}\n\nexport function MakeswiftFonts({ fonts }: Props) {\n return <GoogleFontLink fonts={fonts.googleFonts} siteId={fonts.siteId} />\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQS;AAPT,4BAA+B;AAMxB,SAAS,eAAe,EAAE,MAAM,GAAU;AAC/C,SAAO,4CAAC,wCAAe,OAAO,MAAM,aAAa,QAAQ,MAAM,QAAQ;AACzE;","names":[]}
@@ -73,7 +73,9 @@ function styleV1Css(breakpoints, style, properties) {
73
73
  borderBottomLeftRadius: borderRadiusToString(borderRadius?.borderBottomLeftRadius) ?? 0
74
74
  },
75
75
  ...properties.includes(import_controls.Style.TextStyle) && {
76
- ...textStyle?.fontFamily && { fontFamily: `"${textStyle.fontFamily}"` },
76
+ ...textStyle?.fontFamily && {
77
+ fontFamily: textStyle.fontFamily.toLowerCase().startsWith("var(") ? textStyle.fontFamily : `"${textStyle.fontFamily}"`
78
+ },
77
79
  ...textStyle?.letterSpacing && { letterSpacing: textStyle.letterSpacing },
78
80
  ...textStyle?.fontSize && { fontSize: fontSizeToString(textStyle.fontSize) },
79
81
  ...textStyle?.fontWeight && { fontWeight: textStyle.fontWeight },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/controls/style.ts"],"sourcesContent":["import { type CSSObject } from '@emotion/serialize'\nimport {\n Style,\n type StyleProperty,\n type ResolvedBorderSideData,\n type FontSizePropertyData,\n type WidthPropertyData,\n type ResolvedStyleData,\n} from '@makeswift/controls'\n\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { responsiveStyle } from '../../../components/utils/responsive-style'\n\nimport { BorderRadiusLonghandPropertyData } from '../../../css/border-radius'\nimport { lengthPercentageDataToString } from '../../../css/length-percentage'\nimport { marginPropertyDataToStyle } from '../../../css/margin'\nimport { paddingPropertyDataToStyle } from '../../../css/padding'\nimport { Breakpoints } from '../../../state/modules/breakpoints'\n\nconst defaultMargin = {\n marginTop: 0,\n marginRight: 'auto',\n marginBottom: 0,\n marginLeft: 'auto',\n}\n\nconst defaultPadding = {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n}\n\nexport function styleV1Css(\n breakpoints: Breakpoints,\n style: ResolvedStyleData | undefined,\n properties: StyleProperty[],\n): CSSObject {\n return {\n ...(properties.includes(Style.Width) && {\n maxWidth: '100%',\n }),\n ...responsiveStyle(\n breakpoints,\n [\n style?.width,\n style?.margin,\n style?.padding,\n style?.border,\n style?.borderRadius,\n style?.textStyle,\n ] as const,\n ([width, margin, padding, border, borderRadius, textStyle]) => ({\n ...(properties.includes(Style.Width) && {\n width: widthToString(width) ?? '100%',\n }),\n ...(properties.includes(Style.Margin) &&\n marginPropertyDataToStyle(margin ?? defaultMargin, defaultMargin)),\n ...(properties.includes(Style.Padding) &&\n paddingPropertyDataToStyle(padding ?? defaultPadding, defaultPadding)),\n ...(properties.includes(Style.Border) && {\n borderTop: borderSideToString(border?.borderTop) ?? '0 solid black',\n borderRight: borderSideToString(border?.borderRight) ?? '0 solid black',\n borderBottom: borderSideToString(border?.borderBottom) ?? '0 solid black',\n borderLeft: borderSideToString(border?.borderLeft) ?? '0 solid black',\n }),\n ...(properties.includes(Style.BorderRadius) && {\n borderTopLeftRadius: borderRadiusToString(borderRadius?.borderTopLeftRadius) ?? 0,\n borderTopRightRadius: borderRadiusToString(borderRadius?.borderTopRightRadius) ?? 0,\n borderBottomRightRadius: borderRadiusToString(borderRadius?.borderBottomRightRadius) ?? 0,\n borderBottomLeftRadius: borderRadiusToString(borderRadius?.borderBottomLeftRadius) ?? 0,\n }),\n ...(properties.includes(Style.TextStyle) && {\n ...(textStyle?.fontFamily && { fontFamily: `\"${textStyle.fontFamily}\"` }),\n ...(textStyle?.letterSpacing && { letterSpacing: textStyle.letterSpacing }),\n ...(textStyle?.fontSize && { fontSize: fontSizeToString(textStyle.fontSize) }),\n ...(textStyle?.fontWeight && { fontWeight: textStyle.fontWeight }),\n textTransform: textStyle?.textTransform ?? [],\n fontStyle: textStyle?.fontStyle ?? [],\n }),\n }),\n ),\n }\n\n function widthToString(widthProperty: WidthPropertyData | undefined): string | null {\n if (widthProperty == null) return null\n\n return lengthPercentageDataToString(widthProperty)\n }\n\n function borderSideToString(\n borderSide: ResolvedBorderSideData | null | undefined,\n ): string | null {\n if (borderSide == null) return null\n\n const { width, color, style } = borderSide\n return `${width != null ? width : 0}px ${style} ${\n color != null ? colorToString(color) : 'black'\n }`\n }\n\n function borderRadiusToString(\n borderRadius: BorderRadiusLonghandPropertyData | null | undefined,\n ): string | null {\n if (borderRadius == null) return null\n\n return lengthPercentageDataToString(borderRadius)\n }\n\n function fontSizeToString(fontSize: NonNullable<FontSizePropertyData>) {\n return `${fontSize.value}${fontSize.unit}`\n }\n}\n"],"mappings":"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","names":["style"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/controls/style.ts"],"sourcesContent":["import { type CSSObject } from '@emotion/serialize'\nimport {\n Style,\n type StyleProperty,\n type ResolvedBorderSideData,\n type FontSizePropertyData,\n type WidthPropertyData,\n type ResolvedStyleData,\n} from '@makeswift/controls'\n\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { responsiveStyle } from '../../../components/utils/responsive-style'\n\nimport { BorderRadiusLonghandPropertyData } from '../../../css/border-radius'\nimport { lengthPercentageDataToString } from '../../../css/length-percentage'\nimport { marginPropertyDataToStyle } from '../../../css/margin'\nimport { paddingPropertyDataToStyle } from '../../../css/padding'\nimport { Breakpoints } from '../../../state/modules/breakpoints'\n\nconst defaultMargin = {\n marginTop: 0,\n marginRight: 'auto',\n marginBottom: 0,\n marginLeft: 'auto',\n}\n\nconst defaultPadding = {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n}\n\nexport function styleV1Css(\n breakpoints: Breakpoints,\n style: ResolvedStyleData | undefined,\n properties: StyleProperty[],\n): CSSObject {\n return {\n ...(properties.includes(Style.Width) && {\n maxWidth: '100%',\n }),\n ...responsiveStyle(\n breakpoints,\n [\n style?.width,\n style?.margin,\n style?.padding,\n style?.border,\n style?.borderRadius,\n style?.textStyle,\n ] as const,\n ([width, margin, padding, border, borderRadius, textStyle]) => ({\n ...(properties.includes(Style.Width) && {\n width: widthToString(width) ?? '100%',\n }),\n ...(properties.includes(Style.Margin) &&\n marginPropertyDataToStyle(margin ?? defaultMargin, defaultMargin)),\n ...(properties.includes(Style.Padding) &&\n paddingPropertyDataToStyle(padding ?? defaultPadding, defaultPadding)),\n ...(properties.includes(Style.Border) && {\n borderTop: borderSideToString(border?.borderTop) ?? '0 solid black',\n borderRight: borderSideToString(border?.borderRight) ?? '0 solid black',\n borderBottom: borderSideToString(border?.borderBottom) ?? '0 solid black',\n borderLeft: borderSideToString(border?.borderLeft) ?? '0 solid black',\n }),\n ...(properties.includes(Style.BorderRadius) && {\n borderTopLeftRadius: borderRadiusToString(borderRadius?.borderTopLeftRadius) ?? 0,\n borderTopRightRadius: borderRadiusToString(borderRadius?.borderTopRightRadius) ?? 0,\n borderBottomRightRadius: borderRadiusToString(borderRadius?.borderBottomRightRadius) ?? 0,\n borderBottomLeftRadius: borderRadiusToString(borderRadius?.borderBottomLeftRadius) ?? 0,\n }),\n ...(properties.includes(Style.TextStyle) && {\n ...(textStyle?.fontFamily && { \n fontFamily: textStyle.fontFamily.toLowerCase().startsWith('var(') \n ? textStyle.fontFamily \n : `\"${textStyle.fontFamily}\"` \n }),\n ...(textStyle?.letterSpacing && { letterSpacing: textStyle.letterSpacing }),\n ...(textStyle?.fontSize && { fontSize: fontSizeToString(textStyle.fontSize) }),\n ...(textStyle?.fontWeight && { fontWeight: textStyle.fontWeight }),\n textTransform: textStyle?.textTransform ?? [],\n fontStyle: textStyle?.fontStyle ?? [],\n }),\n }),\n ),\n }\n\n function widthToString(widthProperty: WidthPropertyData | undefined): string | null {\n if (widthProperty == null) return null\n\n return lengthPercentageDataToString(widthProperty)\n }\n\n function borderSideToString(\n borderSide: ResolvedBorderSideData | null | undefined,\n ): string | null {\n if (borderSide == null) return null\n\n const { width, color, style } = borderSide\n return `${width != null ? width : 0}px ${style} ${\n color != null ? colorToString(color) : 'black'\n }`\n }\n\n function borderRadiusToString(\n borderRadius: BorderRadiusLonghandPropertyData | null | undefined,\n ): string | null {\n if (borderRadius == null) return null\n\n return lengthPercentageDataToString(borderRadius)\n }\n\n function fontSizeToString(fontSize: NonNullable<FontSizePropertyData>) {\n return `${fontSize.value}${fontSize.unit}`\n }\n}\n"],"mappings":"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","names":["style"]}
@@ -57,8 +57,8 @@ const BuilderActionTypes = {
57
57
  UNREGISTER_BUILDER_COMPONENT: "UNREGISTER_BUILDER_COMPONENT",
58
58
  HANDLE_HOST_NAVIGATE: "HANDLE_HOST_NAVIGATE"
59
59
  };
60
- function makeswiftConnectionCheck(payload) {
61
- return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK, payload };
60
+ function makeswiftConnectionCheck() {
61
+ return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK };
62
62
  }
63
63
  function mountComponent(documentKey, elementKey) {
64
64
  return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/builder-api/actions.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SerializedControl } from '../../builder'\nimport { type PropControllerMessage } from '../../prop-controllers/instances'\n\nimport { type Document } from '../modules/read-only-documents'\nimport { type ComponentMeta } from '../modules/components-meta'\nimport { type BoxModel } from '../modules/read-write/box-models'\n\nimport { type ElementSize } from '../middleware/read-write/builder-api/element-size'\nimport { type DocumentPayload, type SharedAction, SharedActionTypes } from '../shared-api'\n\nexport * from '../shared-api'\n\n// actions dispatched by the host to the builder (\"Builder API\")\n// note that some of these actions, in addition to being dispatched to the builder,\n// might also be internally intercepted by the host as a part of maintaining the\n// runtime's \"read-write\" state\nexport const BuilderActionTypes = {\n ...SharedActionTypes,\n\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n HANDLE_HOST_NAVIGATE: 'HANDLE_HOST_NAVIGATE',\n} as const\n\ntype ActionWithTransferables<A> = A & {\n transferables?: Transferable[]\n}\n\ntype MakeswiftConnectionCheckAction = {\n type: typeof BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK\n payload: { currentUrl: string }\n}\n\ntype MountComponentAction = {\n type: typeof BuilderActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof BuilderActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: ElementSize }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype HandleWheelAction = {\n type: typeof BuilderActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof BuilderActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype HandleHostNavigateAction = {\n type: typeof BuilderActionTypes.HANDLE_HOST_NAVIGATE\n payload: { url: string | null }\n}\n\nexport type BuilderAction =\n | SharedAction\n | MakeswiftConnectionCheckAction\n | MountComponentAction\n | UnmountComponentAction\n | ChangeDocumentElementSizeAction\n | ChangeElementBoxModelsAction\n | MessageBuilderPropControllerAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | ElementFromPointChangeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | HandleHostNavigateAction\n\nexport function makeswiftConnectionCheck(\n payload: MakeswiftConnectionCheckAction['payload'],\n): MakeswiftConnectionCheckAction {\n return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK, payload }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: BuilderActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function changeDocumentElementSize(size: ElementSize): ChangeDocumentElementSizeAction {\n return { type: BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return {\n type: BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS,\n payload: { changedElementBoxModels },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: BuilderActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: BuilderActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerBuilderDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n documents.forEach(document => dispatch(registerBuilderDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterBuilderDocument(document.key)))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): ActionWithTransferables<RegisterBuilderComponentAction> {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nexport function hasTransferables<A extends BuilderAction>(\n action: A,\n): action is ActionWithTransferables<A> {\n return 'transferables' in action && Array.isArray(action.transferables)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,wBAA2E;AAE3E,4BAAc,0BAZd;AAkBO,MAAM,qBAAqB;AAAA,EAChC,GAAG;AAAA,EAEH,4BAA4B;AAAA,EAE5B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAE3B,iCAAiC;AAAA,EAEjC,cAAc;AAAA,EACd,qBAAqB;AAAA,EAErB,2BAA2B;AAAA,EAE3B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAE9B,sBAAsB;AACxB;AAiGO,SAAS,yBACd,SACgC;AAChC,SAAO,EAAE,MAAM,mBAAmB,4BAA4B,QAAQ;AACxE;AAEO,SAAS,eAAe,aAAqB,YAA0C;AAC5F,SAAO,EAAE,MAAM,mBAAmB,iBAAiB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC1F;AAEO,SAAS,iBAAiB,aAAqB,YAA4C;AAChG,SAAO,EAAE,MAAM,mBAAmB,mBAAmB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC5F;AAEO,SAAS,qBACd,aACA,YAC0D;AAC1D,SAAO,cAAY;AACjB,aAAS,eAAe,aAAa,UAAU,CAAC;AAEhD,WAAO,MAAM;AACX,eAAS,iBAAiB,aAAa,UAAU,CAAC;AAAA,IACpD;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,MAAoD;AAC5F,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,SAAS,EAAE,KAAK,EAAE;AACpF;AAEO,SAAS,uBACd,yBAC8B;AAC9B,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,wBAAwB;AAAA,EACrC;AACF;AAEO,SAAS,6BACd,aACA,YACA,UACA,SACuC;AACvC,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,YAAY,UAAU,QAAQ;AAAA,EACxD;AACF;AAEO,SAAS,YAAY,SAAgE;AAC1F,SAAO,EAAE,MAAM,mBAAmB,cAAc,QAAQ;AAC1D;AAEO,SAAS,kBAAkB,SAGN;AAC1B,SAAO,EAAE,MAAM,mBAAmB,qBAAqB,QAAQ;AACjE;AAEO,SAAS,uBACd,MAI8B;AAC9B,SAAO,EAAE,MAAM,mBAAmB,2BAA2B,SAAS,EAAE,KAAK,EAAE;AACjF;AAEO,SAAS,wBAAwB,UAAmD;AACzF,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,SAAS,KAAK,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,0BAA0B,aAAsD;AAC9F,SAAO,EAAE,MAAM,mBAAmB,6BAA6B,SAAS,EAAE,YAAY,EAAE;AAC1F;AAEO,SAAS,+BACd,WAC0D;AAC1D,SAAO,cAAY;AACjB,cAAU,QAAQ,cAAY,SAAS,wBAAwB,QAAQ,CAAC,CAAC;AAEzE,WAAO,MAAM;AACX,gBAAU,QAAQ,cAAY,SAAS,0BAA0B,SAAS,GAAG,CAAC,CAAC;AAAA,IACjF;AAAA,EACF;AACF;AAEO,SAAS,yBACd,SACA,eACyD;AACzD,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,2BACd,SACkC;AAClC,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,QAAQ;AAC1E;AAEO,SAAS,iBACd,QACsC;AACtC,SAAO,mBAAmB,UAAU,MAAM,QAAQ,OAAO,aAAa;AACxE;","names":[]}
1
+ {"version":3,"sources":["../../../../src/state/builder-api/actions.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SerializedControl } from '../../builder'\nimport { type PropControllerMessage } from '../../prop-controllers/instances'\n\nimport { type Document } from '../modules/read-only-documents'\nimport { type ComponentMeta } from '../modules/components-meta'\nimport { type BoxModel } from '../modules/read-write/box-models'\n\nimport { type ElementSize } from '../middleware/read-write/builder-api/element-size'\nimport { type DocumentPayload, type SharedAction, SharedActionTypes } from '../shared-api'\n\nimport { type HostNavigationEvent } from './api'\n\nexport * from '../shared-api'\n\n// actions dispatched by the host to the builder (\"Builder API\")\n// note that some of these actions, in addition to being dispatched to the builder,\n// might also be internally intercepted by the host as a part of maintaining the\n// runtime's \"read-write\" state\nexport const BuilderActionTypes = {\n ...SharedActionTypes,\n\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n HANDLE_HOST_NAVIGATE: 'HANDLE_HOST_NAVIGATE',\n} as const\n\ntype ActionWithTransferables<A> = A & {\n transferables?: Transferable[]\n}\n\ntype MakeswiftConnectionCheckAction = {\n type: typeof BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK\n}\n\ntype MountComponentAction = {\n type: typeof BuilderActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof BuilderActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: ElementSize }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype HandleWheelAction = {\n type: typeof BuilderActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof BuilderActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype HandleHostNavigateAction = {\n type: typeof BuilderActionTypes.HANDLE_HOST_NAVIGATE\n payload: HostNavigationEvent\n}\n\nexport type BuilderAction =\n | SharedAction\n | MakeswiftConnectionCheckAction\n | MountComponentAction\n | UnmountComponentAction\n | ChangeDocumentElementSizeAction\n | ChangeElementBoxModelsAction\n | MessageBuilderPropControllerAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | ElementFromPointChangeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | HandleHostNavigateAction\n\nexport function makeswiftConnectionCheck(): MakeswiftConnectionCheckAction {\n return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: BuilderActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function changeDocumentElementSize(size: ElementSize): ChangeDocumentElementSizeAction {\n return { type: BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return {\n type: BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS,\n payload: { changedElementBoxModels },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: BuilderActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: BuilderActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerBuilderDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n documents.forEach(document => dispatch(registerBuilderDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterBuilderDocument(document.key)))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): ActionWithTransferables<RegisterBuilderComponentAction> {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nexport function hasTransferables<A extends BuilderAction>(\n action: A,\n): action is ActionWithTransferables<A> {\n return 'transferables' in action && Array.isArray(action.transferables)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,wBAA2E;AAI3E,4BAAc,0BAdd;AAoBO,MAAM,qBAAqB;AAAA,EAChC,GAAG;AAAA,EAEH,4BAA4B;AAAA,EAE5B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAE3B,iCAAiC;AAAA,EAEjC,cAAc;AAAA,EACd,qBAAqB;AAAA,EAErB,2BAA2B;AAAA,EAE3B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAE9B,sBAAsB;AACxB;AAgGO,SAAS,2BAA2D;AACzE,SAAO,EAAE,MAAM,mBAAmB,2BAA2B;AAC/D;AAEO,SAAS,eAAe,aAAqB,YAA0C;AAC5F,SAAO,EAAE,MAAM,mBAAmB,iBAAiB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC1F;AAEO,SAAS,iBAAiB,aAAqB,YAA4C;AAChG,SAAO,EAAE,MAAM,mBAAmB,mBAAmB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC5F;AAEO,SAAS,qBACd,aACA,YAC0D;AAC1D,SAAO,cAAY;AACjB,aAAS,eAAe,aAAa,UAAU,CAAC;AAEhD,WAAO,MAAM;AACX,eAAS,iBAAiB,aAAa,UAAU,CAAC;AAAA,IACpD;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,MAAoD;AAC5F,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,SAAS,EAAE,KAAK,EAAE;AACpF;AAEO,SAAS,uBACd,yBAC8B;AAC9B,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,wBAAwB;AAAA,EACrC;AACF;AAEO,SAAS,6BACd,aACA,YACA,UACA,SACuC;AACvC,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,YAAY,UAAU,QAAQ;AAAA,EACxD;AACF;AAEO,SAAS,YAAY,SAAgE;AAC1F,SAAO,EAAE,MAAM,mBAAmB,cAAc,QAAQ;AAC1D;AAEO,SAAS,kBAAkB,SAGN;AAC1B,SAAO,EAAE,MAAM,mBAAmB,qBAAqB,QAAQ;AACjE;AAEO,SAAS,uBACd,MAI8B;AAC9B,SAAO,EAAE,MAAM,mBAAmB,2BAA2B,SAAS,EAAE,KAAK,EAAE;AACjF;AAEO,SAAS,wBAAwB,UAAmD;AACzF,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,SAAS,KAAK,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,0BAA0B,aAAsD;AAC9F,SAAO,EAAE,MAAM,mBAAmB,6BAA6B,SAAS,EAAE,YAAY,EAAE;AAC1F;AAEO,SAAS,+BACd,WAC0D;AAC1D,SAAO,cAAY;AACjB,cAAU,QAAQ,cAAY,SAAS,wBAAwB,QAAQ,CAAC,CAAC;AAEzE,WAAO,MAAM;AACX,gBAAU,QAAQ,cAAY,SAAS,0BAA0B,SAAS,GAAG,CAAC,CAAC;AAAA,IACjF;AAAA,EACF;AACF;AAEO,SAAS,yBACd,SACA,eACyD;AACzD,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,2BACd,SACkC;AAClC,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,QAAQ;AAC1E;AAEO,SAAS,iBACd,QACsC;AACtC,SAAO,mBAAmB,UAAU,MAAM,QAAQ,OAAO,aAAa;AACxE;","names":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var api_exports = {};
16
+ module.exports = __toCommonJS(api_exports);
17
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/state/builder-api/api.ts"],"sourcesContent":["export type HostNavigationEvent = {\n url: string | null\n initialPageLoad: boolean\n}\n\nexport type BuilderApi = {\n handleHostNavigate(event: HostNavigationEvent): void\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -28,7 +28,6 @@ class MessageChannel {
28
28
  appOrigin;
29
29
  channel = null;
30
30
  bufferedMessages = [];
31
- connectionCheckIntervalID = null;
32
31
  constructor({ appOrigin }) {
33
32
  this.appOrigin = appOrigin;
34
33
  }
@@ -39,12 +38,20 @@ class MessageChannel {
39
38
  this.bufferedMessages.push([message, transferables]);
40
39
  }
41
40
  }
42
- setup(onMessage) {
43
- this.setupConnectionCheck();
41
+ setup({ onMessage }) {
42
+ const cleanupConnectionCheck = setupConnectionCheck(this.appOrigin);
44
43
  const channel = new window.MessageChannel();
45
44
  channel.port1.onmessage = onMessage;
46
45
  window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2]);
47
46
  this.channel = channel.port1;
47
+ return () => {
48
+ cleanupConnectionCheck();
49
+ if (this.channel) {
50
+ this.channel.onmessage = null;
51
+ this.channel.close();
52
+ this.channel = null;
53
+ }
54
+ };
48
55
  }
49
56
  dispatchBuffered() {
50
57
  console.assert(this.channel != null, "channel is not setup");
@@ -53,38 +60,35 @@ class MessageChannel {
53
60
  });
54
61
  this.bufferedMessages = [];
55
62
  }
56
- teardown() {
57
- this.teardownConnectionCheck();
58
- if (this.channel) {
59
- this.channel.onmessage = null;
60
- this.channel.close();
63
+ }
64
+ function setupConnectionCheck(appOrigin) {
65
+ class Interval {
66
+ id = null;
67
+ setInterval(callback, delay) {
68
+ this.clear();
69
+ this.id = window.setInterval(callback, delay);
61
70
  }
62
- }
63
- setupConnectionCheck() {
64
- window.addEventListener("message", this.connectionCheckHandler);
65
- window.parent.postMessage((0, import_shared_api.makeswiftConnectionInit)(), { targetOrigin: this.appOrigin });
66
- }
67
- teardownConnectionCheck() {
68
- window.removeEventListener("message", this.connectionCheckHandler);
69
- if (this.connectionCheckIntervalID != null) {
70
- window.clearInterval(this.connectionCheckIntervalID);
71
- this.connectionCheckIntervalID = null;
71
+ clear() {
72
+ if (this.id != null) {
73
+ window.clearInterval(this.id);
74
+ this.id = null;
75
+ }
72
76
  }
73
77
  }
74
- // use class field syntax to preserve the identity of the handler
75
- // for adding and removing the event listener
76
- connectionCheckHandler = (event) => {
77
- if (event.origin === this.appOrigin && event.data.type === import_shared_api.SharedActionTypes.MAKESWIFT_CONNECTION_INIT) {
78
- if (this.connectionCheckIntervalID != null) {
79
- window.clearInterval(this.connectionCheckIntervalID);
80
- this.connectionCheckIntervalID = null;
81
- }
82
- this.connectionCheckIntervalID = window.setInterval(() => {
83
- window.parent.postMessage((0, import_actions.makeswiftConnectionCheck)({ currentUrl: window.location.href }), {
84
- targetOrigin: this.appOrigin
85
- });
86
- }, CONNECTION_PING_INTERVAL_MS);
78
+ const connectionCheckInterval = new Interval();
79
+ function connectionCheckHandler(event) {
80
+ if (event.origin === appOrigin && event.data.type === import_shared_api.SharedActionTypes.MAKESWIFT_CONNECTION_INIT) {
81
+ connectionCheckInterval.setInterval(
82
+ () => window.parent.postMessage((0, import_actions.makeswiftConnectionCheck)(), { targetOrigin: appOrigin }),
83
+ CONNECTION_PING_INTERVAL_MS
84
+ );
87
85
  }
86
+ }
87
+ window.addEventListener("message", connectionCheckHandler);
88
+ window.parent.postMessage((0, import_shared_api.makeswiftConnectionInit)(), { targetOrigin: appOrigin });
89
+ return () => {
90
+ window.removeEventListener("message", connectionCheckHandler);
91
+ connectionCheckInterval.clear();
88
92
  };
89
93
  }
90
94
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/builder-api/message-channel.ts"],"sourcesContent":["import { SharedActionTypes, makeswiftConnectionInit } from '../shared-api'\nimport { makeswiftConnectionCheck } from './actions'\n\nconst CONNECTION_PING_INTERVAL_MS = 20\n\nexport class MessageChannel {\n private readonly appOrigin: string\n private channel: MessagePort | null = null\n private bufferedMessages: [any, Transferable[]?][] = []\n private connectionCheckIntervalID: number | null = null\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.appOrigin = appOrigin\n }\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup(onMessage: (event: MessageEvent) => void) {\n this.setupConnectionCheck()\n\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2])\n\n this.channel = channel.port1\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n\n public teardown() {\n this.teardownConnectionCheck()\n\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n }\n }\n\n private setupConnectionCheck() {\n window.addEventListener('message', this.connectionCheckHandler)\n window.parent.postMessage(makeswiftConnectionInit(), { targetOrigin: this.appOrigin })\n }\n\n private teardownConnectionCheck() {\n window.removeEventListener('message', this.connectionCheckHandler)\n if (this.connectionCheckIntervalID != null) {\n window.clearInterval(this.connectionCheckIntervalID)\n this.connectionCheckIntervalID = null\n }\n }\n\n // use class field syntax to preserve the identity of the handler\n // for adding and removing the event listener\n private connectionCheckHandler = (event: MessageEvent) => {\n if (\n event.origin === this.appOrigin &&\n event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT\n ) {\n if (this.connectionCheckIntervalID != null) {\n window.clearInterval(this.connectionCheckIntervalID)\n this.connectionCheckIntervalID = null\n }\n\n this.connectionCheckIntervalID = window.setInterval(() => {\n window.parent.postMessage(makeswiftConnectionCheck({ currentUrl: window.location.href }), {\n targetOrigin: this.appOrigin,\n })\n }, CONNECTION_PING_INTERVAL_MS)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA2D;AAC3D,qBAAyC;AAEzC,MAAM,8BAA8B;AAE7B,MAAM,eAAe;AAAA,EACT;AAAA,EACT,UAA8B;AAAA,EAC9B,mBAA6C,CAAC;AAAA,EAC9C,4BAA2C;AAAA,EAEnD,YAAY,EAAE,UAAU,GAA0B;AAChD,SAAK,YAAY;AAAA,EACnB;AAAA,EAEO,YAAY,SAAc,eAAgC;AAC/D,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACvD,OAAO;AACL,WAAK,iBAAiB,KAAK,CAAC,SAAS,aAAa,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EAEO,MAAM,WAA0C;AACrD,SAAK,qBAAqB;AAE1B,UAAM,UAAU,IAAI,OAAO,eAAe;AAC1C,YAAQ,MAAM,YAAY;AAI1B,WAAO,OAAO,YAAY,QAAQ,OAAO,KAAK,WAAW,CAAC,QAAQ,KAAK,CAAC;AAExE,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA,EAEO,mBAAmB;AACxB,YAAQ,OAAO,KAAK,WAAW,MAAM,sBAAsB;AAE3D,SAAK,iBAAiB,QAAQ,CAAC,CAAC,SAAS,aAAa,MAAM;AAC1D,WAAK,SAAS,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACxD,CAAC;AAED,SAAK,mBAAmB,CAAC;AAAA,EAC3B;AAAA,EAEO,WAAW;AAChB,SAAK,wBAAwB;AAE7B,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,YAAY;AACzB,WAAK,QAAQ,MAAM;AAAA,IACrB;AAAA,EACF;AAAA,EAEQ,uBAAuB;AAC7B,WAAO,iBAAiB,WAAW,KAAK,sBAAsB;AAC9D,WAAO,OAAO,gBAAY,2CAAwB,GAAG,EAAE,cAAc,KAAK,UAAU,CAAC;AAAA,EACvF;AAAA,EAEQ,0BAA0B;AAChC,WAAO,oBAAoB,WAAW,KAAK,sBAAsB;AACjE,QAAI,KAAK,6BAA6B,MAAM;AAC1C,aAAO,cAAc,KAAK,yBAAyB;AACnD,WAAK,4BAA4B;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA,EAIQ,yBAAyB,CAAC,UAAwB;AACxD,QACE,MAAM,WAAW,KAAK,aACtB,MAAM,KAAK,SAAS,oCAAkB,2BACtC;AACA,UAAI,KAAK,6BAA6B,MAAM;AAC1C,eAAO,cAAc,KAAK,yBAAyB;AACnD,aAAK,4BAA4B;AAAA,MACnC;AAEA,WAAK,4BAA4B,OAAO,YAAY,MAAM;AACxD,eAAO,OAAO,gBAAY,yCAAyB,EAAE,YAAY,OAAO,SAAS,KAAK,CAAC,GAAG;AAAA,UACxF,cAAc,KAAK;AAAA,QACrB,CAAC;AAAA,MACH,GAAG,2BAA2B;AAAA,IAChC;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/state/builder-api/message-channel.ts"],"sourcesContent":["import { SharedActionTypes, makeswiftConnectionInit } from '../shared-api'\nimport { makeswiftConnectionCheck } from './actions'\n\nconst CONNECTION_PING_INTERVAL_MS = 20\n\nexport class MessageChannel {\n private readonly appOrigin: string\n private channel: MessagePort | null = null\n private bufferedMessages: [any, Transferable[]?][] = []\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.appOrigin = appOrigin\n }\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup({ onMessage }: { onMessage: (event: MessageEvent) => void }): VoidFunction {\n const cleanupConnectionCheck = setupConnectionCheck(this.appOrigin)\n\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2])\n\n this.channel = channel.port1\n\n return () => {\n cleanupConnectionCheck()\n\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n this.channel = null\n }\n }\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n}\n\n// FIXME: instead of `window.parent.postMessage`, the connection check should\n// probably use the message channel itself: after all, it's meant to check\n// the health of the builder <> host connection, and whether we can reach the\n// builder through `window.parent.postMessage` is not indicative of the health\n// of the message channel itself, which is what the builder <> host\n// communication relies on.\nfunction setupConnectionCheck(appOrigin: string): VoidFunction {\n class Interval {\n private id: number | null = null\n\n setInterval(callback: () => void, delay: number) {\n this.clear()\n this.id = window.setInterval(callback, delay)\n }\n\n clear() {\n if (this.id != null) {\n window.clearInterval(this.id)\n this.id = null\n }\n }\n }\n\n const connectionCheckInterval = new Interval()\n\n function connectionCheckHandler(event: MessageEvent) {\n if (\n event.origin === appOrigin &&\n event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT\n ) {\n connectionCheckInterval.setInterval(\n () => window.parent.postMessage(makeswiftConnectionCheck(), { targetOrigin: appOrigin }),\n CONNECTION_PING_INTERVAL_MS,\n )\n }\n }\n\n window.addEventListener('message', connectionCheckHandler)\n window.parent.postMessage(makeswiftConnectionInit(), { targetOrigin: appOrigin })\n\n return () => {\n window.removeEventListener('message', connectionCheckHandler)\n connectionCheckInterval.clear()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA2D;AAC3D,qBAAyC;AAEzC,MAAM,8BAA8B;AAE7B,MAAM,eAAe;AAAA,EACT;AAAA,EACT,UAA8B;AAAA,EAC9B,mBAA6C,CAAC;AAAA,EAEtD,YAAY,EAAE,UAAU,GAA0B;AAChD,SAAK,YAAY;AAAA,EACnB;AAAA,EAEO,YAAY,SAAc,eAAgC;AAC/D,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACvD,OAAO;AACL,WAAK,iBAAiB,KAAK,CAAC,SAAS,aAAa,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EAEO,MAAM,EAAE,UAAU,GAA+D;AACtF,UAAM,yBAAyB,qBAAqB,KAAK,SAAS;AAElE,UAAM,UAAU,IAAI,OAAO,eAAe;AAC1C,YAAQ,MAAM,YAAY;AAI1B,WAAO,OAAO,YAAY,QAAQ,OAAO,KAAK,WAAW,CAAC,QAAQ,KAAK,CAAC;AAExE,SAAK,UAAU,QAAQ;AAEvB,WAAO,MAAM;AACX,6BAAuB;AAEvB,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,YAAY;AACzB,aAAK,QAAQ,MAAM;AACnB,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEO,mBAAmB;AACxB,YAAQ,OAAO,KAAK,WAAW,MAAM,sBAAsB;AAE3D,SAAK,iBAAiB,QAAQ,CAAC,CAAC,SAAS,aAAa,MAAM;AAC1D,WAAK,SAAS,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACxD,CAAC;AAED,SAAK,mBAAmB,CAAC;AAAA,EAC3B;AACF;AAQA,SAAS,qBAAqB,WAAiC;AAAA,EAC7D,MAAM,SAAS;AAAA,IACL,KAAoB;AAAA,IAE5B,YAAY,UAAsB,OAAe;AAC/C,WAAK,MAAM;AACX,WAAK,KAAK,OAAO,YAAY,UAAU,KAAK;AAAA,IAC9C;AAAA,IAEA,QAAQ;AACN,UAAI,KAAK,MAAM,MAAM;AACnB,eAAO,cAAc,KAAK,EAAE;AAC5B,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,QAAM,0BAA0B,IAAI,SAAS;AAE7C,WAAS,uBAAuB,OAAqB;AACnD,QACE,MAAM,WAAW,aACjB,MAAM,KAAK,SAAS,oCAAkB,2BACtC;AACA,8BAAwB;AAAA,QACtB,MAAM,OAAO,OAAO,gBAAY,yCAAyB,GAAG,EAAE,cAAc,UAAU,CAAC;AAAA,QACvF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,iBAAiB,WAAW,sBAAsB;AACzD,SAAO,OAAO,gBAAY,2CAAwB,GAAG,EAAE,cAAc,UAAU,CAAC;AAEhF,SAAO,MAAM;AACX,WAAO,oBAAoB,WAAW,sBAAsB;AAC5D,4BAAwB,MAAM;AAAA,EAChC;AACF;","names":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var navigation_listener_exports = {};
20
+ __export(navigation_listener_exports, {
21
+ setupNavigationListener: () => setupNavigationListener
22
+ });
23
+ module.exports = __toCommonJS(navigation_listener_exports);
24
+ const CLICK_NAVIGATION_THRESHOLD_MS = 100;
25
+ const LOCATION_CHECK_DELAY_MS = 700;
26
+ function setupNavigationListener(callback) {
27
+ let previousLocation = null;
28
+ const handleNavigate = (event) => {
29
+ if (event.url === previousLocation)
30
+ return;
31
+ callback(event);
32
+ previousLocation = event.url;
33
+ };
34
+ handleNavigate({ url: windowLocation(), initialPageLoad: true });
35
+ if (typeof window === "undefined") {
36
+ return () => {
37
+ };
38
+ }
39
+ const unsubscribes = [];
40
+ if ("navigation" in window && window.navigation) {
41
+ const navigation = window.navigation;
42
+ const handler = ({ destination }) => handleNavigate({ url: destination.url, initialPageLoad: false });
43
+ navigation.addEventListener("navigate", handler);
44
+ unsubscribes.push(() => navigation.removeEventListener("navigate", handler));
45
+ return () => {
46
+ unsubscribes.forEach((u) => u());
47
+ };
48
+ }
49
+ let lastClickEvent = null;
50
+ const clickHandler = (e) => {
51
+ const a = e.composedPath?.()?.find((n) => n instanceof HTMLAnchorElement) ?? (e.target instanceof Element && e.target.closest?.("a"));
52
+ if (!a)
53
+ return;
54
+ lastClickEvent = { href: a.href, timestamp: Date.now() };
55
+ window.setTimeout(
56
+ () => handleNavigate({ url: windowLocation(), initialPageLoad: false }),
57
+ LOCATION_CHECK_DELAY_MS
58
+ );
59
+ };
60
+ window.document.addEventListener(
61
+ "click",
62
+ clickHandler,
63
+ { capture: true }
64
+ // run before bubbling to fortify against `stopPropagation()` calls
65
+ );
66
+ unsubscribes.push(
67
+ () => window.document.removeEventListener("click", clickHandler, { capture: true })
68
+ );
69
+ const unloadHandler = () => {
70
+ if (!lastClickEvent)
71
+ return;
72
+ const msSinceLastClick = Date.now() - lastClickEvent.timestamp;
73
+ handleNavigate({
74
+ url: msSinceLastClick < CLICK_NAVIGATION_THRESHOLD_MS ? lastClickEvent.href ?? null : null,
75
+ initialPageLoad: false
76
+ });
77
+ lastClickEvent = null;
78
+ };
79
+ window.addEventListener("beforeunload", unloadHandler);
80
+ unsubscribes.push(() => window.removeEventListener("beforeunload", unloadHandler));
81
+ return () => {
82
+ unsubscribes.forEach((u) => u());
83
+ };
84
+ }
85
+ const windowLocation = () => typeof window !== "undefined" ? window.location.href : null;
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ setupNavigationListener
89
+ });
90
+ //# sourceMappingURL=navigation-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/state/builder-api/navigation-listener.ts"],"sourcesContent":["export type SiteNavigationEvent = {\n url: string | null\n initialPageLoad: boolean\n}\n\ntype ClickEvent = {\n href: string\n timestamp: number\n}\n\nconst CLICK_NAVIGATION_THRESHOLD_MS = 100\nconst LOCATION_CHECK_DELAY_MS = 700 // give the host generous time to perform the navigation\n\nexport function setupNavigationListener(\n callback: (args: SiteNavigationEvent) => void,\n): VoidFunction {\n let previousLocation: string | null = null\n\n const handleNavigate = (event: SiteNavigationEvent) => {\n if (event.url === previousLocation) return\n\n callback(event)\n previousLocation = event.url\n }\n\n // trigger navigation callback on initial page load\n handleNavigate({ url: windowLocation(), initialPageLoad: true })\n\n if (typeof window === 'undefined') {\n return () => {}\n }\n\n const unsubscribes: (() => void)[] = []\n\n // check for availability of the Navigation API (baseline feature since January 2026),\n // see https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API\n if ('navigation' in window && window.navigation) {\n const navigation = window.navigation\n\n const handler = ({ destination }: NavigateEvent) =>\n handleNavigate({ url: destination.url, initialPageLoad: false })\n\n // note that in order to capture destination URLs that might not be Makeswift-enabled,\n // we send a `SiteNavigationEvent` at the start of navigation, but do not track whether\n // the navigation was successful or not (possible future improvement)\n navigation.addEventListener('navigate', handler)\n unsubscribes.push(() => navigation.removeEventListener('navigate', handler))\n\n return () => {\n unsubscribes.forEach(u => u())\n }\n }\n\n // for browsers lacking Navigation API support, we manually track:\n // - link clicks to capture destination URLs\n // - page unload events to detect cross-page navigation\n let lastClickEvent: ClickEvent | null = null\n\n const clickHandler = (e: MouseEvent) => {\n const a =\n e.composedPath?.()?.find(n => n instanceof HTMLAnchorElement) ??\n (e.target instanceof Element && e.target.closest?.('a'))\n\n if (!a) return\n\n lastClickEvent = { href: a.href, timestamp: Date.now() }\n\n // handle navigation between pages in the host; note that we intentionally are\n // not cancelling the timer on cleanup to ensure we report the navigation\n window.setTimeout(\n () => handleNavigate({ url: windowLocation(), initialPageLoad: false }),\n LOCATION_CHECK_DELAY_MS,\n )\n }\n\n window.document.addEventListener(\n 'click',\n clickHandler,\n { capture: true }, // run before bubbling to fortify against `stopPropagation()` calls\n )\n\n unsubscribes.push(() =>\n window.document.removeEventListener('click', clickHandler, { capture: true }),\n )\n\n // handle external navigation\n const unloadHandler = () => {\n if (!lastClickEvent) return\n\n const msSinceLastClick = Date.now() - lastClickEvent.timestamp\n handleNavigate({\n url: msSinceLastClick < CLICK_NAVIGATION_THRESHOLD_MS ? (lastClickEvent.href ?? null) : null,\n initialPageLoad: false,\n })\n\n lastClickEvent = null\n }\n\n window.addEventListener('beforeunload', unloadHandler)\n unsubscribes.push(() => window.removeEventListener('beforeunload', unloadHandler))\n\n return () => {\n unsubscribes.forEach(u => u())\n }\n}\n\nconst windowLocation = (): string | null =>\n typeof window !== 'undefined' ? window.location.href : null\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAEzB,SAAS,wBACd,UACc;AACd,MAAI,mBAAkC;AAEtC,QAAM,iBAAiB,CAAC,UAA+B;AACrD,QAAI,MAAM,QAAQ;AAAkB;AAEpC,aAAS,KAAK;AACd,uBAAmB,MAAM;AAAA,EAC3B;AAGA,iBAAe,EAAE,KAAK,eAAe,GAAG,iBAAiB,KAAK,CAAC;AAE/D,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAEA,QAAM,eAA+B,CAAC;AAItC,MAAI,gBAAgB,UAAU,OAAO,YAAY;AAC/C,UAAM,aAAa,OAAO;AAE1B,UAAM,UAAU,CAAC,EAAE,YAAY,MAC7B,eAAe,EAAE,KAAK,YAAY,KAAK,iBAAiB,MAAM,CAAC;AAKjE,eAAW,iBAAiB,YAAY,OAAO;AAC/C,iBAAa,KAAK,MAAM,WAAW,oBAAoB,YAAY,OAAO,CAAC;AAE3E,WAAO,MAAM;AACX,mBAAa,QAAQ,OAAK,EAAE,CAAC;AAAA,IAC/B;AAAA,EACF;AAKA,MAAI,iBAAoC;AAExC,QAAM,eAAe,CAAC,MAAkB;AACtC,UAAM,IACJ,EAAE,eAAe,GAAG,KAAK,OAAK,aAAa,iBAAiB,MAC3D,EAAE,kBAAkB,WAAW,EAAE,OAAO,UAAU,GAAG;AAExD,QAAI,CAAC;AAAG;AAER,qBAAiB,EAAE,MAAM,EAAE,MAAM,WAAW,KAAK,IAAI,EAAE;AAIvD,WAAO;AAAA,MACL,MAAM,eAAe,EAAE,KAAK,eAAe,GAAG,iBAAiB,MAAM,CAAC;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,SAAO,SAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA,EAAE,SAAS,KAAK;AAAA;AAAA,EAClB;AAEA,eAAa;AAAA,IAAK,MAChB,OAAO,SAAS,oBAAoB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAAA,EAC9E;AAGA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC;AAAgB;AAErB,UAAM,mBAAmB,KAAK,IAAI,IAAI,eAAe;AACrD,mBAAe;AAAA,MACb,KAAK,mBAAmB,gCAAiC,eAAe,QAAQ,OAAQ;AAAA,MACxF,iBAAiB;AAAA,IACnB,CAAC;AAED,qBAAiB;AAAA,EACnB;AAEA,SAAO,iBAAiB,gBAAgB,aAAa;AACrD,eAAa,KAAK,MAAM,OAAO,oBAAoB,gBAAgB,aAAa,CAAC;AAEjF,SAAO,MAAM;AACX,iBAAa,QAAQ,OAAK,EAAE,CAAC;AAAA,EAC/B;AACF;AAEA,MAAM,iBAAiB,MACrB,OAAO,WAAW,cAAc,OAAO,SAAS,OAAO;","names":[]}