Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / state-tree / remapProps.js
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.withRemapProps = withRemapProps;
exports.remapProps = exports.remap = remap;
exports.default = void 0;

var _react = _interopRequireDefault(require("react"));

var _mobxReact = require("xmobx/mobx-react");

var _exotic = require("exotic");

var _observableUtils = require("../observable-utils");

var _jsxFileName = "state-tree/remapProps.js";

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

// const withContext = (childContextTypes, getChildContext) => Target => {
//   const factory = observer(Target)
//   class WithContext extends React.Component {
//     static childContextTypes = childContextTypes
//     getChildContext = () => getChildContext(this.props)
//     render() {
//       return <Target {...this.props} />
//     }
//   }
//   return WithContext
// }
// const mapKeys = (obj, func) =>
//   Object.keys(obj).reduce((result, key) => {
//     const val = obj[key]
//     result[func(val, key)] = val
//     return result
//   }, {})

/**
 * @desc remap properties from 1 to another, for example, apis with inconsistent naming
 * @symb 🗺
 *
 * @param  {string | Object} from property name string, or {[from]: to}
 * @param  {string} [to=undefined] property name to change key to
 *
 * @example
 *  const disToDat = remap({dis: 'dat'})
 *  disToDat({dis: 1, other: true})
 *  //=> {dist: 1, other: true}
 *
 */
function remap(from, to) {
  const remapFromTo = (0, _exotic.isObj)(from) ? from : {
    [from]: to
  };
  const keys = Object.keys(remapFromTo);
  /**
   * @param {React.Props | Object} props
   * @return {React.Props | Object}
   */

  return function remapObjCurried(props) {
    // ensure they are not frozen
    const remapped = _objectSpread({}, props); // can add for perf if needed
    // let didChange = false
    // if hasOwnProp ? didChange = true


    for (let index = 0; index < keys.length; index++) {
      const fromKey = keys[index];

      if ((0, _exotic.hasOwnProp)(props, fromKey)) {
        const toKey = remapFromTo[fromKey];
        remapped[toKey] = remapFromTo[fromKey];
      }
    }

    return remapped;
  };
}

function toDocumentObjectModelAttributes(props) {
  const validProps = {};

  for (const key in props) {
    if (/^(data-|aria-)/.test(key)) {
      validProps[key] = props[key];
    }

    if (/^(data-|aria-)/.test(key)) {
      validProps[key] = props[key];
    }
  }
}
/**
 * @see remapProps
 *
 * only problem with this is the Refs
 * @see https://stackoverflow.com/questions/42980402/react-passing-ref-from-dumb-componentchild-to-smart-componentparent
 */


function withRemapProps(from, to) {
  const remapPropsFor = remap(from, to);
  return function remapPropsDecorator(Target) {
    var _class;

    let RemappedPropsComponent = (0, _mobxReact.observer)(_class = class RemappedPropsComponent extends _react.default.Component {
      // @computed
      get attributes() {
        return remapPropsFor(this.props);
      }

      render() {
        return _react.default.createElement(Target, _extends({}, this.attributes, {
          __source: {
            fileName: _jsxFileName,
            lineNumber: 97
          },
          __self: this
        }));
      }

    }) || _class;

    (0, _observableUtils.decorateComponentStatics)(RemappedPropsComponent, Target);
    return RemappedPropsComponent;
  };
}

var _default = remap;
exports.default = _default;