@gpa-gemstone/helper-functions
Version:
Helper Functions for gpa-gemstone packages
65 lines (64 loc) • 3.29 kB
JavaScript
;
// ******************************************************************************************************
// GetTextWidth.tsx - Gbtc
//
// Copyright © 2021, Grid Protection Alliance. All Rights Reserved.
//
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
// file except in compliance with the License. You may obtain a copy of the License at:
//
// http://opensource.org/licenses/MIT
//
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
// License for the specific language governing permissions and limitations.
//
// Code Modification History:
// ----------------------------------------------------------------------------------------------------
// 01/07/2021 - Billy Ernest
// Generated original version of source code.
//
// ******************************************************************************************************
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetTextWidth = GetTextWidth;
/**
* GetTextWidth returns the width of a piece of text given its font, fontSize, and content.
* @param font: Determines font of given text
* @param fontSize: Determines size of given font
* @param word: Text to measure
* @param cssStyle: Optional css style
* @param height: Optional set height of measurement (default: 'auto')
* @param whiteSpace: Optional white space arguement (default: 'no-wrap')
* @param containerWidth: Optional width of the container wrapping the text, useful when the text is multiline and width is limited
* @returns Width of text
*/
function GetTextWidth(font, fontSize, word, cssStyle, height, whiteSpace, containerWidth) {
var text = document.createElement("span");
if (cssStyle !== undefined)
text.style.cssText = cssStyle;
// Set font properties
text.style.font = font;
text.style.fontSize = fontSize;
text.style.height = height !== null && height !== void 0 ? height : 'auto';
text.style.width = 'auto';
text.style.whiteSpace = whiteSpace !== null && whiteSpace !== void 0 ? whiteSpace : 'nowrap';
text.innerHTML = word;
// Create a container
var container = document.createElement('div');
container.style.position = 'absolute';
container.style.visibility = 'hidden';
container.style.overflow = 'visible'; // So overflowed text is measured
container.style.height = height !== null && height !== void 0 ? height : 'auto';
container.style.width = containerWidth !== null && containerWidth !== void 0 ? containerWidth : 'auto';
container.style.whiteSpace = whiteSpace !== null && whiteSpace !== void 0 ? whiteSpace : 'nowrap';
// Append text to the container
container.appendChild(text);
document.body.appendChild(container);
// Measure the width
var width = text.offsetWidth;
// Clean up
document.body.removeChild(container);
return Math.ceil(width);
}