UNPKG

wix-style-react

Version:
57 lines (46 loc) 2.65 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeDrivers = mergeDrivers; exports.flattenInternalDriver = flattenInternalDriver; exports.INTERNAL_DRIVER_SYMBOL = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } /** * Symbol for accessing driver methods which are internal * (we don't want to expose them to WSR consumers) */ var INTERNAL_DRIVER_SYMBOL = Symbol('internal-driver'); /** * Merge driver 2 into driver 1 * * It should take care of merging Internal methods into the target'shidden internal driver * (which sits under the [INTERNAL_DRIVER] property). Currently not supported. */ exports.INTERNAL_DRIVER_SYMBOL = INTERNAL_DRIVER_SYMBOL; function mergeDrivers(target, source) { // TODO: merge driver2's internal methods into driver1's internal methods. // TODO: make this a reduce that accepts a list of drivers. if (target[INTERNAL_DRIVER_SYMBOL]) { throw new Error('mergeDrivers(): Merging into a driver with INTERNAL_DRIVER methods, is currently not supported yet.'); } return _objectSpread(_objectSpread({}, target), source); } /** * Flatten driver by spreading all internal methods, * and removing the INTERNAL_DRIVER property. * Does not mutate the given driver. */ function flattenInternalDriver(driver) { if (driver[INTERNAL_DRIVER_SYMBOL]) { var driverCopy = Object.assign({}, driver); var driverInternalMethods = driver[INTERNAL_DRIVER_SYMBOL]; delete driverCopy[INTERNAL_DRIVER_SYMBOL]; return _objectSpread(_objectSpread({}, driverCopy), driverInternalMethods); } else { return driver; } }