@sitecore-content-sdk/core 1.3.0-canary.9 → 1.4.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/cjs/cache-client.js +55 -54
- package/dist/cjs/client/constants.js +7 -7
- package/dist/cjs/client/edge-proxy.js +24 -22
- package/dist/cjs/client/index.js +15 -15
- package/dist/cjs/client/models.js +2 -2
- package/dist/cjs/client/sitecore-client.js +421 -419
- package/dist/cjs/client/utils.js +47 -46
- package/dist/cjs/config/define-config.js +194 -193
- package/dist/cjs/config/index.js +7 -7
- package/dist/cjs/config/models.js +12 -11
- package/dist/cjs/config-cli/define-cli-config.js +23 -22
- package/dist/cjs/config-cli/index.js +7 -7
- package/dist/cjs/config-cli/models.js +8 -7
- package/dist/cjs/constants.js +49 -17
- package/dist/cjs/debug.js +48 -46
- package/dist/cjs/editing/codegen/index.js +14 -9
- package/dist/cjs/editing/codegen/preview.js +277 -193
- package/dist/cjs/editing/component-layout-service.js +62 -61
- package/dist/cjs/editing/design-library.js +183 -126
- package/dist/cjs/editing/editing-service.js +75 -74
- package/dist/cjs/editing/index.js +33 -27
- package/dist/cjs/editing/metadata.js +42 -42
- package/dist/cjs/editing/models.js +44 -38
- package/dist/cjs/editing/utils.js +108 -90
- package/dist/cjs/form/form.js +81 -78
- package/dist/cjs/form/index.js +7 -7
- package/dist/cjs/graphql-request-client.js +108 -107
- package/dist/cjs/i18n/dictionary-service.js +122 -121
- package/dist/cjs/i18n/index.js +7 -7
- package/dist/cjs/i18n/utils.js +16 -15
- package/dist/cjs/index.js +60 -60
- package/dist/cjs/layout/content-styles.js +72 -71
- package/dist/cjs/layout/index.js +24 -24
- package/dist/cjs/layout/layout-service.js +62 -57
- package/dist/cjs/layout/models.js +39 -34
- package/dist/cjs/layout/themes.js +76 -75
- package/dist/cjs/layout/utils.js +117 -110
- package/dist/cjs/media/index.js +38 -38
- package/dist/cjs/media/media-api.js +100 -96
- package/dist/cjs/models.js +2 -2
- package/dist/cjs/native-fetcher.js +194 -179
- package/dist/cjs/personalize/index.js +15 -15
- package/dist/cjs/personalize/layout-personalizer.js +98 -97
- package/dist/cjs/personalize/personalize-service.js +98 -94
- package/dist/cjs/personalize/utils.js +143 -136
- package/dist/cjs/retries.js +43 -42
- package/dist/cjs/site/error-pages-service.js +65 -64
- package/dist/cjs/site/index.js +26 -26
- package/dist/cjs/site/models.js +2 -2
- package/dist/cjs/site/redirects-service.js +94 -81
- package/dist/cjs/site/robots-service.js +66 -65
- package/dist/cjs/site/site-resolver.js +73 -72
- package/dist/cjs/site/siteinfo-service.js +84 -80
- package/dist/cjs/site/sitemap-xml-service.js +84 -83
- package/dist/cjs/site/sitepath-service.js +165 -164
- package/dist/cjs/site/utils.js +55 -47
- package/dist/cjs/sitecore-service-base.js +36 -36
- package/dist/cjs/tools/auth/flow.js +65 -64
- package/dist/cjs/tools/auth/index.js +5 -5
- package/dist/cjs/tools/auth/models.js +2 -2
- package/dist/cjs/tools/auth/tenant-store.js +38 -38
- package/dist/cjs/tools/codegen/component-generation.js +52 -50
- package/dist/cjs/tools/codegen/extract-files.js +105 -107
- package/dist/cjs/tools/codegen/import-map.js +401 -349
- package/dist/cjs/tools/codegen/utils.js +418 -418
- package/dist/cjs/tools/generate-map.js +2 -2
- package/dist/cjs/tools/generateMetadata.js +36 -35
- package/dist/cjs/tools/generateSites.js +59 -58
- package/dist/cjs/tools/index.js +75 -73
- package/dist/cjs/tools/scaffold.js +60 -59
- package/dist/cjs/tools/templating/components.js +96 -266
- package/dist/cjs/tools/templating/index.js +11 -14
- package/dist/cjs/tools/templating/plugins.js +80 -78
- package/dist/cjs/tools/templating/utils.js +67 -66
- package/dist/cjs/utils/ensurePath.js +20 -20
- package/dist/cjs/utils/env.js +28 -27
- package/dist/cjs/utils/globalCache.js +55 -0
- package/dist/cjs/utils/index.js +26 -21
- package/dist/cjs/utils/is-server.js +11 -10
- package/dist/cjs/utils/normalize-url.js +5 -5
- package/dist/cjs/utils/timeout-promise.js +31 -31
- package/dist/cjs/utils/utils.js +254 -229
- package/dist/esm/cache-client.js +51 -50
- package/dist/esm/client/constants.js +4 -4
- package/dist/esm/client/edge-proxy.js +19 -17
- package/dist/esm/client/index.js +5 -5
- package/dist/esm/client/models.js +1 -1
- package/dist/esm/client/sitecore-client.js +414 -412
- package/dist/esm/client/utils.js +43 -42
- package/dist/esm/config/define-config.js +188 -187
- package/dist/esm/config/index.js +2 -2
- package/dist/esm/config/models.js +9 -8
- package/dist/esm/config-cli/define-cli-config.js +19 -18
- package/dist/esm/config-cli/index.js +2 -2
- package/dist/esm/config-cli/models.js +5 -4
- package/dist/esm/constants.js +46 -14
- package/dist/esm/debug.js +41 -39
- package/dist/esm/editing/codegen/index.js +1 -1
- package/dist/esm/editing/codegen/preview.js +263 -185
- package/dist/esm/editing/component-layout-service.js +55 -54
- package/dist/esm/editing/design-library.js +171 -117
- package/dist/esm/editing/editing-service.js +68 -67
- package/dist/esm/editing/index.js +6 -5
- package/dist/esm/editing/metadata.js +39 -39
- package/dist/esm/editing/models.js +41 -35
- package/dist/esm/editing/utils.js +98 -80
- package/dist/esm/form/form.js +72 -69
- package/dist/esm/form/index.js +1 -1
- package/dist/esm/graphql-request-client.js +101 -100
- package/dist/esm/i18n/dictionary-service.js +115 -114
- package/dist/esm/i18n/index.js +2 -2
- package/dist/esm/i18n/utils.js +13 -12
- package/dist/esm/index.js +13 -13
- package/dist/esm/layout/content-styles.js +64 -63
- package/dist/esm/layout/index.js +6 -6
- package/dist/esm/layout/layout-service.js +55 -50
- package/dist/esm/layout/models.js +36 -31
- package/dist/esm/layout/themes.js +71 -70
- package/dist/esm/layout/utils.js +109 -102
- package/dist/esm/media/index.js +2 -2
- package/dist/esm/media/media-api.js +90 -86
- package/dist/esm/models.js +1 -1
- package/dist/esm/native-fetcher.js +187 -172
- package/dist/esm/personalize/index.js +3 -3
- package/dist/esm/personalize/layout-personalizer.js +93 -92
- package/dist/esm/personalize/personalize-service.js +91 -87
- package/dist/esm/personalize/utils.js +135 -128
- package/dist/esm/retries.js +39 -38
- package/dist/esm/site/error-pages-service.js +58 -57
- package/dist/esm/site/index.js +8 -8
- package/dist/esm/site/models.js +1 -1
- package/dist/esm/site/redirects-service.js +87 -74
- package/dist/esm/site/robots-service.js +59 -58
- package/dist/esm/site/site-resolver.js +69 -68
- package/dist/esm/site/siteinfo-service.js +77 -73
- package/dist/esm/site/sitemap-xml-service.js +77 -76
- package/dist/esm/site/sitepath-service.js +157 -156
- package/dist/esm/site/utils.js +49 -41
- package/dist/esm/sitecore-service-base.js +29 -29
- package/dist/esm/tools/auth/flow.js +62 -61
- package/dist/esm/tools/auth/index.js +1 -1
- package/dist/esm/tools/auth/models.js +1 -1
- package/dist/esm/tools/auth/tenant-store.js +35 -35
- package/dist/esm/tools/codegen/component-generation.js +44 -42
- package/dist/esm/tools/codegen/extract-files.js +99 -101
- package/dist/esm/tools/codegen/import-map.js +358 -306
- package/dist/esm/tools/codegen/utils.js +373 -373
- package/dist/esm/tools/generate-map.js +1 -1
- package/dist/esm/tools/generateMetadata.js +29 -28
- package/dist/esm/tools/generateSites.js +52 -51
- package/dist/esm/tools/index.js +28 -27
- package/dist/esm/tools/scaffold.js +52 -51
- package/dist/esm/tools/templating/components.js +59 -223
- package/dist/esm/tools/templating/index.js +3 -3
- package/dist/esm/tools/templating/plugins.js +72 -70
- package/dist/esm/tools/templating/utils.js +59 -58
- package/dist/esm/utils/ensurePath.js +13 -13
- package/dist/esm/utils/env.js +24 -23
- package/dist/esm/utils/globalCache.js +49 -0
- package/dist/esm/utils/index.js +4 -3
- package/dist/esm/utils/is-server.js +9 -8
- package/dist/esm/utils/normalize-url.js +1 -1
- package/dist/esm/utils/timeout-promise.js +28 -28
- package/dist/esm/utils/utils.js +238 -213
- package/package.json +73 -5
- package/types/cache-client.d.ts +68 -64
- package/types/cache-client.d.ts.map +1 -0
- package/types/client/constants.d.ts +5 -4
- package/types/client/constants.d.ts.map +1 -0
- package/types/client/edge-proxy.d.ts +18 -15
- package/types/client/edge-proxy.d.ts.map +1 -0
- package/types/client/index.d.ts +8 -7
- package/types/client/index.d.ts.map +1 -0
- package/types/client/models.d.ts +21 -19
- package/types/client/models.d.ts.map +1 -0
- package/types/client/sitecore-client.d.ts +338 -327
- package/types/client/sitecore-client.d.ts.map +1 -0
- package/types/client/utils.d.ts +15 -9
- package/types/client/utils.d.ts.map +1 -0
- package/types/config/define-config.d.ts +20 -18
- package/types/config/define-config.d.ts.map +1 -0
- package/types/config/index.d.ts +3 -2
- package/types/config/index.d.ts.map +1 -0
- package/types/config/models.d.ts +287 -268
- package/types/config/models.d.ts.map +1 -0
- package/types/config-cli/define-cli-config.d.ts +9 -7
- package/types/config-cli/define-cli-config.d.ts.map +1 -0
- package/types/config-cli/index.d.ts +3 -2
- package/types/config-cli/index.d.ts.map +1 -0
- package/types/config-cli/models.d.ts +6 -4
- package/types/config-cli/models.d.ts.map +1 -0
- package/types/constants.d.ts +44 -11
- package/types/constants.d.ts.map +1 -0
- package/types/debug.d.ts +35 -28
- package/types/debug.d.ts.map +1 -0
- package/types/editing/codegen/index.d.ts +2 -1
- package/types/editing/codegen/index.d.ts.map +1 -0
- package/types/editing/codegen/preview.d.ts +256 -195
- package/types/editing/codegen/preview.d.ts.map +1 -0
- package/types/editing/component-layout-service.d.ts +84 -80
- package/types/editing/component-layout-service.d.ts.map +1 -0
- package/types/editing/design-library.d.ts +111 -63
- package/types/editing/design-library.d.ts.map +1 -0
- package/types/editing/editing-service.d.ts +72 -62
- package/types/editing/editing-service.d.ts.map +1 -0
- package/types/editing/index.d.ts +7 -6
- package/types/editing/index.d.ts.map +1 -0
- package/types/editing/metadata.d.ts +8 -7
- package/types/editing/metadata.d.ts.map +1 -0
- package/types/editing/models.d.ts +103 -92
- package/types/editing/models.d.ts.map +1 -0
- package/types/editing/utils.d.ts +91 -74
- package/types/editing/utils.d.ts.map +1 -0
- package/types/form/form.d.ts +25 -21
- package/types/form/form.d.ts.map +1 -0
- package/types/form/index.d.ts +2 -1
- package/types/form/index.d.ts.map +1 -0
- package/types/graphql-request-client.d.ts +112 -105
- package/types/graphql-request-client.d.ts.map +1 -0
- package/types/i18n/dictionary-service.d.ts +135 -131
- package/types/i18n/dictionary-service.d.ts.map +1 -0
- package/types/i18n/index.d.ts +3 -2
- package/types/i18n/index.d.ts.map +1 -0
- package/types/i18n/utils.d.ts +9 -7
- package/types/i18n/utils.d.ts.map +1 -0
- package/types/index.d.ts +13 -12
- package/types/index.d.ts.map +1 -0
- package/types/layout/content-styles.d.ts +20 -18
- package/types/layout/content-styles.d.ts.map +1 -0
- package/types/layout/index.d.ts +6 -5
- package/types/layout/index.d.ts.map +1 -0
- package/types/layout/layout-service.d.ts +45 -35
- package/types/layout/layout-service.d.ts.map +1 -0
- package/types/layout/models.d.ts +174 -151
- package/types/layout/models.d.ts.map +1 -0
- package/types/layout/themes.d.ts +13 -11
- package/types/layout/themes.d.ts.map +1 -0
- package/types/layout/utils.d.ts +56 -41
- package/types/layout/utils.d.ts.map +1 -0
- package/types/media/index.d.ts +3 -2
- package/types/media/index.d.ts.map +1 -0
- package/types/media/media-api.d.ts +60 -55
- package/types/media/media-api.d.ts.map +1 -0
- package/types/models.d.ts +94 -84
- package/types/models.d.ts.map +1 -0
- package/types/native-fetcher.d.ts +124 -114
- package/types/native-fetcher.d.ts.map +1 -0
- package/types/personalize/index.d.ts +4 -3
- package/types/personalize/index.d.ts.map +1 -0
- package/types/personalize/layout-personalizer.d.ts +29 -27
- package/types/personalize/layout-personalizer.d.ts.map +1 -0
- package/types/personalize/personalize-service.d.ts +90 -80
- package/types/personalize/personalize-service.d.ts.map +1 -0
- package/types/personalize/utils.d.ts +78 -69
- package/types/personalize/utils.d.ts.map +1 -0
- package/types/retries.d.ts +26 -24
- package/types/retries.d.ts.map +1 -0
- package/types/site/error-pages-service.d.ts +64 -57
- package/types/site/error-pages-service.d.ts.map +1 -0
- package/types/site/index.d.ts +10 -9
- package/types/site/index.d.ts.map +1 -0
- package/types/site/models.d.ts +23 -18
- package/types/site/models.d.ts.map +1 -0
- package/types/site/redirects-service.d.ts +92 -69
- package/types/site/redirects-service.d.ts.map +1 -0
- package/types/site/robots-service.d.ts +57 -50
- package/types/site/robots-service.d.ts.map +1 -0
- package/types/site/site-resolver.d.ts +28 -26
- package/types/site/site-resolver.d.ts.map +1 -0
- package/types/site/siteinfo-service.d.ts +65 -52
- package/types/site/siteinfo-service.d.ts.map +1 -0
- package/types/site/sitemap-xml-service.d.ts +63 -56
- package/types/site/sitemap-xml-service.d.ts.map +1 -0
- package/types/site/sitepath-service.d.ts +137 -134
- package/types/site/sitepath-service.d.ts.map +1 -0
- package/types/site/utils.d.ts +41 -28
- package/types/site/utils.d.ts.map +1 -0
- package/types/sitecore-service-base.d.ts +31 -30
- package/types/sitecore-service-base.d.ts.map +1 -0
- package/types/tools/auth/flow.d.ts +29 -27
- package/types/tools/auth/flow.d.ts.map +1 -0
- package/types/tools/auth/index.d.ts +2 -1
- package/types/tools/auth/index.d.ts.map +1 -0
- package/types/tools/auth/models.d.ts +35 -33
- package/types/tools/auth/models.d.ts.map +1 -0
- package/types/tools/auth/tenant-store.d.ts +12 -11
- package/types/tools/auth/tenant-store.d.ts.map +1 -0
- package/types/tools/codegen/component-generation.d.ts +50 -47
- package/types/tools/codegen/component-generation.d.ts.map +1 -0
- package/types/tools/codegen/extract-files.d.ts +24 -22
- package/types/tools/codegen/extract-files.d.ts.map +1 -0
- package/types/tools/codegen/import-map.d.ts +103 -70
- package/types/tools/codegen/import-map.d.ts.map +1 -0
- package/types/tools/codegen/utils.d.ts +76 -75
- package/types/tools/codegen/utils.d.ts.map +1 -0
- package/types/tools/generate-map.d.ts +36 -26
- package/types/tools/generate-map.d.ts.map +1 -0
- package/types/tools/generateMetadata.d.ts +24 -22
- package/types/tools/generateMetadata.d.ts.map +1 -0
- package/types/tools/generateSites.d.ts +25 -22
- package/types/tools/generateSites.d.ts.map +1 -0
- package/types/tools/index.d.ts +22 -20
- package/types/tools/index.d.ts.map +1 -0
- package/types/tools/scaffold.d.ts +27 -25
- package/types/tools/scaffold.d.ts.map +1 -0
- package/types/tools/templating/components.d.ts +104 -103
- package/types/tools/templating/components.d.ts.map +1 -0
- package/types/tools/templating/index.d.ts +4 -3
- package/types/tools/templating/index.d.ts.map +1 -0
- package/types/tools/templating/plugins.d.ts +71 -67
- package/types/tools/templating/plugins.d.ts.map +1 -0
- package/types/tools/templating/utils.d.ts +42 -40
- package/types/tools/templating/utils.d.ts.map +1 -0
- package/types/utils/ensurePath.d.ts +7 -6
- package/types/utils/ensurePath.d.ts.map +1 -0
- package/types/utils/env.d.ts +9 -7
- package/types/utils/env.d.ts.map +1 -0
- package/types/utils/globalCache.d.ts +37 -0
- package/types/utils/globalCache.d.ts.map +1 -0
- package/types/utils/index.d.ts +5 -3
- package/types/utils/index.d.ts.map +1 -0
- package/types/utils/is-server.d.ts +8 -6
- package/types/utils/is-server.d.ts.map +1 -0
- package/types/utils/normalize-url.d.ts +2 -1
- package/types/utils/normalize-url.d.ts.map +1 -0
- package/types/utils/timeout-promise.d.ts +18 -17
- package/types/utils/timeout-promise.d.ts.map +1 -0
- package/types/utils/utils.d.ts +104 -79
- package/types/utils/utils.d.ts.map +1 -0
- package/client.js +0 -1
- package/codegen.js +0 -1
- package/config-cli.js +0 -1
- package/config.js +0 -1
- package/editing.js +0 -1
- package/i18n.js +0 -1
- package/layout.js +0 -1
- package/media.js +0 -1
- package/personalize.js +0 -1
- package/site.js +0 -1
- package/tools.js +0 -1
- package/utils.js +0 -1
|
@@ -1,63 +1,64 @@
|
|
|
1
|
-
import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
|
|
2
|
-
import { normalizeUrl } from '../utils/normalize-url';
|
|
3
|
-
/**
|
|
4
|
-
* Regular expression to check if the content styles are used in the field value
|
|
5
|
-
*/
|
|
6
|
-
const CLASS_REGEXP = /class=".*(\bck-content\b).*"/g;
|
|
7
|
-
/**
|
|
8
|
-
* Get the content styles link to be loaded from the Sitecore Edge Platform
|
|
9
|
-
* @param {LayoutServiceData} layoutData Layout service data
|
|
10
|
-
* @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
|
|
11
|
-
* @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
|
|
12
|
-
* @returns {HTMLLink | null} content styles link, null if no styles are used in layout
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
1
|
+
import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
|
|
2
|
+
import { normalizeUrl } from '../utils/normalize-url';
|
|
3
|
+
/**
|
|
4
|
+
* Regular expression to check if the content styles are used in the field value
|
|
5
|
+
*/
|
|
6
|
+
const CLASS_REGEXP = /class=".*(\bck-content\b).*"/g;
|
|
7
|
+
/**
|
|
8
|
+
* Get the content styles link to be loaded from the Sitecore Edge Platform
|
|
9
|
+
* @param {LayoutServiceData} layoutData Layout service data
|
|
10
|
+
* @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
|
|
11
|
+
* @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
|
|
12
|
+
* @returns {HTMLLink | null} content styles link, null if no styles are used in layout
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export const getContentStylesheetLink = (layoutData, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => {
|
|
16
|
+
if (!layoutData.sitecore.route)
|
|
17
|
+
return null;
|
|
18
|
+
const config = { loadStyles: false };
|
|
19
|
+
traverseComponent(layoutData.sitecore.route, config);
|
|
20
|
+
if (!config.loadStyles)
|
|
21
|
+
return null;
|
|
22
|
+
return {
|
|
23
|
+
href: getContentStylesheetUrl(sitecoreEdgeContextId, sitecoreEdgeUrl),
|
|
24
|
+
rel: 'stylesheet',
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export const getContentStylesheetUrl = (sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => `${normalizeUrl(sitecoreEdgeUrl)}/v1/files/pages/styles/content-styles.css?sitecoreContextId=${sitecoreEdgeContextId}`;
|
|
28
|
+
export const traversePlaceholder = (components, config) => {
|
|
29
|
+
if (config.loadStyles)
|
|
30
|
+
return;
|
|
31
|
+
components.forEach((component) => {
|
|
32
|
+
traverseComponent(component, config);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export const traverseField = (field, config) => {
|
|
36
|
+
if (!field || typeof field !== 'object' || config.loadStyles)
|
|
37
|
+
return;
|
|
38
|
+
if ('value' in field && typeof field.value === 'string') {
|
|
39
|
+
config.loadStyles = CLASS_REGEXP.test(field.value);
|
|
40
|
+
}
|
|
41
|
+
else if ('fields' in field) {
|
|
42
|
+
Object.values(field.fields).forEach((field) => {
|
|
43
|
+
traverseField(field, config);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else if (Array.isArray(field)) {
|
|
47
|
+
field.forEach((field) => {
|
|
48
|
+
traverseField(field, config);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
export const traverseComponent = (component, config) => {
|
|
53
|
+
if (config.loadStyles)
|
|
54
|
+
return;
|
|
55
|
+
if ('fields' in component && component.fields) {
|
|
56
|
+
Object.values(component.fields).forEach((field) => {
|
|
57
|
+
traverseField(field, config);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const placeholders = component.placeholders || {};
|
|
61
|
+
Object.keys(placeholders).forEach((placeholder) => {
|
|
62
|
+
traversePlaceholder(placeholders[placeholder], config);
|
|
63
|
+
});
|
|
64
|
+
};
|
package/dist/esm/layout/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// layout
|
|
2
|
-
export { LayoutServicePageState, EditMode, RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from './models';
|
|
3
|
-
export { getFieldValue, getChildPlaceholder, isFieldValueEmpty, isDynamicPlaceholder, getDynamicPlaceholderPattern, EMPTY_DATE_FIELD_VALUE, } from './utils';
|
|
4
|
-
export { getContentStylesheetLink } from './content-styles';
|
|
5
|
-
export { LayoutService, GRAPHQL_LAYOUT_QUERY_NAME } from './layout-service';
|
|
6
|
-
export { getDesignLibraryStylesheetLinks } from './themes';
|
|
1
|
+
// layout
|
|
2
|
+
export { LayoutServicePageState, EditMode, RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from './models';
|
|
3
|
+
export { getFieldValue, getChildPlaceholder, isFieldValueEmpty, isDynamicPlaceholder, getDynamicPlaceholderPattern, EMPTY_DATE_FIELD_VALUE, } from './utils';
|
|
4
|
+
export { getContentStylesheetLink } from './content-styles';
|
|
5
|
+
export { LayoutService, GRAPHQL_LAYOUT_QUERY_NAME } from './layout-service';
|
|
6
|
+
export { getDesignLibraryStylesheetLinks } from './themes';
|
|
@@ -1,56 +1,61 @@
|
|
|
1
|
-
import debug from '../debug';
|
|
2
|
-
import { SitecoreServiceBase } from '../sitecore-service-base';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
1
|
+
import debug from '../debug';
|
|
2
|
+
import { SitecoreServiceBase } from '../sitecore-service-base';
|
|
3
|
+
/**
|
|
4
|
+
* GraphQL layout query name
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export const GRAPHQL_LAYOUT_QUERY_NAME = 'ContentSdkLayoutQuery';
|
|
8
|
+
/**
|
|
9
|
+
* Service that fetch layout data using Sitecore's GraphQL API.
|
|
10
|
+
* @augments LayoutServiceBase
|
|
11
|
+
* @mixes GraphQLRequestClient
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export class LayoutService extends SitecoreServiceBase {
|
|
15
|
+
/**
|
|
16
|
+
* Fetch layout data using the Sitecore GraphQL endpoint.
|
|
17
|
+
* @param {LayoutServiceConfig} serviceConfig configuration
|
|
18
|
+
*/
|
|
19
|
+
constructor(serviceConfig) {
|
|
20
|
+
super(serviceConfig);
|
|
21
|
+
this.serviceConfig = serviceConfig;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Fetch layout data for an item.
|
|
25
|
+
* @param {string} itemPath item path to fetch layout data for.
|
|
26
|
+
* @param {RouteOptions} [routeOptions] Request options like language and site to retrieve data for
|
|
27
|
+
* @param {FetchOptions} [fetchOptions] Options to override graphQL client details like retries and fetch implementation
|
|
28
|
+
* @returns {Promise<LayoutServiceData>} layout service data
|
|
29
|
+
*/
|
|
30
|
+
async fetchLayoutData(itemPath, routeOptions, fetchOptions) {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const site = routeOptions.site;
|
|
33
|
+
const query = this.getLayoutQuery(itemPath, site, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale);
|
|
34
|
+
debug.layout('fetching layout data for %s %s %s', itemPath, routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale, site);
|
|
35
|
+
const data = await this.graphQLClient.request(query, {}, fetchOptions);
|
|
36
|
+
// If `rendered` is empty -> not found
|
|
37
|
+
return (((_b = (_a = data === null || data === void 0 ? void 0 : data.layout) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.rendered) || {
|
|
38
|
+
sitecore: { context: { pageEditing: false, language: routeOptions === null || routeOptions === void 0 ? void 0 : routeOptions.locale }, route: null },
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns GraphQL Layout query
|
|
43
|
+
* @param {string} itemPath page route
|
|
44
|
+
* @param {string} [site] site name
|
|
45
|
+
* @param {string} [language] language
|
|
46
|
+
* @returns {string} GraphQL query
|
|
47
|
+
*/
|
|
48
|
+
getLayoutQuery(itemPath, site, language) {
|
|
49
|
+
const languageVariable = language ? `, language:"${language}"` : '';
|
|
50
|
+
const layoutQuery = this.serviceConfig.formatLayoutQuery
|
|
51
|
+
? this.serviceConfig.formatLayoutQuery(site, itemPath, language)
|
|
52
|
+
: `layout(site:"${site}", routePath:"${itemPath}"${languageVariable})`;
|
|
48
53
|
return `query ${GRAPHQL_LAYOUT_QUERY_NAME} {
|
|
49
54
|
${layoutQuery}{
|
|
50
55
|
item {
|
|
51
56
|
rendered
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
|
-
}`;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
59
|
+
}`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,31 +1,36 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layout Service page state enum
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
LayoutServicePageState["
|
|
8
|
-
LayoutServicePageState["
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
*
|
|
30
|
-
*/
|
|
31
|
-
export const
|
|
1
|
+
/**
|
|
2
|
+
* Layout Service page state enum
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export var LayoutServicePageState;
|
|
6
|
+
(function (LayoutServicePageState) {
|
|
7
|
+
LayoutServicePageState["Preview"] = "preview";
|
|
8
|
+
LayoutServicePageState["Edit"] = "edit";
|
|
9
|
+
LayoutServicePageState["Normal"] = "normal";
|
|
10
|
+
})(LayoutServicePageState || (LayoutServicePageState = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Represents the edit mode for rendering content in Sitecore Editors
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export var EditMode;
|
|
16
|
+
(function (EditMode) {
|
|
17
|
+
EditMode["Metadata"] = "metadata";
|
|
18
|
+
})(EditMode || (EditMode = {}));
|
|
19
|
+
/**
|
|
20
|
+
* Editing rendering type
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export var RenderingType;
|
|
24
|
+
(function (RenderingType) {
|
|
25
|
+
RenderingType["Component"] = "component";
|
|
26
|
+
})(RenderingType || (RenderingType = {}));
|
|
27
|
+
/**
|
|
28
|
+
* Static placeholder name used for component rendering
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export const EDITING_COMPONENT_PLACEHOLDER = 'editing-componentmode-placeholder';
|
|
32
|
+
/**
|
|
33
|
+
* Id of wrapper for component rendering
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export const EDITING_COMPONENT_ID = 'editing-component';
|
|
@@ -1,70 +1,71 @@
|
|
|
1
|
-
import { getFieldValue } from '.';
|
|
2
|
-
import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
|
|
3
|
-
import { normalizeUrl } from '../utils/normalize-url';
|
|
4
|
-
/**
|
|
5
|
-
* Pattern for library ids
|
|
6
|
-
* @example -library--foo
|
|
7
|
-
*/
|
|
8
|
-
const STYLES_LIBRARY_ID_REGEX = /-library--([^\s]+)/;
|
|
9
|
-
/**
|
|
10
|
-
* Walks through rendering tree and returns list of links of all FEAAS, BYOC or SXA Design Library Stylesheets that are used
|
|
11
|
-
* @param {LayoutServiceData} layoutData Layout service data
|
|
12
|
-
* @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
|
|
13
|
-
* @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
|
|
14
|
-
* @returns {HTMLLink[]} library stylesheet links
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*
|
|
32
|
-
* @param {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
*
|
|
42
|
-
* @param {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
component.params.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
getFieldValue(component.fields, '
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
};
|
|
1
|
+
import { getFieldValue } from '.';
|
|
2
|
+
import { SITECORE_EDGE_URL_DEFAULT } from '../constants';
|
|
3
|
+
import { normalizeUrl } from '../utils/normalize-url';
|
|
4
|
+
/**
|
|
5
|
+
* Pattern for library ids
|
|
6
|
+
* @example -library--foo
|
|
7
|
+
*/
|
|
8
|
+
const STYLES_LIBRARY_ID_REGEX = /-library--([^\s]+)/;
|
|
9
|
+
/**
|
|
10
|
+
* Walks through rendering tree and returns list of links of all FEAAS, BYOC or SXA Design Library Stylesheets that are used
|
|
11
|
+
* @param {LayoutServiceData} layoutData Layout service data
|
|
12
|
+
* @param {string} sitecoreEdgeContextId Sitecore Edge Context ID
|
|
13
|
+
* @param {string} [sitecoreEdgeUrl] Sitecore Edge Platform URL. Default is https://edge-platform.sitecorecloud.io
|
|
14
|
+
* @returns {HTMLLink[]} library stylesheet links
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export function getDesignLibraryStylesheetLinks(layoutData, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) {
|
|
18
|
+
const ids = new Set();
|
|
19
|
+
if (!layoutData.sitecore.route)
|
|
20
|
+
return [];
|
|
21
|
+
traverseComponent(layoutData.sitecore.route, ids);
|
|
22
|
+
return [...ids].map((id) => ({
|
|
23
|
+
href: getStylesheetUrl(id, sitecoreEdgeContextId, sitecoreEdgeUrl),
|
|
24
|
+
rel: 'stylesheet',
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
export const getStylesheetUrl = (id, sitecoreEdgeContextId, sitecoreEdgeUrl = SITECORE_EDGE_URL_DEFAULT) => {
|
|
28
|
+
return `${normalizeUrl(sitecoreEdgeUrl)}/v1/files/components/styles/${id}.css?sitecoreContextId=${sitecoreEdgeContextId}`;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Traverse placeholder and components to add library ids
|
|
32
|
+
* @param {ComponentRendering[]} components
|
|
33
|
+
* @param {Set<string>} ids library ids
|
|
34
|
+
*/
|
|
35
|
+
const traversePlaceholder = (components, ids) => {
|
|
36
|
+
components.map((component) => {
|
|
37
|
+
return traverseComponent(component, ids);
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Traverse component and children to add library ids
|
|
42
|
+
* @param {RouteData | ComponentRendering | HtmlElementRendering} component component data
|
|
43
|
+
* @param {Set<string>} ids library ids
|
|
44
|
+
*/
|
|
45
|
+
const traverseComponent = (component, ids) => {
|
|
46
|
+
var _a, _b, _c, _d, _e, _f;
|
|
47
|
+
let libraryId = undefined;
|
|
48
|
+
if ('params' in component && component.params) {
|
|
49
|
+
// LibraryID in css class name takes precedence over LibraryId attribute
|
|
50
|
+
libraryId =
|
|
51
|
+
((_b = (_a = component.params.CSSStyles) === null || _a === void 0 ? void 0 : _a.match(STYLES_LIBRARY_ID_REGEX)) === null || _b === void 0 ? void 0 : _b[1]) ||
|
|
52
|
+
((_d = (_c = component.params.Styles) === null || _c === void 0 ? void 0 : _c.match(STYLES_LIBRARY_ID_REGEX)) === null || _d === void 0 ? void 0 : _d[1]) ||
|
|
53
|
+
component.params.LibraryId ||
|
|
54
|
+
undefined;
|
|
55
|
+
}
|
|
56
|
+
// if params are empty we try to fall back to data source
|
|
57
|
+
if (!libraryId && 'fields' in component && component.fields) {
|
|
58
|
+
libraryId =
|
|
59
|
+
((_e = getFieldValue(component.fields, 'CSSStyles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _e === void 0 ? void 0 : _e[1]) ||
|
|
60
|
+
((_f = getFieldValue(component.fields, 'Styles', '').match(STYLES_LIBRARY_ID_REGEX)) === null || _f === void 0 ? void 0 : _f[1]) ||
|
|
61
|
+
getFieldValue(component.fields, 'LibraryId', '') ||
|
|
62
|
+
undefined;
|
|
63
|
+
}
|
|
64
|
+
if (libraryId) {
|
|
65
|
+
ids.add(libraryId);
|
|
66
|
+
}
|
|
67
|
+
const placeholders = component.placeholders || {};
|
|
68
|
+
Object.keys(placeholders).forEach((placeholder) => {
|
|
69
|
+
traversePlaceholder(placeholders[placeholder], ids);
|
|
70
|
+
});
|
|
71
|
+
};
|