src/IndexedApi.js
-
- /**
- Aggregation api for properties providing indexed or array-like access to child properties.
-
- @see {@link ArrayProperty}
- @see {@link IndexedProperty}
- */
- export default class IndexedApi {
- constructor(property) {
- this._property = property;
- }
-
- impl() {
- return this._property.__();
- }
-
- isActive() {
- return this._property.isActive();
- }
-
- shadow() {
- return this._property._();
- }
-
- //------------------------------------------------------------------------------------------------------
- // Select Array methods:
- // (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
- //------------------------------------------------------------------------------------------------------
-
- get length() {
- if (this.isActive()) {
- return this.impl().length;
- }
- }
-
- clear() {
- if (this.isActive()) {
- this.impl().clear();
- }
- }
-
- concat(...values) {
- if (this.isActive()) {
- return this.impl().concat(...values);
- }
- }
-
- pop() {
- if (this.isActive()) {
- return this.impl().pop();
- }
- }
-
- push(...values) {
- if (this.isActive()) {
- return this.impl().push(...values);
- }
- }
-
- remove(idx) {
- if (this.isActive()) {
- return this.impl().remove(idx);
- }
- }
-
- shift() {
- if (this.isActive()) {
- return this.impl().shift();
- }
- }
-
- splice(start, deleteCount, ...newItems) {
- if (this.isActive()) {
- return this.impl().splice(start, deleteCount, ...newItems);
- }
- }
-
- unshift(...values) {
- if (this.isActive()) {
- return this.impl().unshift(...values);
- }
- }
- }