UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

1 lines 1.8 kB
{"version":3,"file":"percent.mjs","sources":["../../../src/parser/percent.ts"],"sourcesContent":["import { ifNaN } from '../util/internals/ifNaN';\nimport { capValue } from '../util/misc/capValue';\n\n/**\n * Will loosely accept as percent numbers that are not like\n * 3.4a%. This function does not check for the correctness of a percentage\n * but it checks that values that are in theory correct are or arent percentages\n */\nexport function isPercent(value: string | null) {\n // /%$/ Matches strings that end with a percent sign (%)\n return value && /%$/.test(value) && Number.isFinite(parseFloat(value));\n}\n\n/**\n * Parse a percentage value in an svg.\n * @param value\n * @param fallback in case of not possible to parse the number\n * @returns ∈ [0, 1]\n */\nexport function parsePercent(\n value: string | number | null | undefined,\n valueIfNaN?: number,\n): number {\n const parsed =\n typeof value === 'number'\n ? value\n : typeof value === 'string'\n ? parseFloat(value) / (isPercent(value) ? 100 : 1)\n : NaN;\n return capValue(0, ifNaN(parsed, valueIfNaN), 1);\n}\n"],"names":["isPercent","value","test","Number","isFinite","parseFloat","parsePercent","valueIfNaN","parsed","NaN","capValue","ifNaN"],"mappings":";;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASA,SAASA,CAACC,KAAoB,EAAE;AAC9C;AACA,EAAA,OAAOA,KAAK,IAAI,IAAI,CAACC,IAAI,CAACD,KAAK,CAAC,IAAIE,MAAM,CAACC,QAAQ,CAACC,UAAU,CAACJ,KAAK,CAAC,CAAC;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,YAAYA,CAC1BL,KAAyC,EACzCM,UAAmB,EACX;AACR,EAAA,MAAMC,MAAM,GACV,OAAOP,KAAK,KAAK,QAAQ,GACrBA,KAAK,GACL,OAAOA,KAAK,KAAK,QAAQ,GACvBI,UAAU,CAACJ,KAAK,CAAC,IAAID,SAAS,CAACC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAChDQ,GAAG;AACX,EAAA,OAAOC,QAAQ,CAAC,CAAC,EAAEC,KAAK,CAACH,MAAM,EAAED,UAAU,CAAC,EAAE,CAAC,CAAC;AAClD;;;;"}