UNPKG

shell-mirror

Version:

Access your Mac shell from any device securely. Perfect for mobile coding with Claude Code CLI, Gemini CLI, and any shell tool.

73 lines (63 loc) 1.9 kB
'use strict' var stringWidth = require('string-width') module.exports = TemplateItem function isPercent (num) { if (typeof num !== 'string') return false return num.slice(-1) === '%' } function percent (num) { return Number(num.slice(0, -1)) / 100 } function TemplateItem (values, outputLength) { this.overallOutputLength = outputLength this.finished = false this.type = null this.value = null this.length = null this.maxLength = null this.minLength = null this.kerning = null this.align = 'left' this.padLeft = 0 this.padRight = 0 this.index = null this.first = null this.last = null if (typeof values === 'string') { this.value = values } else { for (var prop in values) this[prop] = values[prop] } // Realize percents if (isPercent(this.length)) { this.length = Math.round(this.overallOutputLength * percent(this.length)) } if (isPercent(this.minLength)) { this.minLength = Math.round(this.overallOutputLength * percent(this.minLength)) } if (isPercent(this.maxLength)) { this.maxLength = Math.round(this.overallOutputLength * percent(this.maxLength)) } return this } TemplateItem.prototype = {} TemplateItem.prototype.getBaseLength = function () { var length = this.length if (length == null && typeof this.value === 'string' && this.maxLength == null && this.minLength == null) { length = stringWidth(this.value) } return length } TemplateItem.prototype.getLength = function () { var length = this.getBaseLength() if (length == null) return null return length + this.padLeft + this.padRight } TemplateItem.prototype.getMaxLength = function () { if (this.maxLength == null) return null return this.maxLength + this.padLeft + this.padRight } TemplateItem.prototype.getMinLength = function () { if (this.minLength == null) return null return this.minLength + this.padLeft + this.padRight }