@compdfkit_pdf_sdk/react_native
Version:
ComPDFKit for React Native is a comprehensive SDK that allows you to quickly add PDF functionality to Android, iOS, and React Native applications.
73 lines (61 loc) • 2.29 kB
text/typescript
/**
* Copyright © 2014-2026 PDF Technologies, Inc. All Rights Reserved.
*
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
* This notice may not be removed from this file.
*/
export class CPDFTextRange {
pageIndex: number;
location: number;
length: number;
textRangeIndex: number;
constructor(pageIndex: number, location: number, length: number, textRangeIndex: number) {
this.pageIndex = pageIndex;
this.location = location;
this.length = length;
this.textRangeIndex = textRangeIndex;
}
static fromJson(json: any): CPDFTextRange {
return new CPDFTextRange(
json.pageIndex,
json.location,
json.length,
json.textRangeIndex
);
}
toJson(): any {
return {
pageIndex: this.pageIndex,
location: this.location,
length: this.length,
textRangeIndex: this.textRangeIndex
};
}
/**
* Returns a new CPDFTextRange that expands the current range by the given number of characters
* before and after the original range.
*
* If the `before` value causes the start position to be less than 0, it will automatically
* clamp the start to 0 and reduce the total length accordingly to avoid overflow.
*
* @param before The number of characters to include before the original range. Default is 0.
* @param after The number of characters to include after the original range. Default is 0.
* @returns A new CPDFTextRange instance with adjusted `location` and `length`.
*/
expanded(before: number = 0, after: number = 0): CPDFTextRange {
let newStart = this.location - before;
let newLength = this.length + before + after;
if (newStart < 0) {
newLength += newStart;
newStart = 0;
}
return new CPDFTextRange(
this.pageIndex,
newStart,
newLength,
this.textRangeIndex
);
}
}