@tko/filter.punches
Version:
TKO filters from knockout punches
8 lines (7 loc) • 3.68 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../index.ts", "../src/index.ts"],
"sourcesContent": ["export * from './src'\n", "import { unwrap, toJS } from '@tko/observable'\n\nconst sproto = String.prototype\n\nexport interface Filters {\n uppercase(value)\n lowercase(value)\n default(value, defaultValue)\n replace(value, search, replace)\n fit(value, length, replacement, trimWhere)\n json(rootObject, space, replacer)\n number(value)\n}\n\nconst filters: Filters = {\n // Convert value to uppercase\n uppercase: function (value) {\n return sproto.toUpperCase.call(unwrap(value))\n },\n\n // Convert value to lowercase\n lowercase: function (value) {\n return sproto.toLowerCase.call(unwrap(value))\n },\n\n // Return default value if the input value is empty or null\n default: function (value, defaultValue) {\n value = unwrap(value)\n if (typeof value === 'function') {\n return value\n }\n if (typeof value === 'string') {\n return sproto.trim.call(value) === '' ? defaultValue : value\n }\n return value == null || value.length == 0 ? defaultValue : value\n },\n\n // Return the value with the search string replaced with the replacement string\n replace: function (value, search, replace) {\n return sproto.replace.call(unwrap(value), search, replace)\n },\n\n fit: function (value, length, replacement, trimWhere) {\n value = unwrap(value)\n if (length && ('' + value).length > length) {\n replacement = '' + (replacement || '...')\n length = length - replacement.length\n value = '' + value\n switch (trimWhere) {\n case 'left':\n return replacement + value.slice(-length)\n case 'middle': {\n const leftLen = Math.ceil(length / 2)\n return value.substring(0, leftLen) + replacement + value.slice(leftLen - length)\n }\n default:\n return value.substring(0, length) + replacement\n }\n } else {\n return value\n }\n },\n\n // Convert a model object to JSON\n json: function (rootObject, space, replacer) {\n // replacer and space are optional\n return JSON.stringify(toJS(rootObject), replacer, space)\n },\n\n // Format a number using the browser's toLocaleString\n number: function (value) {\n return (+unwrap(value)).toLocaleString()\n }\n}\n\n// Export the filters object for general access\nexport { filters }\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,wBAA6B;AAE7B,IAAM,SAAS,OAAO;AAYtB,IAAM,UAAmB;AAAA;AAAA,EAEvB,WAAW,SAAU,OAAO;AAC1B,WAAO,OAAO,YAAY,SAAK,0BAAO,KAAK,CAAC;AAAA,EAC9C;AAAA;AAAA,EAGA,WAAW,SAAU,OAAO;AAC1B,WAAO,OAAO,YAAY,SAAK,0BAAO,KAAK,CAAC;AAAA,EAC9C;AAAA;AAAA,EAGA,SAAS,SAAU,OAAO,cAAc;AACtC,gBAAQ,0BAAO,KAAK;AACpB,QAAI,OAAO,UAAU,YAAY;AAC/B,aAAO;AAAA,IACT;AACA,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,OAAO,KAAK,KAAK,KAAK,MAAM,KAAK,eAAe;AAAA,IACzD;AACA,WAAO,SAAS,QAAQ,MAAM,UAAU,IAAI,eAAe;AAAA,EAC7D;AAAA;AAAA,EAGA,SAAS,SAAU,OAAO,QAAQ,SAAS;AACzC,WAAO,OAAO,QAAQ,SAAK,0BAAO,KAAK,GAAG,QAAQ,OAAO;AAAA,EAC3D;AAAA,EAEA,KAAK,SAAU,OAAO,QAAQ,aAAa,WAAW;AACpD,gBAAQ,0BAAO,KAAK;AACpB,QAAI,WAAW,KAAK,OAAO,SAAS,QAAQ;AAC1C,oBAAc,MAAM,eAAe;AACnC,eAAS,SAAS,YAAY;AAC9B,cAAQ,KAAK;AACb,cAAQ,WAAW;AAAA,QACjB,KAAK;AACH,iBAAO,cAAc,MAAM,MAAM,CAAC,MAAM;AAAA,QAC1C,KAAK,UAAU;AACb,gBAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,iBAAO,MAAM,UAAU,GAAG,OAAO,IAAI,cAAc,MAAM,MAAM,UAAU,MAAM;AAAA,QACjF;AAAA,QACA;AACE,iBAAO,MAAM,UAAU,GAAG,MAAM,IAAI;AAAA,MACxC;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,SAAU,YAAY,OAAO,UAAU;AAE3C,WAAO,KAAK,cAAU,wBAAK,UAAU,GAAG,UAAU,KAAK;AAAA,EACzD;AAAA;AAAA,EAGA,QAAQ,SAAU,OAAO;AACvB,YAAQ,KAAC,0BAAO,KAAK,GAAG,eAAe;AAAA,EACzC;AACF;",
"names": []
}