|
|
@@ -115,93 +115,12 @@ export default class View {
|
|
|
this._element = el;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Initializes the view.
|
|
|
- */
|
|
|
- init() {
|
|
|
- this._initRegions();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Registers a region in {@link #regions}.
|
|
|
- *
|
|
|
- * let view = new View();
|
|
|
- *
|
|
|
- * // region.name == "foo", region.element == view.element.firstChild
|
|
|
- * view.register( 'foo', el => el.firstChild );
|
|
|
- *
|
|
|
- * // region.name == "bar", region.element == view.element.querySelector( 'span' )
|
|
|
- * view.register( new Region( 'bar' ), 'span' );
|
|
|
- *
|
|
|
- * // region.name == "bar", region.element == view.element.querySelector( '#div#id' )
|
|
|
- * view.register( 'bar', 'div#id', true );
|
|
|
- *
|
|
|
- * // region.name == "baz", region.element == null
|
|
|
- * view.register( 'baz', true );
|
|
|
- *
|
|
|
- * @param {String|Region} stringOrRegion The name or an instance of the Region
|
|
|
- * to be registered. If `String`, the region will be created on the fly.
|
|
|
- * @param {String|Function|true} regionSelector The selector to retrieve region's element
|
|
|
- * in DOM when the region instance is initialized (see {@link Region#init}, {@link #init}).
|
|
|
- * @param {Boolean} [override] When set `true` it will allow overriding of registered regions.
|
|
|
- */
|
|
|
- register( ...args ) {
|
|
|
- let region, regionName;
|
|
|
-
|
|
|
- if ( typeof args[ 0 ] === 'string' ) {
|
|
|
- regionName = args[ 0 ];
|
|
|
- region = this.regions.get( regionName ) || new Region( regionName );
|
|
|
- } else if ( args[ 0 ] instanceof Region ) {
|
|
|
- regionName = args[ 0 ].name;
|
|
|
- region = args[ 0 ];
|
|
|
- } else {
|
|
|
- /**
|
|
|
- * A name of the region or an instance of Region is required.
|
|
|
- *
|
|
|
- * @error ui-view-register-wrongtype
|
|
|
- */
|
|
|
- throw new CKEditorError( 'ui-view-register-wrongtype' );
|
|
|
- }
|
|
|
-
|
|
|
- const regionSelector = args[ 1 ];
|
|
|
-
|
|
|
- if ( !regionSelector || !isValidRegionSelector( regionSelector ) ) {
|
|
|
- /**
|
|
|
- * The selector must be String, Function or `true`.
|
|
|
- *
|
|
|
- * @error ui-view-register-badselector
|
|
|
- */
|
|
|
- throw new CKEditorError( 'ui-view-register-badselector' );
|
|
|
- }
|
|
|
-
|
|
|
- const registered = this.regions.get( regionName );
|
|
|
-
|
|
|
- if ( !registered ) {
|
|
|
- this.regions.add( region );
|
|
|
- } else {
|
|
|
- if ( registered !== region ) {
|
|
|
- if ( !args[ 2 ] ) {
|
|
|
- /**
|
|
|
- * Overriding is possible only when `override` flag is set.
|
|
|
- *
|
|
|
- * @error ui-view-register-override
|
|
|
- */
|
|
|
- throw new CKEditorError( 'ui-view-register-override' );
|
|
|
- }
|
|
|
-
|
|
|
- this.regions.remove( registered );
|
|
|
- this.regions.add( region );
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- this._regionsSelectors[ regionName ] = regionSelector;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* And entry point to the interface which allows binding attributes of {@link View#model}
|
|
|
* to the DOM items like HTMLElement attributes or Text Node `textContent`, so their state
|
|
|
* is synchronized with {@link View#model}.
|
|
|
*
|
|
|
+ * @readonly
|
|
|
* @property attributeBinder
|
|
|
*/
|
|
|
get attributeBinder() {
|
|
|
@@ -283,6 +202,88 @@ export default class View {
|
|
|
return ( this._attributeBinder = binder );
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Initializes the view.
|
|
|
+ */
|
|
|
+ init() {
|
|
|
+ this._initRegions();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Registers a region in {@link #regions}.
|
|
|
+ *
|
|
|
+ * let view = new View();
|
|
|
+ *
|
|
|
+ * // region.name == "foo", region.element == view.element.firstChild
|
|
|
+ * view.register( 'foo', el => el.firstChild );
|
|
|
+ *
|
|
|
+ * // region.name == "bar", region.element == view.element.querySelector( 'span' )
|
|
|
+ * view.register( new Region( 'bar' ), 'span' );
|
|
|
+ *
|
|
|
+ * // region.name == "bar", region.element == view.element.querySelector( '#div#id' )
|
|
|
+ * view.register( 'bar', 'div#id', true );
|
|
|
+ *
|
|
|
+ * // region.name == "baz", region.element == null
|
|
|
+ * view.register( 'baz', true );
|
|
|
+ *
|
|
|
+ * @param {String|Region} stringOrRegion The name or an instance of the Region
|
|
|
+ * to be registered. If `String`, the region will be created on the fly.
|
|
|
+ * @param {String|Function|true} regionSelector The selector to retrieve region's element
|
|
|
+ * in DOM when the region instance is initialized (see {@link Region#init}, {@link #init}).
|
|
|
+ * @param {Boolean} [override] When set `true` it will allow overriding of registered regions.
|
|
|
+ */
|
|
|
+ register( ...args ) {
|
|
|
+ let region, regionName;
|
|
|
+
|
|
|
+ if ( typeof args[ 0 ] === 'string' ) {
|
|
|
+ regionName = args[ 0 ];
|
|
|
+ region = this.regions.get( regionName ) || new Region( regionName );
|
|
|
+ } else if ( args[ 0 ] instanceof Region ) {
|
|
|
+ regionName = args[ 0 ].name;
|
|
|
+ region = args[ 0 ];
|
|
|
+ } else {
|
|
|
+ /**
|
|
|
+ * A name of the region or an instance of Region is required.
|
|
|
+ *
|
|
|
+ * @error ui-view-register-wrongtype
|
|
|
+ */
|
|
|
+ throw new CKEditorError( 'ui-view-register-wrongtype' );
|
|
|
+ }
|
|
|
+
|
|
|
+ const regionSelector = args[ 1 ];
|
|
|
+
|
|
|
+ if ( !regionSelector || !isValidRegionSelector( regionSelector ) ) {
|
|
|
+ /**
|
|
|
+ * The selector must be String, Function or `true`.
|
|
|
+ *
|
|
|
+ * @error ui-view-register-badselector
|
|
|
+ */
|
|
|
+ throw new CKEditorError( 'ui-view-register-badselector' );
|
|
|
+ }
|
|
|
+
|
|
|
+ const registered = this.regions.get( regionName );
|
|
|
+
|
|
|
+ if ( !registered ) {
|
|
|
+ this.regions.add( region );
|
|
|
+ } else {
|
|
|
+ if ( registered !== region ) {
|
|
|
+ if ( !args[ 2 ] ) {
|
|
|
+ /**
|
|
|
+ * Overriding is possible only when `override` flag is set.
|
|
|
+ *
|
|
|
+ * @error ui-view-register-override
|
|
|
+ */
|
|
|
+ throw new CKEditorError( 'ui-view-register-override' );
|
|
|
+ }
|
|
|
+
|
|
|
+ this.regions.remove( registered );
|
|
|
+ this.regions.add( region );
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this._regionsSelectors[ regionName ] = regionSelector;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Applies template to existing DOM element in the context of a View.
|
|
|
*
|