@yoobic/yobi 8.5.0-14 → 8.5.0-16

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 (34) hide show
  1. package/dist/cjs/{swiper-7776d549.js → swiper-34d65692.js} +1 -1
  2. package/dist/cjs/yoo-course-summary.cjs.entry.js +2 -1
  3. package/dist/cjs/yoo-form-dynamic.cjs.entry.js +5 -1
  4. package/dist/cjs/yoo-form-text-editor.cjs.entry.js +8 -0
  5. package/dist/cjs/yoo-grid.cjs.entry.js +1 -1
  6. package/dist/cjs/yoo-input-bar.cjs.entry.js +43 -103
  7. package/dist/cjs/{yoo-ion-slides-4129c213.js → yoo-ion-slides-c1807158.js} +240 -418
  8. package/dist/cjs/yoo-ion-slides.cjs.entry.js +1 -1
  9. package/dist/cjs/yoo-toast.cjs.entry.js +1 -1
  10. package/dist/collection/components/2.molecules/slide/slide.css +2 -2
  11. package/dist/collection/components/2.molecules/slides/slides.css +2 -2
  12. package/dist/collection/components/3.organisms/toast/toast.js +1 -1
  13. package/dist/collection/components/form/form-dynamic/form-dynamic.js +5 -1
  14. package/dist/collection/components/grid/grid/grid.js +1 -1
  15. package/dist/collection/feature-learn/learning/course-summary/course-summary.js +2 -1
  16. package/dist/{esm/swiper-d9c20e85.js → design-system/swiper-9f7dac2f.js} +2 -2
  17. package/dist/design-system/yoo-course-summary.entry.js +2 -1
  18. package/dist/design-system/yoo-form-dynamic.entry.js +5 -1
  19. package/dist/design-system/yoo-form-text-editor.entry.js +8 -0
  20. package/dist/design-system/yoo-grid.entry.js +1 -1
  21. package/dist/design-system/yoo-input-bar.entry.js +43 -103
  22. package/dist/{esm/yoo-ion-slides-e6273a8c.js → design-system/yoo-ion-slides-17d250f8.js} +240 -418
  23. package/dist/design-system/yoo-ion-slides.entry.js +1 -1
  24. package/dist/design-system/yoo-toast.entry.js +1 -1
  25. package/dist/{design-system/swiper-d9c20e85.js → esm/swiper-9f7dac2f.js} +2 -2
  26. package/dist/esm/yoo-course-summary.entry.js +2 -1
  27. package/dist/esm/yoo-form-dynamic.entry.js +5 -1
  28. package/dist/esm/yoo-form-text-editor.entry.js +8 -0
  29. package/dist/esm/yoo-grid.entry.js +1 -1
  30. package/dist/esm/yoo-input-bar.entry.js +43 -103
  31. package/dist/{design-system/yoo-ion-slides-e6273a8c.js → esm/yoo-ion-slides-17d250f8.js} +240 -418
  32. package/dist/esm/yoo-ion-slides.entry.js +1 -1
  33. package/dist/esm/yoo-toast.entry.js +1 -1
  34. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- export { Y as yoo_ion_slides } from './yoo-ion-slides-e6273a8c.js';
1
+ export { Y as yoo_ion_slides } from './yoo-ion-slides-17d250f8.js';
2
2
  import './index-0a59e2a1.js';
3
3
  import './index-d51d68d2.js';
4
4
  import './overlays-7aa9cb49.js';
@@ -170,7 +170,7 @@ const YooToastComponent = class {
170
170
  this.closeButtonText &&
171
171
  this.showCloseButton &&
172
172
  !this.progressEvent && // (!this.extraButtons || this.extraButtons.length === 0)
173
- this.renderCloseButton(), this.progressEvent && (h("div", { class: "progressbar-wrapper" }, h("yoo-progress-bar", { value: this.progress, progressAnimationDuration: 0.2 }))))), this.showBackdrop && h("div", { class: "overlay", style: { 'z-index': (19999 + this.overlayId).toString() } })));
173
+ this.renderCloseButton(), this.progressEvent && (h("div", { class: "progressbar-wrapper" }, h("yoo-progress-bar", { value: this.progress, progressAnimationDuration: 0.2 }))))), this.showBackdrop && h("div", { class: "overlay", style: { 'z-index': (MODAL_BASE_ZINDEX - 1 + this.overlayId).toString() } })));
174
174
  }
175
175
  get host() { return getElement(this); }
176
176
  };
@@ -1,5 +1,5 @@
1
- import { S as Swiper, P as Pagination, A as Autoplay, a as Scrollbar } from './yoo-ion-slides-e6273a8c.js';
2
- export { S as Swiper } from './yoo-ion-slides-e6273a8c.js';
1
+ import { S as Swiper, P as Pagination, A as Autoplay, a as Scrollbar } from './yoo-ion-slides-17d250f8.js';
2
+ export { S as Swiper } from './yoo-ion-slides-17d250f8.js';
3
3
  import './index-0a59e2a1.js';
4
4
  import './index-d51d68d2.js';
5
5
  import './overlays-7aa9cb49.js';
@@ -37,7 +37,8 @@ const YooCourseSummaryComponent = class {
37
37
  return (Math.round((_a = this.course) === null || _a === void 0 ? void 0 : _a.earnedPoints) || 0);
38
38
  }
39
39
  get image() {
40
- return new Cloudinary(this.actualPlan.background._downloadURL || this.actualPlan.background);
40
+ var _a, _b, _c;
41
+ return new Cloudinary(((_b = (_a = this.actualPlan) === null || _a === void 0 ? void 0 : _a.background) === null || _b === void 0 ? void 0 : _b._downloadURL) || ((_c = this.actualPlan) === null || _c === void 0 ? void 0 : _c.background));
41
42
  }
42
43
  get badges() {
43
44
  if (this.lessons && this.lessons.length > 0) {
@@ -1363,7 +1363,11 @@ const YooFormDynamicComponent = class {
1363
1363
  }
1364
1364
  onFieldChanged(ev, field) {
1365
1365
  ev === null || ev === void 0 ? void 0 : ev.stopPropagation();
1366
- setFieldData(field, ev.detail, this.currentData, this.suffix);
1366
+ let value = ev.detail;
1367
+ if (field.type === FormFieldType.podcast && this.isLivePreview()) {
1368
+ value = null;
1369
+ }
1370
+ setFieldData(field, value, this.currentData, this.suffix);
1367
1371
  if (isFunction(field.onChange)) {
1368
1372
  field.onChange(ev.detail, this.currentData, field, this.slides, this);
1369
1373
  }
@@ -21117,6 +21117,14 @@ function sanitizeHtml(html, options, _recursing) {
21117
21117
  // Do not crash on bad markup
21118
21118
  return;
21119
21119
  }
21120
+
21121
+ if (frame.tag !== name) {
21122
+ // Another case of bad markup.
21123
+ // Push to stack, so that it will be used in future closing tags.
21124
+ stack.push(frame);
21125
+ return;
21126
+ }
21127
+
21120
21128
  skipText = options.enforceHtmlBoundary ? name === 'html' : false;
21121
21129
  depth--;
21122
21130
  const skip = skipMap[depth];
@@ -2954,7 +2954,7 @@ const YooGridComponent = class {
2954
2954
  }
2955
2955
  renderEntity(item, isLast = false, index) {
2956
2956
  var _a, _b, _c, _d;
2957
- const content = (h("div", { class: {
2957
+ const content = (h("div", { key: this.displayType === 'card-media' ? item[this.idAttributeName || '_id'] : undefined, class: {
2958
2958
  'entity-inner-container': true,
2959
2959
  'sortable': this.sortable,
2960
2960
  [this.displayType]: true,
@@ -16,7 +16,7 @@ function race(...args) {
16
16
  }
17
17
 
18
18
  /**
19
- * @license Angular v14.2.1
19
+ * @license Angular v14.2.2
20
20
  * (c) 2010-2022 Google LLC. https://angular.io/
21
21
  * License: MIT
22
22
  */
@@ -3268,7 +3268,7 @@ function injectAttributeImpl(tNode, attrNameToInject) {
3268
3268
  return null;
3269
3269
  }
3270
3270
  function notFoundValueOrThrow(notFoundValue, token, flags) {
3271
- if (flags & InjectFlags.Optional) {
3271
+ if ((flags & InjectFlags.Optional) || notFoundValue !== undefined) {
3272
3272
  return notFoundValue;
3273
3273
  }
3274
3274
  else {
@@ -3285,7 +3285,7 @@ function notFoundValueOrThrow(notFoundValue, token, flags) {
3285
3285
  * @returns the value from the injector or throws an exception
3286
3286
  */
3287
3287
  function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {
3288
- if (flags & InjectFlags.Optional && notFoundValue === undefined) {
3288
+ if ((flags & InjectFlags.Optional) && notFoundValue === undefined) {
3289
3289
  // This must be set or the NullInjector will throw for optional deps
3290
3290
  notFoundValue = null;
3291
3291
  }
@@ -5800,10 +5800,6 @@ function _sanitizeUrl(url) {
5800
5800
  }
5801
5801
  return 'unsafe:' + url;
5802
5802
  }
5803
- function sanitizeSrcset(srcset) {
5804
- srcset = String(srcset);
5805
- return srcset.split(',').map((srcset) => _sanitizeUrl(srcset.trim())).join(', ');
5806
- }
5807
5803
 
5808
5804
  /**
5809
5805
  * @license
@@ -5850,12 +5846,10 @@ const INLINE_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, tagSet('a,abbr,a
5850
5846
  const VALID_ELEMENTS = merge(VOID_ELEMENTS, BLOCK_ELEMENTS, INLINE_ELEMENTS, OPTIONAL_END_TAG_ELEMENTS);
5851
5847
  // Attributes that have href and hence need to be sanitized
5852
5848
  const URI_ATTRS = tagSet('background,cite,href,itemtype,longdesc,poster,src,xlink:href');
5853
- // Attributes that have special href set hence need to be sanitized
5854
- const SRCSET_ATTRS = tagSet('srcset');
5855
5849
  const HTML_ATTRS = tagSet('abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,' +
5856
5850
  'compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,' +
5857
5851
  'ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,' +
5858
- 'scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,' +
5852
+ 'scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,' +
5859
5853
  'valign,value,vspace,width');
5860
5854
  // Accessibility attributes as per WAI-ARIA 1.1 (W3C Working Draft 14 December 2018)
5861
5855
  const ARIA_ATTRS = tagSet('aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,' +
@@ -5871,7 +5865,7 @@ const ARIA_ATTRS = tagSet('aria-activedescendant,aria-atomic,aria-autocomplete,a
5871
5865
  // NB: Sanitization does not allow <form> elements or other active elements (<button> etc). Those
5872
5866
  // can be sanitized, but they increase security surface area without a legitimate use case, so they
5873
5867
  // are left out here.
5874
- const VALID_ATTRS = merge(URI_ATTRS, SRCSET_ATTRS, HTML_ATTRS, ARIA_ATTRS);
5868
+ const VALID_ATTRS = merge(URI_ATTRS, HTML_ATTRS, ARIA_ATTRS);
5875
5869
  // Elements whose content should not be traversed/preserved, if the elements themselves are invalid.
5876
5870
  //
5877
5871
  // Typically, `<invalid>Some content</invalid>` would traverse (and in this case preserve)
@@ -5954,8 +5948,6 @@ class SanitizingHtmlSerializer {
5954
5948
  // TODO(martinprobst): Special case image URIs for data:image/...
5955
5949
  if (URI_ATTRS[lower])
5956
5950
  value = _sanitizeUrl(value);
5957
- if (SRCSET_ATTRS[lower])
5958
- value = sanitizeSrcset(value);
5959
5951
  this.buf.push(' ', attrName, '="', encodeEntities(value), '"');
5960
5952
  }
5961
5953
  this.buf.push('>');
@@ -7256,7 +7248,7 @@ class Version {
7256
7248
  /**
7257
7249
  * @publicApi
7258
7250
  */
7259
- const VERSION = new Version('14.2.1');
7251
+ const VERSION = new Version('14.2.2');
7260
7252
 
7261
7253
  /**
7262
7254
  * @license
@@ -7560,7 +7552,7 @@ function getTemplateLocationDetails(lView) {
7560
7552
  * that the `CommonModule` should also be included.
7561
7553
  */
7562
7554
  const KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([
7563
- ['ngIf', 'NgIf'], ['ngFor', 'NgForOf'], ['ngSwitchCase', 'NgSwitchCase'],
7555
+ ['ngIf', 'NgIf'], ['ngFor', 'NgFor'], ['ngSwitchCase', 'NgSwitchCase'],
7564
7556
  ['ngSwitchDefault', 'NgSwitchDefault']
7565
7557
  ]);
7566
7558
  /**
@@ -8364,16 +8356,16 @@ function getRootView(componentOrLView) {
8364
8356
  return lView;
8365
8357
  }
8366
8358
  /**
8367
- * Returns the `RootContext` instance that is associated with
8368
- * the application where the target is situated. It does this by walking the parent views until it
8369
- * gets to the root view, then getting the context off of that.
8359
+ * Returns the context information associated with the application where the target is situated. It
8360
+ * does this by walking the parent views until it gets to the root view, then getting the context
8361
+ * off of that.
8370
8362
  *
8371
8363
  * @param viewOrComponent the `LView` or component to get the root context for.
8372
8364
  */
8373
8365
  function getRootContext(viewOrComponent) {
8374
8366
  const rootView = getRootView(viewOrComponent);
8375
8367
  ngDevMode &&
8376
- assertDefined(rootView[CONTEXT], 'RootView has no context. Perhaps it is disconnected?');
8368
+ assertDefined(rootView[CONTEXT], 'Root view has no context. Perhaps it is disconnected?');
8377
8369
  return rootView[CONTEXT];
8378
8370
  }
8379
8371
  /**
@@ -12078,28 +12070,6 @@ function refreshView(tView, lView, templateFn, context) {
12078
12070
  leaveView();
12079
12071
  }
12080
12072
  }
12081
- function renderComponentOrTemplate(tView, lView, templateFn, context) {
12082
- const rendererFactory = lView[RENDERER_FACTORY];
12083
- // Check no changes mode is a dev only mode used to verify that bindings have not changed
12084
- // since they were assigned. We do not want to invoke renderer factory functions in that mode
12085
- // to avoid any possible side-effects.
12086
- const checkNoChangesMode = !!ngDevMode && isInCheckNoChangesMode();
12087
- const creationModeIsActive = isCreationMode(lView);
12088
- try {
12089
- if (!checkNoChangesMode && !creationModeIsActive && rendererFactory.begin) {
12090
- rendererFactory.begin();
12091
- }
12092
- if (creationModeIsActive) {
12093
- renderView(tView, lView, context);
12094
- }
12095
- refreshView(tView, lView, templateFn, context);
12096
- }
12097
- finally {
12098
- if (!checkNoChangesMode && !creationModeIsActive && rendererFactory.end) {
12099
- rendererFactory.end();
12100
- }
12101
- }
12102
- }
12103
12073
  function executeTemplate(tView, lView, templateFn, rf, context) {
12104
12074
  const prevSelectedIndex = getSelectedIndex();
12105
12075
  const isUpdatePhase = rf & 2 /* RenderFlags.Update */;
@@ -12170,7 +12140,7 @@ function saveResolvedLocalsInData(viewData, tNode, localRefExtractor = getNative
12170
12140
  * @param def ComponentDef
12171
12141
  * @returns TView
12172
12142
  */
12173
- function getOrCreateTComponentView(def) {
12143
+ function getOrCreateComponentTView(def) {
12174
12144
  const tView = def.tView;
12175
12145
  // Create a TView if there isn't one, or recreate it if the first create pass didn't
12176
12146
  // complete successfully since we can't know for sure whether it's in a usable shape.
@@ -12879,7 +12849,7 @@ function configureViewWithDirective(tView, tNode, lView, directiveIndex, def) {
12879
12849
  }
12880
12850
  function addComponentLogic(lView, hostTNode, def) {
12881
12851
  const native = getNativeByTNode(hostTNode, lView);
12882
- const tView = getOrCreateTComponentView(def);
12852
+ const tView = getOrCreateComponentTView(def);
12883
12853
  // Only component views should be added to the view tree directly. Embedded views are
12884
12854
  // accessed through their containers because they may be removed / re-added later.
12885
12855
  const rendererFactory = lView[RENDERER_FACTORY];
@@ -13206,63 +13176,32 @@ function markViewDirty(lView) {
13206
13176
  }
13207
13177
  return null;
13208
13178
  }
13209
- function tickRootContext(rootContext) {
13210
- for (let i = 0; i < rootContext.components.length; i++) {
13211
- const rootComponent = rootContext.components[i];
13212
- const lView = readPatchedLView(rootComponent);
13213
- // We might not have an `LView` if the component was destroyed.
13214
- if (lView !== null) {
13215
- const tView = lView[TVIEW];
13216
- renderComponentOrTemplate(tView, lView, tView.template, rootComponent);
13217
- }
13218
- }
13219
- }
13220
- function detectChangesInternal(tView, lView, context) {
13179
+ function detectChangesInternal(tView, lView, context, notifyErrorHandler = true) {
13221
13180
  const rendererFactory = lView[RENDERER_FACTORY];
13222
- if (rendererFactory.begin)
13181
+ // Check no changes mode is a dev only mode used to verify that bindings have not changed
13182
+ // since they were assigned. We do not want to invoke renderer factory functions in that mode
13183
+ // to avoid any possible side-effects.
13184
+ const checkNoChangesMode = !!ngDevMode && isInCheckNoChangesMode();
13185
+ if (!checkNoChangesMode && rendererFactory.begin)
13223
13186
  rendererFactory.begin();
13224
13187
  try {
13225
13188
  refreshView(tView, lView, tView.template, context);
13226
13189
  }
13227
13190
  catch (error) {
13228
- handleError(lView, error);
13191
+ if (notifyErrorHandler) {
13192
+ handleError(lView, error);
13193
+ }
13229
13194
  throw error;
13230
13195
  }
13231
13196
  finally {
13232
- if (rendererFactory.end)
13197
+ if (!checkNoChangesMode && rendererFactory.end)
13233
13198
  rendererFactory.end();
13234
13199
  }
13235
13200
  }
13236
- /**
13237
- * Synchronously perform change detection on a root view and its components.
13238
- *
13239
- * @param lView The view which the change detection should be performed on.
13240
- */
13241
- function detectChangesInRootView(lView) {
13242
- tickRootContext(lView[CONTEXT]);
13243
- }
13244
- function checkNoChangesInternal(tView, view, context) {
13245
- setIsInCheckNoChangesMode(true);
13246
- try {
13247
- detectChangesInternal(tView, view, context);
13248
- }
13249
- finally {
13250
- setIsInCheckNoChangesMode(false);
13251
- }
13252
- }
13253
- /**
13254
- * Checks the change detector on a root view and its components, and throws if any changes are
13255
- * detected.
13256
- *
13257
- * This is used in development mode to verify that running change detection doesn't
13258
- * introduce other changes.
13259
- *
13260
- * @param lView The view which the change detection should be checked on.
13261
- */
13262
- function checkNoChangesInRootView(lView) {
13201
+ function checkNoChangesInternal(tView, lView, context, notifyErrorHandler = true) {
13263
13202
  setIsInCheckNoChangesMode(true);
13264
13203
  try {
13265
- detectChangesInRootView(lView);
13204
+ detectChangesInternal(tView, lView, context, notifyErrorHandler);
13266
13205
  }
13267
13206
  finally {
13268
13207
  setIsInCheckNoChangesMode(false);
@@ -13755,11 +13694,17 @@ class RootViewRef extends ViewRef$1 {
13755
13694
  this._view = _view;
13756
13695
  }
13757
13696
  detectChanges() {
13758
- detectChangesInRootView(this._view);
13697
+ const lView = this._view;
13698
+ const tView = lView[TVIEW];
13699
+ const context = lView[CONTEXT];
13700
+ detectChangesInternal(tView, lView, context, false);
13759
13701
  }
13760
13702
  checkNoChanges() {
13761
13703
  if (ngDevMode) {
13762
- checkNoChangesInRootView(this._view);
13704
+ const lView = this._view;
13705
+ const tView = lView[TVIEW];
13706
+ const context = lView[CONTEXT];
13707
+ checkNoChangesInternal(tView, lView, context, false);
13763
13708
  }
13764
13709
  }
13765
13710
  get context() {
@@ -13826,7 +13771,7 @@ class ChainedInjector {
13826
13771
  }
13827
13772
  }
13828
13773
  /**
13829
- * Render3 implementation of {@link viewEngine_ComponentFactory}.
13774
+ * ComponentFactory interface implementation.
13830
13775
  */
13831
13776
  class ComponentFactory extends ComponentFactory$1 {
13832
13777
  /**
@@ -13876,10 +13821,9 @@ class ComponentFactory extends ComponentFactory$1 {
13876
13821
  createElementNode(rendererFactory.createRenderer(null, this.componentDef), elementName, getNamespace(elementName));
13877
13822
  const rootFlags = this.componentDef.onPush ? 32 /* LViewFlags.Dirty */ | 256 /* LViewFlags.IsRoot */ :
13878
13823
  16 /* LViewFlags.CheckAlways */ | 256 /* LViewFlags.IsRoot */;
13879
- const rootContext = createRootContext();
13880
13824
  // Create the root view. Uses empty TView and ContentTemplate.
13881
13825
  const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
13882
- const rootLView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector, null);
13826
+ const rootLView = createLView(null, rootTView, null, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector, null);
13883
13827
  // rootView is the parent when bootstrapping
13884
13828
  // TODO(misko): it looks like we are entering view here but we don't really need to as
13885
13829
  // `renderView` does that. However as the code is written it is needed because
@@ -13923,7 +13867,8 @@ class ComponentFactory extends ComponentFactory$1 {
13923
13867
  // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and
13924
13868
  // executed here?
13925
13869
  // Angular 5 reference: https://stackblitz.com/edit/lifecycle-hooks-vcref
13926
- component = createRootComponent(componentView, this.componentDef, rootLView, rootContext, [LifecycleHooksFeature]);
13870
+ component =
13871
+ createRootComponent(componentView, this.componentDef, rootLView, [LifecycleHooksFeature]);
13927
13872
  renderView(rootTView, rootLView, null);
13928
13873
  }
13929
13874
  finally {
@@ -14029,7 +13974,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
14029
13974
  }
14030
13975
  }
14031
13976
  const viewRenderer = rendererFactory.createRenderer(rNode, def);
14032
- const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 32 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
13977
+ const componentView = createLView(rootView, getOrCreateComponentTView(def), null, def.onPush ? 32 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
14033
13978
  if (tView.firstCreatePass) {
14034
13979
  diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, def.type);
14035
13980
  markAsComponentHost(tView, tNode);
@@ -14043,12 +13988,13 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
14043
13988
  * Creates a root component and sets it up with features and host bindings.Shared by
14044
13989
  * renderComponent() and ViewContainerRef.createComponent().
14045
13990
  */
14046
- function createRootComponent(componentView, componentDef, rootLView, rootContext, hostFeatures) {
13991
+ function createRootComponent(componentView, componentDef, rootLView, hostFeatures) {
14047
13992
  const tView = rootLView[TVIEW];
14048
13993
  // Create directive instance with factory() and store at next index in viewData
14049
13994
  const component = instantiateRootComponent(tView, rootLView, componentDef);
14050
- rootContext.components.push(component);
14051
- componentView[CONTEXT] = component;
13995
+ // Root view only contains an instance of this component,
13996
+ // so we use a reference to that component instance as a context.
13997
+ componentView[CONTEXT] = rootLView[CONTEXT] = component;
14052
13998
  if (hostFeatures !== null) {
14053
13999
  for (const feature of hostFeatures) {
14054
14000
  feature(component, componentDef);
@@ -14072,9 +14018,6 @@ function createRootComponent(componentView, componentDef, rootLView, rootContext
14072
14018
  }
14073
14019
  return component;
14074
14020
  }
14075
- function createRootContext() {
14076
- return { components: [] };
14077
- }
14078
14021
  /**
14079
14022
  * Used to enable lifecycle hooks on the root component.
14080
14023
  *
@@ -20919,9 +20862,6 @@ function walkIcuTree(tView, tIcu, lView, sharedUpdateOpCodes, create, remove, up
20919
20862
  if (URI_ATTRS[lowerAttrName]) {
20920
20863
  generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, _sanitizeUrl);
20921
20864
  }
20922
- else if (SRCSET_ATTRS[lowerAttrName]) {
20923
- generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, sanitizeSrcset);
20924
- }
20925
20865
  else {
20926
20866
  generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, null);
20927
20867
  }
@@ -21890,7 +21830,7 @@ function getOwningComponent(elementOrDir) {
21890
21830
  */
21891
21831
  function getRootComponents(elementOrDir) {
21892
21832
  const lView = readPatchedLView(elementOrDir);
21893
- return lView !== null ? [...getRootContext(lView).components] : [];
21833
+ return lView !== null ? [getRootContext(lView)] : [];
21894
21834
  }
21895
21835
  /**
21896
21836
  * Retrieves an `Injector` associated with an element, component or directive instance.