@websolutespa/bom-next 3.0.2 → 4.0.0-next.1

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 (264) hide show
  1. package/CHANGELOG.md +37 -7
  2. package/README.md +28 -0
  3. package/dist/_virtual/{_rolldown/runtime.js → rolldown_runtime.js} +7 -4
  4. package/dist/client/client.d.ts.map +1 -1
  5. package/dist/client/client.js +17 -6
  6. package/dist/client/client.js.map +1 -1
  7. package/dist/client/extra.d.ts +3 -3
  8. package/dist/client/extra.d.ts.map +1 -1
  9. package/dist/client/extra.js +10 -5
  10. package/dist/client/extra.js.map +1 -1
  11. package/dist/client/label.d.ts +3 -3
  12. package/dist/client/label.d.ts.map +1 -1
  13. package/dist/client/label.js +10 -5
  14. package/dist/client/label.js.map +1 -1
  15. package/dist/client/layout.d.ts +3 -3
  16. package/dist/client/layout.d.ts.map +1 -1
  17. package/dist/client/layout.js +10 -5
  18. package/dist/client/layout.js.map +1 -1
  19. package/dist/client/local.collection.d.ts.map +1 -1
  20. package/dist/client/local.collection.js +4 -2
  21. package/dist/client/local.collection.js.map +1 -1
  22. package/dist/client/metadata.d.ts +3 -3
  23. package/dist/client/metadata.d.ts.map +1 -1
  24. package/dist/client/metadata.js +48 -40
  25. package/dist/client/metadata.js.map +1 -1
  26. package/dist/client/page.d.ts +3 -3
  27. package/dist/client/page.d.ts.map +1 -1
  28. package/dist/client/page.js +10 -5
  29. package/dist/client/page.js.map +1 -1
  30. package/dist/client/useApi.d.ts +7 -7
  31. package/dist/client/useApi.d.ts.map +1 -1
  32. package/dist/client/useApi.js +2 -1
  33. package/dist/client/useApi.js.map +1 -1
  34. package/dist/client/useCollectionApi.d.ts +6 -6
  35. package/dist/client/useCollectionApi.d.ts.map +1 -1
  36. package/dist/client/useCollectionApi.js +4 -2
  37. package/dist/client/useCollectionApi.js.map +1 -1
  38. package/dist/client/useExtra.d.ts.map +1 -1
  39. package/dist/client/useExtra.js +5 -2
  40. package/dist/client/useExtra.js.map +1 -1
  41. package/dist/client/useHttp.d.ts.map +1 -1
  42. package/dist/client/useHttp.js +9 -6
  43. package/dist/client/useHttp.js.map +1 -1
  44. package/dist/client/useLabel.d.ts.map +1 -1
  45. package/dist/client/useLabel.js +5 -2
  46. package/dist/client/useLabel.js.map +1 -1
  47. package/dist/client/useLayout.d.ts.map +1 -1
  48. package/dist/client/useLayout.js +5 -2
  49. package/dist/client/useLayout.js.map +1 -1
  50. package/dist/client/useLink.d.ts.map +1 -1
  51. package/dist/client/useLink.js +7 -3
  52. package/dist/client/useLink.js.map +1 -1
  53. package/dist/client/useMetaData.d.ts.map +1 -1
  54. package/dist/client/useMetaData.js +5 -2
  55. package/dist/client/useMetaData.js.map +1 -1
  56. package/dist/client/usePage.d.ts.map +1 -1
  57. package/dist/client/usePage.js +5 -2
  58. package/dist/client/usePage.js.map +1 -1
  59. package/dist/client/useUser.d.ts.map +1 -1
  60. package/dist/client/useUser.js +5 -2
  61. package/dist/client/useUser.js.map +1 -1
  62. package/dist/client/user.d.ts.map +1 -1
  63. package/dist/client/user.js +17 -11
  64. package/dist/client/user.js.map +1 -1
  65. package/dist/exports/client.js +2 -1
  66. package/dist/exports/instrumentation.js +2 -1
  67. package/dist/exports/proxy.js +2 -1
  68. package/dist/exports/server.d.ts +5 -4
  69. package/dist/exports/server.js +7 -5
  70. package/dist/index.d.ts +3 -3
  71. package/dist/index.js +3 -2
  72. package/dist/instrumentation/client.d.ts.map +1 -1
  73. package/dist/instrumentation/client.js +2 -1
  74. package/dist/instrumentation/client.js.map +1 -1
  75. package/dist/instrumentation/sentry/capture.requestError.js +4 -1
  76. package/dist/instrumentation/sentry/capture.requestError.js.map +1 -1
  77. package/dist/instrumentation/sentry/capture.routerTransitionStart.js +2 -1
  78. package/dist/instrumentation/sentry/capture.routerTransitionStart.js.map +1 -1
  79. package/dist/instrumentation/sentry/config.client.js +10 -2
  80. package/dist/instrumentation/sentry/config.client.js.map +1 -0
  81. package/dist/instrumentation/sentry/config.edge.js +10 -2
  82. package/dist/instrumentation/sentry/config.edge.js.map +1 -0
  83. package/dist/instrumentation/sentry/config.server.js +10 -2
  84. package/dist/instrumentation/sentry/config.server.js.map +1 -0
  85. package/dist/instrumentation/server.d.ts.map +1 -1
  86. package/dist/instrumentation/server.js +8 -5
  87. package/dist/instrumentation/server.js.map +1 -1
  88. package/dist/instrumentation/types.d.ts.map +1 -1
  89. package/dist/lib/breadcrumb.d.ts.map +1 -1
  90. package/dist/lib/breadcrumb.js +6 -1
  91. package/dist/lib/breadcrumb.js.map +1 -1
  92. package/dist/lib/const.d.ts +14 -2
  93. package/dist/lib/const.d.ts.map +1 -1
  94. package/dist/lib/const.js +24 -2
  95. package/dist/lib/const.js.map +1 -1
  96. package/dist/lib/http.d.ts +9 -0
  97. package/dist/lib/http.d.ts.map +1 -1
  98. package/dist/lib/http.js +27 -4
  99. package/dist/lib/http.js.map +1 -1
  100. package/dist/lib/label.d.ts.map +1 -1
  101. package/dist/lib/label.js +4 -3
  102. package/dist/lib/label.js.map +1 -1
  103. package/dist/lib/layout.defaults.d.ts.map +1 -1
  104. package/dist/lib/layout.defaults.js +1 -1
  105. package/dist/lib/layout.defaults.js.map +1 -1
  106. package/dist/lib/link.d.ts.map +1 -1
  107. package/dist/lib/link.js +2 -1
  108. package/dist/lib/link.js.map +1 -1
  109. package/dist/lib/meta-data.d.ts.map +1 -1
  110. package/dist/lib/open-graph.d.ts.map +1 -1
  111. package/dist/lib/pagination.d.ts.map +1 -1
  112. package/dist/lib/pagination.js +4 -2
  113. package/dist/lib/pagination.js.map +1 -1
  114. package/dist/lib/route.d.ts.map +1 -1
  115. package/dist/lib/route.js +9 -3
  116. package/dist/lib/route.js.map +1 -1
  117. package/dist/lib/store.d.ts.map +1 -1
  118. package/dist/lib/store.js +31 -31
  119. package/dist/lib/store.js.map +1 -1
  120. package/dist/lib/structured-data.d.ts.map +1 -1
  121. package/dist/lib/twitter-card.d.ts.map +1 -1
  122. package/dist/lib/utils.d.ts.map +1 -1
  123. package/dist/lib/utils.js +3 -2
  124. package/dist/lib/utils.js.map +1 -1
  125. package/dist/mock.d.ts.map +1 -1
  126. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js +3 -2
  127. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js.map +1 -1
  128. package/dist/node_modules/deepmerge/dist/cjs.js +17 -9
  129. package/dist/node_modules/deepmerge/dist/cjs.js.map +1 -1
  130. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js +2 -2
  131. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js.map +1 -1
  132. package/dist/node_modules/dom-serializer/lib/esm/index.js +10 -15
  133. package/dist/node_modules/dom-serializer/lib/esm/index.js.map +1 -1
  134. package/dist/node_modules/domelementtype/lib/esm/index.js +12 -12
  135. package/dist/node_modules/domelementtype/lib/esm/index.js.map +1 -1
  136. package/dist/node_modules/domhandler/lib/esm/index.js +4 -3
  137. package/dist/node_modules/domhandler/lib/esm/index.js.map +1 -1
  138. package/dist/node_modules/domhandler/lib/esm/node.js +8 -7
  139. package/dist/node_modules/domhandler/lib/esm/node.js.map +1 -1
  140. package/dist/node_modules/entities/lib/esm/decode.js +33 -32
  141. package/dist/node_modules/entities/lib/esm/decode.js.map +1 -1
  142. package/dist/node_modules/entities/lib/esm/decode_codepoint.js +5 -5
  143. package/dist/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -1
  144. package/dist/node_modules/entities/lib/esm/escape.js +14 -6
  145. package/dist/node_modules/entities/lib/esm/escape.js.map +1 -1
  146. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js +2 -2
  147. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -1
  148. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js +2 -2
  149. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -1
  150. package/dist/node_modules/html-to-text/lib/html-to-text.js +45 -33
  151. package/dist/node_modules/html-to-text/lib/html-to-text.js.map +1 -1
  152. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js +25 -25
  153. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js.map +1 -1
  154. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js +76 -73
  155. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js.map +1 -1
  156. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js +4 -3
  157. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js.map +1 -1
  158. package/dist/node_modules/leac/lib/leac.js +72 -72
  159. package/dist/node_modules/leac/lib/leac.js.map +1 -1
  160. package/dist/node_modules/parseley/lib/parseley.js +37 -33
  161. package/dist/node_modules/parseley/lib/parseley.js.map +1 -1
  162. package/dist/node_modules/peberminta/lib/core.js +4 -4
  163. package/dist/node_modules/peberminta/lib/core.js.map +1 -1
  164. package/dist/node_modules/selderee/lib/selderee.js +16 -10
  165. package/dist/node_modules/selderee/lib/selderee.js.map +1 -1
  166. package/dist/proxy/protected-route.d.ts.map +1 -1
  167. package/dist/proxy/protected-route.js +11 -6
  168. package/dist/proxy/protected-route.js.map +1 -1
  169. package/dist/proxy/proxy.d.ts +5 -4
  170. package/dist/proxy/proxy.d.ts.map +1 -1
  171. package/dist/proxy/proxy.js +26 -6
  172. package/dist/proxy/proxy.js.map +1 -1
  173. package/dist/proxy/route-auto-detection.d.ts.map +1 -1
  174. package/dist/proxy/route-auto-detection.js +26 -14
  175. package/dist/proxy/route-auto-detection.js.map +1 -1
  176. package/dist/proxy/route-proxy.d.ts.map +1 -1
  177. package/dist/proxy/route-proxy.js +22 -5
  178. package/dist/proxy/route-proxy.js.map +1 -1
  179. package/dist/server/context.d.ts +31 -15
  180. package/dist/server/context.d.ts.map +1 -1
  181. package/dist/server/context.js +156 -69
  182. package/dist/server/context.js.map +1 -1
  183. package/dist/server/handlers/auth.handler.d.ts.map +1 -1
  184. package/dist/server/handlers/auth.handler.js +4 -2
  185. package/dist/server/handlers/auth.handler.js.map +1 -1
  186. package/dist/server/handlers/captions.handler.d.ts.map +1 -1
  187. package/dist/server/handlers/captions.handler.js +4 -2
  188. package/dist/server/handlers/captions.handler.js.map +1 -1
  189. package/dist/server/handlers/collection.handler.d.ts.map +1 -1
  190. package/dist/server/handlers/collection.handler.js +2 -1
  191. package/dist/server/handlers/collection.handler.js.map +1 -1
  192. package/dist/server/handlers/error-response.js +6 -2
  193. package/dist/server/handlers/error-response.js.map +1 -1
  194. package/dist/server/handlers/index.handler.d.ts.map +1 -1
  195. package/dist/server/handlers/index.handler.js +2 -1
  196. package/dist/server/handlers/index.handler.js.map +1 -1
  197. package/dist/server/handlers/preview.handler.d.ts.map +1 -1
  198. package/dist/server/handlers/preview.handler.js +6 -3
  199. package/dist/server/handlers/preview.handler.js.map +1 -1
  200. package/dist/server/handlers/registry.handler.d.ts.map +1 -1
  201. package/dist/server/handlers/registry.handler.js +14 -9
  202. package/dist/server/handlers/registry.handler.js.map +1 -1
  203. package/dist/server/handlers/route.handler.d.ts.map +1 -1
  204. package/dist/server/handlers/route.handler.js +12 -3
  205. package/dist/server/handlers/route.handler.js.map +1 -1
  206. package/dist/server/handlers/sitemap.handler.d.ts.map +1 -1
  207. package/dist/server/handlers/sitemap.handler.js +12 -9
  208. package/dist/server/handlers/sitemap.handler.js.map +1 -1
  209. package/dist/server/handlers/static-params.handler.d.ts.map +1 -1
  210. package/dist/server/handlers/static-params.handler.js +13 -8
  211. package/dist/server/handlers/static-params.handler.js.map +1 -1
  212. package/dist/server/handlers/vars.handler.d.ts.map +1 -1
  213. package/dist/server/handlers/vars.handler.js +5 -4
  214. package/dist/server/handlers/vars.handler.js.map +1 -1
  215. package/dist/server/helpers.d.ts +50 -0
  216. package/dist/server/helpers.d.ts.map +1 -0
  217. package/dist/server/helpers.js +60 -0
  218. package/dist/server/helpers.js.map +1 -0
  219. package/dist/server/layout.js +69 -34
  220. package/dist/server/layout.js.map +1 -1
  221. package/dist/server/lazy.d.ts +1 -0
  222. package/dist/server/lazy.d.ts.map +1 -1
  223. package/dist/server/lazy.js +3 -2
  224. package/dist/server/lazy.js.map +1 -1
  225. package/dist/server/local-api.d.ts.map +1 -1
  226. package/dist/server/local-api.js +12 -6
  227. package/dist/server/local-api.js.map +1 -1
  228. package/dist/server/metadata.d.ts +8 -5
  229. package/dist/server/metadata.d.ts.map +1 -1
  230. package/dist/server/metadata.js +21 -7
  231. package/dist/server/metadata.js.map +1 -1
  232. package/dist/server/mixer-payload.d.ts +1 -1
  233. package/dist/server/mixer-payload.d.ts.map +1 -1
  234. package/dist/server/mixer.d.ts +48 -6
  235. package/dist/server/mixer.d.ts.map +1 -1
  236. package/dist/server/mixer.js +235 -68
  237. package/dist/server/mixer.js.map +1 -1
  238. package/dist/server/page.d.ts +21 -5
  239. package/dist/server/page.d.ts.map +1 -1
  240. package/dist/server/page.js +74 -15
  241. package/dist/server/page.js.map +1 -1
  242. package/dist/server/utils.d.ts.map +1 -1
  243. package/dist/server/utils.js +4 -2
  244. package/dist/server/utils.js.map +1 -1
  245. package/dist/server/utmz.d.ts.map +1 -1
  246. package/dist/server/utmz.js +1 -1
  247. package/dist/server/utmz.js.map +1 -1
  248. package/dist/types.d.ts +79 -8
  249. package/dist/types.d.ts.map +1 -1
  250. package/package.json +16 -15
  251. package/src/exports/server.ts +1 -0
  252. package/src/lib/const.ts +15 -0
  253. package/src/lib/http.ts +15 -4
  254. package/src/proxy/proxy.ts +11 -4
  255. package/src/server/context.test.ts +467 -0
  256. package/src/server/context.ts +237 -78
  257. package/src/server/context.type-test.ts +106 -0
  258. package/src/server/helpers.ts +58 -0
  259. package/src/server/layout.ts +45 -39
  260. package/src/server/lazy.ts +1 -1
  261. package/src/server/metadata.ts +15 -7
  262. package/src/server/mixer.ts +57 -9
  263. package/src/server/page.ts +62 -17
  264. package/src/types.ts +109 -7
package/CHANGELOG.md CHANGED
@@ -1,7 +1,37 @@
1
- # @websolutespa/bom-next
2
-
3
- ## 3.0.2
4
-
5
- ### Patch Changes
6
-
7
- - Added: first release
1
+ # @websolutespa/bom-next
2
+
3
+ ## 4.0.0-next.1
4
+
5
+ ### Minor Changes
6
+
7
+ - Next: options signature for `createPageContext`, `createLayoutContext`, `createNotFoundContext` and `getMetadata`.
8
+ - New form: `createPageContext(market, locale, slug, id, { config, headers, depth, select, populate, joins, draft, layout })` and `createLayoutContext(market, locale, { config, headers, depth, draft })`. The positional `(config, headers)` form still works, logs a one-time deprecation warning in development.
9
+ - **Behaviour change:** pages are now read at `DEFAULT_PAGE_DEPTH` (2) and the layout at `DEFAULT_LAYOUT_DEPTH` (1), including through the legacy signature. Relationships and uploads (page media, media inside blocks, category, template, markets) are populated objects instead of ids; pass `depth: 0` to keep the previous shape.
10
+ - `select` narrows the page type; envelope fields (`id`, `slug`, `title`, `category`, `markets`, `meta`, `template`) are always read so `href`, alternates and breadcrumb keep working.
11
+ - Draft mode works: `draft: 'auto'` (default) reads Next `draftMode()`, draft reads use the draft mixer/route cache key and the authenticated user. `createNotFoundContext` always reads published content.
12
+ - Page and layout are loaded once per request (React `cache`, serialized key) and in parallel, so `getMetadata` and the page share the same reads. `getLayout` runs its reads in parallel.
13
+ - `getPage` returns `undefined` only for not found / not accessible documents and rethrows other errors.
14
+ - `buildBaseOptions` is deprecated in favour of `buildReadOptions({ user, locale, draft, depth, select, populate, joins })`.
15
+ - `context`, `page`, `layout` and `lazy` modules use `import 'server-only'` instead of `'use server'`, so their exports are no longer exposed as Server Actions. `server-only` is now a dependency; outside Next (scripts, Payload CLI, Vitest) `@websolutespa/bom-next/server` needs the `react-server` condition (`node --conditions=react-server`, Vitest `resolve.conditions`) or a `server-only` mock.
16
+ - `TypedPageContext.layout` follows the `layout` option: `undefined` with `layout: false`.
17
+ - New `createContextHelpers({ config, defaults })` factory and `Populated<T>` type helper.
18
+
19
+ ### Patch Changes
20
+
21
+ - feat: enhance page context options and helpers
22
+
23
+ ## 4.0.0-next.0
24
+
25
+ ### Major Changes
26
+
27
+ - Next: support of the bom-next app package
28
+ - Updated dependencies
29
+ - @websolutespa/bom-core@4.0.0-next.0
30
+ - @websolutespa/payload-plugin-bowl@4.0.0-next.0
31
+ - @websolutespa/payload-utils@4.0.0-next.0
32
+
33
+ ## 3.0.2
34
+
35
+ ### Patch Changes
36
+
37
+ - Added: first release
package/README.md CHANGED
@@ -9,3 +9,31 @@ Next module of the [BOM Repository](https://github.com/websolutespa/bom) by [web
9
9
  ---
10
10
 
11
11
  ##### *this library is for internal usage and not production ready*
12
+
13
+ ## Page context
14
+
15
+ ```ts
16
+ import { createPageContext, getMetadata } from '@websolutespa/bom-next/server';
17
+
18
+ export const generateMetadata = getMetadata('post_detail', config);
19
+
20
+ const { page, layout, label, link } = await createPageContext(market, locale, 'post_detail', id, {
21
+ config,
22
+ depth: 2, // default DEFAULT_PAGE_DEPTH
23
+ select: { title: true, abstract: true, media: true, components: true },
24
+ populate: { media: { url: true, alt: true, width: true, height: true, type: true } },
25
+ });
26
+
27
+ const { layout } = await createLayoutContext(market, locale, { config }); // depth: DEFAULT_LAYOUT_DEPTH (1)
28
+ ```
29
+
30
+ | option | default | |
31
+ |---|---|---|
32
+ | `depth` | `2` | `0` ids only, `1` direct relations/uploads (including those inside blocks), `2` relations of relations |
33
+ | `select` | – | Payload select; envelope fields (`id`, `slug`, `title`, `category`, `markets`, `meta`, `template`) are always read |
34
+ | `populate` | – | per-collection select for populated documents |
35
+ | `draft` | `'auto'` | `true` / `false`, or `'auto'` to read Next `draftMode()` |
36
+ | `layout` | `{ depth: 1 }` | layout options, or `false` to skip the layout |
37
+
38
+ Page and layout reads are memoized per request, so `getMetadata` and the page component share them when called with the same options.
39
+ To bind `config` once: `export const { createPageContext, createLayoutContext, getMetadata } = createContextHelpers({ config, defaults: { depth: 2 } });`
@@ -1,11 +1,13 @@
1
- //#region \0rolldown/runtime.js
1
+ //#region rolldown:runtime
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
8
+ var __commonJS = (cb, mod) => function() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
9
11
  var __copyProps = (to, from, except, desc) => {
10
12
  if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
13
  key = keys[i];
@@ -16,9 +18,10 @@ var __copyProps = (to, from, except, desc) => {
16
18
  }
17
19
  return to;
18
20
  };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
20
22
  value: mod,
21
23
  enumerable: true
22
24
  }) : target, mod));
25
+
23
26
  //#endregion
24
- export { __commonJSMin, __toESM };
27
+ export { __commonJS, __toESM };
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../../src/client/client.tsx"],"mappings":";;;iBAMgB,MAAA,CAAA,GAAM,MAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"client.d.ts","names":[],"sources":["../../src/client/client.tsx"],"sourcesContent":[],"mappings":";;;iBAMgB,MAAA,CAAA,GAAM,MAAA,CAAA,GAAA,CAAA"}
@@ -1,18 +1,29 @@
1
- "use client";
1
+ 'use client';
2
+
3
+
2
4
  import { useLabel } from "./useLabel.js";
3
5
  import { usePage } from "./usePage.js";
4
6
  import { getClassNames } from "@websolutespa/bom-core";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+
5
9
  //#region src/client/client.tsx
6
10
  function Client() {
7
11
  const label = useLabel();
8
12
  const page = usePage();
9
13
  const classNames = getClassNames("client");
10
- return <div className={classNames}>
11
- <h2 className="display-2">{page.title} <sup>{page.id}</sup></h2>
12
- <h2>{label("label")}</h2>
13
- </div>;
14
+ return /* @__PURE__ */ jsxs("div", {
15
+ className: classNames,
16
+ children: [/* @__PURE__ */ jsxs("h2", {
17
+ className: "display-2",
18
+ children: [
19
+ page.title,
20
+ " ",
21
+ /* @__PURE__ */ jsx("sup", { children: page.id })
22
+ ]
23
+ }), /* @__PURE__ */ jsx("h2", { children: label("label") })]
24
+ });
14
25
  }
26
+
15
27
  //#endregion
16
28
  export { Client };
17
-
18
29
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../src/client/client.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { getClassNames } from '@websolutespa/bom-core';\r\nimport { useLabel } from './useLabel';\r\nimport { usePage } from './usePage';\r\n\r\nexport function Client() {\r\n const label = useLabel();\r\n const page = usePage();\r\n // console.log('Client', layout, page, label('label'));\r\n const classNames = getClassNames('client');\r\n return (\r\n <div className={classNames}>\r\n <h2 className=\"display-2\">{page.title} <sup>{page.id}</sup></h2>\r\n <h2>{label('label')}</h2>\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;AAMA,SAAgB,SAAS;CACvB,MAAM,QAAQ,SAAS;CACvB,MAAM,OAAO,QAAQ;CAErB,MAAM,aAAa,cAAc,QAAQ;CACzC,OACE,CAAC,IAAI,WAAW,YAAY;MAC1B,CAAC,GAAG,uBAAuB,KAAK,MAAM,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG;MAChE,CAAC,IAAI,MAAM,OAAO,EAAE,EAAE,GAAG;IAC3B,EAAE;AAEN"}
1
+ {"version":3,"file":"client.js","names":[],"sources":["../../src/client/client.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { getClassNames } from '@websolutespa/bom-core';\r\nimport { useLabel } from './useLabel';\r\nimport { usePage } from './usePage';\r\n\r\nexport function Client() {\r\n const label = useLabel();\r\n const page = usePage();\r\n // console.log('Client', layout, page, label('label'));\r\n const classNames = getClassNames('client');\r\n return (\r\n <div className={classNames}>\r\n <h2 className=\"display-2\">{page.title} <sup>{page.id}</sup></h2>\r\n <h2>{label('label')}</h2>\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;AAMA,SAAgB,SAAS;CACvB,MAAM,QAAQ,UAAU;CACxB,MAAM,OAAO,SAAS;CAEtB,MAAM,aAAa,cAAc,SAAS;AAC1C,6BACG;EAAI,WAAW;kCACb;GAAG,WAAU;;IAAa,KAAK;IAAM;wBAAE,mBAAK,KAAK,KAAS;;IAAK,sBAC/D,kBAAI,MAAM,QAAQ,GAAM;GACrB;AAET"}
@@ -1,15 +1,15 @@
1
- import * as react2 from "react";
1
+ import * as react4 from "react";
2
2
 
3
3
  //#region src/client/extra.d.ts
4
4
  type IExtraContext = Record<string, any>;
5
- declare const ExtraContext: react2.Context<IExtraContext | undefined>;
5
+ declare const ExtraContext: react4.Context<IExtraContext | undefined>;
6
6
  declare function ExtraProvider({
7
7
  extra,
8
8
  children
9
9
  }: {
10
10
  extra?: Record<string, any>;
11
11
  children?: React.ReactNode;
12
- }): react2.JSX.Element;
12
+ }): react4.JSX.Element;
13
13
  //# sourceMappingURL=extra.d.ts.map
14
14
 
15
15
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"extra.d.ts","names":[],"sources":["../../src/client/extra.tsx"],"mappings":";;;KAIY,aAAA,GAAgB;cAEf,cAAY,MAAA,CAAA,QAAA;iBAET,aAAA;;;AAF+D;EAFnE,KAAA,CAAA,EAQF,MARE,CAAA,MAAa,EAAA,GAAA,CAAA;EAEZ,QAAA,CAAA,EAOA,KAAA,CAAM,SAP4D;AAAA,CAAA,CAAA,EAQ9E,MAAA,CAAA,GAAA,CAAA,OAR8E;AAAtD"}
1
+ {"version":3,"file":"extra.d.ts","names":[],"sources":["../../src/client/extra.tsx"],"sourcesContent":[],"mappings":";;;KAIY,aAAA,GAAgB;cAEf,cAAY,MAAA,CAAA,QAAA;iBAET,aAAA;;;;EAJJ,KAAA,CAAA,EAQF,MARE,CAAA,MAAa,EAAA,GAAA,CAAA;EAEZ,QAAA,CAAA,EAOA,KAAA,CAAM,SAP4D;CAAA,CAAA,EAQ9E,MAAA,CAAA,GAAA,CAAA,OAR8E"}
@@ -1,13 +1,18 @@
1
- "use client";
1
+ 'use client';
2
+
3
+
2
4
  import { createContext } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
3
7
  //#region src/client/extra.tsx
4
8
  const ExtraContext = createContext(void 0);
5
9
  function ExtraProvider({ extra = {}, children }) {
6
- return <ExtraContext.Provider value={extra}>
7
- {children}
8
- </ExtraContext.Provider>;
10
+ return /* @__PURE__ */ jsx(ExtraContext.Provider, {
11
+ value: extra,
12
+ children
13
+ });
9
14
  }
15
+
10
16
  //#endregion
11
17
  export { ExtraContext, ExtraProvider };
12
-
13
18
  //# sourceMappingURL=extra.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extra.js","names":[],"sources":["../../src/client/extra.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createContext } from 'react';\r\n\r\nexport type IExtraContext = Record<string, any>;\r\n\r\nexport const ExtraContext = createContext<IExtraContext | undefined>(undefined);\r\n\r\nexport function ExtraProvider({\r\n extra = {},\r\n children,\r\n}: {\r\n extra?: Record<string, any>,\r\n children?: React.ReactNode\r\n}) {\r\n return (\r\n <ExtraContext.Provider value={extra}>\r\n {children}\r\n </ExtraContext.Provider>\r\n );\r\n}\r\n"],"mappings":";;;AAMA,MAAa,eAAe,cAAyC,KAAA,CAAS;AAE9E,SAAgB,cAAc,EAC5B,QAAQ,CAAC,GACT,YAIC;CACD,OACE,CAAC,aAAa,SAAS,OAAO,OAAO;OAClC,SAAS;IACZ,EAAE,aAAa;AAEnB"}
1
+ {"version":3,"file":"extra.js","names":[],"sources":["../../src/client/extra.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createContext } from 'react';\r\n\r\nexport type IExtraContext = Record<string, any>;\r\n\r\nexport const ExtraContext = createContext<IExtraContext | undefined>(undefined);\r\n\r\nexport function ExtraProvider({\r\n extra = {},\r\n children,\r\n}: {\r\n extra?: Record<string, any>,\r\n children?: React.ReactNode\r\n}) {\r\n return (\r\n <ExtraContext.Provider value={extra}>\r\n {children}\r\n </ExtraContext.Provider>\r\n );\r\n}\r\n"],"mappings":";;;;;;;AAMA,MAAa,eAAe,cAAyC,OAAU;AAE/E,SAAgB,cAAc,EAC5B,QAAQ,CAAE,GACV,UAID,EAAE;AACD,4BACG,aAAa;EAAS,OAAO;EAC3B;GACqB;AAE3B"}
@@ -1,13 +1,13 @@
1
- import * as react4 from "react";
1
+ import * as react0 from "react";
2
2
 
3
3
  //#region src/client/label.d.ts
4
4
  type ILabelContext = (key: string, params?: Record<string, any>) => string;
5
- declare const LabelContext: react4.Context<ILabelContext | undefined>;
5
+ declare const LabelContext: react0.Context<ILabelContext | undefined>;
6
6
  declare function LabelProvider({
7
7
  children
8
8
  }: {
9
9
  children?: React.ReactNode;
10
- }): react4.JSX.Element;
10
+ }): react0.JSX.Element;
11
11
  //# sourceMappingURL=label.d.ts.map
12
12
 
13
13
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"label.d.ts","names":[],"sources":["../../src/client/label.tsx"],"mappings":";;;KAMY,aAAA,0BAAuC;cAEtC,cAAY,MAAA,CAAA,QAAA;iBAET,aAAA;;AAFhB;EAFY,QAAA,CAAA,EAI6C,KAAA,CAAM,SAJtC;AAEzB,CAAA,CAAA,EAE0E,MAAA,CAAA,GAAA,CAAA,OAFK;AAAA"}
1
+ {"version":3,"file":"label.d.ts","names":[],"sources":["../../src/client/label.tsx"],"sourcesContent":[],"mappings":";;;KAMY,aAAA,0BAAuC;cAEtC,cAAY,MAAA,CAAA,QAAA;iBAET,aAAA;;AAFhB;EAFY,QAAA,CAAA,EAI6C,KAAA,CAAM,SAJtC;AAEzB,CAAA,CAAA,EAE0E,MAAA,CAAA,GAAA,CAAA,OAFK"}
@@ -1,7 +1,11 @@
1
- "use client";
1
+ 'use client';
2
+
3
+
2
4
  import { LabelService } from "../lib/label.js";
3
5
  import { useLayout } from "./useLayout.js";
4
6
  import { createContext } from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+
5
9
  //#region src/client/label.tsx
6
10
  const LabelContext = createContext(void 0);
7
11
  function LabelProvider({ children }) {
@@ -10,11 +14,12 @@ function LabelProvider({ children }) {
10
14
  const getLabel = (key, params) => {
11
15
  return labelService.getLabel(key, params);
12
16
  };
13
- return <LabelContext.Provider value={getLabel}>
14
- {children}
15
- </LabelContext.Provider>;
17
+ return /* @__PURE__ */ jsx(LabelContext.Provider, {
18
+ value: getLabel,
19
+ children
20
+ });
16
21
  }
22
+
17
23
  //#endregion
18
24
  export { LabelContext, LabelProvider };
19
-
20
25
  //# sourceMappingURL=label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"label.js","names":[],"sources":["../../src/client/label.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createContext } from 'react';\r\nimport { LabelService } from '../lib/label';\r\nimport { useLayout } from './useLayout';\r\n\r\nexport type ILabelContext = (key: string, params?: Record<string, any>) => string;\r\n\r\nexport const LabelContext = createContext<ILabelContext | undefined>(undefined);\r\n\r\nexport function LabelProvider({ children }: { children?: React.ReactNode }) {\r\n const { labels } = useLayout();\r\n // console.log('LabelProvider', labels);\r\n const labelService = new LabelService(labels);\r\n const getLabel = (key: string, params?: Record<string, any>): string => {\r\n return labelService.getLabel(key, params);\r\n };\r\n return (\r\n <LabelContext.Provider value={getLabel}>\r\n {children}\r\n </LabelContext.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";;;;;AAQA,MAAa,eAAe,cAAyC,KAAA,CAAS;AAE9E,SAAgB,cAAc,EAAE,YAA4C;CAC1E,MAAM,EAAE,WAAW,UAAU;CAE7B,MAAM,eAAe,IAAI,aAAa,MAAM;CAC5C,MAAM,YAAY,KAAa,WAAyC;EACtE,OAAO,aAAa,SAAS,KAAK,MAAM;CAC1C;CACA,OACE,CAAC,aAAa,SAAS,OAAO,UAAU;OACrC,SAAS;IACZ,EAAE,aAAa;AAEnB"}
1
+ {"version":3,"file":"label.js","names":["key: string","params?: Record<string, any>"],"sources":["../../src/client/label.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createContext } from 'react';\r\nimport { LabelService } from '../lib/label';\r\nimport { useLayout } from './useLayout';\r\n\r\nexport type ILabelContext = (key: string, params?: Record<string, any>) => string;\r\n\r\nexport const LabelContext = createContext<ILabelContext | undefined>(undefined);\r\n\r\nexport function LabelProvider({ children }: { children?: React.ReactNode }) {\r\n const { labels } = useLayout();\r\n // console.log('LabelProvider', labels);\r\n const labelService = new LabelService(labels);\r\n const getLabel = (key: string, params?: Record<string, any>): string => {\r\n return labelService.getLabel(key, params);\r\n };\r\n return (\r\n <LabelContext.Provider value={getLabel}>\r\n {children}\r\n </LabelContext.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";;;;;;;;;AAQA,MAAa,eAAe,cAAyC,OAAU;AAE/E,SAAgB,cAAc,EAAE,UAA0C,EAAE;CAC1E,MAAM,EAAE,QAAQ,GAAG,WAAW;CAE9B,MAAM,eAAe,IAAI,aAAa;CACtC,MAAM,WAAW,CAACA,KAAaC,WAAyC;AACtE,SAAO,aAAa,SAAS,KAAK,OAAO;CAC1C;AACD,4BACG,aAAa;EAAS,OAAO;EAC3B;GACqB;AAE3B"}
@@ -1,16 +1,16 @@
1
1
  import { ILayout } from "@websolutespa/bom-core";
2
- import * as react0 from "react";
2
+ import * as react2 from "react";
3
3
 
4
4
  //#region src/client/layout.d.ts
5
5
  type ILayoutContext = ILayout;
6
- declare const LayoutContext: react0.Context<ILayoutContext | undefined>;
6
+ declare const LayoutContext: react2.Context<ILayoutContext | undefined>;
7
7
  declare function LayoutProvider({
8
8
  layout,
9
9
  children
10
10
  }: {
11
11
  layout: ILayout;
12
12
  children?: React.ReactNode;
13
- }): react0.JSX.Element;
13
+ }): react2.JSX.Element;
14
14
  //# sourceMappingURL=layout.d.ts.map
15
15
 
16
16
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","names":[],"sources":["../../src/client/layout.tsx"],"mappings":";;;;KAKY,cAAA,GAAiB;cAEhB,eAAa,MAAA,CAAA,QAAA;iBAEV,cAAA;;;AAFiE;EAFrE,MAAA,EAQF,OARE;EAEC,QAAA,CAAA,EAOA,KAAA,CAAM,SAP8D;AAAA,CAAA,CAAA,EAQhF,MAAA,CAAA,GAAA,CAAA,OARgF;AAAvD"}
1
+ {"version":3,"file":"layout.d.ts","names":[],"sources":["../../src/client/layout.tsx"],"sourcesContent":[],"mappings":";;;;KAKY,cAAA,GAAiB;cAEhB,eAAa,MAAA,CAAA,QAAA;iBAEV,cAAA;;;;EAJJ,MAAA,EAQF,OARE;EAEC,QAAA,CAAA,EAOA,KAAA,CAAM,SAP8D;CAAA,CAAA,EAQhF,MAAA,CAAA,GAAA,CAAA,OARgF"}
@@ -1,13 +1,18 @@
1
- "use client";
1
+ 'use client';
2
+
3
+
2
4
  import { createContext } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
3
7
  //#region src/client/layout.tsx
4
8
  const LayoutContext = createContext(void 0);
5
9
  function LayoutProvider({ layout, children }) {
6
- return <LayoutContext.Provider value={layout}>
7
- {children}
8
- </LayoutContext.Provider>;
10
+ return /* @__PURE__ */ jsx(LayoutContext.Provider, {
11
+ value: layout,
12
+ children
13
+ });
9
14
  }
15
+
10
16
  //#endregion
11
17
  export { LayoutContext, LayoutProvider };
12
-
13
18
  //# sourceMappingURL=layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","names":[],"sources":["../../src/client/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { ILayout } from '@websolutespa/bom-core';\r\nimport { createContext } from 'react';\r\n\r\nexport type ILayoutContext = ILayout;\r\n\r\nexport const LayoutContext = createContext<ILayoutContext | undefined>(undefined);\r\n\r\nexport function LayoutProvider({\r\n layout,\r\n children,\r\n}: {\r\n layout: ILayout,\r\n children?: React.ReactNode\r\n}) {\r\n return (\r\n <LayoutContext.Provider value={layout}>\r\n {children}\r\n </LayoutContext.Provider>\r\n );\r\n}\r\n"],"mappings":";;;AAOA,MAAa,gBAAgB,cAA0C,KAAA,CAAS;AAEhF,SAAgB,eAAe,EAC7B,QACA,YAIC;CACD,OACE,CAAC,cAAc,SAAS,OAAO,QAAQ;OACpC,SAAS;IACZ,EAAE,cAAc;AAEpB"}
1
+ {"version":3,"file":"layout.js","names":[],"sources":["../../src/client/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { ILayout } from '@websolutespa/bom-core';\r\nimport { createContext } from 'react';\r\n\r\nexport type ILayoutContext = ILayout;\r\n\r\nexport const LayoutContext = createContext<ILayoutContext | undefined>(undefined);\r\n\r\nexport function LayoutProvider({\r\n layout,\r\n children,\r\n}: {\r\n layout: ILayout,\r\n children?: React.ReactNode\r\n}) {\r\n return (\r\n <LayoutContext.Provider value={layout}>\r\n {children}\r\n </LayoutContext.Provider>\r\n );\r\n}\r\n"],"mappings":";;;;;;;AAOA,MAAa,gBAAgB,cAA0C,OAAU;AAEjF,SAAgB,eAAe,EAC7B,QACA,UAID,EAAE;AACD,4BACG,cAAc;EAAS,OAAO;EAC5B;GACsB;AAE5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"local.collection.d.ts","names":[],"sources":["../../src/client/local.collection.ts"],"mappings":";;;iBAGsB,8DAA6D,iCAAzC;;EAApB,MAAA,EAAA,MAAA;AAAoB,CAAA,CAAA,EAAuH,OAAvH,CAA+H,CAA/H,CAAA;AAAyC,iBAW7D,kBAX6D,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAWP,iBAXO,EAAA,cAAqF,CAArF,EAAA;EAAsF,MAAA,EAAA,MAAA;EAAR,MAAA,EAAA,MAAA;AAAO,CAAA,CAAA,EAWd,OAXc,CAWN,CAXM,CAAA;AAWlJ,iBAIA,mBAJkB,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAIwD,iBAJxD,EAAA,cAA0H,CAA1H,EAAA;EAAA,MAAA,EAAA,MAAA;EAAoC,MAAA,EAAA,MAAA;AAAsF,CAAA,CAAA,EAIY,OAJZ,CAIoB,CAJpB,CAAA;AAAR,iBAQpI,kBARoI,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAQ3D,iBAR2D,EAAA,cAIjH,CAJiH,EAAA;EAAO,MAAA,EAAA,MAAA;EAI3I,MAAA,EAAA,MAAA;AAAmB,CAAA,CAAA,EAIoI,OAJpI,CAI4I,CAJ5I,CAAA;AAAuD,iBAQ1E,oBAR0E,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAQC,iBARD,EAAA,cAAqF,CAArF,EAAA;EAAsF,MAAA,EAAA,MAAA;EAAR,MAAA,EAAA,MAAA;AAAO,CAAA,CAAA,EAQN,OARM,CAQE,CARF,CAAA;AAI/J,iBAQA,qBARkB,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAQuC,iBARvC,EAAA,cAA6I,CAA7I,EAAA;EAAA,MAAA,EAAA,MAAA;EAAuD,MAAA,EAAA,MAAA;AAAsF,CAAA,CAAA,EAQxB,OARwB,CAQhB,CARgB,CAAA;AAAR"}
1
+ {"version":3,"file":"local.collection.d.ts","names":[],"sources":["../../src/client/local.collection.ts"],"sourcesContent":[],"mappings":";;;iBAGsB,8DAA6D,iCAAzC;;EAApB,MAAA,EAAA,MAAA;CAAoB,CAAA,EAAuH,OAAvH,CAA+H,CAA/H,CAAA;AAAyC,iBAW7D,kBAX6D,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAWP,iBAXO,EAAA,cAAqF,CAArF,EAAA;EAAsB,MAAgE,EAAA,MAAA;EAAC,MAAT,EAAA,MAAA;AAAO,CAAA,CAAA,EAWd,OAXc,CAWN,CAXM,CAAA;AAWlJ,iBAIA,mBAJkB,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAIwD,iBAJxD,EAAA,cAA0D,CAA1D,EAAA;EAAA,MAAA,EAAA,MAAA;EAAA,MAAoC,EAAA,MAAA;CAAsB,CAAA,EAI4E,OAJZ,CAIoB,CAJpB,CAAA;AAAR,iBAQpI,kBARoI,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAQ3D,iBAR2D,EAAA,cAIjH,CAJiH,EAAA;EAAO,MAAA,EAAA,MAAA;EAI3I,MAAA,EAAA,MAAA;CAAmB,CAAA,EAIoI,OAJpI,CAI4I,CAJ5I,CAAA;AAAuD,iBAQ1E,oBAR0E,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAQC,iBARD,EAAA,cAAqF,CAArF,EAAA;EAAsB,MAAgE,EAAA,MAAA;EAAC,MAAT,EAAA,MAAA;AAAO,CAAA,CAAA,EAQN,OARM,CAQE,CARF,CAAA;AAI/J,iBAQA,qBARkB,CAAA,IAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAQuC,iBARvC,EAAA,cAA6E,CAA7E,EAAA;EAAA,MAAA,EAAA,MAAA;EAAA,MAAuD,EAAA,MAAA;CAAsB,CAAA,EAQwC,OARwB,CAQhB,CARgB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { getLocalApiRequestOptions, getLocalApiUrl } from "../lib/http.js";
2
2
  import { httpFetch, merge } from "@websolutespa/bom-core";
3
+
3
4
  //#region src/client/local.collection.ts
4
5
  async function localCollectionFetch(pathname, options = {}, serviceOptions) {
5
6
  const url = new URL(getLocalApiUrl(pathname));
@@ -8,7 +9,8 @@ async function localCollectionFetch(pathname, options = {}, serviceOptions) {
8
9
  url.searchParams.append("market", serviceOptions.market);
9
10
  }
10
11
  const apiOptions = merge({ ...getLocalApiRequestOptions() }, options);
11
- return await httpFetch(url.href, apiOptions);
12
+ const apiResponse = await httpFetch(url.href, apiOptions);
13
+ return apiResponse;
12
14
  }
13
15
  async function localCollectionGet(url, options = {}, serviceOptions) {
14
16
  return await localCollectionFetch(url, {
@@ -43,7 +45,7 @@ async function localCollectionDelete(url, options = {}, serviceOptions) {
43
45
  method: "DELETE"
44
46
  }, serviceOptions);
45
47
  }
48
+
46
49
  //#endregion
47
50
  export { localCollectionDelete, localCollectionFetch, localCollectionGet, localCollectionPatch, localCollectionPost, localCollectionPut };
48
-
49
51
  //# sourceMappingURL=local.collection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local.collection.js","names":[],"sources":["../../src/client/local.collection.ts"],"sourcesContent":["import { httpFetch, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getLocalApiRequestOptions, getLocalApiUrl } from '../lib/http';\r\n\r\nexport async function localCollectionFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n const url = new URL(getLocalApiUrl(pathname));\r\n if (serviceOptions) {\r\n url.searchParams.append('locale', serviceOptions.locale);\r\n url.searchParams.append('market', serviceOptions.market);\r\n }\r\n const apiOptions = merge({ ...getLocalApiRequestOptions() }, options);\r\n const apiResponse = await httpFetch(url.href, apiOptions);\r\n return apiResponse;\r\n}\r\n\r\nexport async function localCollectionGet<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'GET' }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionPost<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'POST', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionPut<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'PUT', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionPatch<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'PATCH', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionDelete<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'DELETE' }, serviceOptions);\r\n}\r\n"],"mappings":";;;AAGA,eAAsB,qBAAkC,UAAkB,UAA6B,CAAC,GAAG,gBAAiE;CAC1K,MAAM,MAAM,IAAI,IAAI,eAAe,QAAQ,CAAC;CAC5C,IAAI,gBAAgB;EAClB,IAAI,aAAa,OAAO,UAAU,eAAe,MAAM;EACvD,IAAI,aAAa,OAAO,UAAU,eAAe,MAAM;CACzD;CACA,MAAM,aAAa,MAAM,EAAE,GAAG,0BAA0B,EAAE,GAAG,OAAO;CAEpE,OAAO,MADmB,UAAU,IAAI,MAAM,UAAU;AAE1D;AAEA,eAAsB,mBAAgC,KAAa,UAA6B,CAAC,GAAG,gBAAiE;CACnK,OAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;CAAM,GAAG,cAAc;AACzF;AAEA,eAAsB,oBAAiC,KAAa,SAAmB,UAA6B,CAAC,GAAG,gBAAiE;CACvL,OAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;EAAQ,MAAM,UAAU,KAAK,UAAU,OAAO,IAAI,KAAA;CAAU,GAAG,cAAc;AAC/I;AAEA,eAAsB,mBAAgC,KAAa,SAAmB,UAA6B,CAAC,GAAG,gBAAiE;CACtL,OAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;EAAO,MAAM,UAAU,KAAK,UAAU,OAAO,IAAI,KAAA;CAAU,GAAG,cAAc;AAC9I;AAEA,eAAsB,qBAAkC,KAAa,SAAmB,UAA6B,CAAC,GAAG,gBAAiE;CACxL,OAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;EAAS,MAAM,UAAU,KAAK,UAAU,OAAO,IAAI,KAAA;CAAU,GAAG,cAAc;AAChJ;AAEA,eAAsB,sBAAmC,KAAa,UAA6B,CAAC,GAAG,gBAAiE;CACtK,OAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;CAAS,GAAG,cAAc;AAC5F"}
1
+ {"version":3,"file":"local.collection.js","names":["pathname: string","options: ApiRequestOptions","serviceOptions?: { locale: string, market: string }","url: string","payload?: unknown"],"sources":["../../src/client/local.collection.ts"],"sourcesContent":["import { httpFetch, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getLocalApiRequestOptions, getLocalApiUrl } from '../lib/http';\r\n\r\nexport async function localCollectionFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n const url = new URL(getLocalApiUrl(pathname));\r\n if (serviceOptions) {\r\n url.searchParams.append('locale', serviceOptions.locale);\r\n url.searchParams.append('market', serviceOptions.market);\r\n }\r\n const apiOptions = merge({ ...getLocalApiRequestOptions() }, options);\r\n const apiResponse = await httpFetch(url.href, apiOptions);\r\n return apiResponse;\r\n}\r\n\r\nexport async function localCollectionGet<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'GET' }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionPost<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'POST', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionPut<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'PUT', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionPatch<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'PATCH', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localCollectionDelete<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localCollectionFetch<T>(url, { ...options, method: 'DELETE' }, serviceOptions);\r\n}\r\n"],"mappings":";;;;AAGA,eAAsB,qBAAkCA,UAAkBC,UAA6B,CAAE,GAAEC,gBAAiE;CAC1K,MAAM,MAAM,IAAI,IAAI,eAAe,SAAS;AAC5C,KAAI,gBAAgB;EAClB,IAAI,aAAa,OAAO,UAAU,eAAe,OAAO;EACxD,IAAI,aAAa,OAAO,UAAU,eAAe,OAAO;CACzD;CACD,MAAM,aAAa,MAAM,EAAE,GAAG,2BAA2B,CAAE,GAAE,QAAQ;CACrE,MAAM,cAAc,MAAM,UAAU,IAAI,MAAM,WAAW;AACzD,QAAO;AACR;AAED,eAAsB,mBAAgCC,KAAaF,UAA6B,CAAE,GAAEC,gBAAiE;AACnK,QAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;CAAO,GAAE,eAAe;AACzF;AAED,eAAsB,oBAAiCC,KAAaC,SAAmBH,UAA6B,CAAE,GAAEC,gBAAiE;AACvL,QAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;EAAQ,MAAM,UAAU,KAAK,UAAU,QAAQ,GAAG;CAAW,GAAE,eAAe;AAC/I;AAED,eAAsB,mBAAgCC,KAAaC,SAAmBH,UAA6B,CAAE,GAAEC,gBAAiE;AACtL,QAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;EAAO,MAAM,UAAU,KAAK,UAAU,QAAQ,GAAG;CAAW,GAAE,eAAe;AAC9I;AAED,eAAsB,qBAAkCC,KAAaC,SAAmBH,UAA6B,CAAE,GAAEC,gBAAiE;AACxL,QAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;EAAS,MAAM,UAAU,KAAK,UAAU,QAAQ,GAAG;CAAW,GAAE,eAAe;AAChJ;AAED,eAAsB,sBAAmCC,KAAaF,UAA6B,CAAE,GAAEC,gBAAiE;AACtK,QAAO,MAAM,qBAAwB,KAAK;EAAE,GAAG;EAAS,QAAQ;CAAU,GAAE,eAAe;AAC5F"}
@@ -2,7 +2,7 @@ import { OpenGraphType } from "../lib/open-graph.js";
2
2
  import { StructuredDataType } from "../lib/structured-data.js";
3
3
  import { TwitterCardType } from "../lib/twitter-card.js";
4
4
  import { IMetaData } from "../lib/meta-data.js";
5
- import * as react19 from "react";
5
+ import * as react8 from "react";
6
6
  import { ReactNode } from "react";
7
7
 
8
8
  //#region src/client/metadata.d.ts
@@ -29,14 +29,14 @@ type IMetaDataOptions = {
29
29
  twitterCard?: TwitterCardType;
30
30
  };
31
31
  type IMetaDataContext = IMetaData;
32
- declare const MetaDataContext: react19.Context<IMetaData | undefined>;
32
+ declare const MetaDataContext: react8.Context<IMetaData | undefined>;
33
33
  declare function MetaDataProvider({
34
34
  metaData,
35
35
  children
36
36
  }: {
37
37
  metaData: IMetaDataOptions;
38
38
  children?: ReactNode;
39
- }): react19.JSX.Element;
39
+ }): react8.JSX.Element;
40
40
  //# sourceMappingURL=metadata.d.ts.map
41
41
  //#endregion
42
42
  export { IMetaDataContext, IMetaDataOptions, MetaDataContext, MetaDataProvider };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","names":[],"sources":["../../src/client/metadata.tsx"],"mappings":";;;;;;;;KAeY,gBAAA;;;IAAA,IAAA,EAAA,MAAA;IAAgB,YAAA,CAAA,EAAA,MAAA;IAgBf,OAAA,CAAA,EAAA,MAAA;IAEM,GAAA,CAAA,EAAA,MAAA;IACL,KAAA,CAAA,EAAA,MAAA;IACE,SAAA,CAAA,EAAA,MAAA;IAAe,OAAA,CAAA,EAAA,MAAA;IAGnB,OAAA,CAAA,EAAA,MAAgB;IAEf,IAAA,CAAA,EAAA,MAAA;IAAwE,YAAA,CAAA,EAAA,MAAA;IAAzD,WAAA,CAAA,EAAA,MAAA;IAAA,WAAA,CAAA,EAAA,MAAA;IAAA,WAAA,CAAA,EAAA,MAAA;IAEZ,MAAA,CAAA,EAXH,MAWmB,CAAA,MAAA,EAAA,MAAA,CAAA;EAAA,CAAA;EAC9B,cAAA,CAAA,EAViB,kBAUjB;EACA,SAAA,CAAA,EAVY,aAUZ;EAEU,WAAA,CAAA,EAXI,eAWJ;AACC,CAAA;AACZ,KAVW,gBAAA,GAAmB,SAU9B;AAAA,cARY,eAQZ,EAR2B,OAAA,CAAA,OAQ3B,CAR2B,SAQ3B,GAAA,SAAA,CAAA;iBANe,gBAAA;;;;YAIJ;aACC;IACZ,OAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"metadata.d.ts","names":[],"sources":["../../src/client/metadata.tsx"],"sourcesContent":[],"mappings":";;;;;;;;KAeY,gBAAA;;;IAAA,IAAA,EAAA,MAAA;IAAgB,YAAA,CAAA,EAAA,MAAA;IAgBf,OAAA,CAAA,EAAA,MAAA;IAEM,GAAA,CAAA,EAAA,MAAA;IACL,KAAA,CAAA,EAAA,MAAA;IACE,SAAA,CAAA,EAAA,MAAA;IAAe,OAAA,CAAA,EAAA,MAAA;IAGnB,OAAA,CAAA,EAAA,MAAgB;IAEf,IAAA,CAAA,EAAA,MAAA;IAAwE,YAAA,CAAA,EAAA,MAAA;IAAzD,WAAA,CAAA,EAAA,MAAA;IAAA,WAAA,CAAA,EAAA,MAAA;IAAA,WAAA,CAAA,EAAA,MAAA;IAEZ,MAAA,CAAA,EAXH,MAWmB,CAAA,MAAA,EAAA,MAAA,CAAA;EAAA,CAAA;EAAA,cAC9B,CAAA,EAViB,kBAUjB;EAAQ,SACR,CAAA,EAVY,aAUZ;EAAQ,WAEE,CAAA,EAXI,eAWJ;CAAgB;AAE3B,KAVW,gBAAA,GAAmB,SAU9B;AAAA,cARY,eAQZ,EAR2B,MAAA,CAAA,OAQ3B,CAR2B,SAQ3B,GAAA,SAAA,CAAA;iBANe,gBAAA;;;;YAIJ;aACC;IACZ,MAAA,CAAA,GAAA,CAAA"}
@@ -1,11 +1,15 @@
1
- "use client";
1
+ 'use client';
2
+
3
+
2
4
  import { getPublicUrl, resolveHref } from "../lib/utils.js";
3
5
  import { useLayout } from "./useLayout.js";
4
6
  import { usePage } from "./usePage.js";
5
7
  import { convert } from "../node_modules/html-to-text/lib/html-to-text.js";
6
8
  import { defaultLocale, defaultMarket } from "@websolutespa/bom-core";
7
9
  import { createContext, useMemo } from "react";
10
+ import { jsx } from "react/jsx-runtime";
8
11
  import { useRouter } from "next/compat/router";
12
+
9
13
  //#region src/client/metadata.tsx
10
14
  const MetaDataContext = createContext(void 0);
11
15
  function MetaDataProvider({ metaData, children }) {
@@ -30,26 +34,24 @@ function MetaDataProvider({ metaData, children }) {
30
34
  if (query.match(/^\?pagination\[page\]=(\d+)$/) && query !== "?pagination[page]=1") canonical = `${canonical}${query}`;
31
35
  const url = `${canonical}${query}`;
32
36
  const alternates = useMemo(() => {
33
- const alternates = [];
37
+ const alternates$1 = [];
34
38
  (page.alternates || []).forEach((alternate) => {
35
39
  const market = layout.markets.find((x) => x.id === alternate.market);
36
- if (market) {
37
- if (market.countries && market.countries.length > 0) market.countries.forEach((country) => {
38
- const alpha2Code = typeof country === "string" ? country : country.alpha2Code;
39
- alternates.push({
40
- id: `${alternate.market}-${alternate.locale}-${alpha2Code}`,
41
- href: resolveHref(alternate.id),
42
- hrefLang: `${alternate.locale}-${alpha2Code}`
43
- });
44
- });
45
- else alternates.push({
46
- id: `${alternate.market}-${alternate.locale}`,
40
+ if (market) if (market.countries && market.countries.length > 0) market.countries.forEach((country) => {
41
+ const alpha2Code = typeof country === "string" ? country : country.alpha2Code;
42
+ alternates$1.push({
43
+ id: `${alternate.market}-${alternate.locale}-${alpha2Code}`,
47
44
  href: resolveHref(alternate.id),
48
- hrefLang: alternate.locale
45
+ hrefLang: `${alternate.locale}-${alpha2Code}`
49
46
  });
50
- }
47
+ });
48
+ else alternates$1.push({
49
+ id: `${alternate.market}-${alternate.locale}`,
50
+ href: resolveHref(alternate.id),
51
+ hrefLang: alternate.locale
52
+ });
51
53
  });
52
- return alternates;
54
+ return alternates$1;
53
55
  }, [layout, page]);
54
56
  const xDefault = useMemo(() => {
55
57
  const xDefaultMarket = layout.markets.find((x) => x.isDefault)?.id || defaultMarket;
@@ -60,6 +62,7 @@ function MetaDataProvider({ metaData, children }) {
60
62
  href: resolveHref(alternate.id),
61
63
  hrefLang: alternate.locale
62
64
  };
65
+ return void 0;
63
66
  }, [layout, page]);
64
67
  const meta = {
65
68
  title,
@@ -98,8 +101,10 @@ function MetaDataProvider({ metaData, children }) {
98
101
  },
99
102
  url: brand.url
100
103
  };
101
- if (Boolean(brand.email || brand.telephone)) organization.contactPoint = contactPoint;
102
- if (Boolean(brand.address || brand.city || brand.zipCode || brand.provinceCode || brand.countryCode)) organization.address = postalAddress;
104
+ const hasContact = Boolean(brand.email || brand.telephone);
105
+ if (hasContact) organization.contactPoint = contactPoint;
106
+ const hasAddress = Boolean(brand.address || brand.city || brand.zipCode || brand.provinceCode || brand.countryCode);
107
+ if (hasAddress) organization.address = postalAddress;
103
108
  if (brand.social) organization.sameAs = Object.values(brand.social);
104
109
  const structuredData = metaData.structuredData || {
105
110
  "@type": "WebPage",
@@ -108,39 +113,42 @@ function MetaDataProvider({ metaData, children }) {
108
113
  description,
109
114
  publisher: organization
110
115
  };
116
+ const openGraph = metaData.openGraph || {
117
+ type: "website",
118
+ title,
119
+ description,
120
+ url,
121
+ siteName: brand.name,
122
+ image,
123
+ locale: layout.locale
124
+ };
125
+ const twitterCard = metaData.twitterCard || (brand.twitterName ? {
126
+ card: "summary_large_image",
127
+ title,
128
+ description,
129
+ image,
130
+ imageAlt: brand.businessName,
131
+ site: brand.twitterName,
132
+ creator: brand.twitterName
133
+ } : void 0);
111
134
  const value = {
112
135
  layout,
113
136
  page,
114
137
  brand,
115
138
  contactPoint,
116
139
  meta,
117
- openGraph: metaData.openGraph || {
118
- type: "website",
119
- title,
120
- description,
121
- url,
122
- siteName: brand.name,
123
- image,
124
- locale: layout.locale
125
- },
140
+ openGraph,
126
141
  organization,
127
142
  postalAddress,
128
143
  structuredData,
129
- twitterCard: metaData.twitterCard || (brand.twitterName ? {
130
- card: "summary_large_image",
131
- title,
132
- description,
133
- image,
134
- imageAlt: brand.businessName,
135
- site: brand.twitterName,
136
- creator: brand.twitterName
137
- } : void 0)
144
+ twitterCard
138
145
  };
139
- return <MetaDataContext.Provider value={value}>
140
- {children}
141
- </MetaDataContext.Provider>;
146
+ return /* @__PURE__ */ jsx(MetaDataContext.Provider, {
147
+ value,
148
+ children
149
+ });
142
150
  }
151
+
143
152
  //#endregion
144
153
  export { MetaDataContext, MetaDataProvider };
145
-
146
154
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","names":["htmlToText"],"sources":["../../src/client/metadata.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { defaultLocale, defaultMarket, IMedia, IRoute } from '@websolutespa/bom-core';\r\nimport { convert as htmlToText } from 'html-to-text';\r\nimport { useRouter } from 'next/compat/router';\r\nimport { createContext, ReactNode, useMemo } from 'react';\r\nimport { ContactPoint, Organization, PostalAddress } from 'schema-dts';\r\nimport { IAlternate, IBrand, IMeta, IMetaData } from '../lib/meta-data';\r\nimport { OpenGraphType } from '../lib/open-graph';\r\nimport { StructuredDataType } from '../lib/structured-data';\r\nimport { TwitterCardType } from '../lib/twitter-card';\r\nimport { getPublicUrl, resolveHref } from '../lib/utils';\r\nimport { useLayout } from './useLayout';\r\nimport { usePage } from './usePage';\r\n\r\nexport type IMetaDataOptions = {\r\n brand: {\r\n name: string;\r\n logo: string;\r\n businessName?: string;\r\n appName?: string;\r\n url?: string;\r\n email?: string;\r\n telephone?: string;\r\n zipCode?: string;\r\n address?: string;\r\n city?: string;\r\n provinceCode?: string;\r\n countryName?: string;\r\n countryCode?: string;\r\n twitterName?: string;\r\n social?: Record<string, string>;\r\n },\r\n structuredData?: StructuredDataType;\r\n openGraph?: OpenGraphType;\r\n twitterCard?: TwitterCardType;\r\n};\r\n\r\nexport type IMetaDataContext = IMetaData;\r\n\r\nexport const MetaDataContext = createContext<IMetaDataContext | undefined>(undefined);\r\n\r\nexport function MetaDataProvider({\r\n metaData,\r\n children,\r\n}: {\r\n metaData: IMetaDataOptions,\r\n children?: ReactNode,\r\n}) {\r\n const router = useRouter();\r\n const layout = useLayout();\r\n const page = usePage();\r\n const brand: IBrand = {\r\n ...metaData.brand,\r\n logo: resolveHref(metaData.brand.logo),\r\n url: getPublicUrl(), // layout.topLevelHrefs.homepage,\r\n businessName: metaData.brand.businessName || metaData.brand.name,\r\n appName: metaData.brand.appName || metaData.brand.name,\r\n };\r\n const title = htmlToText(page.meta?.title || page.title || '');\r\n const description = htmlToText(page.meta?.description || page.abstract || '');\r\n const media = ((page.meta as { image: IMedia } | undefined)?.image || page.media);\r\n const image = media ? resolveHref(media.src || media.url) : brand.logo;\r\n let canonical = resolveHref(page.href);\r\n const asPath = router?.asPath || '';\r\n const queryIndex = asPath.indexOf('?');\r\n const query = queryIndex !== -1 ? asPath.substring(queryIndex) : '';\r\n if (query.match(/^\\?pagination\\[page\\]=(\\d+)$/) && query !== '?pagination[page]=1') {\r\n canonical = `${canonical}${query}`;\r\n // title = `${title} - ${query.replace('?pagination[page]=','')}`;\r\n }\r\n const url = `${canonical}${query}`;\r\n const alternates = useMemo(() => {\r\n const alternates: IAlternate[] = [];\r\n (page.alternates || []).forEach((alternate: IRoute) => {\r\n const market = layout.markets.find(x => x.id === alternate.market);\r\n if (market) {\r\n if (market.countries && market.countries.length > 0) {\r\n market.countries.forEach((country: any) => {\r\n // country: string | { alpha2Code: string };\r\n const alpha2Code = typeof country === 'string' ? country : country.alpha2Code;\r\n alternates.push({\r\n id: `${alternate.market}-${alternate.locale}-${alpha2Code}`,\r\n href: resolveHref(alternate.id),\r\n hrefLang: `${alternate.locale}-${alpha2Code}`,\r\n });\r\n });\r\n } else {\r\n alternates.push({\r\n id: `${alternate.market}-${alternate.locale}`,\r\n href: resolveHref(alternate.id),\r\n hrefLang: alternate.locale,\r\n });\r\n }\r\n }\r\n });\r\n return alternates;\r\n }, [layout, page]);\r\n const xDefault = useMemo(() => {\r\n const xDefaultMarket = layout.markets.find(x => x.isDefault)?.id || defaultMarket;\r\n const xDefaultLocale = layout.locales.find(x => x.isDefault)?.id || defaultLocale;\r\n const alternate = page.alternates.find(x => x.market === xDefaultMarket && x.locale === xDefaultLocale);\r\n if (alternate) {\r\n return {\r\n id: `${alternate.market}-${alternate.locale}`,\r\n href: resolveHref(alternate.id),\r\n hrefLang: alternate.locale,\r\n };\r\n }\r\n return undefined;\r\n }, [layout, page]);\r\n const meta: IMeta = {\r\n title: title,\r\n description: description,\r\n image: image,\r\n keywords: page.meta?.keywords,\r\n robots: page.meta?.robots,\r\n slug: page.href,\r\n url,\r\n canonical,\r\n alternates,\r\n xDefault,\r\n };\r\n const contactPoint: ContactPoint = {\r\n '@type': 'ContactPoint',\r\n telephone: brand.telephone,\r\n email: brand.email,\r\n contactType: 'customer service',\r\n areaServed: layout.locales.map(x => x.id),\r\n availableLanguage: layout.locales.map(x => x.id),\r\n };\r\n const postalAddress: PostalAddress = {\r\n '@type': 'PostalAddress',\r\n streetAddress: brand.address,\r\n addressLocality: brand.city,\r\n postalCode: brand.zipCode,\r\n addressRegion: brand.provinceCode,\r\n addressCountry: brand.countryCode,\r\n };\r\n const organization: Organization = {\r\n '@type': 'Organization',\r\n name: brand.businessName,\r\n logo: {\r\n '@type': 'ImageObject',\r\n url: brand.logo,\r\n },\r\n url: brand.url,\r\n /*\r\n description,\r\n founder,\r\n foundingDate,\r\n numberOfEmployees,\r\n */\r\n /*\r\n foundingDate: '2020-01-01',\r\n numberOfEmployees: {\r\n '@type': 'QuantitativeValue',\r\n value: 150,\r\n },\r\n */\r\n };\r\n const hasContact = Boolean(brand.email || brand.telephone);\r\n if (hasContact) {\r\n organization.contactPoint = contactPoint;\r\n }\r\n const hasAddress = Boolean(brand.address || brand.city || brand.zipCode || brand.provinceCode || brand.countryCode);\r\n if (hasAddress) {\r\n organization.address = postalAddress;\r\n }\r\n if (brand.social) {\r\n organization.sameAs = Object.values(brand.social);\r\n }\r\n const structuredData: StructuredDataType = metaData.structuredData || {\r\n '@type': 'WebPage',\r\n name: title,\r\n url: url,\r\n description: description,\r\n publisher: organization,\r\n };\r\n const openGraph: OpenGraphType = metaData.openGraph || {\r\n type: 'website',\r\n title: title,\r\n description: description,\r\n url: url,\r\n siteName: brand.name,\r\n image: image,\r\n locale: layout.locale,\r\n };\r\n const twitterCard: TwitterCardType | undefined = metaData.twitterCard || (\r\n brand.twitterName ? {\r\n card: 'summary_large_image',\r\n title: title,\r\n description: description,\r\n image: image,\r\n imageAlt: brand.businessName,\r\n site: brand.twitterName,\r\n creator: brand.twitterName,\r\n } : undefined\r\n );\r\n const value: IMetaData = {\r\n layout,\r\n page,\r\n brand,\r\n contactPoint,\r\n meta,\r\n openGraph,\r\n organization,\r\n postalAddress,\r\n structuredData,\r\n twitterCard,\r\n };\r\n return (\r\n <MetaDataContext.Provider value={value}>\r\n {children}\r\n </MetaDataContext.Provider>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;AAwCA,MAAa,kBAAkB,cAA4C,KAAA,CAAS;AAEpF,SAAgB,iBAAiB,EAC/B,UACA,YAIC;CACD,MAAM,SAAS,UAAU;CACzB,MAAM,SAAS,UAAU;CACzB,MAAM,OAAO,QAAQ;CACrB,MAAM,QAAgB;EACpB,GAAG,SAAS;EACZ,MAAM,YAAY,SAAS,MAAM,IAAI;EACrC,KAAK,aAAa;EAClB,cAAc,SAAS,MAAM,gBAAgB,SAAS,MAAM;EAC5D,SAAS,SAAS,MAAM,WAAW,SAAS,MAAM;CACpD;CACA,MAAM,QAAQA,QAAW,KAAK,MAAM,SAAS,KAAK,SAAS,EAAE;CAC7D,MAAM,cAAcA,QAAW,KAAK,MAAM,eAAe,KAAK,YAAY,EAAE;CAC5E,MAAM,QAAU,KAAK,MAAwC,SAAS,KAAK;CAC3E,MAAM,QAAQ,QAAQ,YAAY,MAAM,OAAO,MAAM,GAAG,IAAI,MAAM;CAClE,IAAI,YAAY,YAAY,KAAK,IAAI;CACrC,MAAM,SAAS,QAAQ,UAAU;CACjC,MAAM,aAAa,OAAO,QAAQ,GAAG;CACrC,MAAM,QAAQ,eAAe,KAAK,OAAO,UAAU,UAAU,IAAI;CACjE,IAAI,MAAM,MAAM,8BAA8B,KAAK,UAAU,uBAC3D,YAAY,GAAG,YAAY;CAG7B,MAAM,MAAM,GAAG,YAAY;CAC3B,MAAM,aAAa,cAAc;EAC/B,MAAM,aAA2B,CAAC;EAClC,CAAC,KAAK,cAAc,CAAC,EAAA,CAAG,SAAS,cAAsB;GACrD,MAAM,SAAS,OAAO,QAAQ,MAAK,MAAK,EAAE,OAAO,UAAU,MAAM;GACjE,IAAI,QAAQ;IACV,IAAI,OAAO,aAAa,OAAO,UAAU,SAAS,GAChD,OAAO,UAAU,SAAS,YAAiB;KAEzC,MAAM,aAAa,OAAO,YAAY,WAAW,UAAU,QAAQ;KACnE,WAAW,KAAK;MACd,IAAI,GAAG,UAAU,OAAO,GAAG,UAAU,OAAO,GAAG;MAC/C,MAAM,YAAY,UAAU,EAAE;MAC9B,UAAU,GAAG,UAAU,OAAO,GAAG;KACnC,CAAC;IACH,CAAC;SAED,WAAW,KAAK;KACd,IAAI,GAAG,UAAU,OAAO,GAAG,UAAU;KACrC,MAAM,YAAY,UAAU,EAAE;KAC9B,UAAU,UAAU;IACtB,CAAC;GAEL;EACF,CAAC;EACD,OAAO;CACT,GAAG,CAAC,QAAQ,IAAI,CAAC;CACjB,MAAM,WAAW,cAAc;EAC7B,MAAM,iBAAiB,OAAO,QAAQ,MAAK,MAAK,EAAE,SAAS,CAAC,EAAE,MAAM;EACpE,MAAM,iBAAiB,OAAO,QAAQ,MAAK,MAAK,EAAE,SAAS,CAAC,EAAE,MAAM;EACpE,MAAM,YAAY,KAAK,WAAW,MAAK,MAAK,EAAE,WAAW,kBAAkB,EAAE,WAAW,cAAc;EACtG,IAAI,WACF,OAAO;GACL,IAAI,GAAG,UAAU,OAAO,GAAG,UAAU;GACrC,MAAM,YAAY,UAAU,EAAE;GAC9B,UAAU,UAAU;EACtB;CAGJ,GAAG,CAAC,QAAQ,IAAI,CAAC;CACjB,MAAM,OAAc;EACX;EACM;EACN;EACP,UAAU,KAAK,MAAM;EACrB,QAAQ,KAAK,MAAM;EACnB,MAAM,KAAK;EACX;EACA;EACA;EACA;CACF;CACA,MAAM,eAA6B;EACjC,SAAS;EACT,WAAW,MAAM;EACjB,OAAO,MAAM;EACb,aAAa;EACb,YAAY,OAAO,QAAQ,KAAI,MAAK,EAAE,EAAE;EACxC,mBAAmB,OAAO,QAAQ,KAAI,MAAK,EAAE,EAAE;CACjD;CACA,MAAM,gBAA+B;EACnC,SAAS;EACT,eAAe,MAAM;EACrB,iBAAiB,MAAM;EACvB,YAAY,MAAM;EAClB,eAAe,MAAM;EACrB,gBAAgB,MAAM;CACxB;CACA,MAAM,eAA6B;EACjC,SAAS;EACT,MAAM,MAAM;EACZ,MAAM;GACJ,SAAS;GACT,KAAK,MAAM;EACb;EACA,KAAK,MAAM;CAcb;CAEA,IADmB,QAAQ,MAAM,SAAS,MAAM,SACnC,GACX,aAAa,eAAe;CAG9B,IADmB,QAAQ,MAAM,WAAW,MAAM,QAAQ,MAAM,WAAW,MAAM,gBAAgB,MAAM,WAC1F,GACX,aAAa,UAAU;CAEzB,IAAI,MAAM,QACR,aAAa,SAAS,OAAO,OAAO,MAAM,MAAM;CAElD,MAAM,iBAAqC,SAAS,kBAAkB;EACpE,SAAS;EACT,MAAM;EACD;EACQ;EACb,WAAW;CACb;CAqBA,MAAM,QAAmB;EACvB;EACA;EACA;EACA;EACA;EACA,WA1B+B,SAAS,aAAa;GACrD,MAAM;GACC;GACM;GACR;GACL,UAAU,MAAM;GACT;GACP,QAAQ,OAAO;EACjB;EAmBE;EACA;EACA;EACA,aArB+C,SAAS,gBACxD,MAAM,cAAc;GAClB,MAAM;GACC;GACM;GACN;GACP,UAAU,MAAM;GAChB,MAAM,MAAM;GACZ,SAAS,MAAM;EACjB,IAAI,KAAA;CAaN;CACA,OACE,CAAC,gBAAgB,SAAS,OAAO,OAAO;OACrC,SAAS;IACZ,EAAE,gBAAgB;AAEtB"}
1
+ {"version":3,"file":"metadata.js","names":["brand: IBrand","htmlToText","alternates: IAlternate[]","alternate: IRoute","country: any","alternates","meta: IMeta","contactPoint: ContactPoint","postalAddress: PostalAddress","organization: Organization","structuredData: StructuredDataType","openGraph: OpenGraphType","twitterCard: TwitterCardType | undefined","value: IMetaData"],"sources":["../../src/client/metadata.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { defaultLocale, defaultMarket, IMedia, IRoute } from '@websolutespa/bom-core';\r\nimport { convert as htmlToText } from 'html-to-text';\r\nimport { useRouter } from 'next/compat/router';\r\nimport { createContext, ReactNode, useMemo } from 'react';\r\nimport { ContactPoint, Organization, PostalAddress } from 'schema-dts';\r\nimport { IAlternate, IBrand, IMeta, IMetaData } from '../lib/meta-data';\r\nimport { OpenGraphType } from '../lib/open-graph';\r\nimport { StructuredDataType } from '../lib/structured-data';\r\nimport { TwitterCardType } from '../lib/twitter-card';\r\nimport { getPublicUrl, resolveHref } from '../lib/utils';\r\nimport { useLayout } from './useLayout';\r\nimport { usePage } from './usePage';\r\n\r\nexport type IMetaDataOptions = {\r\n brand: {\r\n name: string;\r\n logo: string;\r\n businessName?: string;\r\n appName?: string;\r\n url?: string;\r\n email?: string;\r\n telephone?: string;\r\n zipCode?: string;\r\n address?: string;\r\n city?: string;\r\n provinceCode?: string;\r\n countryName?: string;\r\n countryCode?: string;\r\n twitterName?: string;\r\n social?: Record<string, string>;\r\n },\r\n structuredData?: StructuredDataType;\r\n openGraph?: OpenGraphType;\r\n twitterCard?: TwitterCardType;\r\n};\r\n\r\nexport type IMetaDataContext = IMetaData;\r\n\r\nexport const MetaDataContext = createContext<IMetaDataContext | undefined>(undefined);\r\n\r\nexport function MetaDataProvider({\r\n metaData,\r\n children,\r\n}: {\r\n metaData: IMetaDataOptions,\r\n children?: ReactNode,\r\n}) {\r\n const router = useRouter();\r\n const layout = useLayout();\r\n const page = usePage();\r\n const brand: IBrand = {\r\n ...metaData.brand,\r\n logo: resolveHref(metaData.brand.logo),\r\n url: getPublicUrl(), // layout.topLevelHrefs.homepage,\r\n businessName: metaData.brand.businessName || metaData.brand.name,\r\n appName: metaData.brand.appName || metaData.brand.name,\r\n };\r\n const title = htmlToText(page.meta?.title || page.title || '');\r\n const description = htmlToText(page.meta?.description || page.abstract || '');\r\n const media = ((page.meta as { image: IMedia } | undefined)?.image || page.media);\r\n const image = media ? resolveHref(media.src || media.url) : brand.logo;\r\n let canonical = resolveHref(page.href);\r\n const asPath = router?.asPath || '';\r\n const queryIndex = asPath.indexOf('?');\r\n const query = queryIndex !== -1 ? asPath.substring(queryIndex) : '';\r\n if (query.match(/^\\?pagination\\[page\\]=(\\d+)$/) && query !== '?pagination[page]=1') {\r\n canonical = `${canonical}${query}`;\r\n // title = `${title} - ${query.replace('?pagination[page]=','')}`;\r\n }\r\n const url = `${canonical}${query}`;\r\n const alternates = useMemo(() => {\r\n const alternates: IAlternate[] = [];\r\n (page.alternates || []).forEach((alternate: IRoute) => {\r\n const market = layout.markets.find(x => x.id === alternate.market);\r\n if (market) {\r\n if (market.countries && market.countries.length > 0) {\r\n market.countries.forEach((country: any) => {\r\n // country: string | { alpha2Code: string };\r\n const alpha2Code = typeof country === 'string' ? country : country.alpha2Code;\r\n alternates.push({\r\n id: `${alternate.market}-${alternate.locale}-${alpha2Code}`,\r\n href: resolveHref(alternate.id),\r\n hrefLang: `${alternate.locale}-${alpha2Code}`,\r\n });\r\n });\r\n } else {\r\n alternates.push({\r\n id: `${alternate.market}-${alternate.locale}`,\r\n href: resolveHref(alternate.id),\r\n hrefLang: alternate.locale,\r\n });\r\n }\r\n }\r\n });\r\n return alternates;\r\n }, [layout, page]);\r\n const xDefault = useMemo(() => {\r\n const xDefaultMarket = layout.markets.find(x => x.isDefault)?.id || defaultMarket;\r\n const xDefaultLocale = layout.locales.find(x => x.isDefault)?.id || defaultLocale;\r\n const alternate = page.alternates.find(x => x.market === xDefaultMarket && x.locale === xDefaultLocale);\r\n if (alternate) {\r\n return {\r\n id: `${alternate.market}-${alternate.locale}`,\r\n href: resolveHref(alternate.id),\r\n hrefLang: alternate.locale,\r\n };\r\n }\r\n return undefined;\r\n }, [layout, page]);\r\n const meta: IMeta = {\r\n title: title,\r\n description: description,\r\n image: image,\r\n keywords: page.meta?.keywords,\r\n robots: page.meta?.robots,\r\n slug: page.href,\r\n url,\r\n canonical,\r\n alternates,\r\n xDefault,\r\n };\r\n const contactPoint: ContactPoint = {\r\n '@type': 'ContactPoint',\r\n telephone: brand.telephone,\r\n email: brand.email,\r\n contactType: 'customer service',\r\n areaServed: layout.locales.map(x => x.id),\r\n availableLanguage: layout.locales.map(x => x.id),\r\n };\r\n const postalAddress: PostalAddress = {\r\n '@type': 'PostalAddress',\r\n streetAddress: brand.address,\r\n addressLocality: brand.city,\r\n postalCode: brand.zipCode,\r\n addressRegion: brand.provinceCode,\r\n addressCountry: brand.countryCode,\r\n };\r\n const organization: Organization = {\r\n '@type': 'Organization',\r\n name: brand.businessName,\r\n logo: {\r\n '@type': 'ImageObject',\r\n url: brand.logo,\r\n },\r\n url: brand.url,\r\n /*\r\n description,\r\n founder,\r\n foundingDate,\r\n numberOfEmployees,\r\n */\r\n /*\r\n foundingDate: '2020-01-01',\r\n numberOfEmployees: {\r\n '@type': 'QuantitativeValue',\r\n value: 150,\r\n },\r\n */\r\n };\r\n const hasContact = Boolean(brand.email || brand.telephone);\r\n if (hasContact) {\r\n organization.contactPoint = contactPoint;\r\n }\r\n const hasAddress = Boolean(brand.address || brand.city || brand.zipCode || brand.provinceCode || brand.countryCode);\r\n if (hasAddress) {\r\n organization.address = postalAddress;\r\n }\r\n if (brand.social) {\r\n organization.sameAs = Object.values(brand.social);\r\n }\r\n const structuredData: StructuredDataType = metaData.structuredData || {\r\n '@type': 'WebPage',\r\n name: title,\r\n url: url,\r\n description: description,\r\n publisher: organization,\r\n };\r\n const openGraph: OpenGraphType = metaData.openGraph || {\r\n type: 'website',\r\n title: title,\r\n description: description,\r\n url: url,\r\n siteName: brand.name,\r\n image: image,\r\n locale: layout.locale,\r\n };\r\n const twitterCard: TwitterCardType | undefined = metaData.twitterCard || (\r\n brand.twitterName ? {\r\n card: 'summary_large_image',\r\n title: title,\r\n description: description,\r\n image: image,\r\n imageAlt: brand.businessName,\r\n site: brand.twitterName,\r\n creator: brand.twitterName,\r\n } : undefined\r\n );\r\n const value: IMetaData = {\r\n layout,\r\n page,\r\n brand,\r\n contactPoint,\r\n meta,\r\n openGraph,\r\n organization,\r\n postalAddress,\r\n structuredData,\r\n twitterCard,\r\n };\r\n return (\r\n <MetaDataContext.Provider value={value}>\r\n {children}\r\n </MetaDataContext.Provider>\r\n );\r\n}\r\n"],"mappings":"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"}