@sapui5/sap.fe.base 1.130.6 → 1.132.0
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/package.json +1 -1
- package/src/sap/fe/base/.library +1 -1
- package/src/sap/fe/base/BindingToolkit.js +45 -48
- package/src/sap/fe/base/BindingToolkit.ts +19 -14
- package/src/sap/fe/base/BuildingBlockBase.js +184 -0
- package/src/sap/fe/base/BuildingBlockBase.ts +166 -0
- package/src/sap/fe/base/ClassSupport.js +145 -85
- package/src/sap/fe/base/ClassSupport.ts +157 -62
- package/src/sap/fe/base/EventDelegateHook.js +6 -7
- package/src/sap/fe/base/HookSupport.js +4 -5
- package/src/sap/fe/base/jsx-runtime/ViewLoader.js +9 -13
- package/src/sap/fe/base/jsx-runtime/jsx-control.js +9 -10
- package/src/sap/fe/base/jsx-runtime/jsx-control.ts +3 -0
- package/src/sap/fe/base/jsx-runtime/jsx-xml.js +16 -21
- package/src/sap/fe/base/jsx-runtime/jsx-xml.ts +7 -9
- package/src/sap/fe/base/library.js +3 -2
- package/src/sap/fe/base/library.ts +1 -0
|
@@ -15,6 +15,7 @@ import type ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
|
15
15
|
import ControllerMetadata from "sap/ui/core/mvc/ControllerMetadata";
|
|
16
16
|
import type OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
17
17
|
import type Context from "sap/ui/model/Context";
|
|
18
|
+
import type { Model$PropertyChangeEvent } from "sap/ui/model/Model";
|
|
18
19
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
19
20
|
|
|
20
21
|
type OverrideDefinition = Record<string, Function>;
|
|
@@ -33,6 +34,7 @@ type UI5PropertyMetadata = {
|
|
|
33
34
|
defaultValue?: unknown;
|
|
34
35
|
byValue?: boolean;
|
|
35
36
|
isBindingInfo?: boolean;
|
|
37
|
+
bindToState?: string;
|
|
36
38
|
expectedAnnotations?: string[];
|
|
37
39
|
expectedTypes?: string[];
|
|
38
40
|
allowedValues?: string[];
|
|
@@ -240,6 +242,9 @@ export type BindingInfoHolder<T> = T & {
|
|
|
240
242
|
export function defineState(): PropertyDecorator {
|
|
241
243
|
return function (target: UI5ControlDefinition, propertyKey: string, propertyDescriptor: TypedPropertyDescriptor<unknown>) {
|
|
242
244
|
const metadata = ensureMetadata(target);
|
|
245
|
+
if (metadata.stateProperty !== undefined) {
|
|
246
|
+
throw new Error("Only one state property per control is allowed");
|
|
247
|
+
}
|
|
243
248
|
metadata.stateProperty = propertyKey;
|
|
244
249
|
delete propertyDescriptor.writable;
|
|
245
250
|
metadata.statePropertyDefaultValue ??= (propertyDescriptor as { initializer?: Function }).initializer?.();
|
|
@@ -512,6 +517,53 @@ export function defineUI5Class(sTarget: string, metadataDefinition?: Partial<UI5
|
|
|
512
517
|
return registerUI5Metadata(constructor, sTarget, constructor.prototype);
|
|
513
518
|
} as ClassDecorator;
|
|
514
519
|
}
|
|
520
|
+
type Constructor<T = {}> = new (...a: unknown[]) => T;
|
|
521
|
+
/**
|
|
522
|
+
* Mixin a specific interface including all its methods and properties into the control.
|
|
523
|
+
* @param interfaceClass Implementation class of the control
|
|
524
|
+
* @returns The decorated class
|
|
525
|
+
*/
|
|
526
|
+
export function mixin<T extends IInterfaceWithMixin>(interfaceClass: Constructor<T>): ClassDecorator {
|
|
527
|
+
return function (baseCtor: UI5ControlAndMore) {
|
|
528
|
+
if (baseCtor.prototype.extend) {
|
|
529
|
+
throw new Error("The mixinInterface decorator must be placed after `defineUi5Class`");
|
|
530
|
+
}
|
|
531
|
+
const metadata = ensureMetadata(baseCtor.prototype);
|
|
532
|
+
const interfaceName = interfaceClass.prototype.getInterfaceName?.();
|
|
533
|
+
if (interfaceName) {
|
|
534
|
+
metadata.interfaces.push(interfaceName);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
Object.getOwnPropertyNames(interfaceClass.prototype).forEach((name) => {
|
|
538
|
+
if (name !== "constructor" && name !== "setupMixin") {
|
|
539
|
+
Object.defineProperty(
|
|
540
|
+
baseCtor.prototype,
|
|
541
|
+
name,
|
|
542
|
+
Object.getOwnPropertyDescriptor(interfaceClass.prototype, name) || Object.create(null)
|
|
543
|
+
);
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
// Hook to add potentially more logic to the mixin
|
|
547
|
+
interfaceClass.prototype.setupMixin?.(baseCtor);
|
|
548
|
+
return baseCtor;
|
|
549
|
+
} as ClassDecorator;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
export interface IInterfaceWithMixin {
|
|
553
|
+
/**
|
|
554
|
+
* Returns the name of the interface that should be added to the receiving control.
|
|
555
|
+
* If not defined, the interface will not be added.
|
|
556
|
+
* @returns The name of the interface
|
|
557
|
+
*/
|
|
558
|
+
getInterfaceName?(): string;
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Hook to add more logic to the mixin.
|
|
562
|
+
* This is called before the controls are created and can be used to add some additional logic to the base class.
|
|
563
|
+
* @param baseClass The base class that will be extended
|
|
564
|
+
*/
|
|
565
|
+
setupMixin?(baseClass: Function): void;
|
|
566
|
+
}
|
|
515
567
|
|
|
516
568
|
export function createReference<T extends UI5Element>(): Ref<T> {
|
|
517
569
|
return {
|
|
@@ -546,24 +598,15 @@ function _getHandlerForStateProperty(jsonModel: JSONModel, prop: string): unknow
|
|
|
546
598
|
const pathInModel = `/${prop.toString()}`;
|
|
547
599
|
const oObj = deepClone(jsonModel.getObject(pathInModel));
|
|
548
600
|
let oTarget;
|
|
601
|
+
if (prop === "__bindingInfo") {
|
|
602
|
+
return { model: "$componentState" };
|
|
603
|
+
}
|
|
549
604
|
if (typeof oObj === "string") {
|
|
550
|
-
oTarget =
|
|
551
|
-
oTarget.toString = function (): string {
|
|
552
|
-
return this.value;
|
|
553
|
-
};
|
|
554
|
-
oTarget.valueOf = function (): string {
|
|
555
|
-
return this.value;
|
|
556
|
-
};
|
|
605
|
+
oTarget = oObj;
|
|
557
606
|
} else if (typeof oObj === "number") {
|
|
558
|
-
oTarget =
|
|
559
|
-
oTarget.toString = function (): string {
|
|
560
|
-
return this.value.toString();
|
|
561
|
-
};
|
|
562
|
-
oTarget.valueOf = function (): number {
|
|
563
|
-
return this.value;
|
|
564
|
-
};
|
|
607
|
+
oTarget = oObj;
|
|
565
608
|
} else if (typeof oObj === "boolean") {
|
|
566
|
-
oTarget =
|
|
609
|
+
oTarget = oObj;
|
|
567
610
|
} else if (Array.isArray(oObj)) {
|
|
568
611
|
oTarget = new Proxy(oObj, {
|
|
569
612
|
get(target: unknown[], p: string | symbol, receiver: unknown[]): unknown {
|
|
@@ -584,10 +627,12 @@ function _getHandlerForStateProperty(jsonModel: JSONModel, prop: string): unknow
|
|
|
584
627
|
} else {
|
|
585
628
|
oTarget = { ...oObj };
|
|
586
629
|
}
|
|
587
|
-
oTarget
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
630
|
+
if (typeof oTarget === "object") {
|
|
631
|
+
oTarget.__bindingInfo = {
|
|
632
|
+
model: "$componentState",
|
|
633
|
+
path: pathInModel
|
|
634
|
+
};
|
|
635
|
+
}
|
|
591
636
|
return oTarget;
|
|
592
637
|
}
|
|
593
638
|
|
|
@@ -596,56 +641,105 @@ function _createStateProperty(
|
|
|
596
641
|
targetControl: Control & {
|
|
597
642
|
_updateState: Function;
|
|
598
643
|
_updateStateDebounced: Function;
|
|
644
|
+
_ignoreStatePropertyUpdate: boolean;
|
|
599
645
|
_updateStateTimer: unknown;
|
|
600
646
|
_changedProps?: string[];
|
|
601
647
|
}
|
|
602
648
|
): void {
|
|
603
|
-
if (obj.metadata?.stateProperty) {
|
|
604
|
-
|
|
605
|
-
|
|
649
|
+
if (obj.metadata?.stateProperty || (targetControl?.getModel && targetControl.getModel("$componentState"))) {
|
|
650
|
+
if (obj.metadata?.stateProperty) {
|
|
651
|
+
targetControl.setModel(new JSONModel(), "$componentState");
|
|
652
|
+
}
|
|
653
|
+
const stateModel = targetControl.getModel("$componentState") as JSONModel;
|
|
654
|
+
|
|
606
655
|
let updatingState = false;
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
if (
|
|
611
|
-
|
|
612
|
-
await (this as { onStateChange?: Function }).onStateChange?.(this._changedProps);
|
|
613
|
-
this._changedProps = [];
|
|
614
|
-
updatingState = false;
|
|
656
|
+
const boundToStateProps: string[] = [];
|
|
657
|
+
for (const propertyName in obj.metadata?.properties) {
|
|
658
|
+
const propertyDef = obj.metadata.properties[propertyName];
|
|
659
|
+
if (propertyDef.bindToState) {
|
|
660
|
+
boundToStateProps.push(propertyName);
|
|
615
661
|
}
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
}, 200);
|
|
626
|
-
}
|
|
627
|
-
};
|
|
628
|
-
Object.defineProperty(targetControl, obj.metadata.stateProperty, {
|
|
629
|
-
configurable: true,
|
|
630
|
-
get: () => {
|
|
631
|
-
return new Proxy(stateModel, {
|
|
632
|
-
get: (target: JSONModel, prop: string): unknown => {
|
|
633
|
-
return _getHandlerForStateProperty(target, prop);
|
|
634
|
-
},
|
|
635
|
-
set: (setStateModel: JSONModel, prop, value): boolean => {
|
|
636
|
-
const setResult = setStateModel.setProperty(`/${prop.toString()}`, value);
|
|
637
|
-
targetControl._updateStateDebounced(prop.toString());
|
|
638
|
-
return setResult;
|
|
639
|
-
}
|
|
640
|
-
});
|
|
641
|
-
},
|
|
642
|
-
set: function (value) {
|
|
643
|
-
// Replacing the complete state
|
|
644
|
-
stateModel.setProperty(`/`, value);
|
|
662
|
+
}
|
|
663
|
+
// as we may have bound properties in parent classes and subclasses, we keep track of those in the model itself
|
|
664
|
+
const initialBoundProperties = stateModel.getProperty("/__boundProperties") ?? [];
|
|
665
|
+
stateModel.setProperty("/__boundProperties", [...initialBoundProperties, ...boundToStateProps]);
|
|
666
|
+
|
|
667
|
+
stateModel.attachPropertyChange((evt: Model$PropertyChangeEvent) => {
|
|
668
|
+
const path = evt.getParameter("path")?.substring(1); // to remove the first /
|
|
669
|
+
if (path && boundToStateProps.includes(path)) {
|
|
670
|
+
targetControl.setProperty(path, evt.getParameter("value"));
|
|
645
671
|
}
|
|
646
672
|
});
|
|
647
|
-
if (obj.metadata
|
|
648
|
-
|
|
673
|
+
if (obj.metadata?.stateProperty) {
|
|
674
|
+
// This method can be used to force the state to be applied and wait for it to be applied in tests
|
|
675
|
+
targetControl._updateState = async function (): Promise<void> {
|
|
676
|
+
delete this._updateStateTimer;
|
|
677
|
+
if (!updatingState) {
|
|
678
|
+
updatingState = true;
|
|
679
|
+
await (this as { onStateChange?: Function }).onStateChange?.(this._changedProps);
|
|
680
|
+
this._changedProps = [];
|
|
681
|
+
updatingState = false;
|
|
682
|
+
}
|
|
683
|
+
};
|
|
684
|
+
targetControl._updateStateDebounced = function (changedProp: string): void {
|
|
685
|
+
this._changedProps ??= [];
|
|
686
|
+
if (!this._changedProps.includes(changedProp)) {
|
|
687
|
+
this._changedProps.push(changedProp);
|
|
688
|
+
}
|
|
689
|
+
if (!this._updateStateTimer && !updatingState) {
|
|
690
|
+
this._updateStateTimer = setTimeout(() => {
|
|
691
|
+
this._updateState();
|
|
692
|
+
}, 200);
|
|
693
|
+
}
|
|
694
|
+
};
|
|
695
|
+
Object.defineProperty(targetControl, obj.metadata.stateProperty, {
|
|
696
|
+
configurable: true,
|
|
697
|
+
get: () => {
|
|
698
|
+
return new Proxy(stateModel, {
|
|
699
|
+
get: (target: JSONModel, prop: string): unknown => {
|
|
700
|
+
return _getHandlerForStateProperty(target, prop);
|
|
701
|
+
},
|
|
702
|
+
set: (setStateModel: JSONModel, prop, value): boolean => {
|
|
703
|
+
// we need to check whether the property is a known bound property in any of the related classes
|
|
704
|
+
const knownBoundProperties = setStateModel.getProperty("/__boundProperties") ?? [];
|
|
705
|
+
if (knownBoundProperties.includes(prop.toString())) {
|
|
706
|
+
targetControl._ignoreStatePropertyUpdate = true;
|
|
707
|
+
targetControl.setProperty(prop.toString(), value);
|
|
708
|
+
targetControl._ignoreStatePropertyUpdate = false;
|
|
709
|
+
}
|
|
710
|
+
const setResult = setStateModel.setProperty(`/${prop.toString()}`, value);
|
|
711
|
+
targetControl._updateStateDebounced(prop.toString());
|
|
712
|
+
return setResult;
|
|
713
|
+
}
|
|
714
|
+
});
|
|
715
|
+
},
|
|
716
|
+
set: function (value) {
|
|
717
|
+
const knownBoundProperties = stateModel.getProperty("/__boundProperties") ?? [];
|
|
718
|
+
// Replacing the complete state
|
|
719
|
+
stateModel.setProperty(`/`, value);
|
|
720
|
+
// restoring the boundProperties references
|
|
721
|
+
stateModel.setProperty("/__boundProperties", knownBoundProperties);
|
|
722
|
+
}
|
|
723
|
+
});
|
|
724
|
+
if (obj.metadata.statePropertyDefaultValue) {
|
|
725
|
+
targetControl[obj.metadata.stateProperty as keyof Control] = { ...obj.metadata.statePropertyDefaultValue } as never;
|
|
726
|
+
}
|
|
727
|
+
const fnApplySettings = targetControl.applySettings;
|
|
728
|
+
targetControl.applySettings = function (mSettings: { models?: Record<string, never> }): typeof targetControl {
|
|
729
|
+
delete mSettings?.models?.$componentState;
|
|
730
|
+
return fnApplySettings.call(this, mSettings);
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
const fnSetProperty = targetControl.setProperty;
|
|
734
|
+
|
|
735
|
+
if (boundToStateProps.length > 0) {
|
|
736
|
+
targetControl.setProperty = function (sPropertyName: string, oValue: unknown, bSuppressInvalidate): typeof targetControl {
|
|
737
|
+
if (boundToStateProps.includes(sPropertyName) && !this._ignoreStatePropertyUpdate) {
|
|
738
|
+
stateModel.setProperty(`/${sPropertyName}`, oValue);
|
|
739
|
+
targetControl._updateStateDebounced(sPropertyName);
|
|
740
|
+
}
|
|
741
|
+
return fnSetProperty.call(this, sPropertyName, oValue, bSuppressInvalidate);
|
|
742
|
+
};
|
|
649
743
|
}
|
|
650
744
|
}
|
|
651
745
|
}
|
|
@@ -754,7 +848,8 @@ function registerUI5Metadata(clazz: UI5ControlAndMore, name: string, inObj: UI5C
|
|
|
754
848
|
}
|
|
755
849
|
});
|
|
756
850
|
}
|
|
757
|
-
if (propertyDefault !== undefined) {
|
|
851
|
+
if (propertyDefault !== undefined && this[propertyKey] !== propertyDefault) {
|
|
852
|
+
// don't overwrite the default value if it's already there
|
|
758
853
|
this._applyingSettings = true;
|
|
759
854
|
this[propertyKey] = propertyDefault;
|
|
760
855
|
this._applyingSettings = false;
|
|
@@ -11,7 +11,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Element"], function (Cla
|
|
|
11
11
|
var event = ClassSupport.event;
|
|
12
12
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
13
13
|
function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
|
|
14
|
-
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
15
14
|
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
|
|
16
15
|
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
17
16
|
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
|
|
@@ -25,15 +24,15 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Element"], function (Cla
|
|
|
25
24
|
let EventDelegateHook = (_dec = defineUI5Class("sap.fe.base.EventDelegateHook"), _dec2 = property({
|
|
26
25
|
type: "boolean"
|
|
27
26
|
}), _dec3 = event(), _dec(_class = (_class2 = /*#__PURE__*/function (_Element) {
|
|
28
|
-
_inheritsLoose(EventDelegateHook, _Element);
|
|
29
27
|
function EventDelegateHook(idOrSettings, settings) {
|
|
30
28
|
var _this;
|
|
31
29
|
_this = _Element.call(this, idOrSettings, settings) || this;
|
|
32
|
-
_initializerDefineProperty(_this, "stopTapPropagation", _descriptor,
|
|
33
|
-
_initializerDefineProperty(_this, "tap", _descriptor2,
|
|
30
|
+
_initializerDefineProperty(_this, "stopTapPropagation", _descriptor, _this);
|
|
31
|
+
_initializerDefineProperty(_this, "tap", _descriptor2, _this);
|
|
34
32
|
return _this;
|
|
35
33
|
}
|
|
36
34
|
_exports = EventDelegateHook;
|
|
35
|
+
_inheritsLoose(EventDelegateHook, _Element);
|
|
37
36
|
var _proto = EventDelegateHook.prototype;
|
|
38
37
|
_proto.setParent = function setParent(parentObject) {
|
|
39
38
|
if (this.getParent()) {
|
|
@@ -49,7 +48,7 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Element"], function (Cla
|
|
|
49
48
|
this.fireEvent("tap");
|
|
50
49
|
};
|
|
51
50
|
return EventDelegateHook;
|
|
52
|
-
}(Element),
|
|
51
|
+
}(Element), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "stopTapPropagation", [_dec2], {
|
|
53
52
|
configurable: true,
|
|
54
53
|
enumerable: true,
|
|
55
54
|
writable: true,
|
|
@@ -61,8 +60,8 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Element"], function (Cla
|
|
|
61
60
|
enumerable: true,
|
|
62
61
|
writable: true,
|
|
63
62
|
initializer: null
|
|
64
|
-
})
|
|
63
|
+
}), _class2)) || _class);
|
|
65
64
|
_exports = EventDelegateHook;
|
|
66
65
|
return _exports;
|
|
67
66
|
}, false);
|
|
68
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFdmVudERlbGVnYXRlSG9vayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfRWxlbWVudCIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJzZXRQYXJlbnQiLCJwYXJlbnRPYmplY3QiLCJnZXRQYXJlbnQiLCJyZW1vdmVFdmVudERlbGVnYXRlIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9udGFwIiwidGFwRXZlbnQiLCJzdG9wVGFwUHJvcGFnYXRpb24iLCJzdG9wUHJvcGFnYXRpb24iLCJmaXJlRXZlbnQiLCJFbGVtZW50IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFdmVudERlbGVnYXRlSG9vay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7ICRFbGVtZW50U2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBldmVudCBkZWxlZ2F0ZSBob29rIG9uIHRoZSBwYXJlbnQgb2YgdGhpcyBjb250cm9sIHRvIGRlYWwgd2l0aCBldmVudCBwcm9wYWdhdGlvbi5cbiAqXG4gKiBUaGlzIGlzIGEgc3BlY2lmaWMgc29sdXRpb24gZm9yIHRoZSBBdmF0YXIgY29udHJvbCBjYXNlIHdoZXJlIHRoZSBwcmVzcyBjYW5ub3QgYmUgaW50ZXJydXB0ZWQgYW5kIHdoaWNoIHRoZW4gZW5kcyB1cCBpbnRlcmFjdGluZyB3aXRoIGNvbnRyb2wgYmVoaW5kIGl0LlxuICpcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmJhc2UuRXZlbnREZWxlZ2F0ZUhvb2tcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV2ZW50RGVsZWdhdGVIb29rIGV4dGVuZHMgRWxlbWVudCB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHN0b3BUYXBQcm9wYWdhdGlvbiA9IGZhbHNlO1xuXG5cdEBldmVudCgpXG5cdHRhcD86IEV2ZW50SGFuZGxlcjtcblxuXHRjb25zdHJ1Y3RvcihpZE9yU2V0dGluZ3M/OiBFdmVudERlbGVnYXRlU2V0dGluZ3MpO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JTZXR0aW5nczogc3RyaW5nLCBzZXR0aW5ncz86IEV2ZW50RGVsZWdhdGVTZXR0aW5ncyk7XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPEV2ZW50RGVsZWdhdGVIb29rPiwgc2V0dGluZ3M/OiBFdmVudERlbGVnYXRlU2V0dGluZ3MpIHtcblx0XHRzdXBlcihpZE9yU2V0dGluZ3MgYXMgc3RyaW5nLCBzZXR0aW5ncyk7XG5cdH1cblxuXHRzZXRQYXJlbnQocGFyZW50T2JqZWN0OiBFbGVtZW50KTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZ2V0UGFyZW50KCkpIHtcblx0XHRcdCh0aGlzLmdldFBhcmVudCgpIGFzIEVsZW1lbnQpLnJlbW92ZUV2ZW50RGVsZWdhdGUodGhpcyk7XG5cdFx0fVxuXHRcdHBhcmVudE9iamVjdC5hZGRFdmVudERlbGVnYXRlKHRoaXMpO1xuXHRcdHN1cGVyLnNldFBhcmVudChwYXJlbnRPYmplY3QpO1xuXHR9XG5cblx0b250YXAodGFwRXZlbnQ6IEpRdWVyeS5FdmVudCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnN0b3BUYXBQcm9wYWdhdGlvbikge1xuXHRcdFx0dGFwRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHRcdHRoaXMuZmlyZUV2ZW50KFwidGFwXCIpO1xuXHR9XG59XG5cbnR5cGUgRXZlbnREZWxlZ2F0ZVNldHRpbmdzID0gJEVsZW1lbnRTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxFdmVudERlbGVnYXRlSG9vaz47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEEsSUFPcUJBLGlCQUFpQixJQUFBQyxJQUFBLEdBRHJDQyxjQUFjLENBQUMsK0JBQStCLENBQUMsRUFBQUMsS0FBQSxHQUU5Q0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzdCQyxLQUFLLENBQUMsQ0FBQyxFQUFBTixJQUFBLENBQUFPLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsUUFBQTtJQU9SLFNBQUFWLGtCQUFZVyxZQUF1RCxFQUFFQyxRQUFnQyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN0R0EsS0FBQSxHQUFBSCxRQUFBLENBQUFJLElBQUEsT0FBTUgsWUFBWSxFQUFZQyxRQUFRLENBQUM7TUFBQ0csMEJBQUEsQ0FBQUYsS0FBQSx3QkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsU0FBQUksWUFBQSxFQUFBSixLQUFBO01BQUEsT0FBQUEsS0FBQTtJQUN6QztJQUFDSyxRQUFBLEdBQUFsQixpQkFBQTtJQUFBbUIsY0FBQSxDQUFBbkIsaUJBQUEsRUFBQVUsUUFBQTtJQUFBLElBQUFVLE1BQUEsR0FBQXBCLGlCQUFBLENBQUFxQixTQUFBO0lBQUFELE1BQUEsQ0FFREUsU0FBUyxHQUFULFNBQUFBLFNBQVNBLENBQUNDLFlBQXFCLEVBQVE7TUFDdEMsSUFBSSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7UUFDcEIsSUFBSSxDQUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFhQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7TUFDeEQ7TUFDQUYsWUFBWSxDQUFDRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7TUFDbkNoQixRQUFBLENBQUFXLFNBQUEsQ0FBTUMsU0FBUyxDQUFBUixJQUFBLE9BQUNTLFlBQVk7SUFDN0IsQ0FBQztJQUFBSCxNQUFBLENBRURPLEtBQUssR0FBTCxTQUFBQSxLQUFLQSxDQUFDQyxRQUFzQixFQUFRO01BQ25DLElBQUksSUFBSSxDQUFDQyxrQkFBa0IsRUFBRTtRQUM1QkQsUUFBUSxDQUFDRSxlQUFlLENBQUMsQ0FBQztNQUMzQjtNQUNBLElBQUksQ0FBQ0MsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQUEsT0FBQS9CLGlCQUFBO0VBQUEsRUE1QjZDZ0MsT0FBTyxHQUFBaEIsV0FBQSxHQUFBaUIseUJBQUEsQ0FBQXhCLE9BQUEsQ0FBQVksU0FBQSx5QkFBQWxCLEtBQUE7SUFBQStCLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BRWhDLEtBQUs7SUFBQTtFQUFBLElBQUFwQixZQUFBLEdBQUFnQix5QkFBQSxDQUFBeEIsT0FBQSxDQUFBWSxTQUFBLFVBQUFmLEtBQUE7SUFBQTRCLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBNUIsT0FBQSxNQUFBRCxNQUFBO0VBQUFVLFFBQUEsR0FBQWxCLGlCQUFBO0VBQUEsT0FBQWtCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -44,7 +44,7 @@ sap.ui.define([], function () {
|
|
|
44
44
|
if (execution === "BeforeAsync" || execution === "AfterAsync") {
|
|
45
45
|
descriptor.value = async function () {
|
|
46
46
|
const cExTInstanceHookMap = this;
|
|
47
|
-
const handlers =
|
|
47
|
+
const handlers = cExTInstanceHookMap?.hookedHandlers && cExTInstanceHookMap?.hookedHandlers[propertyKey.toString()] || [];
|
|
48
48
|
let returnValue;
|
|
49
49
|
if (execution === "AfterAsync") {
|
|
50
50
|
returnValue = await oldValue.bind(this)(...arguments);
|
|
@@ -60,7 +60,7 @@ sap.ui.define([], function () {
|
|
|
60
60
|
} else {
|
|
61
61
|
descriptor.value = function () {
|
|
62
62
|
const cExTInstanceHookMap = this;
|
|
63
|
-
const handlers =
|
|
63
|
+
const handlers = cExTInstanceHookMap?.hookedHandlers && cExTInstanceHookMap?.hookedHandlers[propertyKey.toString()] || [];
|
|
64
64
|
let returnValue;
|
|
65
65
|
if (execution === "After") {
|
|
66
66
|
returnValue = oldValue.bind(this)(...arguments);
|
|
@@ -128,10 +128,9 @@ sap.ui.define([], function () {
|
|
|
128
128
|
const indexableController = controller;
|
|
129
129
|
const indexableTarget = target;
|
|
130
130
|
for (const registeredHandler of registeredHandlers[index]) {
|
|
131
|
-
var _controller$getView;
|
|
132
131
|
const handlerFunction = indexableTarget[registeredHandler.targetMethod].bind(target);
|
|
133
132
|
indexableController[registeredHandler.name][`attach${String(registeredHandler.method)}`](handlerFunction);
|
|
134
|
-
|
|
133
|
+
controller.getView()?.attachBeforeExit(() => {
|
|
135
134
|
indexableController[registeredHandler.name][`detach${String(registeredHandler.method)}`](handlerFunction);
|
|
136
135
|
});
|
|
137
136
|
}
|
|
@@ -151,4 +150,4 @@ sap.ui.define([], function () {
|
|
|
151
150
|
_exports.xmlViewPreprocessor = xmlViewPreprocessor;
|
|
152
151
|
return _exports;
|
|
153
152
|
}, false);
|
|
154
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWdpc3RlcmVkSW5zdGFuY2VzIiwicmVnaXN0ZXJlZEhhbmRsZXJzIiwiaG9va2FibGUiLCJleGVjdXRpb24iLCJ0YXJnZXQiLCJwcm9wZXJ0eUtleSIsImRlc2NyaXB0b3IiLCJpbmRleGFibGVUYXJnZXQiLCJ0b1N0cmluZyIsImZuIiwiY0V4VEluc3RhbmNlSG9va01hcCIsImhvb2tlZEhhbmRsZXJzIiwicHVzaCIsImhhbmRsZXJzIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwib2xkVmFsdWUiLCJ2YWx1ZSIsInJldHVyblZhbHVlIiwiYmluZCIsImFyZ3VtZW50cyIsImhhbmRsZXIiLCJfZXhwb3J0cyIsImlzQWxyZWFkeVJlZ2lzdGVyZWQiLCJleGlzdGluZ1JlZ2lzdHJhdGlvbnMiLCJuZXdSZWdpc3RyYXRpb24iLCJmaW5kIiwiciIsIm5hbWUiLCJtZXRob2QiLCJ0YXJnZXRNZXRob2QiLCJjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciIsIlN0cmluZyIsImNvbnN0cnVjdG9yIiwiaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJjb250cm9sbGVyIiwiaW5kZXhhYmxlQ29udHJvbGxlciIsInJlZ2lzdGVyZWRIYW5kbGVyIiwiX2NvbnRyb2xsZXIkZ2V0VmlldyIsImhhbmRsZXJGdW5jdGlvbiIsImdldFZpZXciLCJhdHRhY2hCZWZvcmVFeGl0IiwieG1sVmlld1ByZXByb2Nlc3NvciIsInNvdXJjZSIsIl9jYWxsZXIiLCJfc2V0dGluZ3MiLCJzb3VyY2VWaWV3IiwiZ2V0Q29udHJvbGxlciIsIm1hY3JvQVBJQ2hpbGQiLCJmaW5kQWdncmVnYXRlZE9iamVjdHMiLCJzIiwiaXNBIiwibWFuYWdlZE9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSG9va1N1cHBvcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFeHRlbnNpb25PdmVycmlkZUV4ZWN1dGlvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBYTUxWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvWE1MVmlld1wiO1xuXG4vKipcbiAqIFRoaXMgdHlwZSBpcyB0byBiZSBleHRlbmRlZCB3aXRoIGFsbCBjb250cm9sbGVyIGV4dGVuc2lvbnMgYW5kIG1ldGhvZHMgdGhhdCBhcmUgaG9va2FibGUuXG4gKi9cbnR5cGUgSG9va2FibGVDb250cm9sbGVyRXh0ZW5zaW9ucyA9IHtcblx0ZWRpdEZsb3c6IHtcblx0XHRvbkFmdGVyU2F2ZTogdHJ1ZTtcblx0XHRvbkJlZm9yZVNhdmU6IHRydWU7XG5cdH07XG5cdGNvbGxhYm9yYXRpb25NYW5hZ2VyOiB7XG5cdFx0Y29sbGVjdEF2YWlsYWJsZUNhcmRzOiB0cnVlO1xuXHR9O1xuXHRwYWdpbmF0b3I6IHtcblx0XHRpbml0aWFsaXplOiB0cnVlO1xuXHR9O1xuXHRyb3V0aW5nOiB7XG5cdFx0b25BZnRlckJpbmRpbmc6IHRydWU7XG5cdH07XG59O1xuXG50eXBlIEhhbmRsZXJDb25maWd1cmF0aW9uPENFeHROYW1lIGV4dGVuZHMga2V5b2YgSG9va2FibGVDb250cm9sbGVyRXh0ZW5zaW9ucz4gPSB7XG5cdG5hbWU6IENFeHROYW1lO1xuXHRtZXRob2Q6IGtleW9mIEhvb2thYmxlQ29udHJvbGxlckV4dGVuc2lvbnNbQ0V4dE5hbWVdO1xufTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG50eXBlIEhhbmRsZXJSZWdpc3RyYXRpb24gPSBIYW5kbGVyQ29uZmlndXJhdGlvbjxhbnk+ICYgeyB0YXJnZXRNZXRob2Q6IHN0cmluZyB9O1xuXG50eXBlIEZ1bmN0aW9uTWFwID0ge1xuXHRba2V5OiBzdHJpbmddOiBGdW5jdGlvbjtcbn07XG50eXBlIERlZXBGdW5jdGlvbk1hcCA9IHtcblx0W2tleTogc3RyaW5nXTogRnVuY3Rpb25NYXA7XG59O1xudHlwZSBIb29rTWFwID0ge1xuXHRob29rZWRIYW5kbGVyczoge1xuXHRcdFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uW107XG5cdH07XG59O1xuXG4vLyBVc2UgdHdvIGFycmF5cyBhcyB3ZSBjYW5ub3QgaW5kZXggYSBtYXAgdGhyb3VnaCBhbiBhcmJpdHJhcnkgb2JqZWN0IGluc3RhbmNlXG5jb25zdCByZWdpc3RlcmVkSW5zdGFuY2VzOiBGdW5jdGlvbltdID0gW107XG5jb25zdCByZWdpc3RlcmVkSGFuZGxlcnM6IEhhbmRsZXJSZWdpc3RyYXRpb25bXVtdID0gW107XG5cbi8qKlxuICogTWFya3MgYSBjb250cm9sbGVyIGV4dGVuc2lvbiBtZXRob2QgdG8gYmUgaG9va2FibGUgYnkgZ2VuZXJhdGluZyBhZGRpdGlvbmFsIG1ldGhvZHMgdGhhdCBjYW4gYmUgdXNlZCB0byBhdHRhY2ggYW5kIGRldGFjaCBoYW5kbGVycyBhdCBydW50aW1lLlxuICogQHBhcmFtIGV4ZWN1dGlvblxuICogQHJldHVybnMgQSBtZXRob2QgZGVjb3JhdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob29rYWJsZShleGVjdXRpb246IEV4dGVuc2lvbk92ZXJyaWRlRXhlY3V0aW9uKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IHVua25vd24sIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xuXHRcdGNvbnN0IGluZGV4YWJsZVRhcmdldCA9IHRhcmdldCBhcyBGdW5jdGlvbk1hcDtcblxuXHRcdGluZGV4YWJsZVRhcmdldFtgYXR0YWNoJHtwcm9wZXJ0eUtleS50b1N0cmluZygpfWBdID0gZnVuY3Rpb24gKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdFx0Y29uc3QgY0V4VEluc3RhbmNlSG9va01hcCA9IHRoaXMgYXMgdW5rbm93biBhcyBIb29rTWFwO1xuXHRcdFx0aWYgKCFjRXhUSW5zdGFuY2VIb29rTWFwLmhvb2tlZEhhbmRsZXJzKSB7XG5cdFx0XHRcdGNFeFRJbnN0YW5jZUhvb2tNYXAuaG9va2VkSGFuZGxlcnMgPSB7fTtcblx0XHRcdH1cblx0XHRcdGlmICghY0V4VEluc3RhbmNlSG9va01hcC5ob29rZWRIYW5kbGVyc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSkge1xuXHRcdFx0XHRjRXhUSW5zdGFuY2VIb29rTWFwLmhvb2tlZEhhbmRsZXJzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0gW107XG5cdFx0XHR9XG5cdFx0XHRjRXhUSW5zdGFuY2VIb29rTWFwLmhvb2tlZEhhbmRsZXJzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldLnB1c2goZm4pO1xuXHRcdH07XG5cdFx0aW5kZXhhYmxlVGFyZ2V0W2BkZXRhY2gke3Byb3BlcnR5S2V5LnRvU3RyaW5nKCl9YF0gPSBmdW5jdGlvbiAoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG5cdFx0XHRjb25zdCBjRXhUSW5zdGFuY2VIb29rTWFwID0gdGhpcyBhcyB1bmtub3duIGFzIEhvb2tNYXA7XG5cdFx0XHRjb25zdCBoYW5kbGVycyA9IGNFeFRJbnN0YW5jZUhvb2tNYXAuaG9va2VkSGFuZGxlcnNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV07XG5cdFx0XHRjb25zdCBpbmRleCA9IGhhbmRsZXJzLmluZGV4T2YoZm4pO1xuXHRcdFx0aWYgKGluZGV4ICE9PSAtMSkge1xuXHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBvbGRWYWx1ZSA9IGRlc2NyaXB0b3IudmFsdWU7XG5cdFx0aWYgKGV4ZWN1dGlvbiA9PT0gXCJCZWZvcmVBc3luY1wiIHx8IGV4ZWN1dGlvbiA9PT0gXCJBZnRlckFzeW5jXCIpIHtcblx0XHRcdGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAoLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0XHRcdGNvbnN0IGNFeFRJbnN0YW5jZUhvb2tNYXAgPSB0aGlzIGFzIHVua25vd24gYXMgSG9va01hcDtcblx0XHRcdFx0Y29uc3QgaGFuZGxlcnMgPSAoY0V4VEluc3RhbmNlSG9va01hcD8uaG9va2VkSGFuZGxlcnMgJiYgY0V4VEluc3RhbmNlSG9va01hcD8uaG9va2VkSGFuZGxlcnNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0pIHx8IFtdO1xuXHRcdFx0XHRsZXQgcmV0dXJuVmFsdWU6IHVua25vd247XG5cdFx0XHRcdGlmIChleGVjdXRpb24gPT09IFwiQWZ0ZXJBc3luY1wiKSB7XG5cdFx0XHRcdFx0cmV0dXJuVmFsdWUgPSBhd2FpdCBvbGRWYWx1ZS5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgaGFuZGxlciBvZiBoYW5kbGVycykge1xuXHRcdFx0XHRcdGF3YWl0IGhhbmRsZXIuYmluZCh0aGlzKSguLi5hcmdzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZXhlY3V0aW9uID09PSBcIkJlZm9yZUFzeW5jXCIpIHtcblx0XHRcdFx0XHRyZXR1cm5WYWx1ZSA9IGF3YWl0IG9sZFZhbHVlLmJpbmQodGhpcykoLi4uYXJncyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHJldHVyblZhbHVlO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duIHtcblx0XHRcdFx0Y29uc3QgY0V4VEluc3RhbmNlSG9va01hcCA9IHRoaXMgYXMgdW5rbm93biBhcyBIb29rTWFwO1xuXHRcdFx0XHRjb25zdCBoYW5kbGVycyA9IChjRXhUSW5zdGFuY2VIb29rTWFwPy5ob29rZWRIYW5kbGVycyAmJiBjRXhUSW5zdGFuY2VIb29rTWFwPy5ob29rZWRIYW5kbGVyc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSkgfHwgW107XG5cdFx0XHRcdGxldCByZXR1cm5WYWx1ZTogdW5rbm93bjtcblx0XHRcdFx0aWYgKGV4ZWN1dGlvbiA9PT0gXCJBZnRlclwiKSB7XG5cdFx0XHRcdFx0cmV0dXJuVmFsdWUgPSBvbGRWYWx1ZS5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgaGFuZGxlciBvZiBoYW5kbGVycykge1xuXHRcdFx0XHRcdGhhbmRsZXIuYmluZCh0aGlzKSguLi5hcmdzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZXhlY3V0aW9uID09PSBcIkJlZm9yZVwiKSB7XG5cdFx0XHRcdFx0cmV0dXJuVmFsdWUgPSBvbGRWYWx1ZS5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZXR1cm5WYWx1ZTtcblx0XHRcdH07XG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgbmV3UmVnaXN0cmF0aW9uIGlzIGFscmVhZHkgaW5jbHVkZWQgaW4gc29tZSBleGlzdGluZ1JlZ2lzdHJhdGlvbnMgYnkgY29tcGFyaW5nIGFsbCByZWxldmFudCBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIGV4aXN0aW5nUmVnaXN0cmF0aW9uc1xuICogQHBhcmFtIG5ld1JlZ2lzdHJhdGlvblxuICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSBjaGVja1xuICovXG5mdW5jdGlvbiBpc0FscmVhZHlSZWdpc3RlcmVkKGV4aXN0aW5nUmVnaXN0cmF0aW9uczogSGFuZGxlclJlZ2lzdHJhdGlvbltdLCBuZXdSZWdpc3RyYXRpb246IEhhbmRsZXJSZWdpc3RyYXRpb24pOiBib29sZWFuIHtcblx0cmV0dXJuICEhZXhpc3RpbmdSZWdpc3RyYXRpb25zLmZpbmQoXG5cdFx0KHIpID0+IHIubmFtZSA9PT0gbmV3UmVnaXN0cmF0aW9uLm5hbWUgJiYgci5tZXRob2QgPT09IG5ld1JlZ2lzdHJhdGlvbi5tZXRob2QgJiYgci50YXJnZXRNZXRob2QgPT09IG5ld1JlZ2lzdHJhdGlvbi50YXJnZXRNZXRob2Rcblx0KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBtZXRob2QgYXMgY29udHJvbGxlciBleHRlbnNpb24gaG9vayBoYW5kbGVyLlxuICpcbiAqIEN1cnJlbnRseSwgb25seSBtZXRob2RzIG9mIHJ1bnRpbWUgYnVpbGRpbmcgYmxvY2tzIGFyZSBzdXBwb3J0ZWQuXG4gKiBAcGFyYW0gbmFtZSBDb250cm9sbGVyIGV4dGVuc2lvbiB0byBob29rIGludG9cbiAqIEBwYXJhbSBtZXRob2QgTWV0aG9kIHRvIGhvb2sgaW50b1xuICogQHJldHVybnMgQSBtZXRob2QgZGVjb3JhdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlcjxDRXh0TmFtZSBleHRlbmRzIGtleW9mIEhvb2thYmxlQ29udHJvbGxlckV4dGVuc2lvbnM+KFxuXHRuYW1lOiBDRXh0TmFtZSxcblx0bWV0aG9kOiBrZXlvZiBIb29rYWJsZUNvbnRyb2xsZXJFeHRlbnNpb25zW0NFeHROYW1lXVxuKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IHsgY29uc3RydWN0b3I6IEZ1bmN0aW9uIH0sIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblx0XHRjb25zdCBuZXdSZWdpc3RyYXRpb24gPSB7IG5hbWUsIG1ldGhvZDogU3RyaW5nKG1ldGhvZCksIHRhcmdldE1ldGhvZDogcHJvcGVydHlLZXkgfTtcblx0XHRjb25zdCBpbmRleCA9IHJlZ2lzdGVyZWRJbnN0YW5jZXMuaW5kZXhPZih0YXJnZXQuY29uc3RydWN0b3IpO1xuXG5cdFx0Ly8gV2UgbmVlZCB0byBjaGVjayBpZiB0aGlzIGV4YWN0IGhhbmRsZXIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGFzIGhhbmRsZXJzIGFyZSByZWdpc3RlcmVkIHN0YXRpY2FsbHkgKG9uIHRoZSBjb25zdHJ1Y3Rvcilcblx0XHRpZiAoaW5kZXggIT09IC0xICYmICFpc0FscmVhZHlSZWdpc3RlcmVkKHJlZ2lzdGVyZWRIYW5kbGVyc1tpbmRleF0sIG5ld1JlZ2lzdHJhdGlvbikpIHtcblx0XHRcdHJlZ2lzdGVyZWRIYW5kbGVyc1tpbmRleF0ucHVzaChuZXdSZWdpc3RyYXRpb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZWdpc3RlcmVkSW5zdGFuY2VzLnB1c2godGFyZ2V0LmNvbnN0cnVjdG9yKTtcblx0XHRcdHJlZ2lzdGVyZWRIYW5kbGVycy5wdXNoKFtuZXdSZWdpc3RyYXRpb25dKTtcblx0XHR9XG5cdH0gYXMgTWV0aG9kRGVjb3JhdG9yO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIGFsbCBjb250cm9sbGVyIGV4dGVuc2lvbiBoYW5kbGVycyByZWdpc3RlcmVkIGZvciBhIGdpdmVuIHRhcmdldC5cbiAqIEBwYXJhbSB0YXJnZXQgVGFyZ2V0IGNsYXNzIHRvIGluaXRpYWxpemUgdGhlIGhhbmRsZXJzIGZvclxuICogQHBhcmFtIHRhcmdldC5jb25zdHJ1Y3RvclxuICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZUNvbnRyb2xsZXIgaW5zdGFuY2UgdG8gZ2V0IHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbnMgaW5zdGFuY2VzIGZyb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRhcmdldDogeyBjb25zdHJ1Y3RvcjogRnVuY3Rpb24gfSwgY29udHJvbGxlcjogQ29udHJvbGxlcik6IHZvaWQge1xuXHRjb25zdCBpbmRleCA9IHJlZ2lzdGVyZWRJbnN0YW5jZXMuaW5kZXhPZih0YXJnZXQuY29uc3RydWN0b3IpO1xuXHRpZiAoaW5kZXggIT09IC0xKSB7XG5cdFx0Y29uc3QgaW5kZXhhYmxlQ29udHJvbGxlciA9IGNvbnRyb2xsZXIgYXMgdW5rbm93biBhcyBEZWVwRnVuY3Rpb25NYXA7XG5cdFx0Y29uc3QgaW5kZXhhYmxlVGFyZ2V0ID0gdGFyZ2V0IGFzIHVua25vd24gYXMgRnVuY3Rpb25NYXA7XG5cblx0XHRmb3IgKGNvbnN0IHJlZ2lzdGVyZWRIYW5kbGVyIG9mIHJlZ2lzdGVyZWRIYW5kbGVyc1tpbmRleF0pIHtcblx0XHRcdGNvbnN0IGhhbmRsZXJGdW5jdGlvbiA9IGluZGV4YWJsZVRhcmdldFtyZWdpc3RlcmVkSGFuZGxlci50YXJnZXRNZXRob2RdLmJpbmQodGFyZ2V0KTtcblxuXHRcdFx0aW5kZXhhYmxlQ29udHJvbGxlcltyZWdpc3RlcmVkSGFuZGxlci5uYW1lXVtgYXR0YWNoJHtTdHJpbmcocmVnaXN0ZXJlZEhhbmRsZXIubWV0aG9kKX1gXShoYW5kbGVyRnVuY3Rpb24pO1xuXHRcdFx0Y29udHJvbGxlci5nZXRWaWV3KCk/LmF0dGFjaEJlZm9yZUV4aXQoKCkgPT4ge1xuXHRcdFx0XHRpbmRleGFibGVDb250cm9sbGVyW3JlZ2lzdGVyZWRIYW5kbGVyLm5hbWVdW2BkZXRhY2gke1N0cmluZyhyZWdpc3RlcmVkSGFuZGxlci5tZXRob2QpfWBdKGhhbmRsZXJGdW5jdGlvbik7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHhtbFZpZXdQcmVwcm9jZXNzb3Ioc291cmNlOiBvYmplY3QsIF9jYWxsZXI/OiB1bmtub3duLCBfc2V0dGluZ3M/OiBvYmplY3QpOiB2b2lkIHtcblx0Y29uc3Qgc291cmNlVmlldyA9IHNvdXJjZSBhcyBYTUxWaWV3O1xuXHRjb25zdCBjb250cm9sbGVyID0gc291cmNlVmlldy5nZXRDb250cm9sbGVyKCkgYXMgQ29udHJvbGxlciB8IHVuZGVmaW5lZDtcblx0aWYgKGNvbnRyb2xsZXIpIHtcblx0XHRjb25zdCBtYWNyb0FQSUNoaWxkID0gc291cmNlVmlldy5maW5kQWdncmVnYXRlZE9iamVjdHModHJ1ZSwgKHMpID0+IHMuaXNBKFwic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiKSk7XG5cdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIG1hY3JvQVBJQ2hpbGQpIHtcblx0XHRcdGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKG1hbmFnZWRPYmplY3QsIGNvbnRyb2xsZXIpO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztFQUlBO0FBQ0E7QUFDQTtFQXFCQTtFQWVBO0VBQ0EsTUFBTUEsbUJBQStCLEdBQUcsRUFBRTtFQUMxQyxNQUFNQyxrQkFBMkMsR0FBRyxFQUFFOztFQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0MsUUFBUUEsQ0FBQ0MsU0FBcUMsRUFBbUI7SUFDaEYsT0FBTyxVQUFVQyxNQUFlLEVBQUVDLFdBQTRCLEVBQUVDLFVBQThCLEVBQUU7TUFDL0YsTUFBTUMsZUFBZSxHQUFHSCxNQUFxQjtNQUU3Q0csZUFBZSxDQUFDLFNBQVNGLFdBQVcsQ0FBQ0csUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVUMsRUFBWSxFQUFRO1FBQ2xGLE1BQU1DLG1CQUFtQixHQUFHLElBQTBCO1FBQ3RELElBQUksQ0FBQ0EsbUJBQW1CLENBQUNDLGNBQWMsRUFBRTtVQUN4Q0QsbUJBQW1CLENBQUNDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEM7UUFDQSxJQUFJLENBQUNELG1CQUFtQixDQUFDQyxjQUFjLENBQUNOLFdBQVcsQ0FBQ0csUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1VBQ2hFRSxtQkFBbUIsQ0FBQ0MsY0FBYyxDQUFDTixXQUFXLENBQUNHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFO1FBQ2hFO1FBQ0FFLG1CQUFtQixDQUFDQyxjQUFjLENBQUNOLFdBQVcsQ0FBQ0csUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxJQUFJLENBQUNILEVBQUUsQ0FBQztNQUNwRSxDQUFDO01BQ0RGLGVBQWUsQ0FBQyxTQUFTRixXQUFXLENBQUNHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVVDLEVBQVksRUFBUTtRQUNsRixNQUFNQyxtQkFBbUIsR0FBRyxJQUEwQjtRQUN0RCxNQUFNRyxRQUFRLEdBQUdILG1CQUFt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TUFDakIsTUFBTXVCLG1CQUFtQixHQUFHRCxVQUF3QztNQUNwRSxNQUFNN0IsZUFBZSxHQUFHSCxNQUFnQztNQUV4RCxLQUFLLE1BQU1rQyxpQkFBaUIsSUFBSXJDLGtCQUFrQixDQUFDYSxLQUFLLENBQUMsRUFBRTtRQUFBLElBQUF5QixtQkFBQTtRQUMxRCxNQUFNQyxlQUFlLEdBQUdqQyxlQUFlLENBQUMrQixpQkFBaUIsQ0FBQ1AsWUFBWSxDQUFDLENBQUNYLElBQUksQ0FBQ2hCLE1BQU0sQ0FBQztRQUVwRmlDLG1CQUFtQixDQUFDQyxpQkFBaUIsQ0FBQ1QsSUFBSSxDQUFDLENBQUMsU0FBU0ksTUFBTSxDQUFDSyxpQkFBaUIsQ0FBQ1IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDVSxlQUFlLENBQUM7UUFDekcsQ0FBQUQsbUJBQUEsR0FBQUgsVUFBVSxDQUFDSyxPQUFPLENBQUMsQ0FBQyxjQUFBRixtQkFBQSx1QkFBcEJBLG1CQUFBLENBQXNCRyxnQkFBZ0IsQ0FBQyxNQUFNO1VBQzVDTCxtQkFBbUIsQ0FBQ0MsaUJBQWlCLENBQUNULElBQUksQ0FBQyxDQUFDLFNBQVNJLE1BQU0sQ0FBQ0ssaUJBQWlCLENBQUNSLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQ1UsZUFBZSxDQUFDO1FBQzFHLENBQUMsQ0FBQztNQUNIO0lBQ0Q7RUFDRDtFQUFDakIsUUFBQSxDQUFBWSxtQ0FBQSxHQUFBQSxtQ0FBQTtFQUVNLFNBQVNRLG1CQUFtQkEsQ0FBQ0MsTUFBYyxFQUFFQyxPQUFpQixFQUFFQyxTQUFrQixFQUFRO0lBQ2hHLE1BQU1DLFVBQVUsR0FBR0gsTUFBaUI7SUFDcEMsTUFBTVIsVUFBVSxHQUFHVyxVQUFVLENBQUNDLGFBQWEsQ0FBQyxDQUEyQjtJQUN2RSxJQUFJWixVQUFVLEVBQUU7TUFDZixNQUFNYSxhQUFhLEdBQUdGLFVBQVUsQ0FBQ0cscUJBQXFCLENBQUMsSUFBSSxFQUFHQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7TUFDcEcsS0FBSyxNQUFNQyxhQUFhLElBQUlKLGFBQWEsRUFBRTtRQUMxQ2QsbUNBQW1DLENBQUNrQixhQUFhLEVBQUVqQixVQUFVLENBQUM7TUFDL0Q7SUFDRDtFQUNEO0VBQUNiLFFBQUEsQ0FBQW9CLG1CQUFBLEdBQUFBLG1CQUFBO0VBQUEsT0FBQXBCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWdpc3RlcmVkSW5zdGFuY2VzIiwicmVnaXN0ZXJlZEhhbmRsZXJzIiwiaG9va2FibGUiLCJleGVjdXRpb24iLCJ0YXJnZXQiLCJwcm9wZXJ0eUtleSIsImRlc2NyaXB0b3IiLCJpbmRleGFibGVUYXJnZXQiLCJ0b1N0cmluZyIsImZuIiwiY0V4VEluc3RhbmNlSG9va01hcCIsImhvb2tlZEhhbmRsZXJzIiwicHVzaCIsImhhbmRsZXJzIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwib2xkVmFsdWUiLCJ2YWx1ZSIsInJldHVyblZhbHVlIiwiYmluZCIsImFyZ3VtZW50cyIsImhhbmRsZXIiLCJfZXhwb3J0cyIsImlzQWxyZWFkeVJlZ2lzdGVyZWQiLCJleGlzdGluZ1JlZ2lzdHJhdGlvbnMiLCJuZXdSZWdpc3RyYXRpb24iLCJmaW5kIiwiciIsIm5hbWUiLCJtZXRob2QiLCJ0YXJnZXRNZXRob2QiLCJjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciIsIlN0cmluZyIsImNvbnN0cnVjdG9yIiwiaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJjb250cm9sbGVyIiwiaW5kZXhhYmxlQ29udHJvbGxlciIsInJlZ2lzdGVyZWRIYW5kbGVyIiwiaGFuZGxlckZ1bmN0aW9uIiwiZ2V0VmlldyIsImF0dGFjaEJlZm9yZUV4aXQiLCJ4bWxWaWV3UHJlcHJvY2Vzc29yIiwic291cmNlIiwiX2NhbGxlciIsIl9zZXR0aW5ncyIsInNvdXJjZVZpZXciLCJnZXRDb250cm9sbGVyIiwibWFjcm9BUElDaGlsZCIsImZpbmRBZ2dyZWdhdGVkT2JqZWN0cyIsInMiLCJpc0EiLCJtYW5hZ2VkT2JqZWN0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJIb29rU3VwcG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEV4dGVuc2lvbk92ZXJyaWRlRXhlY3V0aW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFhNTFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9YTUxWaWV3XCI7XG5cbi8qKlxuICogVGhpcyB0eXBlIGlzIHRvIGJlIGV4dGVuZGVkIHdpdGggYWxsIGNvbnRyb2xsZXIgZXh0ZW5zaW9ucyBhbmQgbWV0aG9kcyB0aGF0IGFyZSBob29rYWJsZS5cbiAqL1xudHlwZSBIb29rYWJsZUNvbnRyb2xsZXJFeHRlbnNpb25zID0ge1xuXHRlZGl0Rmxvdzoge1xuXHRcdG9uQWZ0ZXJTYXZlOiB0cnVlO1xuXHRcdG9uQmVmb3JlU2F2ZTogdHJ1ZTtcblx0fTtcblx0Y29sbGFib3JhdGlvbk1hbmFnZXI6IHtcblx0XHRjb2xsZWN0QXZhaWxhYmxlQ2FyZHM6IHRydWU7XG5cdH07XG5cdHBhZ2luYXRvcjoge1xuXHRcdGluaXRpYWxpemU6IHRydWU7XG5cdH07XG5cdHJvdXRpbmc6IHtcblx0XHRvbkFmdGVyQmluZGluZzogdHJ1ZTtcblx0fTtcbn07XG5cbnR5cGUgSGFuZGxlckNvbmZpZ3VyYXRpb248Q0V4dE5hbWUgZXh0ZW5kcyBrZXlvZiBIb29rYWJsZUNvbnRyb2xsZXJFeHRlbnNpb25zPiA9IHtcblx0bmFtZTogQ0V4dE5hbWU7XG5cdG1ldGhvZDoga2V5b2YgSG9va2FibGVDb250cm9sbGVyRXh0ZW5zaW9uc1tDRXh0TmFtZV07XG59O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnR5cGUgSGFuZGxlclJlZ2lzdHJhdGlvbiA9IEhhbmRsZXJDb25maWd1cmF0aW9uPGFueT4gJiB7IHRhcmdldE1ldGhvZDogc3RyaW5nIH07XG5cbnR5cGUgRnVuY3Rpb25NYXAgPSB7XG5cdFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uO1xufTtcbnR5cGUgRGVlcEZ1bmN0aW9uTWFwID0ge1xuXHRba2V5OiBzdHJpbmddOiBGdW5jdGlvbk1hcDtcbn07XG50eXBlIEhvb2tNYXAgPSB7XG5cdGhvb2tlZEhhbmRsZXJzOiB7XG5cdFx0W2tleTogc3RyaW5nXTogRnVuY3Rpb25bXTtcblx0fTtcbn07XG5cbi8vIFVzZSB0d28gYXJyYXlzIGFzIHdlIGNhbm5vdCBpbmRleCBhIG1hcCB0aHJvdWdoIGFuIGFyYml0cmFyeSBvYmplY3QgaW5zdGFuY2VcbmNvbnN0IHJlZ2lzdGVyZWRJbnN0YW5jZXM6IEZ1bmN0aW9uW10gPSBbXTtcbmNvbnN0IHJlZ2lzdGVyZWRIYW5kbGVyczogSGFuZGxlclJlZ2lzdHJhdGlvbltdW10gPSBbXTtcblxuLyoqXG4gKiBNYXJrcyBhIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG1ldGhvZCB0byBiZSBob29rYWJsZSBieSBnZW5lcmF0aW5nIGFkZGl0aW9uYWwgbWV0aG9kcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGF0dGFjaCBhbmQgZGV0YWNoIGhhbmRsZXJzIGF0IHJ1bnRpbWUuXG4gKiBAcGFyYW0gZXhlY3V0aW9uXG4gKiBAcmV0dXJucyBBIG1ldGhvZCBkZWNvcmF0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhvb2thYmxlKGV4ZWN1dGlvbjogRXh0ZW5zaW9uT3ZlcnJpZGVFeGVjdXRpb24pOiBNZXRob2REZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogdW5rbm93biwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG5cdFx0Y29uc3QgaW5kZXhhYmxlVGFyZ2V0ID0gdGFyZ2V0IGFzIEZ1bmN0aW9uTWFwO1xuXG5cdFx0aW5kZXhhYmxlVGFyZ2V0W2BhdHRhY2gke3Byb3BlcnR5S2V5LnRvU3RyaW5nKCl9YF0gPSBmdW5jdGlvbiAoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG5cdFx0XHRjb25zdCBjRXhUSW5zdGFuY2VIb29rTWFwID0gdGhpcyBhcyB1bmtub3duIGFzIEhvb2tNYXA7XG5cdFx0XHRpZiAoIWNFeFRJbnN0YW5jZUhvb2tNYXAuaG9va2VkSGFuZGxlcnMpIHtcblx0XHRcdFx0Y0V4VEluc3RhbmNlSG9va01hcC5ob29rZWRIYW5kbGVycyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjRXhUSW5zdGFuY2VIb29rTWFwLmhvb2tlZEhhbmRsZXJzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRcdGNFeFRJbnN0YW5jZUhvb2tNYXAuaG9va2VkSGFuZGxlcnNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0gPSBbXTtcblx0XHRcdH1cblx0XHRcdGNFeFRJbnN0YW5jZUhvb2tNYXAuaG9va2VkSGFuZGxlcnNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0ucHVzaChmbik7XG5cdFx0fTtcblx0XHRpbmRleGFibGVUYXJnZXRbYGRldGFjaCR7cHJvcGVydHlLZXkudG9TdHJpbmcoKX1gXSA9IGZ1bmN0aW9uIChmbjogRnVuY3Rpb24pOiB2b2lkIHtcblx0XHRcdGNvbnN0IGNFeFRJbnN0YW5jZUhvb2tNYXAgPSB0aGlzIGFzIHVua25vd24gYXMgSG9va01hcDtcblx0XHRcdGNvbnN0IGhhbmRsZXJzID0gY0V4VEluc3RhbmNlSG9va01hcC5ob29rZWRIYW5kbGVyc1twcm9wZXJ0eUtleS50b1N0cmluZygpXTtcblx0XHRcdGNvbnN0IGluZGV4ID0gaGFuZGxlcnMuaW5kZXhPZihmbik7XG5cdFx0XHRpZiAoaW5kZXggIT09IC0xKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGNvbnN0IG9sZFZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTtcblx0XHRpZiAoZXhlY3V0aW9uID09PSBcIkJlZm9yZUFzeW5jXCIgfHwgZXhlY3V0aW9uID09PSBcIkFmdGVyQXN5bmNcIikge1xuXHRcdFx0ZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRcdFx0Y29uc3QgY0V4VEluc3RhbmNlSG9va01hcCA9IHRoaXMgYXMgdW5rbm93biBhcyBIb29rTWFwO1xuXHRcdFx0XHRjb25zdCBoYW5kbGVycyA9IChjRXhUSW5zdGFuY2VIb29rTWFwPy5ob29rZWRIYW5kbGVycyAmJiBjRXhUSW5zdGFuY2VIb29rTWFwPy5ob29rZWRIYW5kbGVyc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSkgfHwgW107XG5cdFx0XHRcdGxldCByZXR1cm5WYWx1ZTogdW5rbm93bjtcblx0XHRcdFx0aWYgKGV4ZWN1dGlvbiA9PT0gXCJBZnRlckFzeW5jXCIpIHtcblx0XHRcdFx0XHRyZXR1cm5WYWx1ZSA9IGF3YWl0IG9sZFZhbHVlLmJpbmQodGhpcykoLi4uYXJncyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBoYW5kbGVyIG9mIGhhbmRsZXJzKSB7XG5cdFx0XHRcdFx0YXdhaXQgaGFuZGxlci5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChleGVjdXRpb24gPT09IFwiQmVmb3JlQXN5bmNcIikge1xuXHRcdFx0XHRcdHJldHVyblZhbHVlID0gYXdhaXQgb2xkVmFsdWUuYmluZCh0aGlzKSguLi5hcmdzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcmV0dXJuVmFsdWU7XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24ge1xuXHRcdFx0XHRjb25zdCBjRXhUSW5zdGFuY2VIb29rTWFwID0gdGhpcyBhcyB1bmtub3duIGFzIEhvb2tNYXA7XG5cdFx0XHRcdGNvbnN0IGhhbmRsZXJzID0gKGNFeFRJbnN0YW5jZUhvb2tNYXA/Lmhvb2tlZEhhbmRsZXJzICYmIGNFeFRJbnN0YW5jZUhvb2tNYXA/Lmhvb2tlZEhhbmRsZXJzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB8fCBbXTtcblx0XHRcdFx0bGV0IHJldHVyblZhbHVlOiB1bmtub3duO1xuXHRcdFx0XHRpZiAoZXhlY3V0aW9uID09PSBcIkFmdGVyXCIpIHtcblx0XHRcdFx0XHRyZXR1cm5WYWx1ZSA9IG9sZFZhbHVlLmJpbmQodGhpcykoLi4uYXJncyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBoYW5kbGVyIG9mIGhhbmRsZXJzKSB7XG5cdFx0XHRcdFx0aGFuZGxlci5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChleGVjdXRpb24gPT09IFwiQmVmb3JlXCIpIHtcblx0XHRcdFx0XHRyZXR1cm5WYWx1ZSA9IG9sZFZhbHVlLmJpbmQodGhpcykoLi4uYXJncyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHJldHVyblZhbHVlO1xuXHRcdFx0fTtcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBuZXdSZWdpc3RyYXRpb24gaXMgYWxyZWFkeSBpbmNsdWRlZCBpbiBzb21lIGV4aXN0aW5nUmVnaXN0cmF0aW9ucyBieSBjb21wYXJpbmcgYWxsIHJlbGV2YW50IGF0dHJpYnV0ZXMuXG4gKiBAcGFyYW0gZXhpc3RpbmdSZWdpc3RyYXRpb25zXG4gKiBAcGFyYW0gbmV3UmVnaXN0cmF0aW9uXG4gKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIGNoZWNrXG4gKi9cbmZ1bmN0aW9uIGlzQWxyZWFkeVJlZ2lzdGVyZWQoZXhpc3RpbmdSZWdpc3RyYXRpb25zOiBIYW5kbGVyUmVnaXN0cmF0aW9uW10sIG5ld1JlZ2lzdHJhdGlvbjogSGFuZGxlclJlZ2lzdHJhdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFleGlzdGluZ1JlZ2lzdHJhdGlvbnMuZmluZChcblx0XHQocikgPT4gci5uYW1lID09PSBuZXdSZWdpc3RyYXRpb24ubmFtZSAmJiByLm1ldGhvZCA9PT0gbmV3UmVnaXN0cmF0aW9uLm1ldGhvZCAmJiByLnRhcmdldE1ldGhvZCA9PT0gbmV3UmVnaXN0cmF0aW9uLnRhcmdldE1ldGhvZFxuXHQpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIG1ldGhvZCBhcyBjb250cm9sbGVyIGV4dGVuc2lvbiBob29rIGhhbmRsZXIuXG4gKlxuICogQ3VycmVudGx5LCBvbmx5IG1ldGhvZHMgb2YgcnVudGltZSBidWlsZGluZyBibG9ja3MgYXJlIHN1cHBvcnRlZC5cbiAqIEBwYXJhbSBuYW1lIENvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGhvb2sgaW50b1xuICogQHBhcmFtIG1ldGhvZCBNZXRob2QgdG8gaG9vayBpbnRvXG4gKiBAcmV0dXJucyBBIG1ldGhvZCBkZWNvcmF0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyPENFeHROYW1lIGV4dGVuZHMga2V5b2YgSG9va2FibGVDb250cm9sbGVyRXh0ZW5zaW9ucz4oXG5cdG5hbWU6IENFeHROYW1lLFxuXHRtZXRob2Q6IGtleW9mIEhvb2thYmxlQ29udHJvbGxlckV4dGVuc2lvbnNbQ0V4dE5hbWVdXG4pOiBNZXRob2REZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogeyBjb25zdHJ1Y3RvcjogRnVuY3Rpb24gfSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IG5ld1JlZ2lzdHJhdGlvbiA9IHsgbmFtZSwgbWV0aG9kOiBTdHJpbmcobWV0aG9kKSwgdGFyZ2V0TWV0aG9kOiBwcm9wZXJ0eUtleSB9O1xuXHRcdGNvbnN0IGluZGV4ID0gcmVnaXN0ZXJlZEluc3RhbmNlcy5pbmRleE9mKHRhcmdldC5jb25zdHJ1Y3Rvcik7XG5cblx0XHQvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgZXhhY3QgaGFuZGxlciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYXMgaGFuZGxlcnMgYXJlIHJlZ2lzdGVyZWQgc3RhdGljYWxseSAob24gdGhlIGNvbnN0cnVjdG9yKVxuXHRcdGlmIChpbmRleCAhPT0gLTEgJiYgIWlzQWxyZWFkeVJlZ2lzdGVyZWQocmVnaXN0ZXJlZEhhbmRsZXJzW2luZGV4XSwgbmV3UmVnaXN0cmF0aW9uKSkge1xuXHRcdFx0cmVnaXN0ZXJlZEhhbmRsZXJzW2luZGV4XS5wdXNoKG5ld1JlZ2lzdHJhdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlZ2lzdGVyZWRJbnN0YW5jZXMucHVzaCh0YXJnZXQuY29uc3RydWN0b3IpO1xuXHRcdFx0cmVnaXN0ZXJlZEhhbmRsZXJzLnB1c2goW25ld1JlZ2lzdHJhdGlvbl0pO1xuXHRcdH1cblx0fSBhcyBNZXRob2REZWNvcmF0b3I7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYWxsIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW4gdGFyZ2V0LlxuICogQHBhcmFtIHRhcmdldCBUYXJnZXQgY2xhc3MgdG8gaW5pdGlhbGl6ZSB0aGUgaGFuZGxlcnMgZm9yXG4gKiBAcGFyYW0gdGFyZ2V0LmNvbnN0cnVjdG9yXG4gKiBAcGFyYW0gY29udHJvbGxlciBQYWdlQ29udHJvbGxlciBpbnN0YW5jZSB0byBnZXQgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9ucyBpbnN0YW5jZXMgZnJvbVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnModGFyZ2V0OiB7IGNvbnN0cnVjdG9yOiBGdW5jdGlvbiB9LCBjb250cm9sbGVyOiBDb250cm9sbGVyKTogdm9pZCB7XG5cdGNvbnN0IGluZGV4ID0gcmVnaXN0ZXJlZEluc3RhbmNlcy5pbmRleE9mKHRhcmdldC5jb25zdHJ1Y3Rvcik7XG5cdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRjb25zdCBpbmRleGFibGVDb250cm9sbGVyID0gY29udHJvbGxlciBhcyB1bmtub3duIGFzIERlZXBGdW5jdGlvbk1hcDtcblx0XHRjb25zdCBpbmRleGFibGVUYXJnZXQgPSB0YXJnZXQgYXMgdW5rbm93biBhcyBGdW5jdGlvbk1hcDtcblxuXHRcdGZvciAoY29uc3QgcmVnaXN0ZXJlZEhhbmRsZXIgb2YgcmVnaXN0ZXJlZEhhbmRsZXJzW2luZGV4XSkge1xuXHRcdFx0Y29uc3QgaGFuZGxlckZ1bmN0aW9uID0gaW5kZXhhYmxlVGFyZ2V0W3JlZ2lzdGVyZWRIYW5kbGVyLnRhcmdldE1ldGhvZF0uYmluZCh0YXJnZXQpO1xuXG5cdFx0XHRpbmRleGFibGVDb250cm9sbGVyW3JlZ2lzdGVyZWRIYW5kbGVyLm5hbWVdW2BhdHRhY2gke1N0cmluZyhyZWdpc3RlcmVkSGFuZGxlci5tZXRob2QpfWBdKGhhbmRsZXJGdW5jdGlvbik7XG5cdFx0XHRjb250cm9sbGVyLmdldFZpZXcoKT8uYXR0YWNoQmVmb3JlRXhpdCgoKSA9PiB7XG5cdFx0XHRcdGluZGV4YWJsZUNvbnRyb2xsZXJbcmVnaXN0ZXJlZEhhbmRsZXIubmFtZV1bYGRldGFjaCR7U3RyaW5nKHJlZ2lzdGVyZWRIYW5kbGVyLm1ldGhvZCl9YF0oaGFuZGxlckZ1bmN0aW9uKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24geG1sVmlld1ByZXByb2Nlc3Nvcihzb3VyY2U6IG9iamVjdCwgX2NhbGxlcj86IHVua25vd24sIF9zZXR0aW5ncz86IG9iamVjdCk6IHZvaWQge1xuXHRjb25zdCBzb3VyY2VWaWV3ID0gc291cmNlIGFzIFhNTFZpZXc7XG5cdGNvbnN0IGNvbnRyb2xsZXIgPSBzb3VyY2VWaWV3LmdldENvbnRyb2xsZXIoKSBhcyBDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xuXHRpZiAoY29udHJvbGxlcikge1xuXHRcdGNvbnN0IG1hY3JvQVBJQ2hpbGQgPSBzb3VyY2VWaWV3LmZpbmRBZ2dyZWdhdGVkT2JqZWN0cyh0cnVlLCAocykgPT4gcy5pc0EoXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKTtcblx0XHRmb3IgKGNvbnN0IG1hbmFnZWRPYmplY3Qgb2YgbWFjcm9BUElDaGlsZCkge1xuXHRcdFx0aW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMo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
|
|
@@ -10,7 +10,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/base/ManagedObject", "sap/ui/
|
|
|
10
10
|
var property = ClassSupport.property;
|
|
11
11
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
12
12
|
function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
|
|
13
|
-
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
14
13
|
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
|
|
15
14
|
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
16
15
|
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
|
|
@@ -18,17 +17,17 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/base/ManagedObject", "sap/ui/
|
|
|
18
17
|
let ViewLoader = (_dec = defineUI5Class("sap.fe.base.jsx-runtime.MDXViewLoader"), _dec2 = property({
|
|
19
18
|
type: "string"
|
|
20
19
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_View) {
|
|
21
|
-
_inheritsLoose(ViewLoader, _View);
|
|
22
20
|
function ViewLoader(mSettings) {
|
|
23
21
|
var _this;
|
|
24
22
|
delete mSettings.cache;
|
|
25
23
|
_this = _View.call(this, mSettings) || this;
|
|
26
|
-
_initializerDefineProperty(_this, "viewName", _descriptor,
|
|
24
|
+
_initializerDefineProperty(_this, "viewName", _descriptor, _this);
|
|
27
25
|
_this.sViewName = _this.viewName;
|
|
28
|
-
_this._oContainingView =
|
|
26
|
+
_this._oContainingView = _this;
|
|
29
27
|
return _this;
|
|
30
28
|
}
|
|
31
29
|
_exports = ViewLoader;
|
|
30
|
+
_inheritsLoose(ViewLoader, _View);
|
|
32
31
|
var _proto = ViewLoader.prototype;
|
|
33
32
|
_proto.loadDependency = async function loadDependency(name) {
|
|
34
33
|
return new Promise(resolve => {
|
|
@@ -38,11 +37,10 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/base/ManagedObject", "sap/ui/
|
|
|
38
37
|
});
|
|
39
38
|
};
|
|
40
39
|
_proto.initViewSettings = async function initViewSettings(mSettings) {
|
|
41
|
-
var _getMetadata, _ref;
|
|
42
40
|
const viewConfig = this.getViewData();
|
|
43
41
|
const viewContent = viewConfig.viewContent || (await this.loadDependency(viewConfig._jsxViewName));
|
|
44
42
|
delete mSettings.cache;
|
|
45
|
-
if (viewContent
|
|
43
|
+
if (viewContent?.getMetadata?.().isA("sap.ui.core.mvc.Controller")) {
|
|
46
44
|
mSettings.controller = new viewContent(viewConfig);
|
|
47
45
|
} else {
|
|
48
46
|
this.viewContentFn = viewContent;
|
|
@@ -57,19 +55,17 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/base/ManagedObject", "sap/ui/
|
|
|
57
55
|
// @ts-ignore
|
|
58
56
|
;
|
|
59
57
|
_proto.createContent = function createContent(oController) {
|
|
60
|
-
|
|
61
|
-
ViewLoader.preprocessorData = this === null || this === void 0 ? void 0 : (_mPreprocessors = this.mPreprocessors) === null || _mPreprocessors === void 0 ? void 0 : _mPreprocessors.xml;
|
|
58
|
+
ViewLoader.preprocessorData = this?.mPreprocessors?.xml;
|
|
62
59
|
ViewLoader.controller = oController;
|
|
63
60
|
const owner = Component.getOwnerComponentFor(this) ?? {
|
|
64
61
|
runAsOwner: fn => fn()
|
|
65
62
|
};
|
|
66
63
|
return owner.runAsOwner(() => {
|
|
67
64
|
return ManagedObject.runWithPreprocessors(() => {
|
|
68
|
-
var _this$viewContentFn;
|
|
69
65
|
if (oController && oController.render) {
|
|
70
66
|
return oController.render();
|
|
71
67
|
}
|
|
72
|
-
return
|
|
68
|
+
return this.viewContentFn?.();
|
|
73
69
|
}, {
|
|
74
70
|
id: sId => {
|
|
75
71
|
return this.createId(sId);
|
|
@@ -81,13 +77,13 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/base/ManagedObject", "sap/ui/
|
|
|
81
77
|
});
|
|
82
78
|
};
|
|
83
79
|
return ViewLoader;
|
|
84
|
-
}(View),
|
|
80
|
+
}(View), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "viewName", [_dec2], {
|
|
85
81
|
configurable: true,
|
|
86
82
|
enumerable: true,
|
|
87
83
|
writable: true,
|
|
88
84
|
initializer: null
|
|
89
|
-
})
|
|
85
|
+
}), _class2)) || _class);
|
|
90
86
|
_exports = ViewLoader;
|
|
91
87
|
return _exports;
|
|
92
88
|
}, false);
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaWV3TG9hZGVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1ZpZXciLCJtU2V0dGluZ3MiLCJfdGhpcyIsImNhY2hlIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJzVmlld05hbWUiLCJ2aWV3TmFtZSIsIl9vQ29udGFpbmluZ1ZpZXciLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwibG9hZERlcGVuZGVuY3kiLCJuYW1lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzYXAiLCJ1aSIsInJlcXVpcmUiLCJNRFhDb250ZW50IiwiaW5pdFZpZXdTZXR0aW5ncyIsInZpZXdDb25maWciLCJnZXRWaWV3RGF0YSIsInZpZXdDb250ZW50IiwiX2pzeFZpZXdOYW1lIiwiZ2V0TWV0YWRhdGEiLCJpc0EiLCJjb250cm9sbGVyIiwidmlld0NvbnRlbnRGbiIsImdldENvbnRyb2xsZXJOYW1lIiwidmlld0RhdGEiLCJjb250cm9sbGVyTmFtZSIsImNyZWF0ZUNvbnRlbnQiLCJvQ29udHJvbGxlciIsInByZXByb2Nlc3NvckRhdGEiLCJtUHJlcHJvY2Vzc29ycyIsInhtbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJydW5Bc093bmVyIiwiZm4iLCJNYW5hZ2VkT2JqZWN0IiwicnVuV2l0aFByZXByb2Nlc3NvcnMiLCJyZW5kZXIiLCJpZCIsInNJZCIsImNyZWF0ZUlkIiwic2V0dGluZ3MiLCJWaWV3IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWaWV3TG9hZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5vbkFic3RyYWN0Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFhNTFByZXByb2Nlc3NvckNvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlclwiO1xuaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSB7IE1hbmFnZWRPYmplY3RFeCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxudHlwZSBKU1hWaWV3Q29udHJvbGxlciA9IENvbnRyb2xsZXIgJiB7IHJlbmRlcj86ICgpID0+IENvbnRyb2wgfTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5iYXNlLmpzeC1ydW50aW1lLk1EWFZpZXdMb2FkZXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZXdMb2FkZXIgZXh0ZW5kcyBWaWV3IHtcblx0c3RhdGljIHByZXByb2Nlc3NvckRhdGE/OiBYTUxQcmVwcm9jZXNzb3JDb250ZXh0O1xuXG5cdHN0YXRpYyBjb250cm9sbGVyOiBDb250cm9sbGVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dmlld05hbWUhOiBzdHJpbmc7XG5cblx0cHJpdmF0ZSB2aWV3Q29udGVudD86IENvbnRyb2w7XG5cblx0cHJpdmF0ZSB2aWV3Q29udGVudEZuPzogRnVuY3Rpb247XG5cblx0cHVibGljIHNWaWV3TmFtZTogc3RyaW5nO1xuXG5cdHB1YmxpYyBfb0NvbnRhaW5pbmdWaWV3OiB0aGlzO1xuXG5cdGNvbnN0cnVjdG9yKG1TZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRkZWxldGUgbVNldHRpbmdzLmNhY2hlO1xuXHRcdHN1cGVyKG1TZXR0aW5ncyk7XG5cdFx0dGhpcy5zVmlld05hbWUgPSB0aGlzLnZpZXdOYW1lO1xuXHRcdHRoaXMuX29Db250YWluaW5nVmlldyA9IHRoaXM7XG5cdH1cblxuXHRhc3luYyBsb2FkRGVwZW5kZW5jeShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdHNhcC51aS5yZXF1aXJlKFtuYW1lXSwgKE1EWENvbnRlbnQ6IEZ1bmN0aW9uKTogdm9pZCA9PiB7XG5cdFx0XHRcdHJlc29sdmUoTURYQ29udGVudCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdGFzeW5jIGluaXRWaWV3U2V0dGluZ3MobVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHZpZXdDb25maWcgPSB0aGlzLmdldFZpZXdEYXRhKCkgYXMgeyB2aWV3Q29udGVudD86IENvbnRyb2w7IF9qc3hWaWV3TmFtZTogc3RyaW5nIH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0XHRjb25zdCB2aWV3Q29udGVudCA9IHZpZXdDb25maWcudmlld0NvbnRlbnQgfHwgKChhd2FpdCB0aGlzLmxvYWREZXBlbmRlbmN5KHZpZXdDb25maWcuX2pzeFZpZXdOYW1lKSkgYXMgQ29udHJvbCB8IEZ1bmN0aW9uKTtcblx0XHRkZWxldGUgbVNldHRpbmdzLmNhY2hlO1xuXHRcdGlmICgodmlld0NvbnRlbnQgYXMgQ29udHJvbCk/LmdldE1ldGFkYXRhPy4oKS5pc0EoXCJzYXAudWkuY29yZS5tdmMuQ29udHJvbGxlclwiKSkge1xuXHRcdFx0bVNldHRpbmdzLmNvbnRyb2xsZXIgPSBuZXcgKHZpZXdDb250ZW50IGFzIE5vbkFic3RyYWN0Q2xhc3M8Q29udHJvbD4pKHZpZXdDb25maWcgYXMgJENvbnRyb2xTZXR0aW5ncyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmlld0NvbnRlbnRGbiA9IHZpZXdDb250ZW50IGFzIEZ1bmN0aW9uO1xuXHRcdH1cblx0fVxuXG5cdGdldENvbnRyb2xsZXJOYW1lKCk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB0aGlzLmdldFZpZXdEYXRhKCkgYXMgeyBjb250cm9sbGVyTmFtZTogc3RyaW5nIH07XG5cdFx0cmV0dXJuIHZpZXdEYXRhLmNvbnRyb2xsZXJOYW1lO1xuXHR9XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHQvLyBAdHMtaWdub3JlXG5cdGNyZWF0ZUNvbnRlbnQob0NvbnRyb2xsZXI6IEpTWFZpZXdDb250cm9sbGVyKTogQ29udHJvbCB7XG5cdFx0Vmlld0xvYWRlci5wcmVwcm9jZXNzb3JEYXRhID0gKHRoaXMgYXMgeyBtUHJlcHJvY2Vzc29ycz86IHsgeG1sPzogWE1MUHJlcHJvY2Vzc29yQ29udGV4dCB9IH0pPy5tUHJlcHJvY2Vzc29ycz8ueG1sO1xuXHRcdFZpZXdMb2FkZXIuY29udHJvbGxlciA9IG9Db250cm9sbGVyO1xuXG5cdFx0Y29uc3Qgb3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcykhID8/IHsgcnVuQXNPd25lcjogKGZuOiBGdW5jdGlvbikgPT4gZm4oKSB9O1xuXHRcdHJldHVybiBvd25lci5ydW5Bc093bmVyKCgpID0+IHtcblx0XHRcdHJldHVybiAoTWFuYWdlZE9iamVjdCBhcyBNYW5hZ2VkT2JqZWN0RXgpLnJ1bldpdGhQcmVwcm9jZXNzb3JzKFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG9Db250cm9sbGVyICYmIG9Db250cm9sbGVyLnJlbmRlcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLnJlbmRlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGVudEZuPy4oKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlkOiAoc0lkOiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZUlkKHNJZCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXR0aW5nczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dGhpcy5jb250cm9sbGVyID0gb0NvbnRyb2xsZXI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7TUFhcUJBLFVBQVUsSUFBQUMsSUFBQSxHQUQ5QkMsY0FBYyxDQUFDLHVDQUF1QyxDQUFDLEVBQUFDLEtBQUEsR0FNdERDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBSyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLEtBQUE7SUFXN0IsU0FBQVIsV0FBWVMsU0FBa0MsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDL0MsT0FBT0QsU0FBUyxDQUFDRSxLQUFLO01BQ3RCRCxLQUFBLEdBQUFGLEtBQUEsQ0FBQUksSUFBQSxPQUFNSCxTQUFTLENBQUM7TUFBQ0ksMEJBQUEsQ0FBQUgsS0FBQSxjQUFBSSxXQUFBLEVBQUFKLEtBQUE7TUFDakJBLEtBQUEsQ0FBS0ssU0FBUyxHQUFHTCxL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
|