refactor(core): remove deprecated Renderer (#33019)
Removes the `Renderer` and related symbols which have been deprecated since version 4. BREAKING CHANGES: * `Renderer` has been removed. Use `Renderer2` instead. * `RenderComponentType` has been removed. Use `RendererType2` instead. * `RootRenderer` has been removed. Use `RendererFactory2` instead. PR Close #33019
This commit is contained in:

committed by
Alex Rickabaugh

parent
c507dda21a
commit
2265cb5938
@ -23,7 +23,6 @@ export {CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver} fr
|
||||
export {clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, resolveComponentResources as ɵresolveComponentResources} from './metadata/resource_loading';
|
||||
export {ReflectionCapabilities as ɵReflectionCapabilities} from './reflection/reflection_capabilities';
|
||||
export {GetterFn as ɵGetterFn, MethodFn as ɵMethodFn, SetterFn as ɵSetterFn} from './reflection/types';
|
||||
export {DirectRenderer as ɵDirectRenderer, RenderDebugInfo as ɵRenderDebugInfo} from './render/api';
|
||||
export {_sanitizeHtml as ɵ_sanitizeHtml} from './sanitization/html_sanitizer';
|
||||
export {_sanitizeStyle as ɵ_sanitizeStyle} from './sanitization/style_sanitizer';
|
||||
export {_sanitizeUrl as ɵ_sanitizeUrl} from './sanitization/url_sanitizer';
|
||||
|
@ -7,4 +7,4 @@
|
||||
*/
|
||||
|
||||
// Public API for render
|
||||
export {RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, RootRenderer} from './render/api';
|
||||
export {Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2} from './render/api';
|
||||
|
@ -7,119 +7,13 @@
|
||||
*/
|
||||
|
||||
import {InjectionToken} from '../di/injection_token';
|
||||
import {Injector} from '../di/injector';
|
||||
import {ViewEncapsulation} from '../metadata/view';
|
||||
import {injectRenderer2 as render3InjectRenderer2} from '../render3/view_engine_compatibility';
|
||||
import {noop} from '../util/noop';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated Use `RendererType2` (and `Renderer2`) instead.
|
||||
* @publicApi
|
||||
*/
|
||||
export class RenderComponentType {
|
||||
constructor(
|
||||
public id: string, public templateUrl: string, public slotCount: number,
|
||||
public encapsulation: ViewEncapsulation, public styles: Array<string|any[]>,
|
||||
public animations: any) {}
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Debug info is handled internally in the view engine now.
|
||||
*/
|
||||
export abstract class RenderDebugInfo {
|
||||
abstract get injector(): Injector;
|
||||
abstract get component(): any;
|
||||
abstract get providerTokens(): any[];
|
||||
abstract get references(): {[key: string]: any};
|
||||
abstract get context(): any;
|
||||
abstract get source(): string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use the `Renderer2` instead.
|
||||
*/
|
||||
export interface DirectRenderer {
|
||||
remove(node: any): void;
|
||||
appendChild(node: any, parent: any): void;
|
||||
insertBefore(node: any, refNode: any): void;
|
||||
nextSibling(node: any): any;
|
||||
parentElement(node: any): any;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use the `Renderer2` instead.
|
||||
* @publicApi
|
||||
*/
|
||||
export abstract class Renderer {
|
||||
abstract selectRootElement(selectorOrNode: string|any, debugInfo?: RenderDebugInfo): any;
|
||||
|
||||
abstract createElement(parentElement: any, name: string, debugInfo?: RenderDebugInfo): any;
|
||||
|
||||
abstract createViewRoot(hostElement: any): any;
|
||||
|
||||
abstract createTemplateAnchor(parentElement: any, debugInfo?: RenderDebugInfo): any;
|
||||
|
||||
abstract createText(parentElement: any, value: string, debugInfo?: RenderDebugInfo): any;
|
||||
|
||||
abstract projectNodes(parentElement: any, nodes: any[]): void;
|
||||
|
||||
abstract attachViewAfter(node: any, viewRootNodes: any[]): void;
|
||||
|
||||
abstract detachView(viewRootNodes: any[]): void;
|
||||
|
||||
abstract destroyView(hostElement: any, viewAllNodes: any[]): void;
|
||||
|
||||
abstract listen(renderElement: any, name: string, callback: Function): Function;
|
||||
|
||||
abstract listenGlobal(target: string, name: string, callback: Function): Function;
|
||||
|
||||
abstract setElementProperty(renderElement: any, propertyName: string, propertyValue: any): void;
|
||||
|
||||
abstract setElementAttribute(renderElement: any, attributeName: string, attributeValue?: string):
|
||||
void;
|
||||
|
||||
/**
|
||||
* Used only in debug mode to serialize property changes to dom nodes as attributes.
|
||||
*/
|
||||
abstract setBindingDebugInfo(renderElement: any, propertyName: string, propertyValue: string):
|
||||
void;
|
||||
|
||||
abstract setElementClass(renderElement: any, className: string, isAdd: boolean): void;
|
||||
|
||||
abstract setElementStyle(renderElement: any, styleName: string, styleValue?: string): void;
|
||||
|
||||
abstract invokeElementMethod(renderElement: any, methodName: string, args?: any[]): void;
|
||||
|
||||
abstract setText(renderNode: any, text: string): void;
|
||||
|
||||
abstract animate(
|
||||
element: any, startingStyles: any, keyframes: any[], duration: number, delay: number,
|
||||
easing: string, previousPlayers?: any[]): any;
|
||||
}
|
||||
|
||||
export const Renderer2Interceptor = new InjectionToken<Renderer2[]>('Renderer2Interceptor');
|
||||
|
||||
/**
|
||||
* Injectable service that provides a low-level interface for modifying the UI.
|
||||
*
|
||||
* Use this service to bypass Angular's templating and make custom UI changes that can't be
|
||||
* expressed declaratively. For example if you need to set a property or an attribute whose name is
|
||||
* not statically known, use {@link Renderer#setElementProperty setElementProperty} or
|
||||
* {@link Renderer#setElementAttribute setElementAttribute} respectively.
|
||||
*
|
||||
* If you are implementing a custom renderer, you must implement this interface.
|
||||
*
|
||||
* The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.
|
||||
*
|
||||
* @deprecated Use `RendererFactory2` instead.
|
||||
* @publicApi
|
||||
*/
|
||||
export abstract class RootRenderer {
|
||||
abstract renderComponent(componentType: RenderComponentType): Renderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used by `RendererFactory2` to associate custom rendering data and styles
|
||||
* with a rendering implementation.
|
||||
|
@ -11,15 +11,14 @@ import {INJECTOR, Injector, resolveForwardRef} from '../di';
|
||||
import {ElementRef} from '../linker/element_ref';
|
||||
import {TemplateRef} from '../linker/template_ref';
|
||||
import {ViewContainerRef} from '../linker/view_container_ref';
|
||||
import {Renderer as RendererV1, Renderer2} from '../render/api';
|
||||
import {Renderer2} from '../render/api';
|
||||
import {isObservable} from '../util/lang';
|
||||
import {stringify} from '../util/stringify';
|
||||
|
||||
import {createChangeDetectorRef, createInjector, createRendererV1} from './refs';
|
||||
import {createChangeDetectorRef, createInjector} from './refs';
|
||||
import {BindingDef, BindingFlags, DepDef, DepFlags, NodeDef, NodeFlags, OutputDef, OutputType, ProviderData, QueryValueType, Services, ViewData, ViewFlags, ViewState, asElementData, asProviderData, shouldCallLifecycleInitHook} from './types';
|
||||
import {calcBindingFlags, checkBinding, dispatchEvent, isComponentView, splitDepsDsl, splitMatchedQueriesDsl, tokenKey, viewParentEl} from './util';
|
||||
|
||||
const RendererV1TokenKey = tokenKey(RendererV1);
|
||||
const Renderer2TokenKey = tokenKey(Renderer2);
|
||||
const ElementRefTokenKey = tokenKey(ElementRef);
|
||||
const ViewContainerRefTokenKey = tokenKey(ViewContainerRef);
|
||||
@ -359,10 +358,6 @@ export function resolveDep(
|
||||
while (searchView) {
|
||||
if (elDef) {
|
||||
switch (tokenKey) {
|
||||
case RendererV1TokenKey: {
|
||||
const compView = findCompView(searchView, elDef, allowPrivateServices);
|
||||
return createRendererV1(compView);
|
||||
}
|
||||
case Renderer2TokenKey: {
|
||||
const compView = findCompView(searchView, elDef, allowPrivateServices);
|
||||
return compView.renderer;
|
||||
|
@ -18,7 +18,6 @@ import {InternalNgModuleRef, NgModuleRef} from '../linker/ng_module_factory';
|
||||
import {TemplateRef} from '../linker/template_ref';
|
||||
import {ViewContainerRef} from '../linker/view_container_ref';
|
||||
import {EmbeddedViewRef, InternalViewRef, ViewRef} from '../linker/view_ref';
|
||||
import {Renderer as RendererV1, Renderer2} from '../render/api';
|
||||
import {stringify} from '../util/stringify';
|
||||
import {VERSION} from '../version';
|
||||
|
||||
@ -356,122 +355,6 @@ export function nodeValue(view: ViewData, index: number): any {
|
||||
throw new Error(`Illegal state: read nodeValue for node index ${index}`);
|
||||
}
|
||||
|
||||
export function createRendererV1(view: ViewData): RendererV1 {
|
||||
return new RendererAdapter(view.renderer);
|
||||
}
|
||||
|
||||
class RendererAdapter implements RendererV1 {
|
||||
constructor(private delegate: Renderer2) {}
|
||||
selectRootElement(selectorOrNode: string|Element): Element {
|
||||
return this.delegate.selectRootElement(selectorOrNode);
|
||||
}
|
||||
|
||||
createElement(parent: Element|DocumentFragment, namespaceAndName: string): Element {
|
||||
const [ns, name] = splitNamespace(namespaceAndName);
|
||||
const el = this.delegate.createElement(name, ns);
|
||||
if (parent) {
|
||||
this.delegate.appendChild(parent, el);
|
||||
}
|
||||
return el;
|
||||
}
|
||||
|
||||
createViewRoot(hostElement: Element): Element|DocumentFragment { return hostElement; }
|
||||
|
||||
createTemplateAnchor(parentElement: Element|DocumentFragment): Comment {
|
||||
const comment = this.delegate.createComment('');
|
||||
if (parentElement) {
|
||||
this.delegate.appendChild(parentElement, comment);
|
||||
}
|
||||
return comment;
|
||||
}
|
||||
|
||||
createText(parentElement: Element|DocumentFragment, value: string): any {
|
||||
const node = this.delegate.createText(value);
|
||||
if (parentElement) {
|
||||
this.delegate.appendChild(parentElement, node);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
projectNodes(parentElement: Element|DocumentFragment, nodes: Node[]) {
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
this.delegate.appendChild(parentElement, nodes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
attachViewAfter(node: Node, viewRootNodes: Node[]) {
|
||||
const parentElement = this.delegate.parentNode(node);
|
||||
const nextSibling = this.delegate.nextSibling(node);
|
||||
for (let i = 0; i < viewRootNodes.length; i++) {
|
||||
this.delegate.insertBefore(parentElement, viewRootNodes[i], nextSibling);
|
||||
}
|
||||
}
|
||||
|
||||
detachView(viewRootNodes: (Element|Text|Comment)[]) {
|
||||
for (let i = 0; i < viewRootNodes.length; i++) {
|
||||
const node = viewRootNodes[i];
|
||||
const parentElement = this.delegate.parentNode(node);
|
||||
this.delegate.removeChild(parentElement, node);
|
||||
}
|
||||
}
|
||||
|
||||
destroyView(hostElement: Element|DocumentFragment, viewAllNodes: Node[]) {
|
||||
for (let i = 0; i < viewAllNodes.length; i++) {
|
||||
this.delegate.destroyNode !(viewAllNodes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
listen(renderElement: any, name: string, callback: Function): Function {
|
||||
return this.delegate.listen(renderElement, name, <any>callback);
|
||||
}
|
||||
|
||||
listenGlobal(target: string, name: string, callback: Function): Function {
|
||||
return this.delegate.listen(target, name, <any>callback);
|
||||
}
|
||||
|
||||
setElementProperty(
|
||||
renderElement: Element|DocumentFragment, propertyName: string, propertyValue: any): void {
|
||||
this.delegate.setProperty(renderElement, propertyName, propertyValue);
|
||||
}
|
||||
|
||||
setElementAttribute(renderElement: Element, namespaceAndName: string, attributeValue?: string):
|
||||
void {
|
||||
const [ns, name] = splitNamespace(namespaceAndName);
|
||||
if (attributeValue != null) {
|
||||
this.delegate.setAttribute(renderElement, name, attributeValue, ns);
|
||||
} else {
|
||||
this.delegate.removeAttribute(renderElement, name, ns);
|
||||
}
|
||||
}
|
||||
|
||||
setBindingDebugInfo(renderElement: Element, propertyName: string, propertyValue: string): void {}
|
||||
|
||||
setElementClass(renderElement: Element, className: string, isAdd: boolean): void {
|
||||
if (isAdd) {
|
||||
this.delegate.addClass(renderElement, className);
|
||||
} else {
|
||||
this.delegate.removeClass(renderElement, className);
|
||||
}
|
||||
}
|
||||
|
||||
setElementStyle(renderElement: HTMLElement, styleName: string, styleValue?: string): void {
|
||||
if (styleValue != null) {
|
||||
this.delegate.setStyle(renderElement, styleName, styleValue);
|
||||
} else {
|
||||
this.delegate.removeStyle(renderElement, styleName);
|
||||
}
|
||||
}
|
||||
|
||||
invokeElementMethod(renderElement: Element, methodName: string, args: any[]): void {
|
||||
(renderElement as any)[methodName].apply(renderElement, args);
|
||||
}
|
||||
|
||||
setText(renderNode: Text, text: string): void { this.delegate.setValue(renderNode, text); }
|
||||
|
||||
animate(): any { throw new Error('Renderer.animate is no longer supported!'); }
|
||||
}
|
||||
|
||||
|
||||
export function createNgModuleRef(
|
||||
moduleType: Type<any>, parent: Injector, bootstrapComponents: Type<any>[],
|
||||
def: NgModuleDefinition): NgModuleRef<any> {
|
||||
|
Reference in New Issue
Block a user