UNPKG

react-selectize

Version:

A Stateless & Flexible Select component for React inspired by Selectize

100 lines (73 loc) 3.39 kB
'use strict'; exports.__esModule = true; var _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; }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var _qs = require('qs'); var _qs2 = _interopRequireDefault(_qs); var _runTransitionHook = require('./runTransitionHook'); var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook); function defaultStringifyQuery(query) { return _qs2['default'].stringify(query, { arrayFormat: 'brackets' }); } function defaultParseQueryString(queryString) { return _qs2['default'].parse(queryString); } /** * Returns a new createHistory function that may be used to create * history objects that know how to handle URL queries. */ function useQueries(createHistory) { return function () { var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var stringifyQuery = options.stringifyQuery; var parseQueryString = options.parseQueryString; var historyOptions = _objectWithoutProperties(options, ['stringifyQuery', 'parseQueryString']); var history = createHistory(historyOptions); if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery; if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString; function addQuery(location) { if (location.query == null) location.query = parseQueryString(location.search.substring(1)); return location; } function appendQuery(pathname, query) { var queryString = undefined; if (query && (queryString = stringifyQuery(query)) !== '') return pathname + (pathname.indexOf('?') === -1 ? '?' : '&') + queryString; return pathname; } // Override all read methods with query-aware versions. function listenBefore(hook) { return history.listenBefore(function (location, callback) { _runTransitionHook2['default'](hook, addQuery(location), callback); }); } function listen(listener) { return history.listen(function (location) { listener(addQuery(location)); }); } // Override all write methods with query-aware versions. function pushState(state, pathname, query) { return history.pushState(state, appendQuery(pathname, query)); } function replaceState(state, pathname, query) { return history.replaceState(state, appendQuery(pathname, query)); } function createPath(pathname, query) { return history.createPath(appendQuery(pathname, query)); } function createHref(pathname, query) { return history.createHref(appendQuery(pathname, query)); } return _extends({}, history, { listenBefore: listenBefore, listen: listen, pushState: pushState, replaceState: replaceState, createPath: createPath, createHref: createHref }); }; } exports['default'] = useQueries; module.exports = exports['default'];