UNPKG

react-canvaskit

Version:

A React implementation of the Skia-CanvasKit drawing library.

38 lines 6.56 kB
import { isCkCanvas } from './CkCanvas'; import { toSkParagraphStyle } from './SkiaElementMapping'; class CkParagraph { constructor(canvasKit, props) { this.skObjectType = 'SkParagraph'; this.type = 'ck-paragraph'; this.deleted = false; this.canvasKit = canvasKit; this.props = props; } render(parent) { var _a, _b, _c, _d; if (this.deleted) { throw new Error('BUG. paragraph element deleted.'); } const skParagraphBuilder = this.canvasKit.ParagraphBuilder.Make(toSkParagraphStyle(this.canvasKit, this.props), this.props.fontManager); if (this.props.children) { skParagraphBuilder.addText(this.props.children); } (_a = this.skObject) === null || _a === void 0 ? void 0 : _a.delete(); this.skObject = skParagraphBuilder.build(); this.skObject.layout(this.props.layout); if (isCkCanvas(parent)) { (_b = parent.skObject) === null || _b === void 0 ? void 0 : _b.drawParagraph(this.skObject, (_c = this.props.x) !== null && _c !== void 0 ? _c : 0, (_d = this.props.y) !== null && _d !== void 0 ? _d : 0); } // TODO we can avoid deleting & recreating the paragraph skobject by checkin props that require a new paragraph instance. } delete() { var _a; if (this.deleted) { return; } this.deleted = true; (_a = this.skObject) === null || _a === void 0 ? void 0 : _a.delete(); } } export const createCkParagraph = (type, props, canvasKit) => new CkParagraph(canvasKit, props); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2tQYXJhZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2tQYXJhZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQWtCekQsTUFBTSxXQUFXO0lBU2YsWUFBWSxTQUFvQixFQUFFLEtBQThDO1FBTHZFLGlCQUFZLEdBQTJDLGFBQWEsQ0FBQTtRQUNwRSxTQUFJLEdBQW1CLGNBQWMsQ0FBQTtRQUU5QyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBR2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUErQjs7UUFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtTQUNuRDtRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQzNDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDdkIsQ0FBQTtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDdkIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDaEQ7UUFDRCxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE1BQU0sRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QixNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLG1DQUFJLENBQUMsRUFBRSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQ0FBSSxDQUFDLENBQUMsQ0FBQTtTQUNwRjtRQUNELHlIQUF5SDtJQUMzSCxDQUFDO0lBRUQsTUFBTTs7UUFDSixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTTtTQUNQO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxNQUFNLEVBQUUsQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBcUMsQ0FDakUsSUFBSSxFQUNKLEtBQUssRUFDTCxTQUFTLEVBQ2tCLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIENhbnZhc0tpdCxcbiAgRm9udE1nciBhcyBTa0ZvbnRNYW5hZ2VyLFxuICBQYXJhZ3JhcGggYXMgU2tQYXJhZ3JhcGgsXG4gIFBhcmFncmFwaFN0eWxlIGFzIFNrUGFyYWdyYXBoU3R5bGUsXG59IGZyb20gJ2NhbnZhc2tpdC13YXNtJ1xuaW1wb3J0IHsgaXNDa0NhbnZhcyB9IGZyb20gJy4vQ2tDYW52YXMnXG5pbXBvcnQgeyB0b1NrUGFyYWdyYXBoU3R5bGUgfSBmcm9tICcuL1NraWFFbGVtZW50TWFwcGluZydcbmltcG9ydCB7XG4gIENrRWxlbWVudCxcbiAgQ2tFbGVtZW50Q29udGFpbmVyLFxuICBDa0VsZW1lbnRDcmVhdG9yLFxuICBDa0VsZW1lbnRQcm9wcyxcbiAgQ2tPYmplY3RUeXBpbmcsXG4gIFBhcmFncmFwaFN0eWxlLFxufSBmcm9tICcuL1NraWFFbGVtZW50VHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2tQYXJhZ3JhcGhQcm9wcyBleHRlbmRzIFBhcmFncmFwaFN0eWxlLCBDa0VsZW1lbnRQcm9wczxTa1BhcmFncmFwaD4ge1xuICBsYXlvdXQ6IG51bWJlclxuICBmb250TWFuYWdlcjogU2tGb250TWFuYWdlclxuICB4PzogbnVtYmVyXG4gIHk/OiBudW1iZXJcbiAgY2hpbGRyZW4/OiBzdHJpbmdcbn1cblxuY2xhc3MgQ2tQYXJhZ3JhcGggaW1wbGVtZW50cyBDa0VsZW1lbnQ8J2NrLXBhcmFncmFwaCc+IHtcbiAgcmVhZG9ubHkgY2FudmFzS2l0OiBDYW52YXNLaXRcbiAgcmVhZG9ubHkgcHJvcHM6IENrT2JqZWN0VHlwaW5nWydjay1wYXJhZ3JhcGgnXVsncHJvcHMnXVxuICBza09iamVjdD86IENrT2JqZWN0VHlwaW5nWydjay1wYXJhZ3JhcGgnXVsndHlwZSddXG4gIHJlYWRvbmx5IHNrT2JqZWN0VHlwZTogQ2tPYmplY3RUeXBpbmdbJ2NrLXBhcmFncmFwaCddWyduYW1lJ10gPSAnU2tQYXJhZ3JhcGgnXG4gIHJlYWRvbmx5IHR5cGU6ICdjay1wYXJhZ3JhcGgnID0gJ2NrLXBhcmFncmFwaCdcblxuICBkZWxldGVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihjYW52YXNLaXQ6IENhbnZhc0tpdCwgcHJvcHM6IENrT2JqZWN0VHlwaW5nWydjay1wYXJhZ3JhcGgnXVsncHJvcHMnXSkge1xuICAgIHRoaXMuY2FudmFzS2l0ID0gY2FudmFzS2l0XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzXG4gIH1cblxuICByZW5kZXIocGFyZW50OiBDa0VsZW1lbnRDb250YWluZXI8YW55Pik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlbGV0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQlVHLiBwYXJhZ3JhcGggZWxlbWVudCBkZWxldGVkLicpXG4gICAgfVxuXG4gICAgY29uc3Qgc2tQYXJhZ3JhcGhCdWlsZGVyID0gdGhpcy5jYW52YXNLaXQuUGFyYWdyYXBoQnVpbGRlci5NYWtlKFxuICAgICAgPFNrUGFyYWdyYXBoU3R5bGU+dG9Ta1BhcmFncmFwaFN0eWxlKHRoaXMuY2FudmFzS2l0LCB0aGlzLnByb3BzKSxcbiAgICAgIHRoaXMucHJvcHMuZm9udE1hbmFnZXIsXG4gICAgKVxuICAgIGlmICh0aGlzLnByb3BzLmNoaWxkcmVuKSB7XG4gICAgICBza1BhcmFncmFwaEJ1aWxkZXIuYWRkVGV4dCh0aGlzLnByb3BzLmNoaWxkcmVuKVxuICAgIH1cbiAgICB0aGlzLnNrT2JqZWN0Py5kZWxldGUoKVxuICAgIHRoaXMuc2tPYmplY3QgPSBza1BhcmFncmFwaEJ1aWxkZXIuYnVpbGQoKVxuICAgIHRoaXMuc2tPYmplY3QubGF5b3V0KHRoaXMucHJvcHMubGF5b3V0KVxuICAgIGlmIChpc0NrQ2FudmFzKHBhcmVudCkpIHtcbiAgICAgIHBhcmVudC5za09iamVjdD8uZHJhd1BhcmFncmFwaCh0aGlzLnNrT2JqZWN0LCB0aGlzLnByb3BzLnggPz8gMCwgdGhpcy5wcm9wcy55ID8/IDApXG4gICAgfVxuICAgIC8vIFRPRE8gd2UgY2FuIGF2b2lkIGRlbGV0aW5nICYgcmVjcmVhdGluZyB0aGUgcGFyYWdyYXBoIHNrb2JqZWN0IGJ5IGNoZWNraW4gcHJvcHMgdGhhdCByZXF1aXJlIGEgbmV3IHBhcmFncmFwaCBpbnN0YW5jZS5cbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBpZiAodGhpcy5kZWxldGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5kZWxldGVkID0gdHJ1ZVxuICAgIHRoaXMuc2tPYmplY3Q/LmRlbGV0ZSgpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNrUGFyYWdyYXBoOiBDa0VsZW1lbnRDcmVhdG9yPCdjay1wYXJhZ3JhcGgnPiA9IChcbiAgdHlwZSxcbiAgcHJvcHMsXG4gIGNhbnZhc0tpdCxcbik6IENrRWxlbWVudDwnY2stcGFyYWdyYXBoJz4gPT4gbmV3IENrUGFyYWdyYXBoKGNhbnZhc0tpdCwgcHJvcHMpXG4iXX0=