@ryuzaki13/react-foundation-lib 2.31.1 → 2.31.3
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 +17 -5
- package/dist/analytical-table/definition/analyticalDefinitionConstants.d.ts +17 -0
- package/dist/analytical-table/definition/analyticalDefinitionConstants.d.ts.map +1 -0
- package/dist/analytical-table/definition/compileAnalyticalTableDefinition.d.ts.map +1 -1
- package/dist/analytical-table/definition/types.d.ts +6 -5
- package/dist/analytical-table/definition/types.d.ts.map +1 -1
- package/dist/analytical-table/dynamic-columns/analyticalDateColumnConstants.d.ts +7 -0
- package/dist/analytical-table/dynamic-columns/analyticalDateColumnConstants.d.ts.map +1 -0
- package/dist/analytical-table/dynamic-columns/dateColumns.d.ts.map +1 -1
- package/dist/analytical-table/dynamic-columns/types.d.ts +2 -1
- package/dist/analytical-table/dynamic-columns/types.d.ts.map +1 -1
- package/dist/analytical-table/index.js +124 -114
- package/dist/analytical-table/index.js.map +1 -1
- package/dist/analytical-table/projections/analyticalExportConstants.d.ts +7 -0
- package/dist/analytical-table/projections/analyticalExportConstants.d.ts.map +1 -0
- package/dist/analytical-table/projections/expansion.d.ts +2 -1
- package/dist/analytical-table/projections/expansion.d.ts.map +1 -1
- package/dist/analytical-table/projections/exportProjection.d.ts.map +1 -1
- package/dist/analytical-table/projections/types.d.ts +3 -2
- package/dist/analytical-table/projections/types.d.ts.map +1 -1
- package/dist/analytical-table/runtime/aggregation.d.ts.map +1 -1
- package/dist/analytical-table/runtime/analyticalRowConstants.d.ts +4 -0
- package/dist/analytical-table/runtime/analyticalRowConstants.d.ts.map +1 -0
- package/dist/analytical-table/runtime/analyticalViewConstants.d.ts +16 -0
- package/dist/analytical-table/runtime/analyticalViewConstants.d.ts.map +1 -0
- package/dist/analytical-table/runtime/buildGroupedModel.d.ts.map +1 -1
- package/dist/analytical-table/runtime/filtering.d.ts.map +1 -1
- package/dist/analytical-table/runtime/grouping.d.ts.map +1 -1
- package/dist/analytical-table/runtime/hierarchy.d.ts +2 -1
- package/dist/analytical-table/runtime/hierarchy.d.ts.map +1 -1
- package/dist/analytical-table/runtime/totals.d.ts +2 -2
- package/dist/analytical-table/runtime/totals.d.ts.map +1 -1
- package/dist/analytical-table/runtime/types.d.ts +5 -3
- package/dist/analytical-table/runtime/types.d.ts.map +1 -1
- package/dist/analytical-table/runtime/valueComparison.d.ts.map +1 -1
- package/dist/array/index.js +1 -1
- package/dist/array/reorder.d.ts +6 -1
- package/dist/array/reorder.d.ts.map +1 -1
- package/dist/async-task-runner/createCoalescingTaskRunner.d.ts.map +1 -1
- package/dist/async-task-runner/createDeadlineTimer.d.ts.map +1 -1
- package/dist/async-task-runner/index.js +39 -36
- package/dist/async-task-runner/index.js.map +1 -1
- package/dist/async-task-runner/nativeTimerConstants.d.ts +3 -0
- package/dist/async-task-runner/nativeTimerConstants.d.ts.map +1 -0
- package/dist/binary/base64Constants.d.ts +6 -0
- package/dist/binary/base64Constants.d.ts.map +1 -0
- package/dist/binary/binaryToBlob.d.ts.map +1 -1
- package/dist/binary/getBase64DecodedSize.d.ts.map +1 -1
- package/dist/binary/index.js +95 -70
- package/dist/binary/index.js.map +1 -1
- package/dist/browser-notifications/browserNotificationConstants.d.ts +3 -0
- package/dist/browser-notifications/browserNotificationConstants.d.ts.map +1 -0
- package/dist/browser-notifications/browserNotificationTypes.d.ts +2 -1
- package/dist/browser-notifications/browserNotificationTypes.d.ts.map +1 -1
- package/dist/browser-notifications/createBrowserNotificationPresenter.d.ts.map +1 -1
- package/dist/browser-notifications/index.js +38 -37
- package/dist/browser-notifications/index.js.map +1 -1
- package/dist/chunks/{array-D-_yMMUK.js → array-bd7LYFto.js} +1 -3
- package/dist/chunks/{array-D-_yMMUK.js.map → array-bd7LYFto.js.map} +1 -1
- package/dist/chunks/{dom-BK22UmgF.js → dom-ZSeWZ0Gg.js} +103 -98
- package/dist/chunks/dom-ZSeWZ0Gg.js.map +1 -0
- package/dist/chunks/formatDate-CNPcfNte.js +133 -0
- package/dist/chunks/formatDate-CNPcfNte.js.map +1 -0
- package/dist/chunks/{formatters-rxriDRPk.js → formatters-CO40zvVB.js} +496 -497
- package/dist/chunks/formatters-CO40zvVB.js.map +1 -0
- package/dist/chunks/{formulas-BXT_XBWI.js → formulas-Y0HOcFhe.js} +90 -86
- package/dist/chunks/formulas-Y0HOcFhe.js.map +1 -0
- package/dist/chunks/hasSignatureBytes-D2wO_Myl.js +11 -0
- package/dist/chunks/hasSignatureBytes-D2wO_Myl.js.map +1 -0
- package/dist/chunks/keyboardConstants-BZKskWsm.js +6 -0
- package/dist/chunks/keyboardConstants-BZKskWsm.js.map +1 -0
- package/dist/chunks/media-imBOXWwa.js +192 -0
- package/dist/chunks/media-imBOXWwa.js.map +1 -0
- package/dist/chunks/mimeTypeConstants-BzONV-b1.js +6 -0
- package/dist/chunks/mimeTypeConstants-BzONV-b1.js.map +1 -0
- package/dist/chunks/{query-client-CVRfrYZM.js → query-client-D0HQZ84w.js} +142 -142
- package/dist/chunks/query-client-D0HQZ84w.js.map +1 -0
- package/dist/chunks/scalarTypeClassification-D4YcGxtQ.js +766 -0
- package/dist/chunks/scalarTypeClassification-D4YcGxtQ.js.map +1 -0
- package/dist/chunks/scalarTypeConstants-CnSsjpGO.js +6 -0
- package/dist/chunks/scalarTypeConstants-CnSsjpGO.js.map +1 -0
- package/dist/chunks/utils-DW0Yso1Q.js +210 -0
- package/dist/chunks/utils-DW0Yso1Q.js.map +1 -0
- package/dist/chunks/{uuid-CUJPAbRY.js → uuid-izDzLv18.js} +1 -2
- package/dist/chunks/uuid-izDzLv18.js.map +1 -0
- package/dist/chunks/validate-8URYKKly.js +613 -0
- package/dist/chunks/validate-8URYKKly.js.map +1 -0
- package/dist/copy/index.js +5 -5
- package/dist/copy/index.js.map +1 -1
- package/dist/copy/useCopyFeedback.d.ts.map +1 -1
- package/dist/crypto/hashString.d.ts.map +1 -1
- package/dist/crypto/hexadecimalConstants.d.ts +3 -0
- package/dist/crypto/hexadecimalConstants.d.ts.map +1 -0
- package/dist/crypto/index.js +25 -24
- package/dist/crypto/index.js.map +1 -1
- package/dist/crypto/uuid.d.ts.map +1 -1
- package/dist/date-segments/index.js +81 -81
- package/dist/date-segments/index.js.map +1 -1
- package/dist/date-segments/mask.d.ts +13 -3
- package/dist/date-segments/mask.d.ts.map +1 -1
- package/dist/decimal/decimalConstants.d.ts +3 -0
- package/dist/decimal/decimalConstants.d.ts.map +1 -0
- package/dist/decimal/index.js +0 -2
- package/dist/decimal/index.js.map +1 -1
- package/dist/decimal/normalizeDecimal.d.ts.map +1 -1
- package/dist/decimal/normalizeDecimalLiteral.d.ts.map +1 -1
- package/dist/decimal/resolveDecimalMaxLength.d.ts.map +1 -1
- package/dist/decimal/sumDecimals.d.ts.map +1 -1
- package/dist/decimal/writeDecimalParts.d.ts.map +1 -1
- package/dist/dom/document-scroll/acquireDocumentScrollLock.d.ts.map +1 -1
- package/dist/dom/document-scroll/attachDocumentTouchScrollGuard.d.ts.map +1 -1
- package/dist/dom/document-scroll/canConsumeVerticalTouchScroll.d.ts.map +1 -1
- package/dist/dom/domEventConstants.d.ts +4 -0
- package/dist/dom/domEventConstants.d.ts.map +1 -0
- package/dist/dom/domScrollConstants.d.ts +3 -0
- package/dist/dom/domScrollConstants.d.ts.map +1 -0
- package/dist/dom/index.js +1 -1
- package/dist/dom/installFaviconOverride.d.ts.map +1 -1
- package/dist/dom/overlayFocusConstants.d.ts +4 -0
- package/dist/dom/overlayFocusConstants.d.ts.map +1 -0
- package/dist/dom/scroll-anchor/captureScrollAnchor.d.ts.map +1 -1
- package/dist/dom/useClickOutside.d.ts +1 -1
- package/dist/dom/useClickOutside.d.ts.map +1 -1
- package/dist/dom/useEscapeDismiss.d.ts +1 -1
- package/dist/dom/useEscapeDismiss.d.ts.map +1 -1
- package/dist/dom/useFocusTrap.d.ts.map +1 -1
- package/dist/dom/useIsTouchDevice.d.ts.map +1 -1
- package/dist/dom/useOverlayFocus.d.ts +3 -2
- package/dist/dom/useOverlayFocus.d.ts.map +1 -1
- package/dist/dom/visual-viewport/attachVisualViewportFrame.d.ts.map +1 -1
- package/dist/error-report/breadcrumbs.d.ts.map +1 -1
- package/dist/error-report/capture.d.ts.map +1 -1
- package/dist/error-report/captureOptions.d.ts +3 -2
- package/dist/error-report/captureOptions.d.ts.map +1 -1
- package/dist/error-report/capturePolicyConstants.d.ts +4 -0
- package/dist/error-report/capturePolicyConstants.d.ts.map +1 -0
- package/dist/error-report/dataPreview.d.ts.map +1 -1
- package/dist/error-report/diagnostics.d.ts.map +1 -1
- package/dist/error-report/drafts.d.ts.map +1 -1
- package/dist/error-report/environment.d.ts.map +1 -1
- package/dist/error-report/errorInfo.d.ts.map +1 -1
- package/dist/error-report/errorReportCaptureLimits.d.ts +26 -0
- package/dist/error-report/errorReportCaptureLimits.d.ts.map +1 -0
- package/dist/error-report/errorReportContractConstants.d.ts +32 -0
- package/dist/error-report/errorReportContractConstants.d.ts.map +1 -0
- package/dist/error-report/index.js +586 -587
- package/dist/error-report/index.js.map +1 -1
- package/dist/error-report/payload.d.ts.map +1 -1
- package/dist/error-report/queue.d.ts.map +1 -1
- package/dist/error-report/queueContract.d.ts +7 -6
- package/dist/error-report/queueContract.d.ts.map +1 -1
- package/dist/error-report/queueRecord.d.ts.map +1 -1
- package/dist/error-report/queueResultConstants.d.ts +14 -0
- package/dist/error-report/queueResultConstants.d.ts.map +1 -0
- package/dist/error-report/runtimeDeduplication.d.ts +2 -1
- package/dist/error-report/runtimeDeduplication.d.ts.map +1 -1
- package/dist/error-report/safeValue.d.ts.map +1 -1
- package/dist/error-report/safeValueMarkerConstants.d.ts +16 -0
- package/dist/error-report/safeValueMarkerConstants.d.ts.map +1 -0
- package/dist/error-report/schema.d.ts.map +1 -1
- package/dist/error-report/types.d.ts +10 -8
- package/dist/error-report/types.d.ts.map +1 -1
- package/dist/error-report-source-maps/archive.d.ts.map +1 -1
- package/dist/error-report-source-maps/artifact.d.ts.map +1 -1
- package/dist/error-report-source-maps/index.js +238 -238
- package/dist/error-report-source-maps/index.js.map +1 -1
- package/dist/error-report-source-maps/manifest.d.ts.map +1 -1
- package/dist/error-report-source-maps/package.d.ts.map +1 -1
- package/dist/error-report-source-maps/sourceMapArtifactConstants.d.ts +11 -0
- package/dist/error-report-source-maps/sourceMapArtifactConstants.d.ts.map +1 -0
- package/dist/error-report-source-maps/symbolicate.d.ts.map +1 -1
- package/dist/error-report-source-maps/symbolicationResultConstants.d.ts +6 -0
- package/dist/error-report-source-maps/symbolicationResultConstants.d.ts.map +1 -0
- package/dist/error-report-source-maps/types.d.ts +4 -2
- package/dist/error-report-source-maps/types.d.ts.map +1 -1
- package/dist/excel/excel.d.ts.map +1 -1
- package/dist/excel/excelWorkbookConstants.d.ts +6 -0
- package/dist/excel/excelWorkbookConstants.d.ts.map +1 -0
- package/dist/excel/index.js +117 -116
- package/dist/excel/index.js.map +1 -1
- package/dist/excel/matrixWorkbook.d.ts +6 -1
- package/dist/excel/matrixWorkbook.d.ts.map +1 -1
- package/dist/excel/tableExport.d.ts.map +1 -1
- package/dist/file/checkFileSignature.d.ts.map +1 -1
- package/dist/file/contentDisposition.d.ts.map +1 -1
- package/dist/file/fileSignatureConstants.d.ts +14 -18
- package/dist/file/fileSignatureConstants.d.ts.map +1 -1
- package/dist/file/fileSignatureTypes.d.ts +3 -3
- package/dist/file/fileSignatureTypes.d.ts.map +1 -1
- package/dist/file/image/imageReadConstants.d.ts +3 -0
- package/dist/file/image/imageReadConstants.d.ts.map +1 -0
- package/dist/file/image/readImageFile.d.ts +3 -2
- package/dist/file/image/readImageFile.d.ts.map +1 -1
- package/dist/file/image/types.d.ts +5 -3
- package/dist/file/image/types.d.ts.map +1 -1
- package/dist/file/index.js +139 -165
- package/dist/file/index.js.map +1 -1
- package/dist/file/mimeType.d.ts.map +1 -1
- package/dist/file/mimeTypeConstants.d.ts +18 -0
- package/dist/file/mimeTypeConstants.d.ts.map +1 -0
- package/dist/file/read-file/assert.d.ts.map +1 -1
- package/dist/file/read-file/readFile.d.ts +3 -11
- package/dist/file/read-file/readFile.d.ts.map +1 -1
- package/dist/file/read-file/readFileConstants.d.ts +13 -0
- package/dist/file/read-file/readFileConstants.d.ts.map +1 -0
- package/dist/file/read-file/types.d.ts +7 -6
- package/dist/file/read-file/types.d.ts.map +1 -1
- package/dist/file/signature/checkArchiveSignature.d.ts.map +1 -1
- package/dist/file-system/fileSystemConstants.d.ts +5 -0
- package/dist/file-system/fileSystemConstants.d.ts.map +1 -0
- package/dist/file-system/fileSystemTypes.d.ts +2 -1
- package/dist/file-system/fileSystemTypes.d.ts.map +1 -1
- package/dist/file-system/index.js +11 -10
- package/dist/file-system/index.js.map +1 -1
- package/dist/file-system/resolvePathInsideRoot.d.ts.map +1 -1
- package/dist/formatters/boolean/parseAbapBoolean.d.ts.map +1 -1
- package/dist/formatters/boolean/toAbapBoolean.d.ts.map +1 -1
- package/dist/formatters/date/calendarDate.d.ts.map +1 -1
- package/dist/formatters/date/calendarDateConstants.d.ts +13 -0
- package/dist/formatters/date/calendarDateConstants.d.ts.map +1 -0
- package/dist/formatters/date/calendarPeriod.d.ts +11 -2
- package/dist/formatters/date/calendarPeriod.d.ts.map +1 -1
- package/dist/formatters/date/dateFormatConstants.d.ts +17 -0
- package/dist/formatters/date/dateFormatConstants.d.ts.map +1 -0
- package/dist/formatters/date/datePatternConstants.d.ts +16 -0
- package/dist/formatters/date/datePatternConstants.d.ts.map +1 -0
- package/dist/formatters/date/datePresetNameConstants.d.ts +27 -0
- package/dist/formatters/date/datePresetNameConstants.d.ts.map +1 -0
- package/dist/formatters/date/dateRange.d.ts +3 -1
- package/dist/formatters/date/dateRange.d.ts.map +1 -1
- package/dist/formatters/date/dateValueConstants.d.ts +15 -0
- package/dist/formatters/date/dateValueConstants.d.ts.map +1 -0
- package/dist/formatters/date/educationDate.d.ts.map +1 -1
- package/dist/formatters/date/formatDate.d.ts.map +1 -1
- package/dist/formatters/date/formatInstantDateTime.d.ts.map +1 -1
- package/dist/formatters/date/parseDate.d.ts.map +1 -1
- package/dist/formatters/date/pattern.d.ts.map +1 -1
- package/dist/formatters/date/presets.d.ts.map +1 -1
- package/dist/formatters/date/types.d.ts +8 -6
- package/dist/formatters/date/types.d.ts.map +1 -1
- package/dist/formatters/formatDurationMinutes.d.ts.map +1 -1
- package/dist/formatters/formatFileSize.d.ts.map +1 -1
- package/dist/formatters/formatPhone.d.ts.map +1 -1
- package/dist/formatters/index.js +6 -6
- package/dist/formatters/normalizeLeadingZeros.d.ts.map +1 -1
- package/dist/formatters/number/compact.d.ts.map +1 -1
- package/dist/formatters/number/formatCompactNumber.d.ts.map +1 -1
- package/dist/formatters/number/formatNumber.d.ts.map +1 -1
- package/dist/formatters/number/numberFormatConstants.d.ts +11 -0
- package/dist/formatters/number/numberFormatConstants.d.ts.map +1 -0
- package/dist/formatters/number/numberPresetNameConstants.d.ts +16 -0
- package/dist/formatters/number/numberPresetNameConstants.d.ts.map +1 -0
- package/dist/formatters/number/parseNumber.d.ts.map +1 -1
- package/dist/formatters/number/presets.d.ts.map +1 -1
- package/dist/formatters/number/types.d.ts +2 -1
- package/dist/formatters/number/types.d.ts.map +1 -1
- package/dist/formatters/pipeline/clone.d.ts.map +1 -1
- package/dist/formatters/pipeline/definitions.d.ts.map +1 -1
- package/dist/formatters/pipeline/dependencies.d.ts.map +1 -1
- package/dist/formatters/pipeline/execute.d.ts +4 -1
- package/dist/formatters/pipeline/execute.d.ts.map +1 -1
- package/dist/formatters/pipeline/formattersPipelineConstants.d.ts +19 -0
- package/dist/formatters/pipeline/formattersPipelineConstants.d.ts.map +1 -0
- package/dist/formatters/pipeline/normalize.d.ts.map +1 -1
- package/dist/formatters/pipeline/pipelineValidationConstants.d.ts +40 -0
- package/dist/formatters/pipeline/pipelineValidationConstants.d.ts.map +1 -0
- package/dist/formatters/pipeline/registry.d.ts +1 -1
- package/dist/formatters/pipeline/registry.d.ts.map +1 -1
- package/dist/formatters/pipeline/rekey.d.ts.map +1 -1
- package/dist/formatters/pipeline/runtime.d.ts.map +1 -1
- package/dist/formatters/pipeline/types.d.ts +24 -21
- package/dist/formatters/pipeline/types.d.ts.map +1 -1
- package/dist/formatters/pipeline/validate.d.ts +2 -1
- package/dist/formatters/pipeline/validate.d.ts.map +1 -1
- package/dist/formatters/strings/spaceCharacterConstants.d.ts +5 -0
- package/dist/formatters/strings/spaceCharacterConstants.d.ts.map +1 -0
- package/dist/formatters/strings/stripInnerSpaces.d.ts.map +1 -1
- package/dist/formatters/strings/stripLeadingZeros.d.ts.map +1 -1
- package/dist/formatters/valueState/fixedValueStateResolver.d.ts.map +1 -1
- package/dist/formatters/valueState/presentation.d.ts.map +1 -1
- package/dist/formatters/valueState/resolveValueStateClassName.d.ts.map +1 -1
- package/dist/formatters/valueState/thresholdValueStateResolver.d.ts.map +1 -1
- package/dist/formatters/valueState/types.d.ts +2 -1
- package/dist/formatters/valueState/types.d.ts.map +1 -1
- package/dist/formatters/valueState/valueStateRegistry.d.ts.map +1 -1
- package/dist/formatters/valueState/valueStateResolverConstants.d.ts +6 -0
- package/dist/formatters/valueState/valueStateResolverConstants.d.ts.map +1 -0
- package/dist/formulas/execute.d.ts +3 -2
- package/dist/formulas/execute.d.ts.map +1 -1
- package/dist/formulas/index.js +1 -1
- package/dist/formulas/isTableFormulaDependency.d.ts.map +1 -1
- package/dist/formulas/tableFormulaConstants.d.ts +12 -0
- package/dist/formulas/tableFormulaConstants.d.ts.map +1 -0
- package/dist/formulas/types.d.ts +2 -1
- package/dist/formulas/types.d.ts.map +1 -1
- package/dist/formulas/validate.d.ts +2 -1
- package/dist/formulas/validate.d.ts.map +1 -1
- package/dist/hooks/index.js +110 -107
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useBlockBrowserZoom.d.ts.map +1 -1
- package/dist/hooks/useDndSortableSensors.d.ts.map +1 -1
- package/dist/hooks/useFloatingListbox.d.ts +15 -33
- package/dist/hooks/useFloatingListbox.d.ts.map +1 -1
- package/dist/http/index.js +8 -7
- package/dist/http/index.js.map +1 -1
- package/dist/http/textResponse.d.ts.map +1 -1
- package/dist/indexed-records/createIndexedRecordsSchema.d.ts.map +1 -1
- package/dist/indexed-records/schema.js +24 -23
- package/dist/indexed-records/schema.js.map +1 -1
- package/dist/media/breakpointConstants.d.ts +5 -0
- package/dist/media/breakpointConstants.d.ts.map +1 -0
- package/dist/media/breakpoints.d.ts +2 -1
- package/dist/media/breakpoints.d.ts.map +1 -1
- package/dist/media/createNotificationTonePlayer.d.ts.map +1 -1
- package/dist/media/getCurrentFontSize.d.ts.map +1 -1
- package/dist/media/index.js +1 -1
- package/dist/media/mediaQueryConstants.d.ts +3 -0
- package/dist/media/mediaQueryConstants.d.ts.map +1 -0
- package/dist/media/responsive.d.ts +1 -1
- package/dist/media/responsive.d.ts.map +1 -1
- package/dist/media/useMatchMedia.d.ts.map +1 -1
- package/dist/media/useMediaQuery.d.ts.map +1 -1
- package/dist/metadata/baseMetaTypes.d.ts.map +1 -1
- package/dist/metadata/metadataTypes.d.ts +8 -7
- package/dist/metadata/metadataTypes.d.ts.map +1 -1
- package/dist/metadata/scalarTypeClassification.d.ts.map +1 -1
- package/dist/metadata/scalarTypeConstants.d.ts +21 -0
- package/dist/metadata/scalarTypeConstants.d.ts.map +1 -0
- package/dist/notifications/index.js +62 -62
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/notificationTypeConstants.d.ts +6 -0
- package/dist/notifications/notificationTypeConstants.d.ts.map +1 -0
- package/dist/notifications/notify.d.ts.map +1 -1
- package/dist/notifications/store.d.ts.map +1 -1
- package/dist/notifications/types.d.ts +2 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/number-scale/index.js +47 -46
- package/dist/number-scale/index.js.map +1 -1
- package/dist/number-scale/marksPositionConstants.d.ts +4 -0
- package/dist/number-scale/marksPositionConstants.d.ts.map +1 -0
- package/dist/number-scale/numberScale.d.ts +1 -1
- package/dist/number-scale/numberScale.d.ts.map +1 -1
- package/dist/number-scale/types.d.ts +2 -1
- package/dist/number-scale/types.d.ts.map +1 -1
- package/dist/odata-service/builder.d.ts.map +1 -1
- package/dist/odata-service/columns.d.ts.map +1 -1
- package/dist/odata-service/entityOperationConstants.d.ts +4 -0
- package/dist/odata-service/entityOperationConstants.d.ts.map +1 -0
- package/dist/odata-service/filterDefinitionConstants.d.ts +24 -0
- package/dist/odata-service/filterDefinitionConstants.d.ts.map +1 -0
- package/dist/odata-service/filterDefinitions.d.ts +19 -17
- package/dist/odata-service/filterDefinitions.d.ts.map +1 -1
- package/dist/odata-service/filterOperationConstants.d.ts +14 -0
- package/dist/odata-service/filterOperationConstants.d.ts.map +1 -0
- package/dist/odata-service/filters.d.ts.map +1 -1
- package/dist/odata-service/formatters.d.ts.map +1 -1
- package/dist/odata-service/index.js +439 -433
- package/dist/odata-service/index.js.map +1 -1
- package/dist/odata-service/odataMetadataConstants.d.ts +8 -0
- package/dist/odata-service/odataMetadataConstants.d.ts.map +1 -0
- package/dist/odata-service/parser.d.ts +1 -3
- package/dist/odata-service/parser.d.ts.map +1 -1
- package/dist/odata-service/schema.d.ts.map +1 -1
- package/dist/odata-service/sorts.d.ts.map +1 -1
- package/dist/odata-service/sqlFilters.d.ts +10 -5
- package/dist/odata-service/sqlFilters.d.ts.map +1 -1
- package/dist/odata-service/types.d.ts +5 -3
- package/dist/odata-service/types.d.ts.map +1 -1
- package/dist/pwa/index.js +72 -71
- package/dist/pwa/index.js.map +1 -1
- package/dist/pwa/sw-cache-policy.js +47 -47
- package/dist/pwa/sw-cache-policy.js.map +1 -1
- package/dist/pwa/swCachePolicy.d.ts +5 -1
- package/dist/pwa/swCachePolicy.d.ts.map +1 -1
- package/dist/pwa/useBrowserOnlineStatus.d.ts.map +1 -1
- package/dist/query-client/broadcast.d.ts +4 -3
- package/dist/query-client/broadcast.d.ts.map +1 -1
- package/dist/query-client/createQueryRestoreSchedulerGuard.d.ts.map +1 -1
- package/dist/query-client/createQueryRestoreStorage.d.ts.map +1 -1
- package/dist/query-client/index.js +1 -1
- package/dist/query-client/invalidationBroadcast.d.ts +2 -1
- package/dist/query-client/invalidationBroadcast.d.ts.map +1 -1
- package/dist/query-client/persistence.d.ts +9 -6
- package/dist/query-client/persistence.d.ts.map +1 -1
- package/dist/query-client/queryCacheEventConstants.d.ts +11 -0
- package/dist/query-client/queryCacheEventConstants.d.ts.map +1 -0
- package/dist/query-client/queryClient.d.ts +2 -1
- package/dist/query-client/queryClient.d.ts.map +1 -1
- package/dist/query-client/queryMeta.d.ts.map +1 -1
- package/dist/query-client/sessionPersistenceConstants.d.ts +5 -0
- package/dist/query-client/sessionPersistenceConstants.d.ts.map +1 -0
- package/dist/query-client/sessionScoped.d.ts.map +1 -1
- package/dist/query-client/sessionScopedResetConstants.d.ts +4 -0
- package/dist/query-client/sessionScopedResetConstants.d.ts.map +1 -0
- package/dist/query-client/sessionScopedResetLifecycleTypes.d.ts +2 -1
- package/dist/query-client/sessionScopedResetLifecycleTypes.d.ts.map +1 -1
- package/dist/seo/index.js +0 -1
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/seo.d.ts +3 -2
- package/dist/seo/seo.d.ts.map +1 -1
- package/dist/seo/seoContentTypeConstants.d.ts +6 -0
- package/dist/seo/seoContentTypeConstants.d.ts.map +1 -0
- package/dist/seo/types.d.ts +2 -1
- package/dist/seo/types.d.ts.map +1 -1
- package/dist/session-storage/index.js +1 -1
- package/dist/table/cellSelection.d.ts.map +1 -1
- package/dist/table/index.js +83 -79
- package/dist/table/index.js.map +1 -1
- package/dist/table/odataAdapter.d.ts +3 -3
- package/dist/table/odataAdapter.d.ts.map +1 -1
- package/dist/table/selection.d.ts +2 -2
- package/dist/table/selection.d.ts.map +1 -1
- package/dist/table/tableColumnConstants.d.ts +5 -0
- package/dist/table/tableColumnConstants.d.ts.map +1 -0
- package/dist/table/tableSelectionConstants.d.ts +8 -0
- package/dist/table/tableSelectionConstants.d.ts.map +1 -0
- package/dist/table/tanStackFeatures.d.ts +8 -8
- package/dist/table/types.d.ts +5 -3
- package/dist/table/types.d.ts.map +1 -1
- package/dist/table/useTableRowSelection.d.ts +2 -2
- package/dist/table/useTableRowSelection.d.ts.map +1 -1
- package/dist/table-document/index.js +88 -87
- package/dist/table-document/index.js.map +1 -1
- package/dist/table-document/insertTableDocumentAxis.d.ts +2 -1
- package/dist/table-document/insertTableDocumentAxis.d.ts.map +1 -1
- package/dist/table-document/tableDocument.d.ts +2 -1
- package/dist/table-document/tableDocument.d.ts.map +1 -1
- package/dist/table-document/tableDocumentAxisGroups.d.ts +4 -3
- package/dist/table-document/tableDocumentAxisGroups.d.ts.map +1 -1
- package/dist/table-document/tableDocumentConstants.d.ts +8 -0
- package/dist/table-document/tableDocumentConstants.d.ts.map +1 -0
- package/dist/table-document/tableDocumentGeometry.d.ts.map +1 -1
- package/dist/three-scene/index.js +32 -32
- package/dist/three-scene/index.js.map +1 -1
- package/dist/three-scene/threeSceneAvailability.d.ts +4 -3
- package/dist/three-scene/threeSceneAvailability.d.ts.map +1 -1
- package/dist/three-scene/threeSceneConstants.d.ts +14 -0
- package/dist/three-scene/threeSceneConstants.d.ts.map +1 -0
- package/dist/three-scene/useThreeSceneAvailability.d.ts.map +1 -1
- package/dist/tree-table/index.js +1 -1
- package/dist/types/abapBooleanConstants.d.ts +4 -0
- package/dist/types/abapBooleanConstants.d.ts.map +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/types.d.ts +4 -2
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/valueStateConstants.d.ts +8 -0
- package/dist/types/valueStateConstants.d.ts.map +1 -0
- package/dist/utils/cloneFunctionStrategyConstants.d.ts +4 -0
- package/dist/utils/cloneFunctionStrategyConstants.d.ts.map +1 -0
- package/dist/utils/createLazyComponent.d.ts.map +1 -1
- package/dist/utils/deepCloneWithoutFunctions.d.ts +2 -1
- package/dist/utils/deepCloneWithoutFunctions.d.ts.map +1 -1
- package/dist/utils/deepCopyWithoutFunctions.d.ts +2 -1
- package/dist/utils/deepCopyWithoutFunctions.d.ts.map +1 -1
- package/dist/utils/index.js +2 -209
- package/dist/utils/keyboard.d.ts +2 -1
- package/dist/utils/keyboard.d.ts.map +1 -1
- package/dist/utils/keyboardConstants.d.ts +16 -0
- package/dist/utils/keyboardConstants.d.ts.map +1 -0
- package/dist/validators/index.js +3 -3
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/validateUrl.d.ts.map +1 -1
- package/dist/value-transformers/execute.d.ts.map +1 -1
- package/dist/value-transformers/index.js +9 -6
- package/dist/value-transformers/index.js.map +1 -1
- package/dist/value-transformers/types.d.ts +3 -2
- package/dist/value-transformers/types.d.ts.map +1 -1
- package/dist/value-transformers/valueTransformerConstants.d.ts +4 -0
- package/dist/value-transformers/valueTransformerConstants.d.ts.map +1 -0
- package/package.json +6 -5
- package/src/binary/README.mdx +1 -1
- package/src/dom/README.mdx +1 -1
- package/src/query-client/README.mdx +4 -4
- package/dist/chunks/dom-BK22UmgF.js.map +0 -1
- package/dist/chunks/formatDate-BUvpRI7H.js +0 -133
- package/dist/chunks/formatDate-BUvpRI7H.js.map +0 -1
- package/dist/chunks/formatters-rxriDRPk.js.map +0 -1
- package/dist/chunks/formulas-BXT_XBWI.js.map +0 -1
- package/dist/chunks/media-WK38KtMl.js +0 -191
- package/dist/chunks/media-WK38KtMl.js.map +0 -1
- package/dist/chunks/query-client-CVRfrYZM.js.map +0 -1
- package/dist/chunks/scalarTypeClassification-BZcFmIyR.js +0 -764
- package/dist/chunks/scalarTypeClassification-BZcFmIyR.js.map +0 -1
- package/dist/chunks/uuid-CUJPAbRY.js.map +0 -1
- package/dist/chunks/validate-DsUR-bFF.js +0 -608
- package/dist/chunks/validate-DsUR-bFF.js.map +0 -1
- package/dist/utils/index.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import "./keyboardConstants-BZKskWsm.js";
|
|
1
2
|
import { useEffect as e, useEffectEvent as t, useLayoutEffect as n, useRef as r, useState as i } from "react";
|
|
2
3
|
//#region src/dom/downloadFile.ts
|
|
3
4
|
function a(e, t) {
|
|
@@ -14,19 +15,20 @@ function s(e, t) {
|
|
|
14
15
|
}
|
|
15
16
|
//#endregion
|
|
16
17
|
//#region src/dom/installFaviconOverride.ts
|
|
17
|
-
|
|
18
|
+
var c = "href", l = "type", u = "sizes";
|
|
19
|
+
function d(e, t) {
|
|
18
20
|
let n = [...e.querySelectorAll("link[rel=\"icon\"]")], r = n.map((e) => ({
|
|
19
21
|
icon: e,
|
|
20
|
-
href: e.getAttribute(
|
|
21
|
-
type: e.getAttribute(
|
|
22
|
-
sizes: e.getAttribute(
|
|
22
|
+
href: e.getAttribute(c),
|
|
23
|
+
type: e.getAttribute(l),
|
|
24
|
+
sizes: e.getAttribute(u)
|
|
23
25
|
}));
|
|
24
|
-
for (let e of n) e.setAttribute(
|
|
26
|
+
for (let e of n) e.setAttribute(c, t), e.setAttribute(l, "image/svg+xml"), e.setAttribute(u, "any");
|
|
25
27
|
return () => {
|
|
26
|
-
for (let e of r) if (e.icon.getAttribute(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
for (let e of r) if (e.icon.getAttribute(c) === t) for (let t of [
|
|
29
|
+
c,
|
|
30
|
+
l,
|
|
31
|
+
u
|
|
30
32
|
]) {
|
|
31
33
|
let n = e[t];
|
|
32
34
|
n === null ? e.icon.removeAttribute(t) : e.icon.setAttribute(t, n);
|
|
@@ -35,7 +37,7 @@ function c(e, t) {
|
|
|
35
37
|
}
|
|
36
38
|
//#endregion
|
|
37
39
|
//#region src/dom/getOrCreatePortalRoot.ts
|
|
38
|
-
function
|
|
40
|
+
function f(e) {
|
|
39
41
|
if (typeof document > "u") return null;
|
|
40
42
|
let t = document.getElementById(e);
|
|
41
43
|
if (t instanceof HTMLElement) return t;
|
|
@@ -44,7 +46,7 @@ function l(e) {
|
|
|
44
46
|
}
|
|
45
47
|
//#endregion
|
|
46
48
|
//#region src/dom/observeElementResize.ts
|
|
47
|
-
function
|
|
49
|
+
function p(e, t) {
|
|
48
50
|
if (typeof ResizeObserver > "u") return () => void 0;
|
|
49
51
|
let n = !0, r = new ResizeObserver((r) => {
|
|
50
52
|
n && r.some((t) => t.target === e) && t();
|
|
@@ -54,16 +56,16 @@ function u(e, t) {
|
|
|
54
56
|
};
|
|
55
57
|
}
|
|
56
58
|
//#endregion
|
|
57
|
-
//#region src/dom/
|
|
58
|
-
var
|
|
59
|
-
function
|
|
59
|
+
//#region src/dom/domScrollConstants.ts
|
|
60
|
+
var m = "instant", h = "overflow-anchor", g = /* @__PURE__ */ new WeakMap();
|
|
61
|
+
function _(e, t) {
|
|
60
62
|
if (!e?.isConnected || !t?.isConnected || e === t || !e.contains(t)) return null;
|
|
61
|
-
|
|
62
|
-
let n = t.getBoundingClientRect().top - e.getBoundingClientRect().top - e.clientTop + e.scrollTop, r = e.style.getPropertyValue(
|
|
63
|
-
e.style.setProperty(
|
|
64
|
-
let o = e.style.getPropertyValue(
|
|
63
|
+
g.get(e)?.release();
|
|
64
|
+
let n = t.getBoundingClientRect().top - e.getBoundingClientRect().top - e.clientTop + e.scrollTop, r = e.style.getPropertyValue(h), i = e.style.getPropertyPriority(h), a = !0;
|
|
65
|
+
e.style.setProperty(h, "none", "important");
|
|
66
|
+
let o = e.style.getPropertyValue(h), s = e.style.getPropertyPriority(h), c = () => e.style.getPropertyValue(h) === o && e.style.getPropertyPriority(h) === s, l = {
|
|
65
67
|
release() {
|
|
66
|
-
a && (a = !1,
|
|
68
|
+
a && (a = !1, g.delete(e), c() && (r ? e.style.setProperty(h, r, i) : e.style.removeProperty(h)));
|
|
67
69
|
},
|
|
68
70
|
restore() {
|
|
69
71
|
if (!a) return !1;
|
|
@@ -72,18 +74,19 @@ function f(e, t) {
|
|
|
72
74
|
let r = t.getBoundingClientRect().top - e.getBoundingClientRect().top - e.clientTop + e.scrollTop - n;
|
|
73
75
|
return r !== 0 && e.scrollBy({
|
|
74
76
|
top: r,
|
|
75
|
-
behavior:
|
|
77
|
+
behavior: m
|
|
76
78
|
}), !0;
|
|
77
79
|
} finally {
|
|
78
80
|
l.release();
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
83
|
};
|
|
82
|
-
return
|
|
84
|
+
return g.set(e, l), l;
|
|
83
85
|
}
|
|
84
86
|
//#endregion
|
|
85
87
|
//#region src/dom/useClickOutside.ts
|
|
86
|
-
|
|
88
|
+
var v = "mousedown";
|
|
89
|
+
function y(t, n) {
|
|
87
90
|
e(() => {
|
|
88
91
|
let e = (e) => {
|
|
89
92
|
if (Array.isArray(t)) {
|
|
@@ -92,12 +95,12 @@ function p(t, n) {
|
|
|
92
95
|
r && n();
|
|
93
96
|
} else t.current && !t.current.contains(e.target) && n();
|
|
94
97
|
};
|
|
95
|
-
return document.addEventListener(
|
|
98
|
+
return document.addEventListener(v, e), () => document.removeEventListener(v, e);
|
|
96
99
|
}, [t, n]);
|
|
97
100
|
}
|
|
98
101
|
//#endregion
|
|
99
102
|
//#region src/dom/useElementHeightObserver.ts
|
|
100
|
-
function
|
|
103
|
+
function b(e) {
|
|
101
104
|
let [t, r] = i(0);
|
|
102
105
|
return n(() => {
|
|
103
106
|
let t = e.current;
|
|
@@ -110,8 +113,11 @@ function m(e) {
|
|
|
110
113
|
}, [e.current]), t;
|
|
111
114
|
}
|
|
112
115
|
//#endregion
|
|
116
|
+
//#region src/dom/domEventConstants.ts
|
|
117
|
+
var x = "keydown", S = "resize";
|
|
118
|
+
//#endregion
|
|
113
119
|
//#region src/dom/useEscapeDismiss.ts
|
|
114
|
-
function
|
|
120
|
+
function C({ active: n, onDismiss: r, enabled: i = !0, documentTarget: a, containerRef: o }) {
|
|
115
121
|
let s = t(() => r());
|
|
116
122
|
e(() => {
|
|
117
123
|
if (!n || !i) return;
|
|
@@ -122,7 +128,7 @@ function h({ active: n, onDismiss: r, enabled: i = !0, documentTarget: a, contai
|
|
|
122
128
|
let n = e.activeElement, r = o?.current;
|
|
123
129
|
r && n instanceof Node && n !== r && !r.contains(n) || (t.preventDefault(), s());
|
|
124
130
|
};
|
|
125
|
-
return e.addEventListener(
|
|
131
|
+
return e.addEventListener(x, t, !0), () => e.removeEventListener(x, t, !0);
|
|
126
132
|
}, [
|
|
127
133
|
n,
|
|
128
134
|
i,
|
|
@@ -131,10 +137,10 @@ function h({ active: n, onDismiss: r, enabled: i = !0, documentTarget: a, contai
|
|
|
131
137
|
]);
|
|
132
138
|
}
|
|
133
139
|
//#endregion
|
|
134
|
-
//#region src/dom/
|
|
135
|
-
var
|
|
136
|
-
function
|
|
137
|
-
let l = r(null), u = c ?? l, d = r(null), f = t((e) => Array.from(e.querySelectorAll(
|
|
140
|
+
//#region src/dom/overlayFocusConstants.ts
|
|
141
|
+
var w = "auto", T = "button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [contenteditable=\"true\"]:not([tabindex=\"-1\"]), [contenteditable=\"\"]:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])";
|
|
142
|
+
function E({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o = w, restoreFocusTarget: s, containerRef: c }) {
|
|
143
|
+
let l = r(null), u = c ?? l, d = r(null), f = t((e) => Array.from(e.querySelectorAll(T)).filter((e) => !e.hasAttribute("aria-hidden"))), p = t((e) => {
|
|
138
144
|
if (o === "container") return e;
|
|
139
145
|
if (typeof o == "function") return o(e) ?? e;
|
|
140
146
|
let t = f(e);
|
|
@@ -149,7 +155,7 @@ function _({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o
|
|
|
149
155
|
return;
|
|
150
156
|
}
|
|
151
157
|
let n = p(e);
|
|
152
|
-
n instanceof HTMLElement && n.isConnected && n.focus({ preventScroll: !0 }), i && e.addEventListener(
|
|
158
|
+
n instanceof HTMLElement && n.isConnected && n.focus({ preventScroll: !0 }), i && e.addEventListener(x, o);
|
|
153
159
|
}, o = (t) => {
|
|
154
160
|
if (!i || t.key !== "Tab" || !e) return;
|
|
155
161
|
let n = f(e);
|
|
@@ -165,7 +171,7 @@ function _({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o
|
|
|
165
171
|
o === a && (t.preventDefault(), r.focus());
|
|
166
172
|
};
|
|
167
173
|
return r(), () => {
|
|
168
|
-
if (window.cancelAnimationFrame(t), i && e && e.removeEventListener(
|
|
174
|
+
if (window.cancelAnimationFrame(t), i && e && e.removeEventListener(x, o), !a) return;
|
|
169
175
|
let n = m();
|
|
170
176
|
n?.isConnected && n.focus({ preventScroll: !0 });
|
|
171
177
|
};
|
|
@@ -178,15 +184,15 @@ function _({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o
|
|
|
178
184
|
}
|
|
179
185
|
//#endregion
|
|
180
186
|
//#region src/dom/useFocusTrap.ts
|
|
181
|
-
var
|
|
187
|
+
var D = (e) => E({
|
|
182
188
|
active: e,
|
|
183
189
|
trapFocus: !0,
|
|
184
190
|
restoreFocus: !0,
|
|
185
|
-
initialFocus:
|
|
191
|
+
initialFocus: w
|
|
186
192
|
});
|
|
187
193
|
//#endregion
|
|
188
194
|
//#region src/dom/useIntersectionObserver.ts
|
|
189
|
-
function
|
|
195
|
+
function ee(t, n) {
|
|
190
196
|
let [r, a] = i(!1);
|
|
191
197
|
return e(() => {
|
|
192
198
|
let e = t.current;
|
|
@@ -201,21 +207,19 @@ function y(t, n) {
|
|
|
201
207
|
}
|
|
202
208
|
//#endregion
|
|
203
209
|
//#region src/dom/useIsTouchDevice.ts
|
|
204
|
-
var
|
|
210
|
+
var O = () => {
|
|
205
211
|
let [t, n] = i(!1);
|
|
206
212
|
return e(() => {
|
|
207
213
|
let e = () => {
|
|
208
214
|
let e = window.matchMedia("(pointer: coarse)").matches || "ontouchstart" in window || navigator.maxTouchPoints > 0;
|
|
209
215
|
n(e);
|
|
210
216
|
};
|
|
211
|
-
return e(), window.addEventListener(
|
|
212
|
-
window.removeEventListener(
|
|
217
|
+
return e(), window.addEventListener(S, e), () => {
|
|
218
|
+
window.removeEventListener(S, e);
|
|
213
219
|
};
|
|
214
220
|
}, []), t;
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
//#region src/dom/document-scroll/canConsumeVerticalTouchScroll.ts
|
|
218
|
-
function x(e, t, n) {
|
|
221
|
+
}, k = 1;
|
|
222
|
+
function A(e, t, n) {
|
|
219
223
|
let r = e.defaultView;
|
|
220
224
|
if (!r) return !0;
|
|
221
225
|
for (let i of t) {
|
|
@@ -225,14 +229,14 @@ function x(e, t, n) {
|
|
|
225
229
|
if (!/^(auto|scroll|overlay)$/.test(t.overflowY)) continue;
|
|
226
230
|
if (t.flexDirection === "column-reverse" || t.writingMode && t.writingMode !== "horizontal-tb") return !0;
|
|
227
231
|
let a = Math.max(0, i.scrollHeight - i.clientHeight), o = Math.max(0, Math.min(a, i.scrollTop));
|
|
228
|
-
if (n > 0 ? a - o >
|
|
232
|
+
if (n > 0 ? a - o > k : o > k) return !0;
|
|
229
233
|
if (/^(contain|none)$/.test(t.overscrollBehaviorY)) return !1;
|
|
230
234
|
}
|
|
231
235
|
return !1;
|
|
232
236
|
}
|
|
233
237
|
//#endregion
|
|
234
238
|
//#region src/dom/document-scroll/isNativeTouchInteraction.ts
|
|
235
|
-
function
|
|
239
|
+
function j(e, t) {
|
|
236
240
|
let n = e.defaultView;
|
|
237
241
|
if (!n) return !0;
|
|
238
242
|
let r = !1, i;
|
|
@@ -251,11 +255,12 @@ function S(e, t) {
|
|
|
251
255
|
}
|
|
252
256
|
//#endregion
|
|
253
257
|
//#region src/dom/document-scroll/attachDocumentTouchScrollGuard.ts
|
|
254
|
-
|
|
258
|
+
var M = "touchstart", N = "touchmove", P = "touchend", F = "touchcancel";
|
|
259
|
+
function te(e) {
|
|
255
260
|
let t = e.defaultView, n = null, r = !1, i = (i) => {
|
|
256
261
|
if (r) return;
|
|
257
262
|
let a = i.touches[0], o = i.composedPath();
|
|
258
|
-
if (i.touches.length !== 1 || !a || (t?.visualViewport?.scale ?? 1) > 1 ||
|
|
263
|
+
if (i.touches.length !== 1 || !a || (t?.visualViewport?.scale ?? 1) > 1 || j(e, o)) {
|
|
259
264
|
r = !0, n = null;
|
|
260
265
|
return;
|
|
261
266
|
}
|
|
@@ -278,92 +283,92 @@ function C(e) {
|
|
|
278
283
|
x: a.clientX,
|
|
279
284
|
y: a.clientY,
|
|
280
285
|
path: c
|
|
281
|
-
},
|
|
286
|
+
}, j(e, c)) {
|
|
282
287
|
r = !0;
|
|
283
288
|
return;
|
|
284
289
|
}
|
|
285
|
-
!i.cancelable || i.defaultPrevented || !u || Math.abs(l) >= Math.abs(u) ||
|
|
290
|
+
!i.cancelable || i.defaultPrevented || !u || Math.abs(l) >= Math.abs(u) || A(e, c, u) || i.preventDefault();
|
|
286
291
|
}, o = (e) => {
|
|
287
292
|
e.touches.length > 0 || (n = null, r = !1);
|
|
288
293
|
};
|
|
289
|
-
return e.addEventListener(
|
|
294
|
+
return e.addEventListener(M, i, {
|
|
290
295
|
capture: !0,
|
|
291
296
|
passive: !0
|
|
292
|
-
}), e.addEventListener(
|
|
297
|
+
}), e.addEventListener(N, a, {
|
|
293
298
|
capture: !0,
|
|
294
299
|
passive: !1
|
|
295
|
-
}), e.addEventListener(
|
|
300
|
+
}), e.addEventListener(P, o, {
|
|
296
301
|
capture: !0,
|
|
297
302
|
passive: !0
|
|
298
|
-
}), e.addEventListener(
|
|
303
|
+
}), e.addEventListener(F, o, {
|
|
299
304
|
capture: !0,
|
|
300
305
|
passive: !0
|
|
301
306
|
}), () => {
|
|
302
|
-
e.removeEventListener(
|
|
307
|
+
e.removeEventListener(M, i, !0), e.removeEventListener(N, a, !0), e.removeEventListener(P, o, !0), e.removeEventListener(F, o, !0), n = null;
|
|
303
308
|
};
|
|
304
309
|
}
|
|
305
310
|
//#endregion
|
|
306
311
|
//#region src/dom/document-scroll/acquireDocumentScrollLock.ts
|
|
307
|
-
var
|
|
308
|
-
function
|
|
312
|
+
var I = "overflow", L = "overflow-x", R = "overflow-y", z = "position", B = "top", V = "left", H = "width", U = "box-sizing", W = "padding-right", G = "hidden", K = /* @__PURE__ */ new WeakMap();
|
|
313
|
+
function q(e, t) {
|
|
309
314
|
return t.map((t) => ({
|
|
310
315
|
name: t,
|
|
311
316
|
value: e.getPropertyValue(t),
|
|
312
317
|
priority: e.getPropertyPriority(t)
|
|
313
318
|
}));
|
|
314
319
|
}
|
|
315
|
-
function
|
|
320
|
+
function J(e, t) {
|
|
316
321
|
for (let { name: n } of t) e.removeProperty(n);
|
|
317
322
|
for (let { name: n, value: r, priority: i } of t) r && e.setProperty(n, r, i);
|
|
318
323
|
}
|
|
319
|
-
function
|
|
324
|
+
function Y(e, t) {
|
|
320
325
|
let n = e.defaultView, r = e.body;
|
|
321
326
|
if (!n || !r) return () => void 0;
|
|
322
|
-
let i =
|
|
327
|
+
let i = K.get(e);
|
|
323
328
|
if (!i) {
|
|
324
|
-
let t = e.documentElement.style, a = r.style, o =
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
]), s =
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
]), c =
|
|
339
|
-
t.setProperty(
|
|
340
|
-
let
|
|
329
|
+
let t = e.documentElement.style, a = r.style, o = q(t, [
|
|
330
|
+
I,
|
|
331
|
+
L,
|
|
332
|
+
R
|
|
333
|
+
]), s = q(a, [
|
|
334
|
+
z,
|
|
335
|
+
B,
|
|
336
|
+
V,
|
|
337
|
+
H,
|
|
338
|
+
I,
|
|
339
|
+
L,
|
|
340
|
+
R,
|
|
341
|
+
U,
|
|
342
|
+
W
|
|
343
|
+
]), c = q(a, [W]), l = n.scrollX, u = n.scrollY, d = Math.max(0, n.innerWidth - e.documentElement.clientWidth), f = Number.parseFloat(n.getComputedStyle(r).paddingRight) || 0, p = /* @__PURE__ */ new Map();
|
|
344
|
+
t.setProperty(I, G), a.setProperty(z, "fixed"), a.setProperty(B, `${-u}px`), a.setProperty(V, `${-l}px`), a.setProperty(H, "100%"), a.setProperty(I, G), a.setProperty(U, "border-box");
|
|
345
|
+
let h = te(e);
|
|
341
346
|
i = {
|
|
342
347
|
leases: p,
|
|
343
348
|
updateCompensation: () => {
|
|
344
|
-
d > 0 && [...p.values()].some(Boolean) ? a.setProperty(
|
|
349
|
+
d > 0 && [...p.values()].some(Boolean) ? a.setProperty(W, `${f + d}px`) : J(a, c);
|
|
345
350
|
},
|
|
346
351
|
restore: () => {
|
|
347
|
-
|
|
352
|
+
h(), J(t, o), J(a, s), n.scrollTo({
|
|
348
353
|
left: l,
|
|
349
354
|
top: u,
|
|
350
|
-
behavior:
|
|
355
|
+
behavior: m
|
|
351
356
|
});
|
|
352
357
|
}
|
|
353
|
-
},
|
|
358
|
+
}, K.set(e, i);
|
|
354
359
|
}
|
|
355
360
|
let a = Symbol();
|
|
356
361
|
return i.leases.set(a, t), i.updateCompensation(), () => {
|
|
357
|
-
i.leases.delete(a) && (i.leases.size > 0 ? i.updateCompensation() : (
|
|
362
|
+
i.leases.delete(a) && (i.leases.size > 0 ? i.updateCompensation() : (K.delete(e), i.restore()));
|
|
358
363
|
};
|
|
359
364
|
}
|
|
360
365
|
//#endregion
|
|
361
366
|
//#region src/dom/useDocumentScrollLock.ts
|
|
362
|
-
function
|
|
367
|
+
function X({ active: t, documentTarget: n, compensateScrollbar: r = !1 }) {
|
|
363
368
|
e(() => {
|
|
364
369
|
if (!t) return;
|
|
365
370
|
let e = n === void 0 ? typeof document > "u" ? null : document : n;
|
|
366
|
-
if (e) return
|
|
371
|
+
if (e) return Y(e, r);
|
|
367
372
|
}, [
|
|
368
373
|
t,
|
|
369
374
|
n,
|
|
@@ -372,16 +377,16 @@ function O({ active: t, documentTarget: n, compensateScrollbar: r = !1 }) {
|
|
|
372
377
|
}
|
|
373
378
|
//#endregion
|
|
374
379
|
//#region src/dom/visual-viewport/attachVisualViewportFrame.ts
|
|
375
|
-
var
|
|
380
|
+
var Z = "scroll", Q = [
|
|
376
381
|
"--visual-viewport-top",
|
|
377
382
|
"--visual-viewport-left",
|
|
378
383
|
"--visual-viewport-width",
|
|
379
384
|
"--visual-viewport-height"
|
|
380
|
-
],
|
|
381
|
-
function
|
|
385
|
+
], $ = /* @__PURE__ */ new WeakMap();
|
|
386
|
+
function ne(e) {
|
|
382
387
|
let t = e.ownerDocument.defaultView;
|
|
383
388
|
if (!t) return () => void 0;
|
|
384
|
-
let n = t.visualViewport, r = e.style, i =
|
|
389
|
+
let n = t.visualViewport, r = e.style, i = Q.map((e) => ({
|
|
385
390
|
name: e,
|
|
386
391
|
value: r.getPropertyValue(e),
|
|
387
392
|
priority: r.getPropertyPriority(e)
|
|
@@ -398,37 +403,37 @@ function j(e) {
|
|
|
398
403
|
t.innerWidth,
|
|
399
404
|
t.innerHeight
|
|
400
405
|
];
|
|
401
|
-
|
|
406
|
+
Q.forEach((t, n) => {
|
|
402
407
|
let o = `${Number.isFinite(e[n]) ? e[n] : i[n]}px`;
|
|
403
408
|
a.get(t) !== o && (r.setProperty(t, o), a.set(t, o));
|
|
404
409
|
});
|
|
405
410
|
}, c = () => {
|
|
406
411
|
o ||= t.requestAnimationFrame(s);
|
|
407
412
|
};
|
|
408
|
-
return s(), n?.addEventListener(
|
|
409
|
-
t.cancelAnimationFrame(o), n?.removeEventListener(
|
|
413
|
+
return s(), n?.addEventListener(S, c), n?.addEventListener(Z, c), t.addEventListener(S, c), () => {
|
|
414
|
+
t.cancelAnimationFrame(o), n?.removeEventListener(S, c), n?.removeEventListener(Z, c), t.removeEventListener(S, c);
|
|
410
415
|
for (let { name: e, value: t, priority: n } of i) r.getPropertyValue(e) !== a.get(e) || r.getPropertyPriority(e) || (t ? r.setProperty(e, t, n) : r.removeProperty(e));
|
|
411
416
|
};
|
|
412
417
|
}
|
|
413
|
-
function
|
|
414
|
-
let t =
|
|
418
|
+
function re(e) {
|
|
419
|
+
let t = $.get(e);
|
|
415
420
|
t || (t = {
|
|
416
421
|
leases: /* @__PURE__ */ new Set(),
|
|
417
|
-
detach:
|
|
418
|
-
},
|
|
422
|
+
detach: ne(e)
|
|
423
|
+
}, $.set(e, t));
|
|
419
424
|
let n = Symbol();
|
|
420
425
|
return t.leases.add(n), () => {
|
|
421
|
-
!t.leases.delete(n) || t.leases.size > 0 || (
|
|
426
|
+
!t.leases.delete(n) || t.leases.size > 0 || ($.delete(e), t.detach());
|
|
422
427
|
};
|
|
423
428
|
}
|
|
424
429
|
//#endregion
|
|
425
430
|
//#region src/dom/useVisualViewportFrame.ts
|
|
426
|
-
function
|
|
431
|
+
function ie({ active: t, containerRef: n }) {
|
|
427
432
|
e(() => {
|
|
428
433
|
if (!t || typeof window > "u") return;
|
|
429
434
|
let e = 0, r, i = () => {
|
|
430
435
|
let t = n.current;
|
|
431
|
-
t ? r =
|
|
436
|
+
t ? r = re(t) : e = window.requestAnimationFrame(i);
|
|
432
437
|
};
|
|
433
438
|
return i(), () => {
|
|
434
439
|
window.cancelAnimationFrame(e), r?.();
|
|
@@ -436,6 +441,6 @@ function N({ active: t, containerRef: n }) {
|
|
|
436
441
|
}, [t, n]);
|
|
437
442
|
}
|
|
438
443
|
//#endregion
|
|
439
|
-
export {
|
|
444
|
+
export { D as a, b as c, p as d, f, a as g, s as h, ee as i, y as l, o as m, X as n, E as o, d as p, O as r, C as s, ie as t, _ as u };
|
|
440
445
|
|
|
441
|
-
//# sourceMappingURL=dom-
|
|
446
|
+
//# sourceMappingURL=dom-ZSeWZ0Gg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-ZSeWZ0Gg.js","names":[],"sources":["../../src/dom/downloadFile.ts","../../src/dom/installFaviconOverride.ts","../../src/dom/getOrCreatePortalRoot.ts","../../src/dom/observeElementResize.ts","../../src/dom/domScrollConstants.ts","../../src/dom/scroll-anchor/captureScrollAnchor.ts","../../src/dom/useClickOutside.ts","../../src/dom/useElementHeightObserver.ts","../../src/dom/domEventConstants.ts","../../src/dom/useEscapeDismiss.ts","../../src/dom/overlayFocusConstants.ts","../../src/dom/useOverlayFocus.ts","../../src/dom/useFocusTrap.ts","../../src/dom/useIntersectionObserver.ts","../../src/dom/useIsTouchDevice.ts","../../src/dom/document-scroll/canConsumeVerticalTouchScroll.ts","../../src/dom/document-scroll/isNativeTouchInteraction.ts","../../src/dom/document-scroll/attachDocumentTouchScrollGuard.ts","../../src/dom/document-scroll/acquireDocumentScrollLock.ts","../../src/dom/useDocumentScrollLock.ts","../../src/dom/visual-viewport/attachVisualViewportFrame.ts","../../src/dom/useVisualViewportFrame.ts"],"sourcesContent":["export function downloadFileFromObjectURL(filename: string, objectUrl: string) {\n\tconst link = document.createElement(\"a\");\n\n\tlink.href = objectUrl;\n\tlink.download = filename;\n\tlink.click();\n\n\twindow.setTimeout(() => {\n\t\twindow.URL.revokeObjectURL(objectUrl);\n\t}, 0);\n}\n\nexport function downloadFileFromBlob(filename: string, blob: Blob) {\n\tconst objectUrl = window.URL.createObjectURL(blob);\n\tdownloadFileFromObjectURL(filename, objectUrl);\n}\n\nexport function downloadFileFromJson(filename: string, payload: unknown) {\n\tconst blob = new Blob([JSON.stringify(payload, null, 2)], { type: \"application/json;charset=utf-8\" });\n\tdownloadFileFromBlob(filename, blob);\n}\n","// Снимок и восстановление используют один набор принадлежащих override атрибутов.\nconst ICON_HREF_ATTRIBUTE = \"href\";\nconst ICON_TYPE_ATTRIBUTE = \"type\";\nconst ICON_SIZES_ATTRIBUTE = \"sizes\";\n\n/**\n * Временный SVG favicon с симметричным восстановлением атрибутов. Сохраняет\n * media исходных links; не меняет Apple/mask icons и не удаляет чужие узлы head.\n */\nexport function installFaviconOverride(document: Document, href: string): () => void {\n\tconst icons = [...document.querySelectorAll<HTMLLinkElement>('link[rel=\"icon\"]')];\n\tconst snapshots = icons.map((icon) => ({\n\t\ticon,\n\t\thref: icon.getAttribute(ICON_HREF_ATTRIBUTE),\n\t\ttype: icon.getAttribute(ICON_TYPE_ATTRIBUTE),\n\t\tsizes: icon.getAttribute(ICON_SIZES_ATTRIBUTE)\n\t}));\n\tfor (const icon of icons) {\n\t\ticon.setAttribute(ICON_HREF_ATTRIBUTE, href);\n\t\ticon.setAttribute(ICON_TYPE_ATTRIBUTE, \"image/svg+xml\");\n\t\ticon.setAttribute(ICON_SIZES_ATTRIBUTE, \"any\");\n\t}\n\treturn () => {\n\t\tfor (const snapshot of snapshots) {\n\t\t\tif (snapshot.icon.getAttribute(ICON_HREF_ATTRIBUTE) !== href) continue;\n\t\t\tfor (const attribute of [ICON_HREF_ATTRIBUTE, ICON_TYPE_ATTRIBUTE, ICON_SIZES_ATTRIBUTE] as const) {\n\t\t\t\tconst value = snapshot[attribute];\n\t\t\t\tif (value === null) snapshot.icon.removeAttribute(attribute);\n\t\t\t\telse snapshot.icon.setAttribute(attribute, value);\n\t\t\t}\n\t\t}\n\t};\n}\n","export function getOrCreatePortalRoot(id: string): HTMLElement | null {\n\tif (typeof document === \"undefined\") {\n\t\treturn null;\n\t}\n\n\tconst existingElement = document.getElementById(id);\n\tif (existingElement instanceof HTMLElement) {\n\t\treturn existingElement;\n\t}\n\n\tconst portalRoot = document.createElement(\"div\");\n\tportalRoot.id = id;\n\tdocument.body.append(portalRoot);\n\n\treturn portalRoot;\n}\n","/**\n * Наблюдает изменение одного DOM-контейнера без React state. Callback вызывается\n * в batched delivery ResizeObserver, поэтому дополнительный animation frame не нужен.\n * Возвращённый cleanup отключает observer и игнорирует уже поставленную delivery.\n */\nexport function observeElementResize(element: HTMLElement, onResize: () => void): () => void {\n\tif (typeof ResizeObserver === \"undefined\") return () => undefined;\n\tlet active = true;\n\tconst observer = new ResizeObserver((entries) => {\n\t\tif (active && entries.some((entry) => entry.target === element)) onResize();\n\t});\n\tobserver.observe(element);\n\treturn () => {\n\t\tif (!active) return;\n\t\tactive = false;\n\t\tobserver.disconnect();\n\t};\n}\n","/** Компенсация позиции не должна наследовать пользовательский CSS smooth scrolling. */\nexport const DOM_INSTANT_SCROLL_BEHAVIOR = \"instant\";\n","import { DOM_INSTANT_SCROLL_BEHAVIOR } from \"../domScrollConstants\";\n\nimport { type CapturedScrollAnchor } from \"./scrollAnchorTypes\";\n\nconst OVERFLOW_ANCHOR_PROPERTY = \"overflow-anchor\";\n\n// Один scroll host не может одновременно компенсировать один и тот же prepend дважды.\nconst activeAnchors = new WeakMap<HTMLElement, CapturedScrollAnchor>();\n\n/**\n * Захватывает позицию сохраняемого элемента перед изменением обычного вертикального списка.\n * Вызывать только на browser event/effect boundary; restore — после DOM commit, release — при отмене.\n * Новый захват того же viewport завершает предыдущий без прокрутки.\n */\nexport function captureScrollAnchor(viewport: HTMLElement | null, anchor: HTMLElement | null): CapturedScrollAnchor | null {\n\tif (!viewport?.isConnected || !anchor?.isConnected || viewport === anchor || !viewport.contains(anchor)) return null;\n\n\tactiveAnchors.get(viewport)?.release();\n\tconst initialOffset =\n\t\tanchor.getBoundingClientRect().top - viewport.getBoundingClientRect().top - viewport.clientTop + viewport.scrollTop;\n\tconst initialStyle = viewport.style.getPropertyValue(OVERFLOW_ANCHOR_PROPERTY);\n\tconst initialPriority = viewport.style.getPropertyPriority(OVERFLOW_ANCHOR_PROPERTY);\n\tlet active = true;\n\n\t// Native anchoring иначе успеет компенсировать prepend до restore и приведёт к двойному сдвигу.\n\tviewport.style.setProperty(OVERFLOW_ANCHOR_PROPERTY, \"none\", \"important\");\n\t// В браузере без этого CSS-свойства native anchoring тоже отсутствует: сравниваем фактически принятый стиль.\n\tconst ownedStyle = viewport.style.getPropertyValue(OVERFLOW_ANCHOR_PROPERTY);\n\tconst ownedPriority = viewport.style.getPropertyPriority(OVERFLOW_ANCHOR_PROPERTY);\n\tconst ownsStyle = () =>\n\t\tviewport.style.getPropertyValue(OVERFLOW_ANCHOR_PROPERTY) === ownedStyle &&\n\t\tviewport.style.getPropertyPriority(OVERFLOW_ANCHOR_PROPERTY) === ownedPriority;\n\n\tconst operation: CapturedScrollAnchor = {\n\t\trelease() {\n\t\t\tif (!active) return;\n\t\t\tactive = false;\n\t\t\tactiveAnchors.delete(viewport);\n\t\t\t// Не затираем новое решение host, если он сам изменил свойство во время ожидания.\n\t\t\tif (!ownsStyle()) return;\n\t\t\tif (initialStyle) viewport.style.setProperty(OVERFLOW_ANCHOR_PROPERTY, initialStyle, initialPriority);\n\t\t\telse viewport.style.removeProperty(OVERFLOW_ANCHOR_PROPERTY);\n\t\t},\n\t\trestore() {\n\t\t\tif (!active) return false;\n\t\t\ttry {\n\t\t\t\tif (!viewport.isConnected || !anchor.isConnected || !viewport.contains(anchor) || !ownsStyle()) return false;\n\t\t\t\tconst currentOffset =\n\t\t\t\t\tanchor.getBoundingClientRect().top - viewport.getBoundingClientRect().top - viewport.clientTop + viewport.scrollTop;\n\t\t\t\tconst delta = currentOffset - initialOffset;\n\t\t\t\t// Content-space delta не отменяет ручную прокрутку между запросом и commit.\n\t\t\t\t// Instant не наследует CSS smooth; горизонтальная позиция остаётся неизменной.\n\t\t\t\tif (delta !== 0) viewport.scrollBy({ top: delta, behavior: DOM_INSTANT_SCROLL_BEHAVIOR });\n\t\t\t\treturn true;\n\t\t\t} finally {\n\t\t\t\toperation.release();\n\t\t\t}\n\t\t}\n\t};\n\tactiveAnchors.set(viewport, operation);\n\treturn operation;\n}\n","import { type RefObject, useEffect } from \"react\";\n\nconst MOUSE_DOWN_EVENT = \"mousedown\";\n\nexport function useClickOutside(ref: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[], handler: () => void) {\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (Array.isArray(ref)) {\n\t\t\t\tlet isOutside = true;\n\t\t\t\tfor (const r of ref) {\n\t\t\t\t\tif (r.current && r.current.contains(event.target as Node)) {\n\t\t\t\t\t\tisOutside = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isOutside) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} else if (ref.current && !ref.current.contains(event.target as Node)) {\n\t\t\t\thandler();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener(MOUSE_DOWN_EVENT, handleClickOutside);\n\t\treturn () => document.removeEventListener(MOUSE_DOWN_EVENT, handleClickOutside);\n\t}, [ref, handler]);\n}\n","import { type RefObject, useLayoutEffect, useState } from \"react\";\n\nexport function useElementHeightObserver<TElement extends HTMLElement>(elementRef: RefObject<TElement | null>) {\n\tconst [height, setHeight] = useState(0);\n\n\tuseLayoutEffect(() => {\n\t\tconst element = elementRef.current;\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\tconst nextHeight = entries[0]?.contentRect.height ?? element.getBoundingClientRect().height;\n\t\t\tsetHeight(nextHeight);\n\t\t});\n\t\tobserver.observe(element);\n\n\t\treturn () => observer.disconnect();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps, react-hooks/refs\n\t}, [elementRef.current]);\n\n\treturn height;\n}\n","/** Общие имена событий сохраняют симметрию подписки и её освобождения в DOM-модуле. */\nexport const DOM_KEYDOWN_EVENT = \"keydown\";\nexport const DOM_RESIZE_EVENT = \"resize\";\n","import { type RefObject, useEffect, useEffectEvent } from \"react\";\n\nimport { KEYBOARD_KEY_ESCAPE } from \"../utils/keyboardConstants\";\n\nimport { DOM_KEYDOWN_EVENT } from \"./domEventConstants\";\n\ninterface UseEscapeDismissOptions {\n\tactive: boolean;\n\tonDismiss: () => void;\n\tenabled?: boolean;\n\tdocumentTarget?: Document | null;\n\tcontainerRef?: RefObject<HTMLElement | null>;\n}\n\n/**\n * Подписывает overlay на закрытие по клавише Escape.\n */\nexport function useEscapeDismiss({ active, onDismiss, enabled = true, documentTarget, containerRef }: UseEscapeDismissOptions) {\n\tconst dismiss = useEffectEvent(() => onDismiss());\n\n\tuseEffect(() => {\n\t\tif (!active || !enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetDocument = documentTarget ?? (typeof document === \"undefined\" ? null : document);\n\t\tif (!targetDocument) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key !== KEYBOARD_KEY_ESCAPE /*|| event.defaultPrevented*/) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst activeElement = targetDocument.activeElement;\n\t\t\tconst container = containerRef?.current;\n\t\t\tif (container && activeElement instanceof Node && activeElement !== container && !container.contains(activeElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\tdismiss();\n\t\t};\n\n\t\ttargetDocument.addEventListener(DOM_KEYDOWN_EVENT, handleKeyDown, true);\n\t\treturn () => targetDocument.removeEventListener(DOM_KEYDOWN_EVENT, handleKeyDown, true);\n\t}, [active, enabled, documentTarget, containerRef]);\n}\n","/** Начальный фокус одинаково трактуется основным hook и обёрткой focus trap. */\nexport const OVERLAY_INITIAL_FOCUS_AUTO = \"auto\";\nexport const OVERLAY_INITIAL_FOCUS_CONTAINER = \"container\";\n","import { type RefObject, useEffect, useEffectEvent, useRef } from \"react\";\n\nimport { KEYBOARD_KEY_TAB } from \"../utils/keyboardConstants\";\n\nimport { DOM_KEYDOWN_EVENT } from \"./domEventConstants\";\nimport { OVERLAY_INITIAL_FOCUS_AUTO, OVERLAY_INITIAL_FOCUS_CONTAINER } from \"./overlayFocusConstants\";\n\nconst focusableElementsSelector =\n\t'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [contenteditable=\"true\"]:not([tabindex=\"-1\"]), [contenteditable=\"\"]:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])';\n\nexport interface UseOverlayFocusOptions<T extends HTMLElement> {\n\tactive: boolean;\n\ttrapFocus?: boolean;\n\trestoreFocus?: boolean;\n\tinitialFocus?:\n\t\ttypeof OVERLAY_INITIAL_FOCUS_AUTO | typeof OVERLAY_INITIAL_FOCUS_CONTAINER | ((container: T) => HTMLElement | null | undefined);\n\trestoreFocusTarget?: () => HTMLElement | null | undefined;\n\tcontainerRef?: RefObject<T | null>;\n}\n\n/**\n * Возвращает ref overlay-контейнера и управляет начальными/возвратными переходами фокуса.\n * Открытие и закрытие не прокручивают документ: портал может получить фокус\n * до завершения позиционирования. Пользовательский Tab по-прежнему раскрывает\n * выбранный элемент в прокручиваемом содержимом overlay.\n */\nexport function useOverlayFocus<T extends HTMLElement>({\n\tactive,\n\ttrapFocus = false,\n\trestoreFocus = true,\n\tinitialFocus = OVERLAY_INITIAL_FOCUS_AUTO,\n\trestoreFocusTarget,\n\tcontainerRef\n}: UseOverlayFocusOptions<T>) {\n\tconst internalOverlayRef = useRef<T | null>(null);\n\tconst overlayRef = containerRef ?? internalOverlayRef;\n\tconst previousActiveElementRef = useRef<HTMLElement | null>(null);\n\n\t/**\n\t * Собирает фокусируемые элементы overlay в актуальном DOM-порядке.\n\t */\n\tconst getFocusableElements = useEffectEvent((container: T) =>\n\t\tArray.from(container.querySelectorAll<HTMLElement>(focusableElementsSelector)).filter(\n\t\t\t(element) => !element.hasAttribute(\"aria-hidden\")\n\t\t)\n\t);\n\n\t/**\n\t * Вычисляет стартовый фокус при открытии overlay.\n\t */\n\tconst resolveInitialFocus = useEffectEvent((container: T) => {\n\t\tif (initialFocus === OVERLAY_INITIAL_FOCUS_CONTAINER) {\n\t\t\treturn container;\n\t\t}\n\n\t\tif (typeof initialFocus === \"function\") {\n\t\t\treturn initialFocus(container) ?? container;\n\t\t}\n\n\t\tconst focusableElements = getFocusableElements(container);\n\t\treturn (\n\t\t\tfocusableElements.find((element) => element.hasAttribute(\"autofocus\") || element.hasAttribute(\"autoFocus\")) ??\n\t\t\tfocusableElements[0] ??\n\t\t\tcontainer\n\t\t);\n\t});\n\n\t/**\n\t * Вычисляет элемент, которому нужно вернуть фокус после закрытия overlay.\n\t */\n\tconst resolveRestoreFocusTarget = useEffectEvent(() => restoreFocusTarget?.() ?? previousActiveElementRef.current);\n\n\tuseEffect(() => {\n\t\tif (!active) {\n\t\t\treturn;\n\t\t}\n\n\t\tpreviousActiveElementRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n\t\tlet overlayElement: T | null = null;\n\t\tlet rafId = 0;\n\n\t\t/**\n\t\t * Цикл откладывает инициализацию, пока ref контейнера не будет привязан к DOM.\n\t\t */\n\t\tconst attachOverlay = () => {\n\t\t\toverlayElement = overlayRef.current;\n\t\t\tif (!overlayElement) {\n\t\t\t\trafId = window.requestAnimationFrame(attachOverlay);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst focusTarget = resolveInitialFocus(overlayElement);\n\t\t\tif (focusTarget instanceof HTMLElement && focusTarget.isConnected) {\n\t\t\t\tfocusTarget.focus({ preventScroll: true });\n\t\t\t}\n\n\t\t\tif (trapFocus) {\n\t\t\t\toverlayElement.addEventListener(DOM_KEYDOWN_EVENT, handleTabKey);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Зацикливает Tab внутри overlay, пока он открыт как модальный слой.\n\t\t */\n\t\tconst handleTabKey = (event: KeyboardEvent) => {\n\t\t\tif (!trapFocus || event.key !== KEYBOARD_KEY_TAB || !overlayElement) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst focusableElements = getFocusableElements(overlayElement);\n\t\t\tif (focusableElements.length === 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\toverlayElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstElement = focusableElements[0];\n\t\t\tconst lastElement = focusableElements[focusableElements.length - 1];\n\t\t\tconst activeElement = document.activeElement;\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tif (activeElement === firstElement || activeElement === overlayElement) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tlastElement.focus();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (activeElement === lastElement) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tfirstElement.focus();\n\t\t\t}\n\t\t};\n\n\t\tattachOverlay();\n\n\t\treturn () => {\n\t\t\twindow.cancelAnimationFrame(rafId);\n\t\t\tif (trapFocus && overlayElement) {\n\t\t\t\toverlayElement.removeEventListener(DOM_KEYDOWN_EVENT, handleTabKey);\n\t\t\t}\n\n\t\t\tif (!restoreFocus) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst restoreTarget = resolveRestoreFocusTarget();\n\t\t\tif (restoreTarget?.isConnected) {\n\t\t\t\trestoreTarget.focus({ preventScroll: true });\n\t\t\t}\n\t\t};\n\t}, [active, trapFocus, restoreFocus, overlayRef]);\n\n\treturn overlayRef;\n}\n","import { OVERLAY_INITIAL_FOCUS_AUTO } from \"./overlayFocusConstants\";\nimport { useOverlayFocus } from \"./useOverlayFocus\";\n\n/**\n * Совместимый wrapper для overlay с фокус-ловушкой.\n */\nexport const useFocusTrap = (isOpen: boolean) => {\n\treturn useOverlayFocus<HTMLDivElement>({\n\t\tactive: isOpen,\n\t\ttrapFocus: true,\n\t\trestoreFocus: true,\n\t\tinitialFocus: OVERLAY_INITIAL_FOCUS_AUTO\n\t});\n};\n","import { useEffect, useState } from \"react\";\n\nexport function useIntersectionObserver(ref: React.RefObject<Element | null>, options?: IntersectionObserverInit) {\n\tconst [isIntersecting, setIsIntersecting] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst el = ref.current;\n\t\tif (!el) return;\n\n\t\tconst observer = new IntersectionObserver(([entry]) => {\n\t\t\tsetIsIntersecting(entry.isIntersecting);\n\t\t}, options);\n\n\t\tobserver.observe(el);\n\n\t\treturn () => {\n\t\t\tif (el) {\n\t\t\t\tobserver.unobserve(el);\n\t\t\t}\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [options, ref]); // не забыть, что ref.current может меняться\n\n\treturn { isIntersecting };\n}\n","import { useEffect, useState } from \"react\";\n\nimport { DOM_RESIZE_EVENT } from \"./domEventConstants\";\n\nexport const useIsTouchDevice = () => {\n\tconst [isTouchDevice, setIsTouchDevice] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst checkTouchDevice = () => {\n\t\t\tconst isTouch = window.matchMedia(\"(pointer: coarse)\").matches || \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n\t\t\tsetIsTouchDevice(isTouch);\n\t\t};\n\n\t\tcheckTouchDevice();\n\n\t\t// Обработчик для изменений в типе устройства\n\t\twindow.addEventListener(DOM_RESIZE_EVENT, checkTouchDevice);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(DOM_RESIZE_EVENT, checkTouchDevice);\n\t\t};\n\t}, []);\n\n\treturn isTouchDevice;\n};\n","const SCROLL_EDGE_TOLERANCE_PX = 1;\n\n/** Проверяет обычную вложенную scroll-цепочку; корневой документ не является разрешённым host. */\nexport function canConsumeVerticalTouchScroll(documentTarget: Document, path: readonly EventTarget[], deltaY: number): boolean {\n\tconst view = documentTarget.defaultView;\n\tif (!view) return true;\n\tfor (const entry of path) {\n\t\tif (entry === documentTarget.body || entry === documentTarget.documentElement) break;\n\t\tif (!(entry instanceof view.Element) || !entry.isConnected) continue;\n\t\tconst style = view.getComputedStyle(entry);\n\t\tif (!/^(auto|scroll|overlay)$/.test(style.overflowY)) continue;\n\t\t// Reverse/writing-mode layout имеет другую систему координат. В этом patch\n\t\t// не подменяем её предположением 0..max и не реализуем собственную scroll physics.\n\t\tif (style.flexDirection === \"column-reverse\" || (style.writingMode && style.writingMode !== \"horizontal-tb\")) return true;\n\t\tconst maximum = Math.max(0, entry.scrollHeight - entry.clientHeight);\n\t\tconst top = Math.max(0, Math.min(maximum, entry.scrollTop));\n\t\t// scrollTop дробный, а scrollHeight/clientHeight округлены: 1 CSS px\n\t\t// допуска перекрывает ложный остаток на физически достигнутом краю.\n\t\tif (deltaY > 0 ? maximum - top > SCROLL_EDGE_TOLERANCE_PX : top > SCROLL_EDGE_TOLERANCE_PX) return true;\n\t\t// На краю contain/none движение не должно переходить к следующему ancestor.\n\t\tif (/^(contain|none)$/.test(style.overscrollBehaviorY)) return false;\n\t}\n\treturn false;\n}\n","/** Редактирование/выделение остаются у браузера: перехват move способен сорвать drag каретки. */\nexport function isNativeTouchInteraction(documentTarget: Document, path: readonly EventTarget[]): boolean {\n\tconst view = documentTarget.defaultView;\n\tif (!view) return true;\n\tlet editableBoundarySeen = false;\n\tlet target: Element | undefined;\n\tfor (const entry of path) {\n\t\tif (!(entry instanceof view.Element)) continue;\n\t\ttarget ??= entry;\n\t\tif (entry.matches(\"input:not(:disabled), textarea:not(:disabled), select:not(:disabled), audio[controls], video[controls]\")) {\n\t\t\treturn true;\n\t\t}\n\t\tif (editableBoundarySeen) continue;\n\t\tconst editable = entry.getAttribute(\"contenteditable\")?.toLowerCase();\n\t\tif (editable === \"\" || editable === \"true\" || editable === \"plaintext-only\") return true;\n\t\tif (editable === \"false\") editableBoundarySeen = true;\n\t}\n\tconst selection = documentTarget.getSelection();\n\t// Чужое выделение не отключает защиту заголовка/фона на всей странице.\n\tif (!target || !selection || selection.isCollapsed) return false;\n\tfor (let index = 0; index < selection.rangeCount; index += 1) {\n\t\tif (selection.getRangeAt(index).intersectsNode(target)) return true;\n\t}\n\treturn false;\n}\n","import { canConsumeVerticalTouchScroll } from \"./canConsumeVerticalTouchScroll\";\nimport { isNativeTouchInteraction } from \"./isNativeTouchInteraction\";\n\n// Один и тот же набор событий используется при подключении и снятии защиты жеста.\nconst TOUCH_START_EVENT = \"touchstart\";\nconst TOUCH_MOVE_EVENT = \"touchmove\";\nconst TOUCH_END_EVENT = \"touchend\";\nconst TOUCH_CANCEL_EVENT = \"touchcancel\";\n\ntype TouchScrollObservation = Readonly<{\n\tidentifier: number;\n\tx: number;\n\ty: number;\n\tpath: readonly EventTarget[];\n}>;\n\n/**\n * Safari может передать вертикальный pan корню при открытой клавиатуре даже\n * с fixed body. Страхуем пустую область/достигнутый край, не имитируя скроллинг.\n * Один listener set живёт ровно столько же, сколько общий document lock.\n */\nexport function attachDocumentTouchScrollGuard(documentTarget: Document): () => void {\n\tconst view = documentTarget.defaultView;\n\tlet observation: TouchScrollObservation | null = null;\n\tlet bypassGesture = false;\n\n\tconst onStart = (event: TouchEvent): void => {\n\t\t// После pinch даже оставшийся один палец принадлежит тому же native gesture.\n\t\tif (bypassGesture) return;\n\t\tconst touch = event.touches[0];\n\t\tconst path = event.composedPath();\n\t\tif (\n\t\t\tevent.touches.length !== 1 ||\n\t\t\t!touch ||\n\t\t\t(view?.visualViewport?.scale ?? 1) > 1 ||\n\t\t\tisNativeTouchInteraction(documentTarget, path)\n\t\t) {\n\t\t\tbypassGesture = true;\n\t\t\tobservation = null;\n\t\t\treturn;\n\t\t}\n\t\tobservation = { identifier: touch.identifier, x: touch.clientX, y: touch.clientY, path };\n\t};\n\n\tconst onMove = (event: TouchEvent): void => {\n\t\tif (bypassGesture || !observation) return;\n\t\tconst touch = event.touches[0];\n\t\tif (event.touches.length !== 1 || !touch || touch.identifier !== observation.identifier || (view?.visualViewport?.scale ?? 1) > 1) {\n\t\t\tbypassGesture = true;\n\t\t\tobservation = null;\n\t\t\treturn;\n\t\t}\n\t\tconst { x, y, path } = observation;\n\t\tconst deltaX = x - touch.clientX;\n\t\tconst deltaY = y - touch.clientY;\n\t\tobservation = { identifier: touch.identifier, x: touch.clientX, y: touch.clientY, path };\n\t\tif (isNativeTouchInteraction(documentTarget, path)) {\n\t\t\tbypassGesture = true;\n\t\t\treturn;\n\t\t}\n\t\t// Горизонтальные жесты, wheel и touchstart остаются без изменений.\n\t\tif (!event.cancelable || event.defaultPrevented || !deltaY || Math.abs(deltaX) >= Math.abs(deltaY)) return;\n\t\tif (!canConsumeVerticalTouchScroll(documentTarget, path, deltaY)) event.preventDefault();\n\t};\n\n\tconst onEnd = (event: TouchEvent): void => {\n\t\tif (event.touches.length > 0) return;\n\t\tobservation = null;\n\t\tbypassGesture = false;\n\t};\n\n\tdocumentTarget.addEventListener(TOUCH_START_EVENT, onStart, { capture: true, passive: true });\n\tdocumentTarget.addEventListener(TOUCH_MOVE_EVENT, onMove, { capture: true, passive: false });\n\tdocumentTarget.addEventListener(TOUCH_END_EVENT, onEnd, { capture: true, passive: true });\n\tdocumentTarget.addEventListener(TOUCH_CANCEL_EVENT, onEnd, { capture: true, passive: true });\n\treturn () => {\n\t\tdocumentTarget.removeEventListener(TOUCH_START_EVENT, onStart, true);\n\t\tdocumentTarget.removeEventListener(TOUCH_MOVE_EVENT, onMove, true);\n\t\tdocumentTarget.removeEventListener(TOUCH_END_EVENT, onEnd, true);\n\t\tdocumentTarget.removeEventListener(TOUCH_CANCEL_EVENT, onEnd, true);\n\t\tobservation = null;\n\t};\n}\n","import { DOM_INSTANT_SCROLL_BEHAVIOR } from \"../domScrollConstants\";\n\nimport { attachDocumentTouchScrollGuard } from \"./attachDocumentTouchScrollGuard\";\n\n// Имена принадлежащих lock CSS-свойств общие для снимка, применения и восстановления.\nconst OVERFLOW_PROPERTY = \"overflow\";\nconst OVERFLOW_X_PROPERTY = \"overflow-x\";\nconst OVERFLOW_Y_PROPERTY = \"overflow-y\";\nconst POSITION_PROPERTY = \"position\";\nconst TOP_PROPERTY = \"top\";\nconst LEFT_PROPERTY = \"left\";\nconst WIDTH_PROPERTY = \"width\";\nconst BOX_SIZING_PROPERTY = \"box-sizing\";\nconst PADDING_RIGHT_PROPERTY = \"padding-right\";\nconst HIDDEN_OVERFLOW_VALUE = \"hidden\";\n\ntype InlineProperty = Readonly<{ name: string; value: string; priority: string }>;\n\ntype DocumentScrollLock = Readonly<{\n\tleases: Map<symbol, boolean>;\n\tupdateCompensation: () => void;\n\trestore: () => void;\n}>;\n\nconst locks = new WeakMap<Document, DocumentScrollLock>();\n\n/** Снимок ограничен принадлежащими lock свойствами, остальные inline-правки не затрагиваются. */\nfunction captureProperties(style: CSSStyleDeclaration, names: readonly string[]): readonly InlineProperty[] {\n\treturn names.map((name) => ({ name, value: style.getPropertyValue(name), priority: style.getPropertyPriority(name) }));\n}\n\nfunction restoreProperties(style: CSSStyleDeclaration, properties: readonly InlineProperty[]): void {\n\t// Сначала снимаем весь принадлежащий нам shorthand/longhand набор: иначе позднее\n\t// удаление пустого longhand может отменить только что восстановленный shorthand.\n\tfor (const { name } of properties) style.removeProperty(name);\n\tfor (const { name, value, priority } of properties) {\n\t\tif (value) style.setProperty(name, value, priority);\n\t}\n}\n\n/** Один владелец body/html на документ предотвращает преждевременный unlock вложенных overlays. */\nexport function acquireDocumentScrollLock(documentTarget: Document, compensateScrollbar: boolean): () => void {\n\tconst view = documentTarget.defaultView;\n\tconst body = documentTarget.body;\n\tif (!view || !body) return () => undefined;\n\n\tlet lock = locks.get(documentTarget);\n\tif (!lock) {\n\t\tconst rootStyle = documentTarget.documentElement.style;\n\t\tconst bodyStyle = body.style;\n\t\tconst rootProperties = captureProperties(rootStyle, [OVERFLOW_PROPERTY, OVERFLOW_X_PROPERTY, OVERFLOW_Y_PROPERTY]);\n\t\tconst bodyProperties = captureProperties(bodyStyle, [\n\t\t\tPOSITION_PROPERTY,\n\t\t\tTOP_PROPERTY,\n\t\t\tLEFT_PROPERTY,\n\t\t\tWIDTH_PROPERTY,\n\t\t\tOVERFLOW_PROPERTY,\n\t\t\tOVERFLOW_X_PROPERTY,\n\t\t\tOVERFLOW_Y_PROPERTY,\n\t\t\tBOX_SIZING_PROPERTY,\n\t\t\tPADDING_RIGHT_PROPERTY\n\t\t]);\n\t\tconst originalPadding = captureProperties(bodyStyle, [PADDING_RIGHT_PROPERTY]);\n\t\tconst scrollX = view.scrollX;\n\t\tconst scrollY = view.scrollY;\n\t\tconst scrollbarWidth = Math.max(0, view.innerWidth - documentTarget.documentElement.clientWidth);\n\t\tconst computedPadding = Number.parseFloat(view.getComputedStyle(body).paddingRight) || 0;\n\t\tconst leases = new Map<symbol, boolean>();\n\n\t\t// Fixed body нужен и при iOS visual-viewport pan: одного overflow hidden недостаточно.\n\t\trootStyle.setProperty(OVERFLOW_PROPERTY, HIDDEN_OVERFLOW_VALUE);\n\t\tbodyStyle.setProperty(POSITION_PROPERTY, \"fixed\");\n\t\tbodyStyle.setProperty(TOP_PROPERTY, `${-scrollY}px`);\n\t\tbodyStyle.setProperty(LEFT_PROPERTY, `${-scrollX}px`);\n\t\tbodyStyle.setProperty(WIDTH_PROPERTY, \"100%\");\n\t\tbodyStyle.setProperty(OVERFLOW_PROPERTY, HIDDEN_OVERFLOW_VALUE);\n\t\tbodyStyle.setProperty(BOX_SIZING_PROPERTY, \"border-box\");\n\t\tconst releaseTouchGuard = attachDocumentTouchScrollGuard(documentTarget);\n\n\t\tlock = {\n\t\t\tleases,\n\t\t\tupdateCompensation: () => {\n\t\t\t\tif (scrollbarWidth > 0 && [...leases.values()].some(Boolean)) {\n\t\t\t\t\tbodyStyle.setProperty(PADDING_RIGHT_PROPERTY, `${computedPadding + scrollbarWidth}px`);\n\t\t\t\t} else restoreProperties(bodyStyle, originalPadding);\n\t\t\t},\n\t\t\trestore: () => {\n\t\t\t\treleaseTouchGuard();\n\t\t\t\trestoreProperties(rootStyle, rootProperties);\n\t\t\t\trestoreProperties(bodyStyle, bodyProperties);\n\t\t\t\tview.scrollTo({ left: scrollX, top: scrollY, behavior: DOM_INSTANT_SCROLL_BEHAVIOR });\n\t\t\t}\n\t\t};\n\t\tlocks.set(documentTarget, lock);\n\t}\n\n\tconst lease = Symbol();\n\tlock.leases.set(lease, compensateScrollbar);\n\tlock.updateCompensation();\n\treturn () => {\n\t\tif (!lock.leases.delete(lease)) return;\n\t\tif (lock.leases.size > 0) lock.updateCompensation();\n\t\telse {\n\t\t\tlocks.delete(documentTarget);\n\t\t\tlock.restore();\n\t\t}\n\t};\n}\n","import { useEffect } from \"react\";\n\nimport { acquireDocumentScrollLock } from \"./document-scroll/acquireDocumentScrollLock\";\nimport { type UseDocumentScrollLockOptions } from \"./document-scroll/documentScrollLockTypes\";\n\n/** Блокирует фоновую прокрутку до освобождения последнего потребителя; не управляет focus/inert. */\nexport function useDocumentScrollLock({ active, documentTarget, compensateScrollbar = false }: UseDocumentScrollLockOptions): void {\n\tuseEffect(() => {\n\t\tif (!active) return;\n\t\tconst target = documentTarget === undefined ? (typeof document === \"undefined\" ? null : document) : documentTarget;\n\t\tif (!target) return;\n\t\treturn acquireDocumentScrollLock(target, compensateScrollbar);\n\t}, [active, documentTarget, compensateScrollbar]);\n}\n","import { DOM_RESIZE_EVENT } from \"../domEventConstants\";\n\nconst VIEWPORT_SCROLL_EVENT = \"scroll\";\n\nconst properties = [\"--visual-viewport-top\", \"--visual-viewport-left\", \"--visual-viewport-width\", \"--visual-viewport-height\"] as const;\n\nconst attachments = new WeakMap<HTMLElement, { leases: Set<symbol>; detach: () => void }>();\n\n/** Подписка меняет CSS-переменные конкретной поверхности, не вызывает React render на каждом pan. */\nfunction createVisualViewportFrame(container: HTMLElement): () => void {\n\tconst view = container.ownerDocument.defaultView;\n\tif (!view) return () => undefined;\n\tconst viewport = view.visualViewport;\n\tconst style = container.style;\n\tconst previous = properties.map((name) => ({ name, value: style.getPropertyValue(name), priority: style.getPropertyPriority(name) }));\n\tconst ownedValues = new Map<string, string>();\n\tlet frame = 0;\n\n\tconst update = (): void => {\n\t\tframe = 0;\n\t\tconst bounds = [\n\t\t\tviewport?.offsetTop ?? 0,\n\t\t\tviewport?.offsetLeft ?? 0,\n\t\t\tviewport?.width ?? view.innerWidth,\n\t\t\tviewport?.height ?? view.innerHeight\n\t\t];\n\t\tconst fallback = [0, 0, view.innerWidth, view.innerHeight];\n\t\tproperties.forEach((name, index) => {\n\t\t\tconst value = `${Number.isFinite(bounds[index]) ? bounds[index] : fallback[index]}px`;\n\t\t\tif (ownedValues.get(name) === value) return;\n\t\t\tstyle.setProperty(name, value);\n\t\t\townedValues.set(name, value);\n\t\t});\n\t};\n\n\tconst schedule = (): void => {\n\t\tif (!frame) frame = view.requestAnimationFrame(update);\n\t};\n\n\tupdate();\n\tviewport?.addEventListener(DOM_RESIZE_EVENT, schedule);\n\tviewport?.addEventListener(VIEWPORT_SCROLL_EVENT, schedule);\n\tview.addEventListener(DOM_RESIZE_EVENT, schedule);\n\treturn () => {\n\t\tview.cancelAnimationFrame(frame);\n\t\tviewport?.removeEventListener(DOM_RESIZE_EVENT, schedule);\n\t\tviewport?.removeEventListener(VIEWPORT_SCROLL_EVENT, schedule);\n\t\tview.removeEventListener(DOM_RESIZE_EVENT, schedule);\n\t\tfor (const { name, value, priority } of previous) {\n\t\t\t// Не затираем новое значение, если внешний owner уже забрал это CSS-свойство.\n\t\t\tif (style.getPropertyValue(name) !== ownedValues.get(name) || style.getPropertyPriority(name)) continue;\n\t\t\tif (value) style.setProperty(name, value, priority);\n\t\t\telse style.removeProperty(name);\n\t\t}\n\t};\n}\n\n/** Несколько модалок могут разделять portal-root; его frame снимается только последним owner. */\nexport function attachVisualViewportFrame(container: HTMLElement): () => void {\n\tlet attachment = attachments.get(container);\n\tif (!attachment) {\n\t\tattachment = { leases: new Set(), detach: createVisualViewportFrame(container) };\n\t\tattachments.set(container, attachment);\n\t}\n\tconst lease = Symbol();\n\tattachment.leases.add(lease);\n\treturn () => {\n\t\tif (!attachment.leases.delete(lease) || attachment.leases.size > 0) return;\n\t\tattachments.delete(container);\n\t\tattachment.detach();\n\t};\n}\n","import { useEffect } from \"react\";\n\nimport { attachVisualViewportFrame } from \"./visual-viewport/attachVisualViewportFrame\";\nimport { type UseVisualViewportFrameOptions } from \"./visual-viewport/visualViewportFrameTypes\";\n\n/** CSS frame использует реальные visualViewport размеры без отмены pinch zoom; SSR оставляет CSS fallback. */\nexport function useVisualViewportFrame({ active, containerRef }: UseVisualViewportFrameOptions): void {\n\tuseEffect(() => {\n\t\tif (!active || typeof window === \"undefined\") return;\n\t\tlet frame = 0;\n\t\tlet detach: (() => void) | undefined;\n\t\t// Portal может установить ref позже родительского effect; ожидание завершается при cleanup.\n\t\tconst attach = () => {\n\t\t\tconst container = containerRef.current;\n\t\t\tif (container) detach = attachVisualViewportFrame(container);\n\t\t\telse frame = window.requestAnimationFrame(attach);\n\t\t};\n\t\tattach();\n\t\treturn () => {\n\t\t\twindow.cancelAnimationFrame(frame);\n\t\t\tdetach?.();\n\t\t};\n\t}, [active, containerRef]);\n}\n"],"mappings":"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"}
|