{"version":3,"sources":["../src/collection/dictArray.ts"],"names":["dictArray","items","defaultItem","options","opts","isNothing","result","value","index","deepMerge","isPlainObject","preValue","curItem"],"mappings":";;;;AAiCQ,SAASA,EAAgBC,CAAYC,CAAAA,GAAAA,CAA+CC,EAA0B,CAClH,IAAMC,EAAO,MAAO,CAAA,MAAA,CAAO,CACvB,YAAa,CAAA,EAAA,CACb,oBAAoB,KACxB,CAAA,CAAED,GAAW,EAAE,EACf,GAAGE,CAAAA,CAAUJ,CAAK,CACd,CAAA,OAAO,EAERG,CAAAA,CAAAA,CAAK,sBACJF,GAAY,CAAA,OAAA,CAAW,OAE3B,IAAII,CAAAA,CAAS,MAAM,OAAQL,CAAAA,CAAK,EAAIA,CAAQ,CAAA,CAACA,CAAK,CAClD,CAAA,OAAAK,EAAO,OAAQ,CAAA,CAACC,CAAMC,CAAAA,CAAAA,GAAQ,CAC1BF,CAAOE,CAAAA,CAAK,EAAGC,GAAUP,CAAAA,GAAAA,CAAYQ,IAAcH,CAAK,CAAA,CAAIA,EAAQ,CAAC,CAACH,EAAK,YAAY,EAAEG,CAAK,CAAC,EACnG,CAAC,CAEEH,CAAAA,CAAAA,CAAK,qBAAwBE,CAAO,CAAA,MAAA,CAAO,CAACK,CAASC,CAAAA,CAAAA,GAAUA,EAAQ,OAAUD,CAAAA,CAAAA,CAAS,EAAIA,CAAS,CAAA,CAAC,IAAI,CAAML,EAAAA,CAAAA,CAAO,OAAO,CAC/HA,GAAAA,CAAAA,CAAO,CAAC,CAAE,CAAA,OAAA,CAAQ,MAEfA,CACX","file":"chunk-WKV5ZFQC.mjs","sourcesContent":["import { deepMerge } from \"../object\"\nimport { isNothing } from \"../typecheck/isNothing\"\nimport { isPlainObject } from \"../typecheck/isPlainObject\"\n\n\nexport interface  DictArrayOptions{\n    defaultField:string             // 声明默认字段，允许在items里面只写默认字段而不用完整的{}\n    includeDefaultField:boolean     // 如果此值=true，则会为每一个item增加一个default字段，并且保证整个items里面至少有一项default=true\n}\n\n/**\n * 对成员是{}的数组内容进行规范化处理\n *  [{},{},\"\",{},{}]\n *  dictArray具有以下特征:\n *  1. 每一项均是一个{}\n *  2. 数组成员可以写省略项，如[{name:\"xx“，...},{name:\"\",},\"tom\",{name:\"\",...}]，\n *   其中的tom代表是{}中的某个字段，在进行处理后将变成[{name:\"xx“，...},{name:\"\",},{name:\"tom\",..默认项.},{name:\"\",...}]\n *  3. 如果输入的是{}，则转换成[{..}]\n *  4. 如果是其他非{}和Array，则按省略项进行处理，如dictArray(\"tom\")==> [{name:\"tom\",..默认项.}]\n *  5. 可以指定其中的一个为default=true\n *\n *\n *\n *  dictArray\n *\n *\n *\n * @param items\n * @param defaultItem           提供默认值\n * @param options ={\n *  defaultField:<声明默认字段，>>}\n * @constructor\n */\n export function dictArray<Item>(items:any[],defaultItem:Partial<Item> & {default?:boolean},options?:DictArrayOptions){\n    const opts = Object.assign({\n        defaultField:\"\",                    // 声明默认字段，允许在items里面只写默认字段而不用完整的{}\n        includeDefaultField:false,          // 如果此值=true，则会为每一个item增加一个default字段，并且保证整个items里面至少有一项default=true\n    },options || {}) as Required<DictArrayOptions>\n    if(isNothing(items)){\n        return []\n    }\n    if(opts.includeDefaultField){\n        defaultItem[\"default\"]=false\n    }\n    let result = Array.isArray(items) ? items : [items]\n    result.forEach((value,index)=>{\n        result[index] =deepMerge(defaultItem,isPlainObject(value) ? value : {[opts.defaultField]:value})\n    })\n    //  确保至少有一项default=true\n    if(opts.includeDefaultField && (result.reduce((preValue,curItem)=>curItem.default ? preValue+1 : preValue,0)===0) && result.length>0){\n        result[0].default=true\n    }\n    return result\n}"]}