UNPKG

@doku-dev/doku-fragment

Version:

A new Angular UI library that moving away from Bootstrap and built from scratch.

58 lines 8.93 kB
export class ValueUtil { /** * Convert plain value into full details from the items. */ static convertValueToFullDetails(value, items, options) { const prevValueDetails = options.prevValueDetails || []; if (options?.multiple) { const res = value.map((val) => { const prevValueDetail = prevValueDetails.find((prevDetail) => prevDetail[options.bindValue] === val); if (prevValueDetail) return prevValueDetail; return items.find((item) => item[options.bindValue] === val); }); return res.filter(Boolean); } const prevRes = prevValueDetails.find((item) => item[options.bindValue] === value); if (prevRes) return [prevRes]; const res = items.find((item) => item[options.bindValue] === value); return res ? [res] : []; } /** * Normalize input value to the result. */ static normalizeValue(prevValue, value, options) { const normalizedValues = Array.isArray(value) ? value : [value]; if (!options.multiple) { return this.convertSingleValueToString(normalizedValues[0]); } let prevValues = prevValue; if (typeof prevValues === 'string') prevValues = [prevValues]; let nextValues = prevValues.filter(Boolean); // The values that need to be removed from next values. const existingValues = nextValues.filter((val) => normalizedValues.includes(val)); const newValues = normalizedValues.filter((val) => !nextValues.includes(val)); // Remove existing values from next values. nextValues = nextValues.filter((val) => !existingValues.includes(val)); return [...nextValues, ...newValues] .map((v) => this.convertSingleValueToString(v)) .filter(Boolean); } static convertSingleValueToString(value) { if (typeof value === 'string') return value; if (isNaN(value)) return ''; if (value === undefined || value === null) return ''; try { return JSON.stringify(value); } catch (error) { return ''; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9zZWxlY3QvdXRpbHMvdmFsdWUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztJQUNwQjs7T0FFRztJQUNILE1BQU0sQ0FBQyx5QkFBeUIsQ0FDOUIsS0FBd0IsRUFDeEIsS0FBbUMsRUFDbkMsT0FJQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUV4RCxJQUFJLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDckIsTUFBTSxHQUFHLEdBQUksS0FBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUMsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUMzQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQ3RELENBQUM7Z0JBQ0YsSUFBSSxlQUFlO29CQUFFLE9BQU8sZUFBZSxDQUFDO2dCQUU1QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFpQyxDQUFDO1NBQzVEO1FBRUQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ25GLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FDbkIsU0FBNEIsRUFDNUIsS0FBd0IsRUFDeEIsT0FFQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0Q7UUFFRCxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRO1lBQUUsVUFBVSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUQsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1Qyx1REFBdUQ7UUFDdkQsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU5RSwyQ0FBMkM7UUFDM0MsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXZFLE9BQU8sQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLFNBQVMsQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFzQjtRQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM1QyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1QixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyRCxJQUFJO1lBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9rdVNlbGVjdE9wdGlvbkl0ZW1SZWNvcmQgfSBmcm9tICcuLi9zZWxlY3QuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFZhbHVlVXRpbCB7XG4gIC8qKlxuICAgKiBDb252ZXJ0IHBsYWluIHZhbHVlIGludG8gZnVsbCBkZXRhaWxzIGZyb20gdGhlIGl0ZW1zLlxuICAgKi9cbiAgc3RhdGljIGNvbnZlcnRWYWx1ZVRvRnVsbERldGFpbHMoXG4gICAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIGl0ZW1zOiBEb2t1U2VsZWN0T3B0aW9uSXRlbVJlY29yZFtdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgICAgIGJpbmRWYWx1ZTogc3RyaW5nO1xuICAgICAgcHJldlZhbHVlRGV0YWlscz86IERva3VTZWxlY3RPcHRpb25JdGVtUmVjb3JkW107XG4gICAgfVxuICApOiBEb2t1U2VsZWN0T3B0aW9uSXRlbVJlY29yZFtdIHtcbiAgICBjb25zdCBwcmV2VmFsdWVEZXRhaWxzID0gb3B0aW9ucy5wcmV2VmFsdWVEZXRhaWxzIHx8IFtdO1xuXG4gICAgaWYgKG9wdGlvbnM/Lm11bHRpcGxlKSB7XG4gICAgICBjb25zdCByZXMgPSAodmFsdWUgYXMgc3RyaW5nW10pLm1hcCgodmFsKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZWYWx1ZURldGFpbCA9IHByZXZWYWx1ZURldGFpbHMuZmluZChcbiAgICAgICAgICAocHJldkRldGFpbCkgPT4gcHJldkRldGFpbFtvcHRpb25zLmJpbmRWYWx1ZV0gPT09IHZhbFxuICAgICAgICApO1xuICAgICAgICBpZiAocHJldlZhbHVlRGV0YWlsKSByZXR1cm4gcHJldlZhbHVlRGV0YWlsO1xuXG4gICAgICAgIHJldHVybiBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtW29wdGlvbnMuYmluZFZhbHVlXSA9PT0gdmFsKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzLmZpbHRlcihCb29sZWFuKSBhcyBEb2t1U2VsZWN0T3B0aW9uSXRlbVJlY29yZFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZSZXMgPSBwcmV2VmFsdWVEZXRhaWxzLmZpbmQoKGl0ZW0pID0+IGl0ZW1bb3B0aW9ucy5iaW5kVmFsdWVdID09PSB2YWx1ZSk7XG4gICAgaWYgKHByZXZSZXMpIHJldHVybiBbcHJldlJlc107XG5cbiAgICBjb25zdCByZXMgPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtW29wdGlvbnMuYmluZFZhbHVlXSA9PT0gdmFsdWUpO1xuICAgIHJldHVybiByZXMgPyBbcmVzXSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSBpbnB1dCB2YWx1ZSB0byB0aGUgcmVzdWx0LlxuICAgKi9cbiAgc3RhdGljIG5vcm1hbGl6ZVZhbHVlKFxuICAgIHByZXZWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIG11bHRpcGxlOiBib29sZWFuO1xuICAgIH1cbiAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcblxuICAgIGlmICghb3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFNpbmdsZVZhbHVlVG9TdHJpbmcobm9ybWFsaXplZFZhbHVlc1swXSk7XG4gICAgfVxuXG4gICAgbGV0IHByZXZWYWx1ZXMgPSBwcmV2VmFsdWU7XG4gICAgaWYgKHR5cGVvZiBwcmV2VmFsdWVzID09PSAnc3RyaW5nJykgcHJldlZhbHVlcyA9IFtwcmV2VmFsdWVzXTtcblxuICAgIGxldCBuZXh0VmFsdWVzID0gcHJldlZhbHVlcy5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAvLyBUaGUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIGZyb20gbmV4dCB2YWx1ZXMuXG4gICAgY29uc3QgZXhpc3RpbmdWYWx1ZXMgPSBuZXh0VmFsdWVzLmZpbHRlcigodmFsKSA9PiBub3JtYWxpemVkVmFsdWVzLmluY2x1ZGVzKHZhbCkpO1xuICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5vcm1hbGl6ZWRWYWx1ZXMuZmlsdGVyKCh2YWwpID0+ICFuZXh0VmFsdWVzLmluY2x1ZGVzKHZhbCkpO1xuXG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIHZhbHVlcyBmcm9tIG5leHQgdmFsdWVzLlxuICAgIG5leHRWYWx1ZXMgPSBuZXh0VmFsdWVzLmZpbHRlcigodmFsKSA9PiAhZXhpc3RpbmdWYWx1ZXMuaW5jbHVkZXModmFsKSk7XG5cbiAgICByZXR1cm4gWy4uLm5leHRWYWx1ZXMsIC4uLm5ld1ZhbHVlc11cbiAgICAgIC5tYXAoKHYpID0+IHRoaXMuY29udmVydFNpbmdsZVZhbHVlVG9TdHJpbmcodikpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29udmVydFNpbmdsZVZhbHVlVG9TdHJpbmcodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSByZXR1cm4gJyc7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiAnJztcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufVxuIl19