_prepareShapeTransform() {
    let transforms = null;
    // Prepare shape transforms
    if ('transform' in this.shape && Array.isArray(this.shape.transform)) {
      transforms = this.shape.transform;
    }

    // Fallback: Use default transformations
    if (transforms === null) {
      transforms = defaultShapeTransform;
    }

    if (!Array.isArray(transforms)) {
      return [];
    }

    const result = [];

    for (let transform of transforms) {
      if (isString(transform)) {
        transform = {
          [transform]: true
        };
      } else if (isFunction(transform)) {
        transform = {
          custom: transform
        };
      }

      if (!isObject(transform)) {
        continue;
      }

      for (const [transformer, value] of Object.entries(transform)) {
        if (value === true) {
          result.push([transformer, {}]);
          break;
        }

        if (isObject(value) || isFunction(value)) {
          result.push([transformer, value]);
          break;
        }
      }
    }

    return result;
  }
Prepare shape transforms

@returns {Array<Array>} array of transform configurations
@private