@angular/platform-browser-dynamic
Version:
Angular - library for using Angular in a web browser with JIT compilation
137 lines (130 loc) • 3.75 kB
JavaScript
/**
* @license Angular v21.0.8
* (c) 2010-2025 Google LLC. https://angular.dev/
* License: MIT
*/
import * as i0 from '@angular/core';
import { Version, Injector, Compiler, ViewEncapsulation, Injectable, createPlatformFactory, COMPILER_OPTIONS, CompilerFactory } from '@angular/core';
import { CompilerConfig, ResourceLoader } from '@angular/compiler';
import { platformBrowser } from '@angular/platform-browser';
const VERSION = /* @__PURE__ */new Version('21.0.8');
const COMPILER_PROVIDERS = [{
provide: Compiler,
useFactory: () => new Compiler()
}];
class JitCompilerFactory {
_defaultOptions;
constructor(defaultOptions) {
const compilerOptions = {
defaultEncapsulation: ViewEncapsulation.Emulated
};
this._defaultOptions = [compilerOptions, ...defaultOptions];
}
createCompiler(options = []) {
const opts = _mergeOptions(this._defaultOptions.concat(options));
const injector = Injector.create({
providers: [COMPILER_PROVIDERS, {
provide: CompilerConfig,
useFactory: () => {
return new CompilerConfig({
defaultEncapsulation: opts.defaultEncapsulation,
preserveWhitespaces: opts.preserveWhitespaces
});
},
deps: []
}, opts.providers]
});
return injector.get(Compiler);
}
}
function _mergeOptions(optionsArr) {
return {
defaultEncapsulation: _lastDefined(optionsArr.map(options => options.defaultEncapsulation)),
providers: _mergeArrays(optionsArr.map(options => options.providers)),
preserveWhitespaces: _lastDefined(optionsArr.map(options => options.preserveWhitespaces))
};
}
function _lastDefined(args) {
for (let i = args.length - 1; i >= 0; i--) {
if (args[i] !== undefined) {
return args[i];
}
}
return undefined;
}
function _mergeArrays(parts) {
const result = [];
parts.forEach(part => part && result.push(...part));
return result;
}
class ResourceLoaderImpl extends ResourceLoader {
get(url) {
let resolve;
let reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
const xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'text';
xhr.onload = function () {
const response = xhr.response;
let status = xhr.status;
if (status === 0) {
status = response ? 200 : 0;
}
if (200 <= status && status <= 300) {
resolve(response);
} else {
reject(`Failed to load ${url}`);
}
};
xhr.onerror = function () {
reject(`Failed to load ${url}`);
};
xhr.send();
return promise;
}
static ɵfac = i0.ɵɵngDeclareFactory({
minVersion: "12.0.0",
version: "21.0.8",
ngImport: i0,
type: ResourceLoaderImpl,
deps: null,
target: i0.ɵɵFactoryTarget.Injectable
});
static ɵprov = i0.ɵɵngDeclareInjectable({
minVersion: "12.0.0",
version: "21.0.8",
ngImport: i0,
type: ResourceLoaderImpl
});
}
i0.ɵɵngDeclareClassMetadata({
minVersion: "12.0.0",
version: "21.0.8",
ngImport: i0,
type: ResourceLoaderImpl,
decorators: [{
type: Injectable
}]
});
const INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS = [{
provide: COMPILER_OPTIONS,
useValue: {
providers: [{
provide: ResourceLoader,
useClass: ResourceLoaderImpl,
deps: []
}]
},
multi: true
}, {
provide: CompilerFactory,
useClass: JitCompilerFactory,
deps: [COMPILER_OPTIONS]
}];
const platformBrowserDynamic = createPlatformFactory(platformBrowser, 'browserDynamic', INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS);
export { JitCompilerFactory, VERSION, platformBrowserDynamic };
//# sourceMappingURL=platform-browser-dynamic.mjs.map