@storybook/addon-docs
Version:
Document component usage and properties in Markdown
4 lines (2 loc) • 10.5 kB
JavaScript
function debounce(func,debounceMs,{signal,edges}={}){let pendingThis,pendingArgs=null,leading=edges!=null&&edges.includes("leading"),trailing=edges==null||edges.includes("trailing"),invoke=()=>{pendingArgs!==null&&(func.apply(pendingThis,pendingArgs),pendingThis=void 0,pendingArgs=null);},onTimerEnd=()=>{trailing&&invoke(),cancel();},timeoutId=null,schedule=()=>{timeoutId!=null&&clearTimeout(timeoutId),timeoutId=setTimeout(()=>{timeoutId=null,onTimerEnd();},debounceMs);},cancelTimer=()=>{timeoutId!==null&&(clearTimeout(timeoutId),timeoutId=null);},cancel=()=>{cancelTimer(),pendingThis=void 0,pendingArgs=null;},flush=()=>{cancelTimer(),invoke();},debounced=function(...args){if(signal?.aborted)return;pendingThis=this,pendingArgs=args;let isFirstCall=timeoutId==null;schedule(),leading&&isFirstCall&&invoke();};return debounced.schedule=schedule,debounced.cancel=cancel,debounced.flush=flush,signal?.addEventListener("abort",cancel,{once:!0}),debounced}function debounce2(func,debounceMs=0,options={}){typeof options!="object"&&(options={});let{signal,leading=!1,trailing=!0,maxWait}=options,edges=Array(2);leading&&(edges[0]="leading"),trailing&&(edges[1]="trailing");let result,pendingAt=null,_debounced=debounce(function(...args){result=func.apply(this,args),pendingAt=null;},debounceMs,{signal,edges}),debounced=function(...args){if(maxWait!=null){if(pendingAt===null)pendingAt=Date.now();else if(Date.now()-pendingAt>=maxWait)return result=func.apply(this,args),pendingAt=Date.now(),_debounced.cancel(),_debounced.schedule(),result}return _debounced.apply(this,args),result},flush=()=>(_debounced.flush(),result);return debounced.cancel=_debounced.cancel,debounced.flush=flush,debounced}function isSymbol(value){return typeof value=="symbol"||value instanceof Symbol}function toNumber(value){return isSymbol(value)?NaN:Number(value)}function toFinite(value){return value?(value=toNumber(value),value===1/0||value===-1/0?(value<0?-1:1)*Number.MAX_VALUE:value===value?value:0):value===0?value:0}function toInteger(value){let finite=toFinite(value),remainder=finite%1;return remainder?finite-remainder:finite}function uniq(arr){return Array.from(new Set(arr))}function isPrimitive(value){return value==null||typeof value!="object"&&typeof value!="function"}function isTypedArray(x){return ArrayBuffer.isView(x)&&!(x instanceof DataView)}function getSymbols(object){return Object.getOwnPropertySymbols(object).filter(symbol=>Object.prototype.propertyIsEnumerable.call(object,symbol))}function getTag(value){return value==null?value===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(value)}var regexpTag="[object RegExp]",stringTag="[object String]",numberTag="[object Number]",booleanTag="[object Boolean]",argumentsTag="[object Arguments]",symbolTag="[object Symbol]",dateTag="[object Date]",mapTag="[object Map]",setTag="[object Set]",arrayTag="[object Array]";var arrayBufferTag="[object ArrayBuffer]",objectTag="[object Object]";var dataViewTag="[object DataView]",uint8ArrayTag="[object Uint8Array]",uint8ClampedArrayTag="[object Uint8ClampedArray]",uint16ArrayTag="[object Uint16Array]",uint32ArrayTag="[object Uint32Array]";var int8ArrayTag="[object Int8Array]",int16ArrayTag="[object Int16Array]",int32ArrayTag="[object Int32Array]";var float32ArrayTag="[object Float32Array]",float64ArrayTag="[object Float64Array]";function cloneDeepWith(obj,cloneValue){return cloneDeepWithImpl(obj,void 0,obj,new Map,cloneValue)}function cloneDeepWithImpl(valueToClone,keyToClone,objectToClone,stack=new Map,cloneValue=void 0){let cloned=cloneValue?.(valueToClone,keyToClone,objectToClone,stack);if(cloned!=null)return cloned;if(isPrimitive(valueToClone))return valueToClone;if(stack.has(valueToClone))return stack.get(valueToClone);if(Array.isArray(valueToClone)){let result=new Array(valueToClone.length);stack.set(valueToClone,result);for(let i=0;i<valueToClone.length;i++)result[i]=cloneDeepWithImpl(valueToClone[i],i,objectToClone,stack,cloneValue);return Object.hasOwn(valueToClone,"index")&&(result.index=valueToClone.index),Object.hasOwn(valueToClone,"input")&&(result.input=valueToClone.input),result}if(valueToClone instanceof Date)return new Date(valueToClone.getTime());if(valueToClone instanceof RegExp){let result=new RegExp(valueToClone.source,valueToClone.flags);return result.lastIndex=valueToClone.lastIndex,result}if(valueToClone instanceof Map){let result=new Map;stack.set(valueToClone,result);for(let[key,value]of valueToClone)result.set(key,cloneDeepWithImpl(value,key,objectToClone,stack,cloneValue));return result}if(valueToClone instanceof Set){let result=new Set;stack.set(valueToClone,result);for(let value of valueToClone)result.add(cloneDeepWithImpl(value,void 0,objectToClone,stack,cloneValue));return result}if(typeof Buffer<"u"&&Buffer.isBuffer(valueToClone))return valueToClone.subarray();if(isTypedArray(valueToClone)){let result=new(Object.getPrototypeOf(valueToClone)).constructor(valueToClone.length);stack.set(valueToClone,result);for(let i=0;i<valueToClone.length;i++)result[i]=cloneDeepWithImpl(valueToClone[i],i,objectToClone,stack,cloneValue);return result}if(valueToClone instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&valueToClone instanceof SharedArrayBuffer)return valueToClone.slice(0);if(valueToClone instanceof DataView){let result=new DataView(valueToClone.buffer.slice(0),valueToClone.byteOffset,valueToClone.byteLength);return stack.set(valueToClone,result),copyProperties(result,valueToClone,objectToClone,stack,cloneValue),result}if(typeof File<"u"&&valueToClone instanceof File){let result=new File([valueToClone],valueToClone.name,{type:valueToClone.type});return stack.set(valueToClone,result),copyProperties(result,valueToClone,objectToClone,stack,cloneValue),result}if(valueToClone instanceof Blob){let result=new Blob([valueToClone],{type:valueToClone.type});return stack.set(valueToClone,result),copyProperties(result,valueToClone,objectToClone,stack,cloneValue),result}if(valueToClone instanceof Error){let result=new valueToClone.constructor;return stack.set(valueToClone,result),result.message=valueToClone.message,result.name=valueToClone.name,result.stack=valueToClone.stack,result.cause=valueToClone.cause,copyProperties(result,valueToClone,objectToClone,stack,cloneValue),result}if(typeof valueToClone=="object"&&isCloneableObject(valueToClone)){let result=Object.create(Object.getPrototypeOf(valueToClone));return stack.set(valueToClone,result),copyProperties(result,valueToClone,objectToClone,stack,cloneValue),result}return valueToClone}function copyProperties(target,source,objectToClone=target,stack,cloneValue){let keys=[...Object.keys(source),...getSymbols(source)];for(let i=0;i<keys.length;i++){let key=keys[i],descriptor=Object.getOwnPropertyDescriptor(target,key);(descriptor==null||descriptor.writable)&&(target[key]=cloneDeepWithImpl(source[key],key,objectToClone,stack,cloneValue));}}function isCloneableObject(object){switch(getTag(object)){case argumentsTag:case arrayTag:case arrayBufferTag:case dataViewTag:case booleanTag:case dateTag:case float32ArrayTag:case float64ArrayTag:case int8ArrayTag:case int16ArrayTag:case int32ArrayTag:case mapTag:case numberTag:case objectTag:case regexpTag:case setTag:case stringTag:case symbolTag:case uint8ArrayTag:case uint8ClampedArrayTag:case uint16ArrayTag:case uint32ArrayTag:return !0;default:return !1}}function isLength(value){return Number.isSafeInteger(value)&&value>=0}function isArrayLike(value){return value!=null&&typeof value!="function"&&isLength(value.length)}function cloneDeepWith2(obj,cloneValue){return cloneDeepWith(obj,(value,key,object,stack)=>{let cloned=cloneValue?.(value,key,object,stack);if(cloned!=null)return cloned;if(typeof obj=="object")switch(Object.prototype.toString.call(obj)){case numberTag:case stringTag:case booleanTag:{let result=new obj.constructor(obj?.valueOf());return copyProperties(result,obj),result}case argumentsTag:{let result={};return copyProperties(result,obj),result.length=obj.length,result[Symbol.iterator]=obj[Symbol.iterator],result}default:return}})}function cloneDeep(obj){return cloneDeepWith2(obj)}function range(start,end,step=1){if(end==null&&(end=start,start=0),!Number.isInteger(step)||step===0)throw new Error("The step value must be a non-zero integer.");let length=Math.max(Math.ceil((end-start)/step),0),result=new Array(length);for(let i=0;i<length;i++)result[i]=start+i*step;return result}function uniq2(arr){return isArrayLike(arr)?uniq(Array.from(arr)):[]}function isBuffer(x){return typeof Buffer<"u"&&Buffer.isBuffer(x)}function isPrototype(value){let constructor=value?.constructor,prototype=typeof constructor=="function"?constructor.prototype:Object.prototype;return value===prototype}function isTypedArray2(x){return isTypedArray(x)}function times(n,getValue){if(n=toInteger(n),n<1||!Number.isSafeInteger(n))return [];let result=new Array(n);for(let i=0;i<n;i++)result[i]=typeof getValue=="function"?getValue(i):i;return result}function keysIn(object){if(object==null)return [];switch(typeof object){case"object":case"function":return isArrayLike(object)?arrayLikeKeysIn(object):isPrototype(object)?prototypeKeysIn(object):keysInImpl(object);default:return keysInImpl(Object(object))}}function keysInImpl(object){let result=[];for(let key in object)result.push(key);return result}function prototypeKeysIn(object){return keysInImpl(object).filter(key=>key!=="constructor")}function arrayLikeKeysIn(object){let indices=times(object.length,index=>`${index}`),filteredKeys=new Set(indices);return isBuffer(object)&&(filteredKeys.add("offset"),filteredKeys.add("parent")),isTypedArray2(object)&&(filteredKeys.add("buffer"),filteredKeys.add("byteLength"),filteredKeys.add("byteOffset")),[...indices,...keysInImpl(object).filter(key=>!filteredKeys.has(key))]}function getSymbolsIn(object){let result=[];for(;object;)result.push(...getSymbols(object)),object=Object.getPrototypeOf(object);return result}function pickBy(obj,shouldPick){if(obj==null)return {};let result={};if(shouldPick==null)return obj;let keys=isArrayLike(obj)?range(0,obj.length):[...keysIn(obj),...getSymbolsIn(obj)];for(let i=0;i<keys.length;i++){let key=isSymbol(keys[i])?keys[i]:keys[i].toString(),value=obj[key];shouldPick(value,key,obj)&&(result[key]=value);}return result}var getControlId=value=>`control-${value.replace(/\s+/g,"-")}`,getControlSetterButtonId=value=>`set-${value.replace(/\s+/g,"-")}`;
export { cloneDeep, debounce2 as debounce, getControlId, getControlSetterButtonId, pickBy, uniq2 as uniq };