@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.
- package/dist/cjs/{swiper-7776d549.js → swiper-34d65692.js} +1 -1
- package/dist/cjs/yoo-course-summary.cjs.entry.js +2 -1
- package/dist/cjs/yoo-form-dynamic.cjs.entry.js +5 -1
- package/dist/cjs/yoo-form-text-editor.cjs.entry.js +8 -0
- package/dist/cjs/yoo-grid.cjs.entry.js +1 -1
- package/dist/cjs/yoo-input-bar.cjs.entry.js +43 -103
- package/dist/cjs/{yoo-ion-slides-4129c213.js → yoo-ion-slides-c1807158.js} +240 -418
- package/dist/cjs/yoo-ion-slides.cjs.entry.js +1 -1
- package/dist/cjs/yoo-toast.cjs.entry.js +1 -1
- package/dist/collection/components/2.molecules/slide/slide.css +2 -2
- package/dist/collection/components/2.molecules/slides/slides.css +2 -2
- package/dist/collection/components/3.organisms/toast/toast.js +1 -1
- package/dist/collection/components/form/form-dynamic/form-dynamic.js +5 -1
- package/dist/collection/components/grid/grid/grid.js +1 -1
- package/dist/collection/feature-learn/learning/course-summary/course-summary.js +2 -1
- package/dist/{esm/swiper-d9c20e85.js → design-system/swiper-9f7dac2f.js} +2 -2
- package/dist/design-system/yoo-course-summary.entry.js +2 -1
- package/dist/design-system/yoo-form-dynamic.entry.js +5 -1
- package/dist/design-system/yoo-form-text-editor.entry.js +8 -0
- package/dist/design-system/yoo-grid.entry.js +1 -1
- package/dist/design-system/yoo-input-bar.entry.js +43 -103
- package/dist/{esm/yoo-ion-slides-e6273a8c.js → design-system/yoo-ion-slides-17d250f8.js} +240 -418
- package/dist/design-system/yoo-ion-slides.entry.js +1 -1
- package/dist/design-system/yoo-toast.entry.js +1 -1
- package/dist/{design-system/swiper-d9c20e85.js → esm/swiper-9f7dac2f.js} +2 -2
- package/dist/esm/yoo-course-summary.entry.js +2 -1
- package/dist/esm/yoo-form-dynamic.entry.js +5 -1
- package/dist/esm/yoo-form-text-editor.entry.js +8 -0
- package/dist/esm/yoo-grid.entry.js +1 -1
- package/dist/esm/yoo-input-bar.entry.js +43 -103
- package/dist/{design-system/yoo-ion-slides-e6273a8c.js → esm/yoo-ion-slides-17d250f8.js} +240 -418
- package/dist/esm/yoo-ion-slides.entry.js +1 -1
- package/dist/esm/yoo-toast.entry.js +1 -1
- package/package.json +1 -1
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
-
const yooIonSlides_entry = require('./yoo-ion-slides-
|
5
|
+
const yooIonSlides_entry = require('./yoo-ion-slides-c1807158.js');
|
6
6
|
require('./index-7319daa9.js');
|
7
7
|
require('./index-bf0c70e5.js');
|
8
8
|
require('./overlays-c17172aa.js');
|
@@ -174,7 +174,7 @@ const YooToastComponent = class {
|
|
174
174
|
this.closeButtonText &&
|
175
175
|
this.showCloseButton &&
|
176
176
|
!this.progressEvent && // (!this.extraButtons || this.extraButtons.length === 0)
|
177
|
-
this.renderCloseButton(), this.progressEvent && (index.h("div", { class: "progressbar-wrapper" }, index.h("yoo-progress-bar", { value: this.progress, progressAnimationDuration: 0.2 }))))), this.showBackdrop && index.h("div", { class: "overlay", style: { 'z-index': (
|
177
|
+
this.renderCloseButton(), this.progressEvent && (index.h("div", { class: "progressbar-wrapper" }, index.h("yoo-progress-bar", { value: this.progress, progressAnimationDuration: 0.2 }))))), this.showBackdrop && index.h("div", { class: "overlay", style: { 'z-index': (overlays.MODAL_BASE_ZINDEX - 1 + this.overlayId).toString() } })));
|
178
178
|
}
|
179
179
|
get host() { return index.getElement(this); }
|
180
180
|
};
|
@@ -206,7 +206,7 @@ svg:not(:root) {
|
|
206
206
|
}
|
207
207
|
|
208
208
|
/**
|
209
|
-
* Swiper 8.
|
209
|
+
* Swiper 8.4.2
|
210
210
|
* Most modern mobile touch slider and framework with hardware accelerated transitions
|
211
211
|
* https://swiperjs.com
|
212
212
|
*
|
@@ -214,7 +214,7 @@ svg:not(:root) {
|
|
214
214
|
*
|
215
215
|
* Released under the MIT License
|
216
216
|
*
|
217
|
-
* Released on:
|
217
|
+
* Released on: September 15, 2022
|
218
218
|
*/
|
219
219
|
@font-face {
|
220
220
|
font-family: "swiper-icons";
|
@@ -206,7 +206,7 @@ svg:not(:root) {
|
|
206
206
|
}
|
207
207
|
|
208
208
|
/**
|
209
|
-
* Swiper 8.
|
209
|
+
* Swiper 8.4.2
|
210
210
|
* Most modern mobile touch slider and framework with hardware accelerated transitions
|
211
211
|
* https://swiperjs.com
|
212
212
|
*
|
@@ -214,7 +214,7 @@ svg:not(:root) {
|
|
214
214
|
*
|
215
215
|
* Released under the MIT License
|
216
216
|
*
|
217
|
-
* Released on:
|
217
|
+
* Released on: September 15, 2022
|
218
218
|
*/
|
219
219
|
@font-face {
|
220
220
|
font-family: "swiper-icons";
|
@@ -158,7 +158,7 @@ export class YooToastComponent {
|
|
158
158
|
this.closeButtonText &&
|
159
159
|
this.showCloseButton &&
|
160
160
|
!this.progressEvent && // (!this.extraButtons || this.extraButtons.length === 0)
|
161
|
-
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': (
|
161
|
+
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() } })));
|
162
162
|
}
|
163
163
|
static get is() { return "yoo-toast"; }
|
164
164
|
static get encapsulation() { return "shadow"; }
|
@@ -1167,7 +1167,11 @@ export class YooFormDynamicComponent {
|
|
1167
1167
|
}
|
1168
1168
|
onFieldChanged(ev, field) {
|
1169
1169
|
ev === null || ev === void 0 ? void 0 : ev.stopPropagation();
|
1170
|
-
|
1170
|
+
let value = ev.detail;
|
1171
|
+
if (field.type === FormFieldType.podcast && this.isLivePreview()) {
|
1172
|
+
value = null;
|
1173
|
+
}
|
1174
|
+
setFieldData(field, value, this.currentData, this.suffix);
|
1171
1175
|
if (isFunction(field.onChange)) {
|
1172
1176
|
field.onChange(ev.detail, this.currentData, field, this.slides, this);
|
1173
1177
|
}
|
@@ -2875,7 +2875,7 @@ export class YooGridComponent {
|
|
2875
2875
|
}
|
2876
2876
|
renderEntity(item, isLast = false, index) {
|
2877
2877
|
var _a, _b, _c, _d;
|
2878
|
-
const content = (h("div", { class: {
|
2878
|
+
const content = (h("div", { key: this.displayType === 'card-media' ? item[this.idAttributeName || '_id'] : undefined, class: {
|
2879
2879
|
'entity-inner-container': true,
|
2880
2880
|
'sortable': this.sortable,
|
2881
2881
|
[this.displayType]: true,
|
@@ -29,7 +29,8 @@ export class YooCourseSummaryComponent {
|
|
29
29
|
return (Math.round((_a = this.course) === null || _a === void 0 ? void 0 : _a.earnedPoints) || 0);
|
30
30
|
}
|
31
31
|
get image() {
|
32
|
-
|
32
|
+
var _a, _b, _c;
|
33
|
+
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));
|
33
34
|
}
|
34
35
|
get badges() {
|
35
36
|
if (this.lessons && this.lessons.length > 0) {
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { S as Swiper, P as Pagination, A as Autoplay, a as Scrollbar } from './yoo-ion-slides-
|
2
|
-
export { S as Swiper } from './yoo-ion-slides-
|
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
|
-
|
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
|
-
|
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.
|
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,
|
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.
|
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', '
|
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
|
8368
|
-
*
|
8369
|
-
*
|
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], '
|
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
|
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 =
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
*
|
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,
|
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 =
|
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,
|
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,
|
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
|
-
|
14051
|
-
|
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 ? [
|
21833
|
+
return lView !== null ? [getRootContext(lView)] : [];
|
21894
21834
|
}
|
21895
21835
|
/**
|
21896
21836
|
* Retrieves an `Injector` associated with an element, component or directive instance.
|