| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Windows/SystemApps/Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy/core/js/ |
Upload File : |
//
// Copyright (C) Microsoft. All rights reserved.
//
define(['lib/knockout'], (ko) => {
let componentLoadCompleteCallback;
let componentLoadingPromise = new WinJS.Promise((reportComplete) => {
componentLoadCompleteCallback = reportComplete;
});
let pendingComponentLoads = 0;
let initialComponentLoadComplete = false;
function onComponentPreloaded(component) {
if (!initialComponentLoadComplete && --pendingComponentLoads == 0) {
initialComponentLoadComplete = true;
setImmediate(() => {
componentLoadCompleteCallback();
});
}
}
// Components to register and pre-load
let customComponents = {
'default-progress': {},
'default-contentView': {},
'backstack-chrome-breadcrumb': {},
'close-chrome-breadcrumb': {},
'oobe-chrome-breadcrumb': {},
'oobe-chrome-contentview': {},
'oobe-chrome-footer': {},
'oobe-progress': {},
'default-frame': {},
'oobe-frame': {},
'sspr-frame': {},
};
class KnockoutHelpers {
// Register components for the frame
registerFrameComponents() {
// Setup naming convention and path for templates and view models for requirejs to load
let componentLoader = {
getConfig: (name, callback) => {
let viewModelConfig = { require: name + '-vm' },
templateConfig = { require: 'lib/text!pageView/' + name + '-template.html' };
// The synchronous flag means components are *allowed* to load synchronously,
// after the initial load which is always async
callback({ viewModel: viewModelConfig, template: templateConfig, synchronous: true });
}
};
ko.components.loaders.unshift(componentLoader);
// Register virtual elements
Object.keys(customComponents).forEach((key) => {
ko.components.register(key, customComponents[key]);
});
// Preload async components and allow waiting on them
Object.keys(customComponents).forEach((key) => {
pendingComponentLoads++;
ko.components.get(key, onComponentPreloaded);
});
}
static waitForInitialComponentLoadAsync() {
return componentLoadingPromise;
}
}
return KnockoutHelpers;
});