text: /**
  @license
  Copyright (c) 2017 Vaadin Ltd.
  This program is available under Commercial Vaadin Add-On License 3.0, available at http://vaadin.com/license/cval-3.
  */
  /**
   * @polymerMixin
   */
  export const IncludedMixin = superClass => class IncludedMixin extends superClass {
    static get properties() {
      return {
        /**
         * A list of item fields that should not be mapped to form fields.
         *
         * When [`include`](#/elements/vaadin-crud-form#property-include) is defined, this property is ignored.
         *
         * Default is to exclude any private property.
         *
         * @type {string | RegExp}
         */
        exclude: {
          value: '^_',
          observer: '__onExcludeChange'
        },
  
        /**
         * A list of item properties that should be mapped to form fields.
         *
         * When it is defined [`exclude`](#/elements/vaadin-crud-form#property-exclude) is ignored.
         *
         * @type {string | !Array<string> | undefined}
         */
        include: {
          observer: '__onIncludeChange'
        }
      };
    }
  
    /** @private */
    __onExcludeChange(exclude) {
      if (typeof exclude == 'string') {
        this.exclude = exclude ? RegExp(exclude.replace(/, */g, '|'), 'i') : undefined;
      }
    }
  
    /** @private */
    __onIncludeChange(include) {
      if (typeof include == 'string') {
        this.include = include ? include.split(/, */) : undefined;
      } else if (!this._fields && Array.isArray(include)) {
        const item = {};
        this.include.forEach(path => this.__set(path, null, item));
        this._configure(item);
      }
    }
  };
  