import _cloneArrayBuffer_default from "./_cloneArrayBuffer.js";
import _cloneTypedArray_default from "./_cloneTypedArray.js";
import _cloneDataView_default from "./_cloneDataView.js";
import _cloneRegExp_default from "./_cloneRegExp.js";
import _cloneSymbol_default from "./_cloneSymbol.js";
var boolTag = "[object Boolean]", dateTag = "[object Date]", mapTag = "[object Map]", numberTag = "[object Number]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
function initCloneByTag(w, T, E) {
	var D = w.constructor;
	switch (T) {
		case arrayBufferTag: return _cloneArrayBuffer_default(w);
		case boolTag:
		case dateTag: return new D(+w);
		case dataViewTag: return _cloneDataView_default(w, E);
		case float32Tag:
		case float64Tag:
		case int8Tag:
		case int16Tag:
		case int32Tag:
		case uint8Tag:
		case uint8ClampedTag:
		case uint16Tag:
		case uint32Tag: return _cloneTypedArray_default(w, E);
		case mapTag: return new D();
		case numberTag:
		case stringTag: return new D(w);
		case regexpTag: return _cloneRegExp_default(w);
		case setTag: return new D();
		case symbolTag: return _cloneSymbol_default(w);
	}
}
var _initCloneByTag_default = initCloneByTag;
export { _initCloneByTag_default as default };
