2017-06-08_509bba0/509bba0_unpacked_with_node_modules/~/history/lib/useBasename.js
2022-07-26 10:06:20 -07:00

165 lines
No EOL
5 KiB
JavaScript
Executable file

'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 }; }
var _warning = require('warning');
var _warning2 = _interopRequireDefault(_warning);
var _ExecutionEnvironment = require('./ExecutionEnvironment');
var _PathUtils = require('./PathUtils');
var _runTransitionHook = require('./runTransitionHook');
var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
var _deprecate = require('./deprecate');
var _deprecate2 = _interopRequireDefault(_deprecate);
function useBasename(createHistory) {
return function () {
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var history = createHistory(options);
var basename = options.basename;
var checkedBaseHref = false;
function checkBaseHref() {
if (checkedBaseHref) {
return;
}
// Automatically use the value of <base href> in HTML
// documents as basename if it's not explicitly given.
if (basename == null && _ExecutionEnvironment.canUseDOM) {
var base = document.getElementsByTagName('base')[0];
var baseHref = base && base.getAttribute('href');
if (baseHref != null) {
basename = baseHref;
process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'Automatically setting basename using <base href> is deprecated and will ' + 'be removed in the next major release. The semantics of <base href> are ' + 'subtly different from basename. Please pass the basename explicitly in ' + 'the options to createHistory') : undefined;
}
}
checkedBaseHref = true;
}
function addBasename(location) {
checkBaseHref();
if (basename && location.basename == null) {
if (location.pathname.indexOf(basename) === 0) {
location.pathname = location.pathname.substring(basename.length);
location.basename = basename;
if (location.pathname === '') location.pathname = '/';
} else {
location.basename = '';
}
}
return location;
}
function prependBasename(location) {
checkBaseHref();
if (!basename) return location;
if (typeof location === 'string') location = _PathUtils.parsePath(location);
var pname = location.pathname;
var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';
var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;
var pathname = normalizedBasename + normalizedPathname;
return _extends({}, location, {
pathname: pathname
});
}
// Override all read methods with basename-aware versions.
function listenBefore(hook) {
return history.listenBefore(function (location, callback) {
_runTransitionHook2['default'](hook, addBasename(location), callback);
});
}
function listen(listener) {
return history.listen(function (location) {
listener(addBasename(location));
});
}
// Override all write methods with basename-aware versions.
function push(location) {
history.push(prependBasename(location));
}
function replace(location) {
history.replace(prependBasename(location));
}
function createPath(location) {
return history.createPath(prependBasename(location));
}
function createHref(location) {
return history.createHref(prependBasename(location));
}
function createLocation(location) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));
}
// deprecated
function pushState(state, path) {
if (typeof path === 'string') path = _PathUtils.parsePath(path);
push(_extends({ state: state }, path));
}
// deprecated
function replaceState(state, path) {
if (typeof path === 'string') path = _PathUtils.parsePath(path);
replace(_extends({ state: state }, path));
}
return _extends({}, history, {
listenBefore: listenBefore,
listen: listen,
push: push,
replace: replace,
createPath: createPath,
createHref: createHref,
createLocation: createLocation,
pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),
replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')
});
};
}
exports['default'] = useBasename;
module.exports = exports['default'];
//////////////////
// WEBPACK FOOTER
// ./~/history/lib/useBasename.js
// module id = 965
// module chunks = 4