| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- 'use strict';
- import objectUtils from '../lib/lodash/object.js';
- import EmitterMixin from '../emittermixin.js';
- import RootElement from './rootelement.js';
- import Renderer from './renderer.js';
- export default class TreeView {
- constructor( domElement ) {
- /**
- * Root of the DOM.
- */
- this.domRoot = domElement;
- this.observers = new Set();
- this.renderer = new Renderer( this );
- /**
- * Root of the view
- */
- this.viewRoot = new RootElement( domElement.name, this );
- this.viewRoot.cloneDomAttrs( domElement );
- this.viewRoot.bindDomElement( domElement );
- this.viewRoot.markToSync( 'CHILDREN_NEED_UPDATE' );
- }
- addObserver( observer ) {
- this.observers.add( observer );
- observer.init( this );
- observer.attach();
- }
- render() {
- for ( let observer of this.observers ) {
- observer.detach();
- }
- this.renderer.render();
- for ( let observer of this.observers ) {
- observer.attach();
- }
- }
- }
- objectUtils.extend( TreeView.prototype, EmitterMixin );
|