@servicetitan/dte-pdf-editor 1.94.0 → 1.96.0
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/README.md +121 -4
- package/dist/components/field-config-panel/advanced-settings.d.ts +2 -0
- package/dist/components/field-config-panel/advanced-settings.d.ts.map +1 -1
- package/dist/components/field-config-panel/advanced-settings.js +5 -4
- package/dist/components/field-config-panel/advanced-settings.js.map +1 -1
- package/dist/components/field-config-panel/e-sign-options-modal.d.ts +3 -0
- package/dist/components/field-config-panel/e-sign-options-modal.d.ts.map +1 -1
- package/dist/components/field-config-panel/e-sign-options-modal.js +6 -4
- package/dist/components/field-config-panel/e-sign-options-modal.js.map +1 -1
- package/dist/components/field-config-panel/field-config-panel-overlay.d.ts +14 -1
- package/dist/components/field-config-panel/field-config-panel-overlay.d.ts.map +1 -1
- package/dist/components/field-config-panel/field-config-panel-overlay.js +41 -2
- package/dist/components/field-config-panel/field-config-panel-overlay.js.map +1 -1
- package/dist/components/field-config-panel/field-config-panel.d.ts +6 -0
- package/dist/components/field-config-panel/field-config-panel.d.ts.map +1 -1
- package/dist/components/field-config-panel/field-config-panel.js +17 -3
- package/dist/components/field-config-panel/field-config-panel.js.map +1 -1
- package/dist/components/field-config-panel/formula-generator.d.ts +4 -0
- package/dist/components/field-config-panel/formula-generator.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-generator.js +2 -2
- package/dist/components/field-config-panel/formula-generator.js.map +1 -1
- package/dist/components/field-config-panel/formula-modal.d.ts +5 -0
- package/dist/components/field-config-panel/formula-modal.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-modal.js +13 -6
- package/dist/components/field-config-panel/formula-modal.js.map +1 -1
- package/dist/components/field-config-panel/formula-workspace.d.ts +2 -0
- package/dist/components/field-config-panel/formula-workspace.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-workspace.js +6 -4
- package/dist/components/field-config-panel/formula-workspace.js.map +1 -1
- package/dist/components/pdf-editor/pdf-editor.d.ts +52 -1
- package/dist/components/pdf-editor/pdf-editor.d.ts.map +1 -1
- package/dist/components/pdf-editor/pdf-editor.js +2 -2
- package/dist/components/pdf-editor/pdf-editor.js.map +1 -1
- package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.d.ts.map +1 -1
- package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.js +4 -6
- package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.js.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.d.ts +3 -1
- package/dist/components/pdf-view/pdf-view-calculated.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.js +14 -4
- package/dist/components/pdf-view/pdf-view-calculated.js.map +1 -1
- package/dist/components/pdf-view/pdf-view-fillable.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view-fillable.js +27 -4
- package/dist/components/pdf-view/pdf-view-fillable.js.map +1 -1
- package/dist/components/pdf-view/pdf-view.d.ts +18 -4
- package/dist/components/pdf-view/pdf-view.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view.js +2 -2
- package/dist/components/pdf-view/pdf-view.js.map +1 -1
- package/dist/components/shared/char-limit-indicator.d.ts +8 -0
- package/dist/components/shared/char-limit-indicator.d.ts.map +1 -0
- package/dist/components/shared/char-limit-indicator.js +9 -0
- package/dist/components/shared/char-limit-indicator.js.map +1 -0
- package/dist/components/shared/index.d.ts +1 -0
- package/dist/components/shared/index.d.ts.map +1 -1
- package/dist/components/shared/index.js +1 -0
- package/dist/components/shared/index.js.map +1 -1
- package/dist/constants/calculated.constants.d.ts +6 -0
- package/dist/constants/calculated.constants.d.ts.map +1 -1
- package/dist/constants/calculated.constants.js +6 -0
- package/dist/constants/calculated.constants.js.map +1 -1
- package/dist/hooks/usePinchZoom.d.ts.map +1 -1
- package/dist/hooks/usePinchZoom.js +1 -1
- package/dist/hooks/usePinchZoom.js.map +1 -1
- package/dist/interface/types.d.ts +37 -1
- package/dist/interface/types.d.ts.map +1 -1
- package/dist/interface/types.js.map +1 -1
- package/dist/styles/pdf-field-overlay.css +9 -2
- package/dist/styles/pdf-field.css +22 -1
- package/dist/utils/field/field-text-box.utils.d.ts +31 -0
- package/dist/utils/field/field-text-box.utils.d.ts.map +1 -0
- package/dist/utils/field/field-text-box.utils.js +102 -0
- package/dist/utils/field/field-text-box.utils.js.map +1 -0
- package/dist/utils/field/fit-field-text.utils.d.ts +13 -0
- package/dist/utils/field/fit-field-text.utils.d.ts.map +1 -0
- package/dist/utils/field/fit-field-text.utils.js +44 -0
- package/dist/utils/field/fit-field-text.utils.js.map +1 -0
- package/dist/utils/field/get-field-max-length.utils.d.ts +38 -0
- package/dist/utils/field/get-field-max-length.utils.d.ts.map +1 -0
- package/dist/utils/field/get-field-max-length.utils.js +166 -0
- package/dist/utils/field/get-field-max-length.utils.js.map +1 -0
- package/dist/utils/field/index.d.ts +2 -0
- package/dist/utils/field/index.d.ts.map +1 -1
- package/dist/utils/field/index.js +2 -0
- package/dist/utils/field/index.js.map +1 -1
- package/dist/utils/field/text-wrap.utils.d.ts +26 -0
- package/dist/utils/field/text-wrap.utils.d.ts.map +1 -0
- package/dist/utils/field/text-wrap.utils.js +53 -0
- package/dist/utils/field/text-wrap.utils.js.map +1 -0
- package/dist/utils/formula/business-days.utils.d.ts +32 -0
- package/dist/utils/formula/business-days.utils.d.ts.map +1 -0
- package/dist/utils/formula/business-days.utils.js +148 -0
- package/dist/utils/formula/business-days.utils.js.map +1 -0
- package/dist/utils/formula/caret.utils.js +1 -1
- package/dist/utils/formula/caret.utils.js.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.d.ts +25 -6
- package/dist/utils/formula/evaluate-formula.utils.d.ts.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.js +61 -101
- package/dist/utils/formula/evaluate-formula.utils.js.map +1 -1
- package/dist/utils/formula/index.d.ts +1 -0
- package/dist/utils/formula/index.d.ts.map +1 -1
- package/dist/utils/formula/index.js +1 -0
- package/dist/utils/formula/index.js.map +1 -1
- package/dist/utils/formula/schedule-bindings.utils.d.ts +12 -0
- package/dist/utils/formula/schedule-bindings.utils.d.ts.map +1 -0
- package/dist/utils/formula/schedule-bindings.utils.js +17 -0
- package/dist/utils/formula/schedule-bindings.utils.js.map +1 -0
- package/package.json +2 -1
- package/src/__tests__/field-types/date-fields.test.ts +29 -3
- package/src/__tests__/field-types/e-sign-fields.test.ts +2 -2
- package/src/__tests__/field-types/fillable-fields.test.ts +2 -2
- package/src/components/field-config-panel/advanced-settings.tsx +16 -3
- package/src/components/field-config-panel/e-sign-options-modal.tsx +13 -2
- package/src/components/field-config-panel/field-config-panel-overlay.tsx +97 -1
- package/src/components/field-config-panel/field-config-panel.tsx +28 -0
- package/src/components/field-config-panel/formula-generator.tsx +8 -1
- package/src/components/field-config-panel/formula-modal.tsx +19 -4
- package/src/components/field-config-panel/formula-workspace.tsx +31 -6
- package/src/components/pdf-editor/pdf-editor.tsx +82 -0
- package/src/components/pdf-fields-overlay/pdf-overlay-field-fillable.tsx +41 -28
- package/src/components/pdf-view/pdf-view-calculated.tsx +28 -3
- package/src/components/pdf-view/pdf-view-fillable.tsx +82 -36
- package/src/components/pdf-view/pdf-view.tsx +23 -3
- package/src/components/shared/char-limit-indicator.tsx +23 -0
- package/src/components/shared/index.ts +1 -0
- package/src/constants/calculated.constants.ts +7 -0
- package/src/hooks/usePinchZoom.ts +1 -6
- package/src/interface/types.ts +47 -0
- package/src/styles/pdf-field-overlay.css +9 -2
- package/src/styles/pdf-field.css +22 -1
- package/src/utils/field/__tests__/field-background-color.utils.test.ts +8 -8
- package/src/utils/field/__tests__/fit-field-text.utils.test.ts +224 -0
- package/src/utils/field/__tests__/get-field-bounds-style.utils.test.ts +16 -0
- package/src/utils/field/__tests__/get-field-max-length.utils.test.ts +751 -0
- package/src/utils/field/__tests__/text-wrap.utils.test.ts +181 -0
- package/src/utils/field/field-text-box.utils.ts +143 -0
- package/src/utils/field/fit-field-text.utils.ts +61 -0
- package/src/utils/field/get-field-max-length.utils.ts +211 -0
- package/src/utils/field/index.ts +2 -0
- package/src/utils/field/text-wrap.utils.ts +78 -0
- package/src/utils/formula/__tests__/evaluate-formula.utils.test.ts +198 -16
- package/src/utils/formula/__tests__/schedule-bindings.utils.test.ts +73 -0
- package/src/utils/formula/business-days.utils.ts +188 -0
- package/src/utils/formula/caret.utils.ts +1 -1
- package/src/utils/formula/evaluate-formula.utils.ts +94 -114
- package/src/utils/formula/index.ts +1 -0
- package/src/utils/formula/schedule-bindings.utils.ts +27 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FC, ReactNode } from 'react';
|
|
2
|
-
import { type DataChangePayload, type DataModelValues, type PdfField, type PdfViewMode, type RecipientInfo } from '../../interface/types';
|
|
2
|
+
import { type BusinessCalendar, type DataChangePayload, type DataModelValues, type FieldScheduleBinding, type PdfField, type PdfViewMode, type RecipientInfo } from '../../interface/types';
|
|
3
3
|
import { ZoomControlsProps } from '../pdf-canvas/canvas-controls';
|
|
4
4
|
export interface PdfViewProps {
|
|
5
5
|
fields: PdfField[];
|
|
@@ -20,11 +20,25 @@ export interface PdfViewProps {
|
|
|
20
20
|
*/
|
|
21
21
|
makeFillableFieldsReadonly?: boolean;
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* when adding/subtracting days or computing date
|
|
23
|
+
* Holidays of the default business-day calendar, as date strings (`'2026-07-03'`,
|
|
24
|
+
* `'2026-03-17T00:00:00Z'`). Date calculated fields without their own calendar skip
|
|
25
|
+
* Saturday, Sunday and these days when adding/subtracting days or computing date
|
|
26
|
+
* differences, within the current year ± 1.
|
|
26
27
|
*/
|
|
27
28
|
holidays?: string[];
|
|
29
|
+
/**
|
|
30
|
+
* Calendars of the date calculated fields bound to a business-day schedule, by field id
|
|
31
|
+
* (`PdfField.id`), as DTE's `POST api/holidays/calendar` resolves them. Listed fields use
|
|
32
|
+
* only their calendar; the others use the default one (`holidays`).
|
|
33
|
+
*/
|
|
34
|
+
fieldCalendars?: Record<string, BusinessCalendar>;
|
|
35
|
+
/**
|
|
36
|
+
* Date calculated fields whose custom business-day exclusion toggle is on, and the schedule
|
|
37
|
+
* each uses (DTE's bindings, `PdfField.id` as `fieldKey`). A field with no entry here uses
|
|
38
|
+
* plain calendar-day arithmetic — no weekend or holiday skipping — regardless of `holidays`
|
|
39
|
+
* or `fieldCalendars`.
|
|
40
|
+
*/
|
|
41
|
+
scheduleBindings?: FieldScheduleBinding[];
|
|
28
42
|
/**
|
|
29
43
|
* fillingBy defines the list of recipient names
|
|
30
44
|
* who are allowed to fill this field.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAA8C,MAAM,OAAO,CAAC;AAGlF,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"pdf-view.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAA8C,MAAM,OAAO,CAAC;AAGlF,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAEzB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,EACrB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAGH,iBAAiB,EACpB,MAAM,+BAA+B,CAAC;AASvC,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE;QACR,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACxC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;KAC3C,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAClD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,aAAa,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxE;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAkPpC,CAAC"}
|
|
@@ -13,7 +13,7 @@ import { PdfViewESign } from './pdf-view-e-sign';
|
|
|
13
13
|
import { PdfViewFieldContainer } from './pdf-view-field-container';
|
|
14
14
|
import { PdfViewFillable } from './pdf-view-fillable';
|
|
15
15
|
import { PdfViewGeneric } from './pdf-view-generic';
|
|
16
|
-
export const PdfView = ({ data, enableInputNavigation = true, errorPlaceholder, errors = {}, fields, fillingBy, holidays, loading = false, loadingPlaceholder, makeFillableFieldsReadonly = false, onDataChange, onLoadSuccess, pdfUrl, recipients, viewMode, zoomProps, zoomable = true, }) => {
|
|
16
|
+
export const PdfView = ({ data, enableInputNavigation = true, errorPlaceholder, errors = {}, fieldCalendars, fields, fillingBy, holidays, loading = false, loadingPlaceholder, makeFillableFieldsReadonly = false, onDataChange, onLoadSuccess, pdfUrl, recipients, scheduleBindings, viewMode, zoomProps, zoomable = true, }) => {
|
|
17
17
|
const [isPdfLoaded, setIsPdfLoaded] = useState(false);
|
|
18
18
|
const [previewData, setPreviewData] = useState(data !== null && data !== void 0 ? data : {});
|
|
19
19
|
const { resetZoom, setZoomValue, zoom, zoomByFactor, zoomIn, zoomOut } = useZoom();
|
|
@@ -102,6 +102,6 @@ export const PdfView = ({ data, enableInputNavigation = true, errorPlaceholder,
|
|
|
102
102
|
minWidth: 0,
|
|
103
103
|
height: '100%',
|
|
104
104
|
}, className: "dte-pdf-editor-theme", ref: contentContainerRef, children: [isPdfLoaded && shouldShowFieldNavigation && (_jsx("div", { ref: navControlsRef, className: "dte-pdf-movable-next-button-wrapper", children: _jsx(FieldNavigationControls, { isStarted: currentFieldIndex !== -1, onNextField: handleNextField }) })), isPdfLoaded && zoomable && (_jsx(ZoomControls, { ...zoomProps, zoom: zoom, onZoomIn: zoomIn, onZoomOut: zoomOut, onResetZoom: resetZoom })), shouldShowFieldNavigation && (_jsxs(Flex, { justifyContent: "space-between", alignItems: "center", gap: 2, className: "dte-pdf-canvas-controls", children: [_jsx(Text, { style: { color: '#ffffff' }, children: "Review and complete" }), _jsx(FieldNavigationControls, { isStarted: currentFieldIndex !== -1, onNextField: handleNextField })] })), _jsx(Flex, { flex: 1, className: "dte-pdf-editor-content-container --view-mode", direction: "column", children: _jsxs("div", { ref: pdfWrapperRef, className: "dte-pdf-wrapper", style: { width: BASE_PAGE_WIDTH * zoom }, children: [_jsx(PdfDocumentRenderer, { pdfUrl: pdfUrl, loading: loading, pageWidth: BASE_PAGE_WIDTH * zoom, errorPlaceholder: errorPlaceholder, loadingPlaceholder: loadingPlaceholder, onDocumentLoadSuccess: onDocumentLoadSuccess }), isPdfLoaded && (_jsx("div", { className: "dte-pdf-field-overlay --view-mode", children: fields.map(field => (_jsxs(PdfViewFieldContainer, { field: field, data: viewMode === 'preview' ? previewData : data, error: errors[field.path] || errors[field.id] || '', recipientsColors: recipientsColors, pdfWrapperRef: pdfWrapperRef, zoom: zoom, onFocus: handleFieldOverlayFocus, children: [(field.type === FieldTypeEnum.dataModel ||
|
|
105
|
-
field.type === FieldTypeEnum.forms) && (_jsx(PdfViewDataModel, { field: field, data: viewMode === 'preview' ? previewData : data })), field.type === FieldTypeEnum.eSign && (_jsx(PdfViewESign, { field: field })), field.type === FieldTypeEnum.calculated && (_jsx(PdfViewCalculated, { field: field, data: viewMode === 'preview' ? previewData : data, holidays: holidays, viewMode: viewMode })), field.type === FieldTypeEnum.fillable && (_jsx(PdfViewFillable, { data: viewMode === 'preview' ? previewData : data, field: field, readOnly: makeFillableFieldsReadonly, fillingBy: fillingBy, viewMode: viewMode, onDataChange: handleDataChange })), field.type === FieldTypeEnum.generic && (_jsx(PdfViewGeneric, { field: field }))] }, field.id))) }))] }) })] }));
|
|
105
|
+
field.type === FieldTypeEnum.forms) && (_jsx(PdfViewDataModel, { field: field, data: viewMode === 'preview' ? previewData : data })), field.type === FieldTypeEnum.eSign && (_jsx(PdfViewESign, { field: field })), field.type === FieldTypeEnum.calculated && (_jsx(PdfViewCalculated, { field: field, data: viewMode === 'preview' ? previewData : data, holidays: holidays, fieldCalendars: fieldCalendars, scheduleBindings: scheduleBindings, viewMode: viewMode })), field.type === FieldTypeEnum.fillable && (_jsx(PdfViewFillable, { data: viewMode === 'preview' ? previewData : data, field: field, readOnly: makeFillableFieldsReadonly, fillingBy: fillingBy, viewMode: viewMode, onDataChange: handleDataChange })), field.type === FieldTypeEnum.generic && (_jsx(PdfViewGeneric, { field: field }))] }, field.id))) }))] }) })] }));
|
|
106
106
|
};
|
|
107
107
|
//# sourceMappingURL=pdf-view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAiB,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"pdf-view.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"char-limit-indicator.d.ts","sourceRoot":"","sources":["../../../src/components/shared/char-limit-indicator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,UAAU,uBAAuB;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAe1D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const CharLimitIndicator = ({ maxLength, value }) => {
|
|
3
|
+
if (maxLength == null) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const filledCount = value.length;
|
|
7
|
+
return (_jsxs("span", { className: `dte-pdf-field-char-count${filledCount >= maxLength ? ' --at-limit' : ''}`, "aria-live": "polite", children: [filledCount, "/", maxLength] }));
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=char-limit-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"char-limit-indicator.js","sourceRoot":"","sources":["../../../src/components/shared/char-limit-indicator.tsx"],"names":[],"mappings":";AAOA,MAAM,CAAC,MAAM,kBAAkB,GAAgC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;IACpF,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IAEjC,OAAO,CACH,gBACI,SAAS,EAAE,2BAA2B,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,eAC3E,QAAQ,aAEjB,WAAW,OAAG,SAAS,IACrB,CACV,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/shared/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/shared/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/shared/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/shared/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export declare const CALCULATED_OPERATIONS: string[];
|
|
2
2
|
export declare const DEFAULT_DATE_FORMAT = "MM/DD/YYYY";
|
|
3
3
|
export declare const MAX_DATE_CALC_DAYS = 365;
|
|
4
|
+
/**
|
|
5
|
+
* Years either side of the current one that the default business-day calendar covers, as DTE's
|
|
6
|
+
* (`HolidayCheckService.HolidayYearsWindow`): outside them its holidays are unknown, so date
|
|
7
|
+
* arithmetic is blank.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_CALENDAR_YEARS = 1;
|
|
4
10
|
export declare const MAX_DATE_DISPLAY_RANGE_YEARS = 2;
|
|
5
11
|
//# sourceMappingURL=calculated.constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculated.constants.d.ts","sourceRoot":"","sources":["../../src/constants/calculated.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAAiC,CAAC;AAEpE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,4BAA4B,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"calculated.constants.d.ts","sourceRoot":"","sources":["../../src/constants/calculated.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAAiC,CAAC;AAEpE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,4BAA4B,IAAI,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export const CALCULATED_OPERATIONS = ['+', '-', '*', '/', '(', ')'];
|
|
2
2
|
export const DEFAULT_DATE_FORMAT = 'MM/DD/YYYY';
|
|
3
3
|
export const MAX_DATE_CALC_DAYS = 365;
|
|
4
|
+
/**
|
|
5
|
+
* Years either side of the current one that the default business-day calendar covers, as DTE's
|
|
6
|
+
* (`HolidayCheckService.HolidayYearsWindow`): outside them its holidays are unknown, so date
|
|
7
|
+
* arithmetic is blank.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_CALENDAR_YEARS = 1;
|
|
4
10
|
export const MAX_DATE_DISPLAY_RANGE_YEARS = 2;
|
|
5
11
|
//# sourceMappingURL=calculated.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculated.constants.js","sourceRoot":"","sources":["../../src/constants/calculated.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"calculated.constants.js","sourceRoot":"","sources":["../../src/constants/calculated.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePinchZoom.d.ts","sourceRoot":"","sources":["../../src/hooks/usePinchZoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"usePinchZoom.d.ts","sourceRoot":"","sources":["../../src/hooks/usePinchZoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAGrD,UAAU,mBAAmB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GACrB,cAAc,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAC3C,+CAA+C,mBAAmB,SAgErE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react';
|
|
2
|
-
import { clampZoom, getPinchZoomValue, getTouchDistance, getWheelZoomFactor
|
|
2
|
+
import { clampZoom, getPinchZoomValue, getTouchDistance, getWheelZoomFactor } from '../utils';
|
|
3
3
|
/**
|
|
4
4
|
* Trackpad pinch (wheel + ctrlKey) and two-finger mobile pinch on `containerRef`.
|
|
5
5
|
* Regular two-finger trackpad scroll is left alone so the page can still pan.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePinchZoom.js","sourceRoot":"","sources":["../../src/hooks/usePinchZoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"usePinchZoom.js","sourceRoot":"","sources":["../../src/hooks/usePinchZoom.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,14 @@ export interface ESignDateSignedOffsetSettingsFinalRule {
|
|
|
72
72
|
*/
|
|
73
73
|
export interface ESignDateSignedOffsetSettings {
|
|
74
74
|
rules: [ESignDateSignedOffsetSettingsFinalRule] | [...ESignDateSignedOffsetSettingsRule[], ESignDateSignedOffsetSettingsFinalRule];
|
|
75
|
+
/**
|
|
76
|
+
* Whether the day offset skips weekends/holidays per a business-day schedule, same toggle as a
|
|
77
|
+
* calculated field's (`FieldScheduleBinding`) but stored here instead, since - like `rules` -
|
|
78
|
+
* it applies to every `dateSignedOffset` field in the document, not one field at a time.
|
|
79
|
+
*/
|
|
80
|
+
businessCalendarEnabled?: boolean;
|
|
81
|
+
/** The schedule to use while `businessCalendarEnabled` is on; undefined for the default schedule. */
|
|
82
|
+
scheduleId?: number;
|
|
75
83
|
}
|
|
76
84
|
export interface FillableDropdownItem {
|
|
77
85
|
value: string;
|
|
@@ -230,6 +238,35 @@ export type FormulaToken = {
|
|
|
230
238
|
export interface StructuredFormula {
|
|
231
239
|
tokens: FormulaToken[];
|
|
232
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Days a date calculated field skips, as DTE resolves a business-day schedule
|
|
243
|
+
* (`POST api/holidays/calendar`). Date arithmetic outside `firstYear`–`lastYear` is blank.
|
|
244
|
+
*/
|
|
245
|
+
export interface BusinessCalendar {
|
|
246
|
+
/** Excluded weekend days, as `Date.getUTCDay()` numbers them: 0 = Sunday, 6 = Saturday. */
|
|
247
|
+
weekendDays: number[];
|
|
248
|
+
/** Holiday dates, already moved to their observed days, as `YYYY-MM-DD`. */
|
|
249
|
+
holidays: string[];
|
|
250
|
+
firstYear: number;
|
|
251
|
+
lastYear: number;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Re-exported from `@servicetitan/dte-shared` so existing imports from this path keep
|
|
255
|
+
* working: the schedule editor UI (`ScheduleDrawer`/`SchedulePicker`) is shared with
|
|
256
|
+
* `@servicetitan/dte-unlayer` and lives there now, these types are its domain model.
|
|
257
|
+
*/
|
|
258
|
+
export type { BusinessCalendarRules, BusinessDaySchedule, HolidayCatalog, KnownHoliday, SaveScheduleRequest, WeekendDay, } from '@servicetitan/dte-shared';
|
|
259
|
+
/**
|
|
260
|
+
* A date calculated field whose custom business-day exclusion toggle is on, and the schedule it
|
|
261
|
+
* uses (DTE's bindings, full-replace via `PUT api/holidays/templates/{id}/bindings`). A field with
|
|
262
|
+
* no entry here uses the default calendar with the toggle off (plain calendar-day arithmetic).
|
|
263
|
+
*/
|
|
264
|
+
export interface FieldScheduleBinding {
|
|
265
|
+
/** `PdfField.id`. */
|
|
266
|
+
fieldKey: string;
|
|
267
|
+
/** One of the tenant's schedules, or undefined for the default schedule. */
|
|
268
|
+
scheduleId?: number;
|
|
269
|
+
}
|
|
233
270
|
/** Format options for a calculated field with a numeric result (number, currency, percent) */
|
|
234
271
|
export interface CalculatedFormatForNumber {
|
|
235
272
|
resultType: 'number' | 'currency' | 'percent';
|
|
@@ -381,5 +418,4 @@ export interface DataPointOption {
|
|
|
381
418
|
radioOptions?: RadioGroupOption[];
|
|
382
419
|
lookupSource?: string;
|
|
383
420
|
}
|
|
384
|
-
export {};
|
|
385
421
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,oBAAY,aAAa;IACrB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,OAAO,YAAY;CACtB;AAED,oBAAY,cAAc;IACtB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,QAAQ,aAAa;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/F,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAChC,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEpG,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;SACjB,EAAE,CAAC;KACP,CAAC;IACF,IAAI,EAAE;QACF,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;SACjB,EAAE,CAAC;KACP,EAAE,CAAC;CACP;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iCAAiC;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,WAAW,sCAAsC;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,6BAA6B;IAC1C,KAAK,EACC,CAAC,sCAAsC,CAAC,GACxC,CAAC,GAAG,iCAAiC,EAAE,EAAE,sCAAsC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uDAAqC,CAAA;IACrC,uCAAqB,CAAA;AACzB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uDAAqC,CAAA;IACrC,uCAAqB,CAAA;AACzB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AA0MD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AA0KtD;;GAEG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5D,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;CACnD,CAAC;AAMX,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAChD,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC1C,CAAC;AAEX,6EAA6E;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAwB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC"}
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.dte-pdf-field-error-message {
|
|
15
|
-
|
|
15
|
+
bottom: -4px;
|
|
16
|
+
transform: translateY(100%);
|
|
16
17
|
min-width: 100px;
|
|
17
18
|
position: absolute;
|
|
18
|
-
margin-top: var(--spacing-1, 8px);
|
|
19
19
|
color: var(--danger);
|
|
20
20
|
font-size: var(--typescale-small, 10px);
|
|
21
21
|
}
|
|
@@ -105,6 +105,13 @@
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
+
textarea.dte-pdf-field-fillable,
|
|
109
|
+
input[type='text'].dte-pdf-field-fillable,
|
|
110
|
+
input[type='number'].dte-pdf-field-fillable {
|
|
111
|
+
font-family: inherit;
|
|
112
|
+
font-weight: inherit;
|
|
113
|
+
}
|
|
114
|
+
|
|
108
115
|
.dte-pdf-field-generic-table {
|
|
109
116
|
padding: var(--spacing-0, 0);
|
|
110
117
|
margin: var(--spacing-0, 0);
|
|
@@ -47,7 +47,8 @@
|
|
|
47
47
|
background-color: var(--color-neutral-0, #ffffff);
|
|
48
48
|
border-radius: 4px;
|
|
49
49
|
padding: 1px var(--spacing-half, 4px);
|
|
50
|
-
top:
|
|
50
|
+
top: 0;
|
|
51
|
+
transform: translateY(-50%);
|
|
51
52
|
left: 3px;
|
|
52
53
|
font-size: var(--typescale-small, 10px);
|
|
53
54
|
line-height: 1;
|
|
@@ -63,7 +64,27 @@
|
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
.dte-pdf-field-char-count {
|
|
68
|
+
position: absolute;
|
|
69
|
+
right: 3px;
|
|
70
|
+
bottom: 0;
|
|
71
|
+
transform: translateY(50%);
|
|
72
|
+
padding: 1px var(--spacing-half, 4px);
|
|
73
|
+
border-radius: 4px;
|
|
74
|
+
background-color: var(--color-neutral-0, #ffffff);
|
|
75
|
+
box-shadow: 0 0 0 1px var(--pdf-field-color);
|
|
76
|
+
color: var(--pdf-field-color-dark);
|
|
77
|
+
font-size: var(--typescale-small, 10px);
|
|
78
|
+
user-select: none;
|
|
79
|
+
|
|
80
|
+
&.--at-limit {
|
|
81
|
+
color: var(--danger, #dc3545);
|
|
82
|
+
box-shadow: 0 0 0 1px var(--danger, #dc3545);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
66
86
|
input::placeholder,
|
|
87
|
+
textarea::placeholder,
|
|
67
88
|
input[type='date'],
|
|
68
89
|
input[type='date']::-webkit-calendar-picker-indicator {
|
|
69
90
|
color: var(--pdf-field-color);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type PdfField } from '../../interface/types';
|
|
2
|
+
import { type TextMeasurer } from './text-wrap.utils';
|
|
3
|
+
export type FieldTextLayout = 'single-line' | 'multiline' | 'number';
|
|
4
|
+
/** Tolerance for float noise, so an exact fit (e.g. 28 x 7.1px in 198.8px) isn't rejected. */
|
|
5
|
+
export declare const EPSILON = 0.000001;
|
|
6
|
+
/** What a text-entry field offers to lay text out in, with a way to measure that text. */
|
|
7
|
+
export interface FieldTextBox {
|
|
8
|
+
layout: FieldTextLayout;
|
|
9
|
+
/** Content-box width in px (field width minus horizontal padding and borders). */
|
|
10
|
+
width: number;
|
|
11
|
+
/** Content-box height in px. */
|
|
12
|
+
height: number;
|
|
13
|
+
/** Height of one line box in px. */
|
|
14
|
+
lineHeight: number;
|
|
15
|
+
measure: TextMeasurer;
|
|
16
|
+
/** Same key, same geometry and font: results for it can be shared. */
|
|
17
|
+
key: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The measurable text box of a fillable `text`/`number` field, measured with canvas at the
|
|
21
|
+
* field's own font family, weight and size. `undefined` for every other kind of field.
|
|
22
|
+
*/
|
|
23
|
+
export declare const getFieldTextBox: (field: PdfField) => FieldTextBox | undefined;
|
|
24
|
+
/** Whole lines of text that fit the box height; always at least one. */
|
|
25
|
+
export declare const getMaxLines: ({ height, lineHeight, }: Pick<FieldTextBox, "height" | "lineHeight">) => number;
|
|
26
|
+
/**
|
|
27
|
+
* Whether `text` fits the box without overflowing: its width on one line, or its wrapped lines.
|
|
28
|
+
* A single character always counts as fitting, so no field is ever left impossible to type in.
|
|
29
|
+
*/
|
|
30
|
+
export declare const doesTextFitBox: (box: FieldTextBox, text: string) => boolean;
|
|
31
|
+
//# sourceMappingURL=field-text-box.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-text-box.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/field/field-text-box.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEvF,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAErE,8FAA8F;AAC9F,eAAO,MAAM,OAAO,WAAO,CAAC;AAqB5B,0FAA0F;AAC1F,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;CACf;AAqDD;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,QAAQ,KAAG,YAAY,GAAG,SAoBhE,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,WAAW,GAAI,yBAGzB,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,YAAY,CAAC,WAE7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,YAAY,EAAE,MAAM,MAAM,KAAG,OAShE,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { FieldTypeEnum } from '../../interface/types';
|
|
2
|
+
import { getFieldFontSizeInPixels } from './get-field-font-size.utils';
|
|
3
|
+
import { getFieldTypographyStyle } from './get-field-typography.utils';
|
|
4
|
+
import { advanceWrap, INITIAL_WRAP_STATE } from './text-wrap.utils';
|
|
5
|
+
/** Tolerance for float noise, so an exact fit (e.g. 28 x 7.1px in 198.8px) isn't rejected. */
|
|
6
|
+
export const EPSILON = 1e-6;
|
|
7
|
+
/**
|
|
8
|
+
* `.dte-pdf-field-fillable` box model (pdf-field-overlay.css): no padding or border, and
|
|
9
|
+
* `line-height: 1`. Update together with the CSS if either changes.
|
|
10
|
+
*/
|
|
11
|
+
const FILLABLE_TEXT_INSET_PX = { horizontal: 0, vertical: 0 };
|
|
12
|
+
const FILLABLE_LINE_HEIGHT_RATIO = 1;
|
|
13
|
+
/**
|
|
14
|
+
* Chrome keeps the inner spin button's 15px gutter free of text in `<input type="number">` even
|
|
15
|
+
* while the button is hidden, so a long value is clipped by this much. Applied in every browser,
|
|
16
|
+
* so one that doesn't reserve it is at worst slightly conservative.
|
|
17
|
+
*/
|
|
18
|
+
const NUMBER_INPUT_SPIN_BUTTON_PX = 15;
|
|
19
|
+
/** Per-glyph width (em) used when canvas measurement isn't available (SSR, jsdom). */
|
|
20
|
+
const FALLBACK_TEXT_WIDTH_EM = 0.46;
|
|
21
|
+
const FALLBACK_DIGIT_WIDTH_EM = 0.556;
|
|
22
|
+
const FALLBACK_BOLD_WIDTH_FACTOR = 1.06;
|
|
23
|
+
let measureContext;
|
|
24
|
+
const getMeasureContext = () => {
|
|
25
|
+
var _a;
|
|
26
|
+
if (measureContext === undefined) {
|
|
27
|
+
measureContext =
|
|
28
|
+
typeof document === 'undefined'
|
|
29
|
+
? null
|
|
30
|
+
: ((_a = document.createElement('canvas').getContext('2d')) !== null && _a !== void 0 ? _a : null);
|
|
31
|
+
}
|
|
32
|
+
return measureContext;
|
|
33
|
+
};
|
|
34
|
+
const createTextMeasurer = ({ fontFamily, fontSizePx, fontWeight }, layout) => {
|
|
35
|
+
const ctx = getMeasureContext();
|
|
36
|
+
if (!ctx) {
|
|
37
|
+
const isBold = fontWeight === 'bold';
|
|
38
|
+
const widthEm = layout === 'number'
|
|
39
|
+
? FALLBACK_DIGIT_WIDTH_EM
|
|
40
|
+
: FALLBACK_TEXT_WIDTH_EM * (isBold ? FALLBACK_BOLD_WIDTH_FACTOR : 1);
|
|
41
|
+
return text => text.length * fontSizePx * widthEm;
|
|
42
|
+
}
|
|
43
|
+
const font = `${fontWeight} ${fontSizePx}px ${fontFamily}`;
|
|
44
|
+
return text => {
|
|
45
|
+
ctx.font = font;
|
|
46
|
+
return ctx.measureText(text).width;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const getFieldTextLayout = (field) => {
|
|
50
|
+
if (field.type !== FieldTypeEnum.fillable) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
if (field.subType === 'number') {
|
|
54
|
+
return 'number';
|
|
55
|
+
}
|
|
56
|
+
if (field.subType === 'text') {
|
|
57
|
+
return field.multiline ? 'multiline' : 'single-line';
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* The measurable text box of a fillable `text`/`number` field, measured with canvas at the
|
|
63
|
+
* field's own font family, weight and size. `undefined` for every other kind of field.
|
|
64
|
+
*/
|
|
65
|
+
export const getFieldTextBox = (field) => {
|
|
66
|
+
const layout = getFieldTextLayout(field);
|
|
67
|
+
if (!layout) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const { fontFamily, fontWeight } = getFieldTypographyStyle(field);
|
|
71
|
+
const fontSizePx = getFieldFontSizeInPixels(field);
|
|
72
|
+
const spinButtonWidth = layout === 'number' ? NUMBER_INPUT_SPIN_BUTTON_PX : 0;
|
|
73
|
+
const width = field.width - 2 * FILLABLE_TEXT_INSET_PX.horizontal - spinButtonWidth;
|
|
74
|
+
const height = field.height - 2 * FILLABLE_TEXT_INSET_PX.vertical;
|
|
75
|
+
return {
|
|
76
|
+
layout,
|
|
77
|
+
width,
|
|
78
|
+
height,
|
|
79
|
+
lineHeight: fontSizePx * FILLABLE_LINE_HEIGHT_RATIO,
|
|
80
|
+
measure: createTextMeasurer({ fontFamily, fontSizePx, fontWeight }, layout),
|
|
81
|
+
key: [layout, width, height, fontSizePx, fontWeight, fontFamily].join('|'),
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/** Whole lines of text that fit the box height; always at least one. */
|
|
85
|
+
export const getMaxLines = ({ height, lineHeight, }) => {
|
|
86
|
+
return Math.max(1, Math.floor(height / lineHeight + EPSILON));
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Whether `text` fits the box without overflowing: its width on one line, or its wrapped lines.
|
|
90
|
+
* A single character always counts as fitting, so no field is ever left impossible to type in.
|
|
91
|
+
*/
|
|
92
|
+
export const doesTextFitBox = (box, text) => {
|
|
93
|
+
if (Array.from(text).length <= 1) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
if (box.layout === 'multiline') {
|
|
97
|
+
const { lines } = advanceWrap(INITIAL_WRAP_STATE, text, box.width, box.measure);
|
|
98
|
+
return lines <= getMaxLines(box);
|
|
99
|
+
}
|
|
100
|
+
return box.measure(text) <= box.width + EPSILON;
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=field-text-box.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-text-box.utils.js","sourceRoot":"","sources":["../../../src/utils/field/field-text-box.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type PdfField } from '../../interface/types';
|
|
2
|
+
/**
|
|
3
|
+
* The value a fillable `text`/`number` field should take when its text goes from `previousValue`
|
|
4
|
+
* to `nextValue`: `nextValue` when the text fits the field, otherwise as much of it as fits.
|
|
5
|
+
*
|
|
6
|
+
* Fit is measured from the rendered text (width on one line, wrapped lines in a multiline
|
|
7
|
+
* field), so narrow text keeps filling the field after wide text has stopped. Like the native
|
|
8
|
+
* `maxLength`, it is the text just inserted or pasted that is cut back, never what was already
|
|
9
|
+
* there, and an edit that would only add overflow is refused outright. Deleting is always allowed,
|
|
10
|
+
* even from a value that already overflows.
|
|
11
|
+
*/
|
|
12
|
+
export declare const fitFieldTextChange: (field: PdfField, previousValue: string, nextValue: string) => string;
|
|
13
|
+
//# sourceMappingURL=fit-field-text.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit-field-text.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/field/fit-field-text.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA4BtD;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC3B,OAAO,QAAQ,EACf,eAAe,MAAM,EACrB,WAAW,MAAM,KAClB,MAkBF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { doesTextFitBox, getFieldTextBox } from './field-text-box.utils';
|
|
2
|
+
import { findLargestFit } from './get-field-max-length.utils';
|
|
3
|
+
/** Splits `next` into what `previous` and `next` share at both ends, and what sits between. */
|
|
4
|
+
const getInsertion = (previous, next) => {
|
|
5
|
+
const shorter = Math.min(previous.length, next.length);
|
|
6
|
+
let headLength = 0;
|
|
7
|
+
while (headLength < shorter && previous[headLength] === next[headLength]) {
|
|
8
|
+
headLength += 1;
|
|
9
|
+
}
|
|
10
|
+
let tailLength = 0;
|
|
11
|
+
while (tailLength < shorter - headLength &&
|
|
12
|
+
previous[previous.length - 1 - tailLength] === next[next.length - 1 - tailLength]) {
|
|
13
|
+
tailLength += 1;
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
head: next.slice(0, headLength),
|
|
17
|
+
inserted: next.slice(headLength, next.length - tailLength),
|
|
18
|
+
tail: next.slice(next.length - tailLength),
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The value a fillable `text`/`number` field should take when its text goes from `previousValue`
|
|
23
|
+
* to `nextValue`: `nextValue` when the text fits the field, otherwise as much of it as fits.
|
|
24
|
+
*
|
|
25
|
+
* Fit is measured from the rendered text (width on one line, wrapped lines in a multiline
|
|
26
|
+
* field), so narrow text keeps filling the field after wide text has stopped. Like the native
|
|
27
|
+
* `maxLength`, it is the text just inserted or pasted that is cut back, never what was already
|
|
28
|
+
* there, and an edit that would only add overflow is refused outright. Deleting is always allowed,
|
|
29
|
+
* even from a value that already overflows.
|
|
30
|
+
*/
|
|
31
|
+
export const fitFieldTextChange = (field, previousValue, nextValue) => {
|
|
32
|
+
const box = getFieldTextBox(field);
|
|
33
|
+
if (!box || doesTextFitBox(box, nextValue)) {
|
|
34
|
+
return nextValue;
|
|
35
|
+
}
|
|
36
|
+
const { head, inserted, tail } = getInsertion(previousValue, nextValue);
|
|
37
|
+
const insertedChars = Array.from(inserted);
|
|
38
|
+
const withInserted = (count) => {
|
|
39
|
+
return head + insertedChars.slice(0, count).join('') + tail;
|
|
40
|
+
};
|
|
41
|
+
const keep = findLargestFit(count => doesTextFitBox(box, withInserted(count)), insertedChars.length);
|
|
42
|
+
return keep === 0 && insertedChars.length > 0 ? previousValue : withInserted(keep);
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=fit-field-text.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit-field-text.utils.js","sourceRoot":"","sources":["../../../src/utils/field/fit-field-text.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,+FAA+F;AAC/F,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,UAAU,GAAG,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,UAAU,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OACI,UAAU,GAAG,OAAO,GAAG,UAAU;QACjC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,EACnF,CAAC;QACC,UAAU,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,OAAO;QACH,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QAC/B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAC1D,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;KAC7C,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,KAAe,EACf,aAAqB,EACrB,SAAiB,EACX,EAAE;IACR,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACnC,OAAO,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,cAAc,CACvB,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EACjD,aAAa,CAAC,MAAM,CACvB,CAAC;IAEF,OAAO,IAAI,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACvF,CAAC,CAAC"}
|