oasys-lib 1.17.0 → 1.18.3

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 (39) hide show
  1. package/bundles/oasys-lib.umd.js +171 -12
  2. package/bundles/oasys-lib.umd.js.map +1 -1
  3. package/esm2015/lib/components/card/card.component.js +4 -3
  4. package/esm2015/lib/components/card/card.module.js +5 -4
  5. package/esm2015/lib/components/hero/hero.component.js +4 -3
  6. package/esm2015/lib/components/hero/hero.module.js +5 -4
  7. package/esm2015/lib/components/image/image.component.js +76 -0
  8. package/esm2015/lib/components/image/image.module.js +20 -0
  9. package/esm2015/lib/components/image/index.js +3 -0
  10. package/esm2015/lib/components/section/section.component.js +7 -5
  11. package/esm2015/lib/components/section/section.module.js +5 -4
  12. package/esm2015/lib/services/image.service.js +60 -0
  13. package/esm2015/public-api.js +2 -1
  14. package/fesm2015/oasys-lib.js +160 -14
  15. package/fesm2015/oasys-lib.js.map +1 -1
  16. package/lib/components/card/card.module.d.ts +2 -1
  17. package/lib/components/card/card.module.d.ts.map +1 -1
  18. package/lib/components/hero/hero.module.d.ts +2 -1
  19. package/lib/components/hero/hero.module.d.ts.map +1 -1
  20. package/lib/components/image/image.component.d.ts +24 -0
  21. package/lib/components/image/image.component.d.ts.map +1 -0
  22. package/lib/components/image/image.module.d.ts +9 -0
  23. package/lib/components/image/image.module.d.ts.map +1 -0
  24. package/lib/components/image/index.d.ts +3 -0
  25. package/lib/components/image/index.d.ts.map +1 -0
  26. package/lib/components/section/section.component.d.ts +1 -0
  27. package/lib/components/section/section.component.d.ts.map +1 -1
  28. package/lib/components/section/section.module.d.ts +3 -2
  29. package/lib/components/section/section.module.d.ts.map +1 -1
  30. package/lib/services/image.service.d.ts +18 -0
  31. package/lib/services/image.service.d.ts.map +1 -0
  32. package/package.json +1 -1
  33. package/public-api.d.ts +1 -0
  34. package/public-api.d.ts.map +1 -1
  35. package/src/assets/bloomandwild/variables.css +3 -1
  36. package/src/assets/bloomon/variables.css +3 -1
  37. package/src/assets/global/scss-breakpoints.scss +1 -1
  38. package/src/assets/global/typography.scss +1 -1
  39. package/src/assets/global/variables.css +1 -1
@@ -1215,6 +1215,144 @@
1215
1215
  }]
1216
1216
  }] });
1217
1217
 
1218
+ var ImageService = /** @class */ (function () {
1219
+ function ImageService() {
1220
+ this.fallbackBreakpoint = 768;
1221
+ this.breakpoints = [
1222
+ 320, 360, 375, 414, 640, 750, 768, 1080, 1280, 1366, 1440, 1536, 1600, 1680, 1920, 2560, 3440, 3840
1223
+ ];
1224
+ }
1225
+ ImageService.prototype.getQualityForWidth = function (width) {
1226
+ return width > 1440 ? 50 : 75;
1227
+ };
1228
+ ImageService.prototype.generateUrl = function (baseUrl, format, width, quality, cdnType) {
1229
+ switch (cdnType) {
1230
+ case 'thumbor':
1231
+ return "https://media.bloomdev.org/v1/" + width + "x0/filters:format(" + format + "):quality(" + quality + ")/" + baseUrl;
1232
+ case 'contentful':
1233
+ return baseUrl + "?w=" + width + "&fm=" + format + "&q=" + quality;
1234
+ default:
1235
+ return baseUrl;
1236
+ }
1237
+ };
1238
+ ImageService.prototype.generateUrls = function (baseUrl, format, sizes, isFallback, cdnType) {
1239
+ var _this = this;
1240
+ return sizes.map(function (width) {
1241
+ var quality = isFallback ? 100 : _this.getQualityForWidth(width);
1242
+ var url = _this.generateUrl(baseUrl, format, width, quality, cdnType);
1243
+ return isFallback ? url : url + " " + width + "w";
1244
+ }).join(', ');
1245
+ };
1246
+ ImageService.prototype.detectCdnType = function (baseUrl) {
1247
+ if (baseUrl.includes('assets-0.bloomandwild.com')) {
1248
+ return 'thumbor';
1249
+ }
1250
+ else if (baseUrl.includes('images.ctfassets.net/')) {
1251
+ return 'contentful';
1252
+ }
1253
+ };
1254
+ ImageService.prototype.getImageUrlsFromCDN = function (baseUrl, format, sizes, isFallback) {
1255
+ var cdnType = this.detectCdnType(baseUrl);
1256
+ if (isFallback) {
1257
+ sizes = [this.fallbackBreakpoint];
1258
+ }
1259
+ return this.generateUrls(baseUrl, format, sizes, isFallback, cdnType);
1260
+ };
1261
+ ImageService.prototype.generateImageUrl = function (baseUrl) {
1262
+ return {
1263
+ srcSetUrls: this.getImageUrlsFromCDN(baseUrl, 'webp', this.breakpoints, false),
1264
+ fallbackUrl: this.getImageUrlsFromCDN(baseUrl, 'jpg', this.breakpoints, true)
1265
+ };
1266
+ };
1267
+ return ImageService;
1268
+ }());
1269
+ ImageService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImageService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1270
+ ImageService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImageService, providedIn: 'root' });
1271
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImageService, decorators: [{
1272
+ type: i0.Injectable,
1273
+ args: [{
1274
+ providedIn: 'root',
1275
+ }]
1276
+ }] });
1277
+
1278
+ var ImageComponent = /** @class */ (function () {
1279
+ function ImageComponent(imageService, el) {
1280
+ this.imageService = imageService;
1281
+ this.el = el;
1282
+ this.image_src = '';
1283
+ this.fetchpriority = 'auto';
1284
+ this.loading = 'lazy';
1285
+ this.preload_aspect_ratio = '1:1';
1286
+ }
1287
+ Object.defineProperty(ImageComponent.prototype, "class", {
1288
+ get: function () {
1289
+ return "" + (this.image_fill ? 'imageFill' : '');
1290
+ },
1291
+ enumerable: false,
1292
+ configurable: true
1293
+ });
1294
+ ImageComponent.prototype.setupLazyLoading = function () {
1295
+ var _this = this;
1296
+ var options = {
1297
+ removeAfterObserved: true,
1298
+ root: null,
1299
+ rootMargin: '200px',
1300
+ threshold: 0.01
1301
+ };
1302
+ this.intersectionObserver = new IntersectionObserver(function (entries) {
1303
+ entries.forEach(function (entry) {
1304
+ if (entry.isIntersecting) {
1305
+ var imageElement_1 = _this.el.nativeElement.querySelector('img');
1306
+ var sourceElement = _this.el.nativeElement.querySelector('source');
1307
+ imageElement_1.setAttribute('src', _this.imageUrlResponse.fallbackUrl);
1308
+ sourceElement.setAttribute('srcset', _this.imageUrlResponse.srcSetUrls);
1309
+ _this.intersectionObserver.unobserve(entry.target);
1310
+ }
1311
+ });
1312
+ }, options);
1313
+ var imageElement = this.el.nativeElement.querySelector('img');
1314
+ this.intersectionObserver.observe(imageElement);
1315
+ };
1316
+ ImageComponent.prototype.ngOnInit = function () {
1317
+ var ratios = this.preload_aspect_ratio.split(':');
1318
+ this.imageRatioWidth = parseInt(ratios[0], 10);
1319
+ this.imageRatioHeight = parseInt(ratios[1], 10);
1320
+ this.imageUrlResponse = this.imageService.generateImageUrl(this.image_src);
1321
+ if (!('loading' in HTMLImageElement.prototype)) {
1322
+ this.setupLazyLoading();
1323
+ }
1324
+ if (!this.image_alt_text) {
1325
+ throw Error("Image is missing an alt tag, image url is " + this.image_src);
1326
+ }
1327
+ };
1328
+ return ImageComponent;
1329
+ }());
1330
+ ImageComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImageComponent, deps: [{ token: ImageService }, { token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1331
+ ImageComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImageComponent, selector: "ui-image", inputs: { image_src: "image_src", image_alt_text: "image_alt_text", image_fill: "image_fill", fetchpriority: "fetchpriority", loading: "loading", preload_aspect_ratio: "preload_aspect_ratio" }, host: { properties: { "class": "this.class" } }, ngImport: i0__namespace, template: "<picture>\n <source\n srcset=\"{{imageUrlResponse.srcSetUrls}}\"\n type=\"image/webp\"/>\n\n <img\n [ngClass]=\"{'imageFill': image_fill}\"\n [attr.width]=\"imageRatioWidth\"\n [attr.height]=\"imageRatioHeight\"\n [attr.src]=\"imageUrlResponse.fallbackUrl\"\n [attr.loading]=\"loading\"\n [attr.fetchpriority]=\"fetchpriority\"\n />\n</picture>\n", styles: [":host.imageFill,:host.imageFill picture,:host.imageFill img{display:block;height:100%}:host.imageFill img{object-fit:cover}img{display:block;width:100%;height:auto}\n"], directives: [{ type: i6__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1332
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ImageComponent, decorators: [{
1333
+ type: i0.Component,
1334
+ args: [{
1335
+ selector: 'ui-image',
1336
+ templateUrl: './image.component.html',
1337
+ styleUrls: ['./image.component.scss']
1338
+ }]
1339
+ }], ctorParameters: function () { return [{ type: ImageService }, { type: i0__namespace.ElementRef }]; }, propDecorators: { image_src: [{
1340
+ type: i0.Input
1341
+ }], image_alt_text: [{
1342
+ type: i0.Input
1343
+ }], image_fill: [{
1344
+ type: i0.Input
1345
+ }], fetchpriority: [{
1346
+ type: i0.Input
1347
+ }], loading: [{
1348
+ type: i0.Input
1349
+ }], preload_aspect_ratio: [{
1350
+ type: i0.Input
1351
+ }], class: [{
1352
+ type: i0.HostBinding,
1353
+ args: ['class']
1354
+ }] } });
1355
+
1218
1356
  var CardComponent = /** @class */ (function () {
1219
1357
  function CardComponent(tokenService) {
1220
1358
  this.tokenService = tokenService;
@@ -1253,7 +1391,7 @@
1253
1391
  return CardComponent;
1254
1392
  }());
1255
1393
  CardComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CardComponent, deps: [{ token: TokenService }], target: i0__namespace.ɵɵFactoryTarget.Component });
1256
- CardComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CardComponent, selector: "ui-card", inputs: { label_text: "label_text", image: "image", alt_text: "alt_text", image_format: "image_format", small_title_left: "small_title_left", small_sub_title_right: "small_sub_title_right", standard_content: "standard_content", bold_content: "bold_content" }, host: { listeners: { "window:resize": "setStackPlacement($event)" } }, viewQueries: [{ propertyName: "imageLabel", first: true, predicate: ["imagelabel"], descendants: true, read: i0.ElementRef }], ngImport: i0__namespace, template: "<ui-box class=\"ui-card\" box_background=\"core-primary\" box_space=\"none\">\n <ui-stack stack_align=\"center\" stack_gap=\"tight\">\n <ui-box\n class=\"ui-card__image\"\n [ngStyle]=\"{'aspect-ratio': aspectRatio}\"\n box_background=\"transparent\"\n box_align_x=\"center\"\n box_space=\"none\">\n <img [src]=\"image\" [attr.alt]=\"alt_text\">\n </ui-box>\n <ui-stack stack_gap=\"tight\" [ngStyle]=\"{'margin-top': stackOffset}\">\n <ui-box\n #imagelabel\n *ngIf=\"label_text\"\n class=\"card__image-label center-content\"\n box_background=\"tint-highlight\"\n box_align_x=\"center\"\n box_align_y=\"center\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"tight\"\n box_space_top=\"tight\">\n <h5>{{label_text}}</h5>\n </ui-box>\n <ui-box *ngIf=\"small_title_left || small_sub_title_right\" [box_space_top]=\"label_text ? 'none' : 'tight'\" box_space=\"none\" box_background=\"transparent\" >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_gap=\"tight\">\n <span class=\"text-body--supporting text-color--supporting\">{{small_title_left}}</span>\n <span class=\"text-body--supporting text-color--supporting\">{{small_sub_title_right}}</span>\n </ui-stack>\n </ui-box>\n <p *ngIf=\"standard_content\" class=\"text-label--default center-content\">{{standard_content}}</p>\n <p *ngIf=\"bold_content\" class=\"text-label--primary text-body--emphasis\">{{bold_content}}</p>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [".ui-card__image{position:relative}.ui-card__image img{position:absolute;height:100%;object-fit:cover;width:100%;left:0}.ui-card .center-content{text-align:center;align-self:center}.ui-card .card__image-label{width:auto;height:auto;border-radius:2px;margin:0 8px;text-align:center;overflow:hidden;z-index:2}\n"], components: [{ type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width"] }, { type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap"] }], directives: [{ type: i6__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1394
+ CardComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CardComponent, selector: "ui-card", inputs: { label_text: "label_text", image: "image", alt_text: "alt_text", image_format: "image_format", small_title_left: "small_title_left", small_sub_title_right: "small_sub_title_right", standard_content: "standard_content", bold_content: "bold_content" }, host: { listeners: { "window:resize": "setStackPlacement($event)" } }, viewQueries: [{ propertyName: "imageLabel", first: true, predicate: ["imagelabel"], descendants: true, read: i0.ElementRef }], ngImport: i0__namespace, template: "<ui-box class=\"ui-card\" box_background=\"core-primary\" box_space=\"none\">\n <ui-stack stack_align=\"center\" stack_gap=\"tight\">\n <ui-box\n class=\"ui-card__image\"\n [ngStyle]=\"{'aspect-ratio': aspectRatio}\"\n box_background=\"transparent\"\n box_align_x=\"center\"\n box_space=\"none\">\n <ui-image [image_src]=\"image\" [image_alt_text]=\"alt_text\" [image_fill]=\"true\"></ui-image>\n </ui-box>\n <ui-stack stack_gap=\"tight\" [ngStyle]=\"{'margin-top': stackOffset}\">\n <ui-box\n #imagelabel\n *ngIf=\"label_text\"\n class=\"card__image-label center-content\"\n box_background=\"tint-highlight\"\n box_align_x=\"center\"\n box_align_y=\"center\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"tight\"\n box_space_top=\"tight\">\n <h5>{{label_text}}</h5>\n </ui-box>\n <ui-box *ngIf=\"small_title_left || small_sub_title_right\" [box_space_top]=\"label_text ? 'none' : 'tight'\" box_space=\"none\" box_background=\"transparent\" >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_gap=\"tight\">\n <span class=\"text-body--supporting text-color--supporting\">{{small_title_left}}</span>\n <span class=\"text-body--supporting text-color--supporting\">{{small_sub_title_right}}</span>\n </ui-stack>\n </ui-box>\n <p *ngIf=\"standard_content\" class=\"text-label--default center-content\">{{standard_content}}</p>\n <p *ngIf=\"bold_content\" class=\"text-label--primary text-body--emphasis\">{{bold_content}}</p>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [".ui-card__image{position:relative}.ui-card__image ui-image{position:absolute;height:100%;object-fit:cover;width:100%;left:0}.ui-card .center-content{text-align:center;align-self:center}.ui-card .card__image-label{width:auto;height:auto;border-radius:2px;margin:0 8px;text-align:center;overflow:hidden;z-index:2}\n"], components: [{ type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width"] }, { type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap"] }, { type: ImageComponent, selector: "ui-image", inputs: ["image_src", "image_alt_text", "image_fill", "fetchpriority", "loading", "preload_aspect_ratio"] }], directives: [{ type: i6__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1257
1395
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CardComponent, decorators: [{
1258
1396
  type: i0.Component,
1259
1397
  args: [{
@@ -1285,19 +1423,37 @@
1285
1423
  args: ['window:resize', ['$event']]
1286
1424
  }] } });
1287
1425
 
1426
+ var OasysImageModule = /** @class */ (function () {
1427
+ function OasysImageModule() {
1428
+ }
1429
+ return OasysImageModule;
1430
+ }());
1431
+ OasysImageModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysImageModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1432
+ OasysImageModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysImageModule, declarations: [ImageComponent], imports: [i6.CommonModule], exports: [ImageComponent] });
1433
+ OasysImageModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysImageModule, providers: [ImageService], imports: [[i6.CommonModule]] });
1434
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysImageModule, decorators: [{
1435
+ type: i0.NgModule,
1436
+ args: [{
1437
+ declarations: [ImageComponent],
1438
+ imports: [i6.CommonModule],
1439
+ exports: [ImageComponent],
1440
+ providers: [ImageService]
1441
+ }]
1442
+ }] });
1443
+
1288
1444
  var OasysCardModule = /** @class */ (function () {
1289
1445
  function OasysCardModule() {
1290
1446
  }
1291
1447
  return OasysCardModule;
1292
1448
  }());
1293
1449
  OasysCardModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysCardModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1294
- OasysCardModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysCardModule, declarations: [CardComponent], imports: [i6.CommonModule, OasysLayoutModule, router.RouterModule], exports: [CardComponent] });
1295
- OasysCardModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysCardModule, providers: [TokenService], imports: [[i6.CommonModule, OasysLayoutModule, router.RouterModule]] });
1450
+ OasysCardModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysCardModule, declarations: [CardComponent], imports: [i6.CommonModule, OasysLayoutModule, router.RouterModule, OasysImageModule], exports: [CardComponent] });
1451
+ OasysCardModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysCardModule, providers: [TokenService], imports: [[i6.CommonModule, OasysLayoutModule, router.RouterModule, OasysImageModule]] });
1296
1452
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysCardModule, decorators: [{
1297
1453
  type: i0.NgModule,
1298
1454
  args: [{
1299
1455
  declarations: [CardComponent],
1300
- imports: [i6.CommonModule, OasysLayoutModule, router.RouterModule],
1456
+ imports: [i6.CommonModule, OasysLayoutModule, router.RouterModule, OasysImageModule],
1301
1457
  exports: [CardComponent],
1302
1458
  providers: [TokenService],
1303
1459
  }]
@@ -1461,7 +1617,7 @@
1461
1617
  return HeroComponent;
1462
1618
  }());
1463
1619
  HeroComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: HeroComponent, deps: [{ token: TokenService }], target: i0__namespace.ɵɵFactoryTarget.Component });
1464
- HeroComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: HeroComponent, selector: "ui-hero", inputs: { min_container_height: "min_container_height", image_left_desktop: "image_left_desktop", image_top_mobile: "image_top_mobile", background_colour: "background_colour", heading_title: "heading_title", heading_subtitle: "heading_subtitle", heading_surtitle: "heading_surtitle", primary_cta_text: "primary_cta_text", secondary_cta_text: "secondary_cta_text", image: "image", alt_text: "alt_text", media_type: "media_type", href_primary_cta: "href_primary_cta", href_secondary_cta: "href_secondary_cta" }, ngImport: i0__namespace, template: "<ui-box [box_background]=\"background_colour\" box_space=\"none\">\n <ui-grid [ngStyle]=\"{'min-height' : min_container_height ? min_container_height + 'px' : 'auto'}\" grid_gap=\"none\" grid_collapse_below=\"tablet\">\n <ui-column columns=\"5\" [ngClass]=\"{'image-left': image_left_desktop, 'image-top': image_top_mobile}\">\n <ui-box box_fill_mode=\"fill\" box_align_y=\"center\" box_background=\"transparent\" [box_space]=\"{mobile: heroInsetSpaceSmall, tablet: heroInsetSpaceSmall, laptop: heroInsetSpaceLarge, desktop: heroInsetSpaceLarge}\">\n <ui-stack stack_direction=\"y\" stack_align=\"center\" stack_distribute=\"center\" stack_gap=\"default\">\n <ui-heading\n heading_type=\"primary\"\n [heading_on_dark]=\"backgroundIsDark === 'on-dark' ? true : false\"\n [heading_title]=\"heading_title\"\n [heading_seo_priority]=\"true\"\n [heading_subtitle]=\"heading_subtitle\"\n [heading_surtitle]=\"heading_surtitle\">\n </ui-heading>\n <!-- TODO: replace with ui-button-group once built-->\n <ui-stack\n *ngIf=\"primary_cta_text\"\n class=\"cta-container\"\n stack_direction=\"x\"\n [stack_align]=\"heroCtaAlignment\"\n [stack_distribute]=\"heroCtaAlignment\"\n stack_wrap=\"true\"\n stack_gap=\"near\">\n <ui-button\n button_size=\"large\"\n [button_type]=\"backgroundIsDark === 'on-dark' ? 'primary-inverse' : 'primary'\"\n [href]=\"href_primary_cta\">\n <span #buttontext>{{primary_cta_text}}</span>\n </ui-button>\n <ui-button\n *ngIf=\"secondary_cta_text\"\n button-size=\"large\"\n [button_type]=\"backgroundIsDark === 'on-dark' ? 'secondary-inverse' : 'secondary'\"\n [href]=\"href_secondary_cta\">\n <span #buttontext>{{secondary_cta_text}}</span>\n </ui-button>\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n <ui-column columns=\"7\">\n <picture *ngIf=\"media_type === 'image'\">\n <source [srcset]=\"image + '?w=880&h=880&fm=webp&q=75 1x,' + image + '?w=1760&h=1760&fm=webp&q=40 2x'\" media=\"(min-width: 1440px)\" type=\"image/webp\">\n <source [srcset]=\"image + '?w=720&h=720&fm=webp&q=75 1x,' + image + '?w=1440&h=1440&fm=webp&q=40 2x'\" media=\"(min-width: 1200px)\" type=\"image/webp\">\n <source [srcset]=\"image + '?w=580&h=580&fm=webp&q=75 1x,' + image + '?w=1160&h=1160&fm=webp&q=40 2x'\" media=\"(min-width: 992px)\" type=\"image/webp\">\n <source [srcset]=\"image + '?w=430&h=430&fm=webp&q=75 1x,' + image + '?w=860&h=860&fm=webp&q=40 2x'\" media=\"(min-width: 768px)\" type=\"image/webp\">\n <source [srcset]=\"image + '?w=720&h=720&fm=webp&q=40 2x'\" media=\"(min-width: 454px)\" type=\"image/webp\">\n <img [src]=\"image + '?w=430&h=430&fm=webp&q=75'\" [attr.alt]=\"alt_text\">\n </picture>\n <ng-content *ngIf=\"media_type === 'video'\"></ng-content>\n </ui-column>\n </ui-grid>\n</ui-box>\n\n", styles: ["ui-grid ui-column{position:relative}ui-grid ui-column img{width:100%}@media only screen and (min-width: 768px){ui-grid ui-column img{position:absolute;height:100%;object-fit:cover}}@media only screen and (max-width: 767px){ui-grid .image-top{order:1}}@media only screen and (min-width: 768px){ui-grid .image-top{order:0}ui-grid .image-left{order:1}}\n"], components: [{ type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width"] }, { type: LayoutGridComponent, selector: "ui-grid", inputs: ["grid_auto", "grid_collapse_below", "grid_gap"] }, { type: LayoutGridColumnComponent, selector: "ui-column", inputs: ["columns", "column_inset"] }, { type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap"] }, { type: OasysHeadingComponent, selector: "ui-heading", inputs: ["heading_type", "heading_on_dark", "heading_title", "heading_seo_priority", "heading_priority", "heading_alignment_override", "heading_subtitle", "heading_surtitle"] }, { type: OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_full_width", "button_type", "button_disabled", "href"], outputs: ["clicked"] }], directives: [{ type: i6__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1620
+ HeroComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: HeroComponent, selector: "ui-hero", inputs: { min_container_height: "min_container_height", image_left_desktop: "image_left_desktop", image_top_mobile: "image_top_mobile", background_colour: "background_colour", heading_title: "heading_title", heading_subtitle: "heading_subtitle", heading_surtitle: "heading_surtitle", primary_cta_text: "primary_cta_text", secondary_cta_text: "secondary_cta_text", image: "image", alt_text: "alt_text", media_type: "media_type", href_primary_cta: "href_primary_cta", href_secondary_cta: "href_secondary_cta" }, ngImport: i0__namespace, template: "<ui-box [box_background]=\"background_colour\" box_space=\"none\">\n <ui-grid [ngStyle]=\"{'min-height' : min_container_height ? min_container_height + 'px' : 'auto'}\" grid_gap=\"none\" grid_collapse_below=\"tablet\">\n <ui-column columns=\"5\" [ngClass]=\"{'image-left': image_left_desktop, 'image-top': image_top_mobile}\">\n <ui-box box_fill_mode=\"fill\" box_align_y=\"center\" box_background=\"transparent\" [box_space]=\"{mobile: heroInsetSpaceSmall, tablet: heroInsetSpaceSmall, laptop: heroInsetSpaceLarge, desktop: heroInsetSpaceLarge}\">\n <ui-stack stack_direction=\"y\" stack_align=\"center\" stack_distribute=\"center\" stack_gap=\"default\">\n <ui-heading\n heading_type=\"primary\"\n [heading_on_dark]=\"backgroundIsDark === 'on-dark' ? true : false\"\n [heading_title]=\"heading_title\"\n [heading_seo_priority]=\"true\"\n [heading_subtitle]=\"heading_subtitle\"\n [heading_surtitle]=\"heading_surtitle\">\n </ui-heading>\n <!-- TODO: replace with ui-button-group once built-->\n <ui-stack\n *ngIf=\"primary_cta_text\"\n class=\"cta-container\"\n stack_direction=\"x\"\n [stack_align]=\"heroCtaAlignment\"\n [stack_distribute]=\"heroCtaAlignment\"\n stack_wrap=\"true\"\n stack_gap=\"near\">\n <ui-button\n bwtrackas=\"oasys.hero-block.primary-cta\"\n button_size=\"large\"\n [button_type]=\"backgroundIsDark === 'on-dark' ? 'primary-inverse' : 'primary'\"\n [href]=\"href_primary_cta\">\n <span #buttontext>{{primary_cta_text}}</span>\n </ui-button>\n <ui-button\n *ngIf=\"secondary_cta_text\"\n bwtrackas=\"oasys.hero-block.secondary-cta\"\n button-size=\"large\"\n [button_type]=\"backgroundIsDark === 'on-dark' ? 'secondary-inverse' : 'secondary'\"\n [href]=\"href_secondary_cta\">\n <span #buttontext>{{secondary_cta_text}}</span>\n </ui-button>\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n <ui-column columns=\"7\">\n <ui-image\n *ngIf=\"media_type === 'image'\"\n [image_src]=\"image\"\n [image_alt_text]=\"alt_text\"\n preload_aspect_ratio=\"5:4\"\n [image_fill]=\"true\"></ui-image>\n <ng-content *ngIf=\"media_type === 'video'\"></ng-content>\n </ui-column>\n </ui-grid>\n</ui-box>\n\n", styles: ["@media only screen and (max-width: 767px){ui-grid .image-top{order:1}}@media only screen and (min-width: 768px){ui-grid .image-top{order:0}ui-grid .image-left{order:1}}\n"], components: [{ type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width"] }, { type: LayoutGridComponent, selector: "ui-grid", inputs: ["grid_auto", "grid_collapse_below", "grid_gap"] }, { type: LayoutGridColumnComponent, selector: "ui-column", inputs: ["columns", "column_inset"] }, { type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap"] }, { type: OasysHeadingComponent, selector: "ui-heading", inputs: ["heading_type", "heading_on_dark", "heading_title", "heading_seo_priority", "heading_priority", "heading_alignment_override", "heading_subtitle", "heading_surtitle"] }, { type: OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_full_width", "button_type", "button_disabled", "href"], outputs: ["clicked"] }, { type: ImageComponent, selector: "ui-image", inputs: ["image_src", "image_alt_text", "image_fill", "fetchpriority", "loading", "preload_aspect_ratio"] }], directives: [{ type: i6__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1465
1621
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: HeroComponent, decorators: [{
1466
1622
  type: i0.Component,
1467
1623
  args: [{
@@ -1505,13 +1661,13 @@
1505
1661
  return OasysHeroModule;
1506
1662
  }());
1507
1663
  OasysHeroModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysHeroModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1508
- OasysHeroModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysHeroModule, declarations: [HeroComponent], imports: [i6.CommonModule, OasysButtonModule, OasysHeadingModule, OasysLayoutModule], exports: [HeroComponent] });
1509
- OasysHeroModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysHeroModule, providers: [TokenService], imports: [[i6.CommonModule, OasysButtonModule, OasysHeadingModule, OasysLayoutModule]] });
1664
+ OasysHeroModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysHeroModule, declarations: [HeroComponent], imports: [i6.CommonModule, OasysButtonModule, OasysHeadingModule, OasysLayoutModule, OasysImageModule], exports: [HeroComponent] });
1665
+ OasysHeroModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysHeroModule, providers: [TokenService], imports: [[i6.CommonModule, OasysButtonModule, OasysHeadingModule, OasysLayoutModule, OasysImageModule]] });
1510
1666
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: OasysHeroModule, decorators: [{
1511
1667
  type: i0.NgModule,
1512
1668
  args: [{
1513
1669
  declarations: [HeroComponent],
1514
- imports: [i6.CommonModule, OasysButtonModule, OasysHeadingModule, OasysLayoutModule],
1670
+ imports: [i6.CommonModule, OasysButtonModule, OasysHeadingModule, OasysLayoutModule, OasysImageModule],
1515
1671
  exports: [HeroComponent],
1516
1672
  providers: [TokenService],
1517
1673
  }]
@@ -1683,6 +1839,7 @@
1683
1839
  this.containerInsetSpaceLarge = this.tokenService.getTokenValue("--component-section-inset-spacing-container-large");
1684
1840
  this.contentInsetSpaceSmall = this.tokenService.getTokenValue("--component-section-inset-spacing-content-small-" + this.section_type);
1685
1841
  this.contentInsetSpaceLarge = this.tokenService.getTokenValue("--component-section-inset-spacing-content-large-" + this.section_type);
1842
+ this.imageAspectRatio = this.tokenService.getTokenValue("--component-section-image-aspect-ratio-" + this.section_type);
1686
1843
  // Setting a unique ID, this is important & needed to apply
1687
1844
  // styles to ui-box
1688
1845
  this.uiBoxId = Date.now() + '-' + Math.random();
@@ -1705,7 +1862,7 @@
1705
1862
  return SectionComponent;
1706
1863
  }());
1707
1864
  SectionComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionComponent, deps: [{ token: TokenService }], target: i0__namespace.ɵɵFactoryTarget.Component });
1708
- SectionComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SectionComponent, selector: "ui-section", inputs: { brand_background_colour: "brand_background_colour", non_brand_background_colour: "non_brand_background_colour", text_on_dark_override: "text_on_dark_override", image_on_left: "image_on_left", section_type: "section_type", heading_title: "heading_title", heading_subtitle: "heading_subtitle", primary_cta_text: "primary_cta_text", secondary_cta_text: "secondary_cta_text", image: "image", alt_text: "alt_text", href_primary_cta: "href_primary_cta", href_secondary_cta: "href_secondary_cta" }, ngImport: i0__namespace, template: "<ui-box\nid=\"ui-box-{{uiBoxId}}\"\n[box_background]=\"brand_background_colour\"\n[box_space_left]=\"section_type === 'spotlight' && !image_on_left ? 'none' : ''\"\n[box_space_right]=\"section_type === 'spotlight' && image_on_left ? 'none' : ''\"\n[box_space]=\"section_type === 'spotlight' ? 'none' : {mobile: containerInsetSpaceSmall, tablet: containerInsetSpaceLarge, laptop: containerInsetSpaceLarge, desktop: containerInsetSpaceLarge}\">\n\n <ui-grid [grid_gap]=\"section_type === 'spotlight' ? 'none' : 'default'\">\n <ui-column columns=\"6\" [ngClass]=\"{'image-left': image_on_left, 'image-top-mobile': image_on_left}\">\n <ui-box\n \n box_space=\"none\"\n box_background=\"none\"\n box_align_y=\"center\"\n >\n <img [src]=\"image\" [alt]=\"alt_text\" loading=\"lazy\">\n </ui-box>\n </ui-column>\n\n <ui-column columns=\"6\">\n <ui-box\n [box_background]=\"brand_background_colour\"\n box_align_y=\"center\"\n [box_space]=\"section_type === 'spotlight' ? {mobile: contentInsetSpaceSmall, tablet: contentInsetSpaceLarge, laptop: contentInsetSpaceLarge, desktop: contentInsetSpaceLarge} : {mobile: contentInsetSpaceSmall, tablet: contentInsetSpaceSmall, laptop: contentInsetSpaceLarge, desktop: contentInsetSpaceLarge}\">\n <ui-stack\n stack_direction=\"y\"\n stack_align=\"center\"\n stack_distribute=\"center\"\n stack_wrap=\"true\"\n >\n <ui-heading\n [heading_type]=\"section_type === 'spotlight' ? 'primary' : 'functional-primary'\"\n [heading_title]=\"heading_title\"\n [heading_subtitle]=\"heading_subtitle\">\n </ui-heading>\n\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"start\"\n [stack_distribute]=\"section_type === 'spotlight' ? 'center' : 'start'\"\n stack_wrap=\"true\"\n stack_gap=\"near\">\n\n <a class=\"text-link text-link--standalone\" [href]=\"href_primary_cta\">{{primary_cta_text}}</a>\n <a *ngIf=\"section_type !== 'spotlight'\" class=\"text-link text-link--standalone\" [href]=\"href_secondary_cta\">{{secondary_cta_text}}</a>\n\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>", styles: ["ui-grid ui-column img{width:100%;display:block}ui-grid .image-left{order:1}@media only screen and (max-width: 767px){ui-grid .image-top-mobile{order:0}}\n"], components: [{ type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width"] }, { type: LayoutGridComponent, selector: "ui-grid", inputs: ["grid_auto", "grid_collapse_below", "grid_gap"] }, { type: LayoutGridColumnComponent, selector: "ui-column", inputs: ["columns", "column_inset"] }, { type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap"] }, { type: OasysHeadingComponent, selector: "ui-heading", inputs: ["heading_type", "heading_on_dark", "heading_title", "heading_seo_priority", "heading_priority", "heading_alignment_override", "heading_subtitle", "heading_surtitle"] }], directives: [{ type: i6__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1865
+ SectionComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SectionComponent, selector: "ui-section", inputs: { brand_background_colour: "brand_background_colour", non_brand_background_colour: "non_brand_background_colour", text_on_dark_override: "text_on_dark_override", image_on_left: "image_on_left", section_type: "section_type", heading_title: "heading_title", heading_subtitle: "heading_subtitle", primary_cta_text: "primary_cta_text", secondary_cta_text: "secondary_cta_text", image: "image", alt_text: "alt_text", href_primary_cta: "href_primary_cta", href_secondary_cta: "href_secondary_cta" }, ngImport: i0__namespace, template: "<ui-box\nid=\"ui-box-{{uiBoxId}}\"\n[box_background]=\"brand_background_colour\"\n[box_space_left]=\"section_type === 'spotlight' && !image_on_left ? 'none' : ''\"\n[box_space_right]=\"section_type === 'spotlight' && image_on_left ? 'none' : ''\"\n[box_space]=\"section_type === 'spotlight' ? 'none' : {mobile: containerInsetSpaceSmall, tablet: containerInsetSpaceLarge, laptop: containerInsetSpaceLarge, desktop: containerInsetSpaceLarge}\">\n\n <ui-grid [grid_gap]=\"section_type === 'spotlight' ? 'none' : 'default'\">\n <ui-column columns=\"6\" [ngClass]=\"{'image-left': image_on_left, 'image-top-mobile': image_on_left}\">\n <ui-box\n box_space=\"none\"\n box_background=\"none\"\n box_align_y=\"center\"\n >\n <ui-image [image_src]=\"image\" [image_alt_text]=\"alt_text\" [preload_aspect_ratio]=\"imageAspectRatio\"></ui-image>\n </ui-box>\n </ui-column>\n\n <ui-column columns=\"6\">\n <ui-box\n [box_background]=\"brand_background_colour\"\n box_align_y=\"center\"\n [box_space]=\"section_type === 'spotlight' ? {mobile: contentInsetSpaceSmall, tablet: contentInsetSpaceLarge, laptop: contentInsetSpaceLarge, desktop: contentInsetSpaceLarge} : {mobile: contentInsetSpaceSmall, tablet: contentInsetSpaceSmall, laptop: contentInsetSpaceLarge, desktop: contentInsetSpaceLarge}\">\n <ui-stack\n stack_direction=\"y\"\n stack_align=\"center\"\n stack_distribute=\"center\"\n stack_wrap=\"true\"\n >\n <ui-heading\n [heading_type]=\"section_type === 'spotlight' ? 'primary' : 'functional-primary'\"\n [heading_title]=\"heading_title\"\n [heading_subtitle]=\"heading_subtitle\">\n </ui-heading>\n\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"start\"\n [stack_distribute]=\"section_type === 'spotlight' ? 'center' : 'start'\"\n stack_wrap=\"true\"\n stack_gap=\"near\">\n\n <a class=\"text-link text-link--standalone\" [href]=\"href_primary_cta\" bwtrackas=\"oasys.story-block.primary-cta\">{{primary_cta_text}}</a>\n <a *ngIf=\"section_type !== 'spotlight'\" class=\"text-link text-link--standalone\" [href]=\"href_secondary_cta\" bwtrackas=\"oasys.story-block.secondary-cta\">{{secondary_cta_text}}</a>\n\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>", styles: ["ui-grid ui-column img{width:100%;display:block}ui-grid .image-left{order:1}@media only screen and (max-width: 767px){ui-grid .image-top-mobile{order:0}}\n"], components: [{ type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width"] }, { type: LayoutGridComponent, selector: "ui-grid", inputs: ["grid_auto", "grid_collapse_below", "grid_gap"] }, { type: LayoutGridColumnComponent, selector: "ui-column", inputs: ["columns", "column_inset"] }, { type: ImageComponent, selector: "ui-image", inputs: ["image_src", "image_alt_text", "image_fill", "fetchpriority", "loading", "preload_aspect_ratio"] }, { type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap"] }, { type: OasysHeadingComponent, selector: "ui-heading", inputs: ["heading_type", "heading_on_dark", "heading_title", "heading_seo_priority", "heading_priority", "heading_alignment_override", "heading_subtitle", "heading_surtitle"] }], directives: [{ type: i6__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1709
1866
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionComponent, decorators: [{
1710
1867
  type: i0.Component,
1711
1868
  args: [{
@@ -1747,13 +1904,13 @@
1747
1904
  return SectionModule;
1748
1905
  }());
1749
1906
  SectionModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1750
- SectionModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionModule, declarations: [SectionComponent], imports: [i6.CommonModule, OasysHeadingModule, OasysLayoutModule], exports: [SectionComponent] });
1751
- SectionModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionModule, providers: [TokenService], imports: [[i6.CommonModule, OasysHeadingModule, OasysLayoutModule]] });
1907
+ SectionModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionModule, declarations: [SectionComponent], imports: [i6.CommonModule, OasysHeadingModule, OasysImageModule, OasysLayoutModule], exports: [SectionComponent] });
1908
+ SectionModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionModule, providers: [TokenService], imports: [[i6.CommonModule, OasysHeadingModule, OasysImageModule, OasysLayoutModule]] });
1752
1909
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SectionModule, decorators: [{
1753
1910
  type: i0.NgModule,
1754
1911
  args: [{
1755
1912
  declarations: [SectionComponent],
1756
- imports: [i6.CommonModule, OasysHeadingModule, OasysLayoutModule],
1913
+ imports: [i6.CommonModule, OasysHeadingModule, OasysImageModule, OasysLayoutModule],
1757
1914
  exports: [SectionComponent],
1758
1915
  providers: [TokenService]
1759
1916
  }]
@@ -2013,6 +2170,7 @@
2013
2170
  exports.DividerComponent = DividerComponent;
2014
2171
  exports.HeroComponent = HeroComponent;
2015
2172
  exports.IconComponent = IconComponent;
2173
+ exports.ImageComponent = ImageComponent;
2016
2174
  exports.LayoutBoxComponent = LayoutBoxComponent;
2017
2175
  exports.LayoutContainerComponent = LayoutContainerComponent;
2018
2176
  exports.LayoutGridColumnComponent = LayoutGridColumnComponent;
@@ -2035,6 +2193,7 @@
2035
2193
  exports.OasysHeadingModule = OasysHeadingModule;
2036
2194
  exports.OasysHeroModule = OasysHeroModule;
2037
2195
  exports.OasysIconModule = OasysIconModule;
2196
+ exports.OasysImageModule = OasysImageModule;
2038
2197
  exports.OasysLayoutModule = OasysLayoutModule;
2039
2198
  exports.OasysSeoBlockModule = OasysSeoBlockModule;
2040
2199
  exports.OasysTextModule = OasysTextModule;