@gridsheet/react-core 1.4.0-alpha.14 → 1.4.0-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/renderers/core.js
CHANGED
|
@@ -78,8 +78,8 @@ class Renderer {
|
|
|
78
78
|
if (value instanceof Date) {
|
|
79
79
|
return this.date(value);
|
|
80
80
|
}
|
|
81
|
-
if (value
|
|
82
|
-
return this.timedelta(value);
|
|
81
|
+
if (TimeDelta.is(value)) {
|
|
82
|
+
return this.timedelta(TimeDelta.ensure(value));
|
|
83
83
|
}
|
|
84
84
|
if (value == null) {
|
|
85
85
|
return "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../../renderers/core.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\nimport { CellType, PointType, WriterType } from '../types';\nimport { Table, UserTable } from '../lib/table';\nimport { solveFormula } from '../formula/solver';\nimport { FormulaError } from '../formula/evaluator';\nimport { p2a } from '../lib/converters';\nimport { TimeDelta } from '../lib/time';\n\ntype Condition = (value: any) => boolean;\n\ntype Stringify = (value: any) => string;\n\ntype Props = {\n condition?: Condition;\n complement?: Stringify;\n mixins?: RendererMixinType[];\n};\n\nexport interface RendererMixinType {\n datetimeFormat?: string;\n dateFormat?: string;\n timeDeltaFormat?: string;\n\n render?(value: any, table: UserTable, writer?: WriterType, position?: PointType): any;\n stringify?(cell: CellType): string;\n string?(value: string, table: UserTable, writer?: WriterType, position?: PointType): any;\n bool?(value: boolean, writer?: WriterType, position?: PointType): any;\n number?(value: number, writer?: WriterType, position?: PointType): any;\n date?(value: Date, writer?: WriterType, position?: PointType): any;\n timedelta?(value: TimeDelta, writer?: WriterType, position?: PointType): any;\n array?(value: any[], writer?: WriterType, position?: PointType): any;\n object?(value: any, writer?: WriterType, position?: PointType): any;\n null?(value: null, writer?: WriterType, position?: PointType): any;\n undefined?(value: undefined, writer?: WriterType, position?: PointType): any;\n}\n\nexport class Renderer implements RendererMixinType {\n public datetimeFormat: string = 'YYYY-MM-DD HH:mm:ss';\n public dateFormat: string = 'YYYY-MM-DD';\n public timeDeltaFormat: string = 'HH:mm:ss';\n private condition?: Condition;\n private complement?: Stringify;\n\n constructor(props?: Props) {\n this.applyMixins(props?.mixins);\n if (props == null) {\n return;\n }\n const { condition, complement } = props;\n this.condition = condition;\n this.complement = complement;\n }\n\n private applyMixins(mixins?: RendererMixinType[]) {\n if (mixins == null) {\n return;\n }\n for (const mixin of mixins) {\n for (const key in mixin) {\n // @ts-expect-error mixin has the same fields as this\n this[key] = mixin[key];\n }\n }\n }\n\n public call(table: Table, point: PointType, writer?: WriterType): any {\n const address = p2a(point);\n const cache = table.getSolvedCache(address);\n const value = cache || table.getByPoint(point)?.value;\n return this.render(value, table, writer, point);\n }\n\n public render(value: any, table: Table, writer?: WriterType, position?: PointType): any {\n if (this.condition && !this.condition(value)) {\n return this.complement ? this.complement(value) : this.stringify({ value });\n }\n\n switch (typeof value) {\n case 'object':\n if (value instanceof Date) {\n return this.date(value, writer, position);\n }\n if (TimeDelta.is(value)) {\n return this.timedelta(TimeDelta.ensure(value), writer, position);\n }\n if (value == null) {\n return this.null(value, writer, position);\n }\n if (value instanceof Table) {\n return this.render(value.getByPoint({ y: value.top, x: value.left })?.value, table, writer, position);\n }\n if (Array.isArray(value)) {\n return this.array(value, writer, position);\n }\n if (value instanceof FormulaError) {\n throw value;\n }\n return this.object(value, writer, position);\n case 'string':\n return this.string(value, table, writer, position);\n case 'number':\n return this.number(value, writer, position);\n case 'boolean':\n return this.bool(value, writer, position);\n case 'undefined':\n return this.undefined(value, writer, position);\n case 'function':\n return value() as string;\n }\n return '';\n }\n\n stringify(cell: CellType, position?: PointType): string {\n const { value } = cell;\n if (value instanceof Date) {\n return this.date(value);\n }\n if (value
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../../renderers/core.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\nimport { CellType, PointType, WriterType } from '../types';\nimport { Table, UserTable } from '../lib/table';\nimport { solveFormula } from '../formula/solver';\nimport { FormulaError } from '../formula/evaluator';\nimport { p2a } from '../lib/converters';\nimport { TimeDelta } from '../lib/time';\n\ntype Condition = (value: any) => boolean;\n\ntype Stringify = (value: any) => string;\n\ntype Props = {\n condition?: Condition;\n complement?: Stringify;\n mixins?: RendererMixinType[];\n};\n\nexport interface RendererMixinType {\n datetimeFormat?: string;\n dateFormat?: string;\n timeDeltaFormat?: string;\n\n render?(value: any, table: UserTable, writer?: WriterType, position?: PointType): any;\n stringify?(cell: CellType): string;\n string?(value: string, table: UserTable, writer?: WriterType, position?: PointType): any;\n bool?(value: boolean, writer?: WriterType, position?: PointType): any;\n number?(value: number, writer?: WriterType, position?: PointType): any;\n date?(value: Date, writer?: WriterType, position?: PointType): any;\n timedelta?(value: TimeDelta, writer?: WriterType, position?: PointType): any;\n array?(value: any[], writer?: WriterType, position?: PointType): any;\n object?(value: any, writer?: WriterType, position?: PointType): any;\n null?(value: null, writer?: WriterType, position?: PointType): any;\n undefined?(value: undefined, writer?: WriterType, position?: PointType): any;\n}\n\nexport class Renderer implements RendererMixinType {\n public datetimeFormat: string = 'YYYY-MM-DD HH:mm:ss';\n public dateFormat: string = 'YYYY-MM-DD';\n public timeDeltaFormat: string = 'HH:mm:ss';\n private condition?: Condition;\n private complement?: Stringify;\n\n constructor(props?: Props) {\n this.applyMixins(props?.mixins);\n if (props == null) {\n return;\n }\n const { condition, complement } = props;\n this.condition = condition;\n this.complement = complement;\n }\n\n private applyMixins(mixins?: RendererMixinType[]) {\n if (mixins == null) {\n return;\n }\n for (const mixin of mixins) {\n for (const key in mixin) {\n // @ts-expect-error mixin has the same fields as this\n this[key] = mixin[key];\n }\n }\n }\n\n public call(table: Table, point: PointType, writer?: WriterType): any {\n const address = p2a(point);\n const cache = table.getSolvedCache(address);\n const value = cache || table.getByPoint(point)?.value;\n return this.render(value, table, writer, point);\n }\n\n public render(value: any, table: Table, writer?: WriterType, position?: PointType): any {\n if (this.condition && !this.condition(value)) {\n return this.complement ? this.complement(value) : this.stringify({ value });\n }\n\n switch (typeof value) {\n case 'object':\n if (value instanceof Date) {\n return this.date(value, writer, position);\n }\n if (TimeDelta.is(value)) {\n return this.timedelta(TimeDelta.ensure(value), writer, position);\n }\n if (value == null) {\n return this.null(value, writer, position);\n }\n if (value instanceof Table) {\n return this.render(value.getByPoint({ y: value.top, x: value.left })?.value, table, writer, position);\n }\n if (Array.isArray(value)) {\n return this.array(value, writer, position);\n }\n if (value instanceof FormulaError) {\n throw value;\n }\n return this.object(value, writer, position);\n case 'string':\n return this.string(value, table, writer, position);\n case 'number':\n return this.number(value, writer, position);\n case 'boolean':\n return this.bool(value, writer, position);\n case 'undefined':\n return this.undefined(value, writer, position);\n case 'function':\n return value() as string;\n }\n return '';\n }\n\n stringify(cell: CellType, position?: PointType): string {\n const { value } = cell;\n if (value instanceof Date) {\n return this.date(value);\n }\n if (TimeDelta.is(value)) {\n return this.timedelta(TimeDelta.ensure(value));\n }\n if (value == null) {\n return '';\n }\n\n return value.toString();\n }\n\n string(value: string, table: Table, writer?: WriterType, position?: PointType): any {\n if (value[0] === \"'\") {\n return value.substring(1);\n }\n if (value[0] === '=') {\n const result = solveFormula({ value, table, raise: true, origin: position });\n if (result === null) {\n return this.null(null);\n }\n if (result === undefined) {\n return this.undefined(undefined);\n }\n if (result.constructor.name === 'Boolean') {\n return String(result).toUpperCase();\n }\n if (result.constructor.name === 'Date') {\n return this.date(result as Date);\n }\n return this.render(result, table, writer);\n }\n return value;\n }\n\n bool(value: boolean, writer?: WriterType, position?: PointType): any {\n return value ? 'TRUE' : 'FALSE';\n }\n\n number(value: number, writer?: WriterType, position?: PointType): any {\n if (isNaN(value)) {\n return 'NaN';\n }\n return value;\n }\n\n date(value: Date, writer?: WriterType, position?: PointType): any {\n if (value.getHours() + value.getMinutes() + value.getSeconds() === 0) {\n return dayjs(value).format(this.dateFormat);\n }\n return dayjs(value).format(this.datetimeFormat);\n }\n\n timedelta(value: TimeDelta, writer?: WriterType, position?: PointType): any {\n return value.stringify(this.timeDeltaFormat);\n }\n\n array(value: any[], writer?: WriterType, position?: PointType): any {\n return value.map((v) => this.stringify({ value: v })).join(',');\n }\n\n object(value: any, writer?: WriterType, position?: PointType): any {\n return JSON.stringify(value);\n }\n\n null(value: any, writer?: WriterType, position?: PointType): any {\n return '';\n }\n\n undefined(value: undefined, writer?: WriterType, position?: PointType): any {\n return '';\n }\n}\n\nexport type RendererType = Renderer;\nexport const defaultRenderer = new Renderer();\n"],"names":[],"mappings":"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"}
|