- Complete React app with 7 developer tools - JSON Tool with visual structured editor - Serialize Tool with visual structured editor - URL, Base64, CSV/JSON, Beautifier, Diff tools - Responsive navigation with dropdown menu - Dark/light mode toggle - Mobile-responsive design with sticky header - All tools working with copy/paste functionality
71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
'use strict';
|
|
var $ = require('../internals/export');
|
|
var anObject = require('../internals/an-object');
|
|
var anObjectOrUndefined = require('../internals/an-object-or-undefined');
|
|
var call = require('../internals/function-call');
|
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
var getBuiltIn = require('../internals/get-built-in');
|
|
var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
|
|
var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
|
|
var getModeOption = require('../internals/get-mode-option');
|
|
var iteratorCloseAll = require('../internals/iterator-close-all');
|
|
var iteratorZip = require('../internals/iterator-zip');
|
|
|
|
var create = getBuiltIn('Object', 'create');
|
|
var ownKeys = getBuiltIn('Reflect', 'ownKeys');
|
|
var push = uncurryThis([].push);
|
|
var THROW = 'throw';
|
|
|
|
// `Iterator.zipKeyed` method
|
|
// https://github.com/tc39/proposal-joint-iteration
|
|
$({ target: 'Iterator', stat: true, forced: true }, {
|
|
zipKeyed: function zipKeyed(iterables /* , options */) {
|
|
anObject(iterables);
|
|
var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
|
|
var mode = getModeOption(options);
|
|
var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
|
|
|
|
var iters = [];
|
|
var padding = [];
|
|
var allKeys = ownKeys(iterables);
|
|
var keys = [];
|
|
var propertyIsEnumerable = propertyIsEnumerableModule.f;
|
|
var i, key, value;
|
|
for (i = 0; i < allKeys.length; i++) try {
|
|
key = allKeys[i];
|
|
if (!call(propertyIsEnumerable, iterables, key)) continue;
|
|
value = iterables[key];
|
|
if (value !== undefined) {
|
|
push(keys, key);
|
|
push(iters, getIteratorFlattenable(value, true));
|
|
}
|
|
} catch (error) {
|
|
return iteratorCloseAll(iters, THROW, error);
|
|
}
|
|
|
|
var iterCount = iters.length;
|
|
if (mode === 'longest') {
|
|
if (paddingOption === undefined) {
|
|
for (i = 0; i < iterCount; i++) push(padding, undefined);
|
|
} else {
|
|
for (i = 0; i < keys.length; i++) {
|
|
try {
|
|
value = paddingOption[keys[i]];
|
|
} catch (error) {
|
|
return iteratorCloseAll(iters, THROW, error);
|
|
}
|
|
push(padding, value);
|
|
}
|
|
}
|
|
}
|
|
|
|
return iteratorZip(iters, mode, padding, function (results) {
|
|
var obj = create(null);
|
|
for (var j = 0; j < iterCount; j++) {
|
|
obj[keys[j]] = results[j];
|
|
}
|
|
return obj;
|
|
});
|
|
}
|
|
});
|