@ryuzaki13/react-foundation-lib 0.1.1
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/LICENSE +21 -0
- package/README.md +654 -0
- package/dist/array/array.d.ts +30 -0
- package/dist/array/array.d.ts.map +1 -0
- package/dist/array/index.d.ts +3 -0
- package/dist/array/index.d.ts.map +1 -0
- package/dist/array/index.js +2 -0
- package/dist/array/reorder.d.ts +10 -0
- package/dist/array/reorder.d.ts.map +1 -0
- package/dist/auth/getClientFingerprint.d.ts +2 -0
- package/dist/auth/getClientFingerprint.d.ts.map +1 -0
- package/dist/binary/binaryToBlob.d.ts +13 -0
- package/dist/binary/binaryToBlob.d.ts.map +1 -0
- package/dist/binary/index.d.ts +3 -0
- package/dist/binary/index.d.ts.map +1 -0
- package/dist/binary/index.js +126 -0
- package/dist/binary/index.js.map +1 -0
- package/dist/binary/useBinaryFile.d.ts +8 -0
- package/dist/binary/useBinaryFile.d.ts.map +1 -0
- package/dist/bounded-copy-stack/boundedCopyStack.d.ts +26 -0
- package/dist/bounded-copy-stack/boundedCopyStack.d.ts.map +1 -0
- package/dist/bounded-copy-stack/index.d.ts +2 -0
- package/dist/bounded-copy-stack/index.d.ts.map +1 -0
- package/dist/bounded-copy-stack/index.js +26 -0
- package/dist/bounded-copy-stack/index.js.map +1 -0
- package/dist/chunks/array-BBSjoTRy.js +146 -0
- package/dist/chunks/array-BBSjoTRy.js.map +1 -0
- package/dist/chunks/dateUtils-D9dpdTl7.js +760 -0
- package/dist/chunks/dateUtils-D9dpdTl7.js.map +1 -0
- package/dist/chunks/formatters-CQppb89D.js +1234 -0
- package/dist/chunks/formatters-CQppb89D.js.map +1 -0
- package/dist/chunks/formulas-BxcH5Zjt.js +279 -0
- package/dist/chunks/formulas-BxcH5Zjt.js.map +1 -0
- package/dist/chunks/isRecord-DXDTW-jA.js +18 -0
- package/dist/chunks/isRecord-DXDTW-jA.js.map +1 -0
- package/dist/chunks/odata-service-BAYf08WI.js +1223 -0
- package/dist/chunks/odata-service-BAYf08WI.js.map +1 -0
- package/dist/chunks/string-comparison-BKT7PXmq.js +20 -0
- package/dist/chunks/string-comparison-BKT7PXmq.js.map +1 -0
- package/dist/chunks/validate-BChpTW6y.js +468 -0
- package/dist/chunks/validate-BChpTW6y.js.map +1 -0
- package/dist/context-menu/anchor.d.ts +19 -0
- package/dist/context-menu/anchor.d.ts.map +1 -0
- package/dist/context-menu/index.d.ts +4 -0
- package/dist/context-menu/index.d.ts.map +1 -0
- package/dist/context-menu/index.js +57 -0
- package/dist/context-menu/index.js.map +1 -0
- package/dist/context-menu/state.d.ts +6 -0
- package/dist/context-menu/state.d.ts.map +1 -0
- package/dist/context-menu/types.d.ts +25 -0
- package/dist/context-menu/types.d.ts.map +1 -0
- package/dist/copy/index.d.ts +5 -0
- package/dist/copy/index.d.ts.map +1 -0
- package/dist/copy/index.js +56 -0
- package/dist/copy/index.js.map +1 -0
- package/dist/copy/useCopyElementText.d.ts +6 -0
- package/dist/copy/useCopyElementText.d.ts.map +1 -0
- package/dist/copy/useCopyFeedback.d.ts +11 -0
- package/dist/copy/useCopyFeedback.d.ts.map +1 -0
- package/dist/copy/useCopyText.d.ts +4 -0
- package/dist/copy/useCopyText.d.ts.map +1 -0
- package/dist/copy/useElementText.d.ts +5 -0
- package/dist/copy/useElementText.d.ts.map +1 -0
- package/dist/crypto/hashString.d.ts +5 -0
- package/dist/crypto/hashString.d.ts.map +1 -0
- package/dist/crypto/index.d.ts +3 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +62 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/uuid.d.ts +5 -0
- package/dist/crypto/uuid.d.ts.map +1 -0
- package/dist/currency/currency.d.ts +8 -0
- package/dist/currency/currency.d.ts.map +1 -0
- package/dist/currency/index.d.ts +2 -0
- package/dist/currency/index.d.ts.map +1 -0
- package/dist/currency/index.js +16 -0
- package/dist/currency/index.js.map +1 -0
- package/dist/date-segments/index.d.ts +3 -0
- package/dist/date-segments/index.d.ts.map +1 -0
- package/dist/date-segments/index.js +160 -0
- package/dist/date-segments/index.js.map +1 -0
- package/dist/date-segments/mask.d.ts +54 -0
- package/dist/date-segments/mask.d.ts.map +1 -0
- package/dist/dom/downloadFile.d.ts +4 -0
- package/dist/dom/downloadFile.d.ts.map +1 -0
- package/dist/dom/getOrCreatePortalRoot.d.ts +2 -0
- package/dist/dom/getOrCreatePortalRoot.d.ts.map +1 -0
- package/dist/dom/index.d.ts +10 -0
- package/dist/dom/index.d.ts.map +1 -0
- package/dist/dom/index.js +159 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/dom/useClickOutside.d.ts +3 -0
- package/dist/dom/useClickOutside.d.ts.map +1 -0
- package/dist/dom/useElementHeightObserver.d.ts +3 -0
- package/dist/dom/useElementHeightObserver.d.ts.map +1 -0
- package/dist/dom/useEscapeDismiss.d.ts +14 -0
- package/dist/dom/useEscapeDismiss.d.ts.map +1 -0
- package/dist/dom/useFocusTrap.d.ts +5 -0
- package/dist/dom/useFocusTrap.d.ts.map +1 -0
- package/dist/dom/useIntersectionObserver.d.ts +4 -0
- package/dist/dom/useIntersectionObserver.d.ts.map +1 -0
- package/dist/dom/useIsTouchDevice.d.ts +2 -0
- package/dist/dom/useIsTouchDevice.d.ts.map +1 -0
- package/dist/dom/useOverlayFocus.d.ts +14 -0
- package/dist/dom/useOverlayFocus.d.ts.map +1 -0
- package/dist/error/index.d.ts +2 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +20 -0
- package/dist/error/index.js.map +1 -0
- package/dist/error/missingContextError.d.ts +14 -0
- package/dist/error/missingContextError.d.ts.map +1 -0
- package/dist/error-report/breadcrumbs.d.ts +11 -0
- package/dist/error-report/breadcrumbs.d.ts.map +1 -0
- package/dist/error-report/capture.d.ts +6 -0
- package/dist/error-report/capture.d.ts.map +1 -0
- package/dist/error-report/diagnostics.d.ts +29 -0
- package/dist/error-report/diagnostics.d.ts.map +1 -0
- package/dist/error-report/drafts.d.ts +25 -0
- package/dist/error-report/drafts.d.ts.map +1 -0
- package/dist/error-report/environment.d.ts +19 -0
- package/dist/error-report/environment.d.ts.map +1 -0
- package/dist/error-report/errorInfo.d.ts +7 -0
- package/dist/error-report/errorInfo.d.ts.map +1 -0
- package/dist/error-report/index.d.ts +11 -0
- package/dist/error-report/index.d.ts.map +1 -0
- package/dist/error-report/index.js +464 -0
- package/dist/error-report/index.js.map +1 -0
- package/dist/error-report/runtime.d.ts +26 -0
- package/dist/error-report/runtime.d.ts.map +1 -0
- package/dist/error-report/safeValue.d.ts +14 -0
- package/dist/error-report/safeValue.d.ts.map +1 -0
- package/dist/error-report/transport.d.ts +32 -0
- package/dist/error-report/transport.d.ts.map +1 -0
- package/dist/error-report/types.d.ts +123 -0
- package/dist/error-report/types.d.ts.map +1 -0
- package/dist/excel/excel.d.ts +52 -0
- package/dist/excel/excel.d.ts.map +1 -0
- package/dist/excel/index.d.ts +3 -0
- package/dist/excel/index.d.ts.map +1 -0
- package/dist/excel/index.js +139 -0
- package/dist/excel/index.js.map +1 -0
- package/dist/excel/tableExport.d.ts +26 -0
- package/dist/excel/tableExport.d.ts.map +1 -0
- package/dist/file/contentDisposition.d.ts +11 -0
- package/dist/file/contentDisposition.d.ts.map +1 -0
- package/dist/file/image/index.d.ts +3 -0
- package/dist/file/image/index.d.ts.map +1 -0
- package/dist/file/image/readImageFile.d.ts +8 -0
- package/dist/file/image/readImageFile.d.ts.map +1 -0
- package/dist/file/image/types.d.ts +30 -0
- package/dist/file/image/types.d.ts.map +1 -0
- package/dist/file/index.d.ts +5 -0
- package/dist/file/index.d.ts.map +1 -0
- package/dist/file/index.js +211 -0
- package/dist/file/index.js.map +1 -0
- package/dist/file/mimeType.d.ts +2 -0
- package/dist/file/mimeType.d.ts.map +1 -0
- package/dist/file/read-file/assert.d.ts +4 -0
- package/dist/file/read-file/assert.d.ts.map +1 -0
- package/dist/file/read-file/index.d.ts +4 -0
- package/dist/file/read-file/index.d.ts.map +1 -0
- package/dist/file/read-file/readFile.d.ts +14 -0
- package/dist/file/read-file/readFile.d.ts.map +1 -0
- package/dist/file/read-file/types.d.ts +43 -0
- package/dist/file/read-file/types.d.ts.map +1 -0
- package/dist/form/formErrors.d.ts +2 -0
- package/dist/form/formErrors.d.ts.map +1 -0
- package/dist/form/index.d.ts +2 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form/index.js +19 -0
- package/dist/form/index.js.map +1 -0
- package/dist/formatters/boolean/index.d.ts +3 -0
- package/dist/formatters/boolean/index.d.ts.map +1 -0
- package/dist/formatters/boolean/parseAbapBoolean.d.ts +3 -0
- package/dist/formatters/boolean/parseAbapBoolean.d.ts.map +1 -0
- package/dist/formatters/boolean/toAbapBoolean.d.ts +3 -0
- package/dist/formatters/boolean/toAbapBoolean.d.ts.map +1 -0
- package/dist/formatters/date/calendarDate.d.ts +48 -0
- package/dist/formatters/date/calendarDate.d.ts.map +1 -0
- package/dist/formatters/date/calendarPeriod.d.ts +33 -0
- package/dist/formatters/date/calendarPeriod.d.ts.map +1 -0
- package/dist/formatters/date/dateRange.d.ts +25 -0
- package/dist/formatters/date/dateRange.d.ts.map +1 -0
- package/dist/formatters/date/educationDate.d.ts +79 -0
- package/dist/formatters/date/educationDate.d.ts.map +1 -0
- package/dist/formatters/date/formatDate.d.ts +98 -0
- package/dist/formatters/date/formatDate.d.ts.map +1 -0
- package/dist/formatters/date/index.d.ts +14 -0
- package/dist/formatters/date/index.d.ts.map +1 -0
- package/dist/formatters/date/parseDate.d.ts +44 -0
- package/dist/formatters/date/parseDate.d.ts.map +1 -0
- package/dist/formatters/date/pattern.d.ts +38 -0
- package/dist/formatters/date/pattern.d.ts.map +1 -0
- package/dist/formatters/date/presets.d.ts +108 -0
- package/dist/formatters/date/presets.d.ts.map +1 -0
- package/dist/formatters/date/relativeRanges.d.ts +35 -0
- package/dist/formatters/date/relativeRanges.d.ts.map +1 -0
- package/dist/formatters/date/types.d.ts +70 -0
- package/dist/formatters/date/types.d.ts.map +1 -0
- package/dist/formatters/formatName.d.ts +13 -0
- package/dist/formatters/formatName.d.ts.map +1 -0
- package/dist/formatters/formatPhone.d.ts +3 -0
- package/dist/formatters/formatPhone.d.ts.map +1 -0
- package/dist/formatters/formatTagAsHashtag.d.ts +6 -0
- package/dist/formatters/formatTagAsHashtag.d.ts.map +1 -0
- package/dist/formatters/index.d.ts +11 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +6 -0
- package/dist/formatters/normalizeLeadingZeros.d.ts +27 -0
- package/dist/formatters/normalizeLeadingZeros.d.ts.map +1 -0
- package/dist/formatters/number/compact.d.ts +10 -0
- package/dist/formatters/number/compact.d.ts.map +1 -0
- package/dist/formatters/number/formatCompactNumber.d.ts +49 -0
- package/dist/formatters/number/formatCompactNumber.d.ts.map +1 -0
- package/dist/formatters/number/formatNumber.d.ts +93 -0
- package/dist/formatters/number/formatNumber.d.ts.map +1 -0
- package/dist/formatters/number/index.d.ts +6 -0
- package/dist/formatters/number/index.d.ts.map +1 -0
- package/dist/formatters/number/isZeroValue.d.ts +5 -0
- package/dist/formatters/number/isZeroValue.d.ts.map +1 -0
- package/dist/formatters/number/parseNumber.d.ts +12 -0
- package/dist/formatters/number/parseNumber.d.ts.map +1 -0
- package/dist/formatters/number/presets.d.ts +24 -0
- package/dist/formatters/number/presets.d.ts.map +1 -0
- package/dist/formatters/number/types.d.ts +46 -0
- package/dist/formatters/number/types.d.ts.map +1 -0
- package/dist/formatters/pipeline/clone.d.ts +15 -0
- package/dist/formatters/pipeline/clone.d.ts.map +1 -0
- package/dist/formatters/pipeline/definitions.d.ts +14 -0
- package/dist/formatters/pipeline/definitions.d.ts.map +1 -0
- package/dist/formatters/pipeline/dependencies.d.ts +38 -0
- package/dist/formatters/pipeline/dependencies.d.ts.map +1 -0
- package/dist/formatters/pipeline/execute.d.ts +21 -0
- package/dist/formatters/pipeline/execute.d.ts.map +1 -0
- package/dist/formatters/pipeline/index.d.ts +10 -0
- package/dist/formatters/pipeline/index.d.ts.map +1 -0
- package/dist/formatters/pipeline/normalize.d.ts +3 -0
- package/dist/formatters/pipeline/normalize.d.ts.map +1 -0
- package/dist/formatters/pipeline/registry.d.ts +11 -0
- package/dist/formatters/pipeline/registry.d.ts.map +1 -0
- package/dist/formatters/pipeline/rekey.d.ts +11 -0
- package/dist/formatters/pipeline/rekey.d.ts.map +1 -0
- package/dist/formatters/pipeline/runtime.d.ts +17 -0
- package/dist/formatters/pipeline/runtime.d.ts.map +1 -0
- package/dist/formatters/pipeline/types.d.ts +379 -0
- package/dist/formatters/pipeline/types.d.ts.map +1 -0
- package/dist/formatters/pipeline/validate.d.ts +29 -0
- package/dist/formatters/pipeline/validate.d.ts.map +1 -0
- package/dist/formatters/rowBased/context.d.ts +9 -0
- package/dist/formatters/rowBased/context.d.ts.map +1 -0
- package/dist/formatters/rowBased/definitions/index.d.ts +6 -0
- package/dist/formatters/rowBased/definitions/index.d.ts.map +1 -0
- package/dist/formatters/rowBased/index.d.ts +4 -0
- package/dist/formatters/rowBased/index.d.ts.map +1 -0
- package/dist/formatters/rowBased/registry.d.ts +19 -0
- package/dist/formatters/rowBased/registry.d.ts.map +1 -0
- package/dist/formatters/rowBased/types.d.ts +29 -0
- package/dist/formatters/rowBased/types.d.ts.map +1 -0
- package/dist/formatters/strings/index.d.ts +6 -0
- package/dist/formatters/strings/index.d.ts.map +1 -0
- package/dist/formatters/strings/normalizeText.d.ts +11 -0
- package/dist/formatters/strings/normalizeText.d.ts.map +1 -0
- package/dist/formatters/strings/startsWithIgnoringZeros.d.ts +2 -0
- package/dist/formatters/strings/startsWithIgnoringZeros.d.ts.map +1 -0
- package/dist/formatters/strings/stripInnerSpaces.d.ts +6 -0
- package/dist/formatters/strings/stripInnerSpaces.d.ts.map +1 -0
- package/dist/formatters/strings/stripLeadingZeros.d.ts +10 -0
- package/dist/formatters/strings/stripLeadingZeros.d.ts.map +1 -0
- package/dist/formatters/strings/truncateText.d.ts +2 -0
- package/dist/formatters/strings/truncateText.d.ts.map +1 -0
- package/dist/formatters/valueState/fixedValueStateResolver.d.ts +41 -0
- package/dist/formatters/valueState/fixedValueStateResolver.d.ts.map +1 -0
- package/dist/formatters/valueState/index.d.ts +7 -0
- package/dist/formatters/valueState/index.d.ts.map +1 -0
- package/dist/formatters/valueState/presentation.d.ts +4 -0
- package/dist/formatters/valueState/presentation.d.ts.map +1 -0
- package/dist/formatters/valueState/resolveValueStateClassName.d.ts +3 -0
- package/dist/formatters/valueState/resolveValueStateClassName.d.ts.map +1 -0
- package/dist/formatters/valueState/thresholdValueStateResolver.d.ts +40 -0
- package/dist/formatters/valueState/thresholdValueStateResolver.d.ts.map +1 -0
- package/dist/formatters/valueState/types.d.ts +35 -0
- package/dist/formatters/valueState/types.d.ts.map +1 -0
- package/dist/formatters/valueState/valueStateRegistry.d.ts +45 -0
- package/dist/formatters/valueState/valueStateRegistry.d.ts.map +1 -0
- package/dist/formulas/definitions/base.d.ts +7 -0
- package/dist/formulas/definitions/base.d.ts.map +1 -0
- package/dist/formulas/definitions/index.d.ts +3 -0
- package/dist/formulas/definitions/index.d.ts.map +1 -0
- package/dist/formulas/definitions/sales.d.ts +7 -0
- package/dist/formulas/definitions/sales.d.ts.map +1 -0
- package/dist/formulas/execute.d.ts +36 -0
- package/dist/formulas/execute.d.ts.map +1 -0
- package/dist/formulas/index.d.ts +5 -0
- package/dist/formulas/index.d.ts.map +1 -0
- package/dist/formulas/index.js +2 -0
- package/dist/formulas/perf.runtime.d.ts +48 -0
- package/dist/formulas/perf.runtime.d.ts.map +1 -0
- package/dist/formulas/registry.d.ts +10 -0
- package/dist/formulas/registry.d.ts.map +1 -0
- package/dist/formulas/types.d.ts +16 -0
- package/dist/formulas/types.d.ts.map +1 -0
- package/dist/formulas/validate.d.ts +22 -0
- package/dist/formulas/validate.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +291 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/types.d.ts +4 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/useBlockBrowserZoom.d.ts +7 -0
- package/dist/hooks/useBlockBrowserZoom.d.ts.map +1 -0
- package/dist/hooks/useDebounce.d.ts +2 -0
- package/dist/hooks/useDebounce.d.ts.map +1 -0
- package/dist/hooks/useDebounceCallback.d.ts +22 -0
- package/dist/hooks/useDebounceCallback.d.ts.map +1 -0
- package/dist/hooks/useDndSortableSensors.d.ts +13 -0
- package/dist/hooks/useDndSortableSensors.d.ts.map +1 -0
- package/dist/hooks/useFloatingListbox.d.ts +61 -0
- package/dist/hooks/useFloatingListbox.d.ts.map +1 -0
- package/dist/hooks/useLazyComponent.d.ts +28 -0
- package/dist/hooks/useLazyComponent.d.ts.map +1 -0
- package/dist/hooks/useReferenceTrace.d.ts +2 -0
- package/dist/hooks/useReferenceTrace.d.ts.map +1 -0
- package/dist/hooks/useSearchLink.d.ts +5 -0
- package/dist/hooks/useSearchLink.d.ts.map +1 -0
- package/dist/hooks/useSearchParams.d.ts +8 -0
- package/dist/hooks/useSearchParams.d.ts.map +1 -0
- package/dist/hooks/useThrottledCallback.d.ts +43 -0
- package/dist/hooks/useThrottledCallback.d.ts.map +1 -0
- package/dist/http/httpHeaders.d.ts +3 -0
- package/dist/http/httpHeaders.d.ts.map +1 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +18 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/textResponse.d.ts +7 -0
- package/dist/http/textResponse.d.ts.map +1 -0
- package/dist/media/breakpoints.d.ts +9 -0
- package/dist/media/breakpoints.d.ts.map +1 -0
- package/dist/media/getCurrentFontSize.d.ts +4 -0
- package/dist/media/getCurrentFontSize.d.ts.map +1 -0
- package/dist/media/index.d.ts +7 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +147 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/pxToEm.d.ts +2 -0
- package/dist/media/pxToEm.d.ts.map +1 -0
- package/dist/media/responsive.d.ts +29 -0
- package/dist/media/responsive.d.ts.map +1 -0
- package/dist/media/useMatchMedia.d.ts +15 -0
- package/dist/media/useMatchMedia.d.ts.map +1 -0
- package/dist/media/useMediaQuery.d.ts +10 -0
- package/dist/media/useMediaQuery.d.ts.map +1 -0
- package/dist/notifications/index.d.ts +4 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +124 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/notify.d.ts +32 -0
- package/dist/notifications/notify.d.ts.map +1 -0
- package/dist/notifications/store.d.ts +31 -0
- package/dist/notifications/store.d.ts.map +1 -0
- package/dist/notifications/types.d.ts +19 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/dist/number-scale/index.d.ts +3 -0
- package/dist/number-scale/index.d.ts.map +1 -0
- package/dist/number-scale/index.js +99 -0
- package/dist/number-scale/index.js.map +1 -0
- package/dist/number-scale/numberScale.d.ts +52 -0
- package/dist/number-scale/numberScale.d.ts.map +1 -0
- package/dist/number-scale/types.d.ts +44 -0
- package/dist/number-scale/types.d.ts.map +1 -0
- package/dist/odata/buildSeparatedArrays.d.ts +10 -0
- package/dist/odata/buildSeparatedArrays.d.ts.map +1 -0
- package/dist/odata/dateUtils.d.ts +14 -0
- package/dist/odata/dateUtils.d.ts.map +1 -0
- package/dist/odata/findCollectionPairs.d.ts +11 -0
- package/dist/odata/findCollectionPairs.d.ts.map +1 -0
- package/dist/odata/index.d.ts +6 -0
- package/dist/odata/index.d.ts.map +1 -0
- package/dist/odata/index.js +102 -0
- package/dist/odata/index.js.map +1 -0
- package/dist/odata/store.d.ts +42 -0
- package/dist/odata/store.d.ts.map +1 -0
- package/dist/odata/types.d.ts +12 -0
- package/dist/odata/types.d.ts.map +1 -0
- package/dist/odata-service/baseTypes.d.ts +6 -0
- package/dist/odata-service/baseTypes.d.ts.map +1 -0
- package/dist/odata-service/builder.d.ts +33 -0
- package/dist/odata-service/builder.d.ts.map +1 -0
- package/dist/odata-service/columns.d.ts +10 -0
- package/dist/odata-service/columns.d.ts.map +1 -0
- package/dist/odata-service/filterDefinitions.d.ts +113 -0
- package/dist/odata-service/filterDefinitions.d.ts.map +1 -0
- package/dist/odata-service/filters.d.ts +75 -0
- package/dist/odata-service/filters.d.ts.map +1 -0
- package/dist/odata-service/formatters.d.ts +33 -0
- package/dist/odata-service/formatters.d.ts.map +1 -0
- package/dist/odata-service/index.d.ts +16 -0
- package/dist/odata-service/index.d.ts.map +1 -0
- package/dist/odata-service/index.js +2 -0
- package/dist/odata-service/parser.d.ts +14 -0
- package/dist/odata-service/parser.d.ts.map +1 -0
- package/dist/odata-service/schema.d.ts +8 -0
- package/dist/odata-service/schema.d.ts.map +1 -0
- package/dist/odata-service/sorts.d.ts +26 -0
- package/dist/odata-service/sorts.d.ts.map +1 -0
- package/dist/odata-service/sqlFilters.d.ts +32 -0
- package/dist/odata-service/sqlFilters.d.ts.map +1 -0
- package/dist/odata-service/types.d.ts +166 -0
- package/dist/odata-service/types.d.ts.map +1 -0
- package/dist/odata-service/typesValidation.d.ts +6 -0
- package/dist/odata-service/typesValidation.d.ts.map +1 -0
- package/dist/odata-service/unwrapODataQueryResult.d.ts +22 -0
- package/dist/odata-service/unwrapODataQueryResult.d.ts.map +1 -0
- package/dist/odata-service/utils.d.ts +5 -0
- package/dist/odata-service/utils.d.ts.map +1 -0
- package/dist/odata-service/wrapParams.d.ts +7 -0
- package/dist/odata-service/wrapParams.d.ts.map +1 -0
- package/dist/presets/index.d.ts +2 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +23 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/presets.d.ts +20 -0
- package/dist/presets/presets.d.ts.map +1 -0
- package/dist/pwa/index.d.ts +3 -0
- package/dist/pwa/index.d.ts.map +1 -0
- package/dist/pwa/index.js +206 -0
- package/dist/pwa/index.js.map +1 -0
- package/dist/pwa/serviceWorker.d.ts +31 -0
- package/dist/pwa/serviceWorker.d.ts.map +1 -0
- package/dist/pwa/swCachePolicy.d.ts +24 -0
- package/dist/pwa/swCachePolicy.d.ts.map +1 -0
- package/dist/pwa/useServiceWorkerUpdate.d.ts +6 -0
- package/dist/pwa/useServiceWorkerUpdate.d.ts.map +1 -0
- package/dist/query-client/broadcast.d.ts +23 -0
- package/dist/query-client/broadcast.d.ts.map +1 -0
- package/dist/query-client/index.d.ts +5 -0
- package/dist/query-client/index.d.ts.map +1 -0
- package/dist/query-client/index.js +204 -0
- package/dist/query-client/index.js.map +1 -0
- package/dist/query-client/persistence.d.ts +33 -0
- package/dist/query-client/persistence.d.ts.map +1 -0
- package/dist/query-client/queryClient.d.ts +127 -0
- package/dist/query-client/queryClient.d.ts.map +1 -0
- package/dist/query-client/queryPersistenceAdapter.d.ts +7 -0
- package/dist/query-client/queryPersistenceAdapter.d.ts.map +1 -0
- package/dist/range-output/index.d.ts +2 -0
- package/dist/range-output/index.d.ts.map +1 -0
- package/dist/range-output/index.js +22 -0
- package/dist/range-output/index.js.map +1 -0
- package/dist/range-output/rangeOutput.d.ts +15 -0
- package/dist/range-output/rangeOutput.d.ts.map +1 -0
- package/dist/seo/index.d.ts +3 -0
- package/dist/seo/index.d.ts.map +1 -0
- package/dist/seo/index.js +125 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/seo.d.ts +16 -0
- package/dist/seo/seo.d.ts.map +1 -0
- package/dist/seo/types.d.ts +28 -0
- package/dist/seo/types.d.ts.map +1 -0
- package/dist/session-storage/index.d.ts +2 -0
- package/dist/session-storage/index.d.ts.map +1 -0
- package/dist/session-storage/index.js +17 -0
- package/dist/session-storage/index.js.map +1 -0
- package/dist/session-storage/sessionId.d.ts +8 -0
- package/dist/session-storage/sessionId.d.ts.map +1 -0
- package/dist/string-comparison/compareStrings.d.ts +9 -0
- package/dist/string-comparison/compareStrings.d.ts.map +1 -0
- package/dist/string-comparison/index.d.ts +2 -0
- package/dist/string-comparison/index.d.ts.map +1 -0
- package/dist/string-comparison/index.js +2 -0
- package/dist/table/columnLayout.d.ts +23 -0
- package/dist/table/columnLayout.d.ts.map +1 -0
- package/dist/table/columnOrder.d.ts +21 -0
- package/dist/table/columnOrder.d.ts.map +1 -0
- package/dist/table/columnSizing.d.ts +7 -0
- package/dist/table/columnSizing.d.ts.map +1 -0
- package/dist/table/index.d.ts +9 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +229 -0
- package/dist/table/index.js.map +1 -0
- package/dist/table/odataAdapter.d.ts +63 -0
- package/dist/table/odataAdapter.d.ts.map +1 -0
- package/dist/table/selection.d.ts +16 -0
- package/dist/table/selection.d.ts.map +1 -0
- package/dist/table/types.d.ts +60 -0
- package/dist/table/types.d.ts.map +1 -0
- package/dist/table/useTableRowSelection.d.ts +19 -0
- package/dist/table/useTableRowSelection.d.ts.map +1 -0
- package/dist/table/utils.d.ts +20 -0
- package/dist/table/utils.d.ts.map +1 -0
- package/dist/three-scene/index.d.ts +3 -0
- package/dist/three-scene/index.d.ts.map +1 -0
- package/dist/three-scene/index.js +84 -0
- package/dist/three-scene/index.js.map +1 -0
- package/dist/three-scene/threeSceneAvailability.d.ts +15 -0
- package/dist/three-scene/threeSceneAvailability.d.ts.map +1 -0
- package/dist/three-scene/useThreeSceneAvailability.d.ts +8 -0
- package/dist/three-scene/useThreeSceneAvailability.d.ts.map +1 -0
- package/dist/tree-table/buildTreeTableRows.d.ts +9 -0
- package/dist/tree-table/buildTreeTableRows.d.ts.map +1 -0
- package/dist/tree-table/index.d.ts +4 -0
- package/dist/tree-table/index.d.ts.map +1 -0
- package/dist/tree-table/index.js +126 -0
- package/dist/tree-table/index.js.map +1 -0
- package/dist/tree-table/transposeFlatRowsToTreeTableRows.d.ts +11 -0
- package/dist/tree-table/transposeFlatRowsToTreeTableRows.d.ts.map +1 -0
- package/dist/tree-table/types.d.ts +87 -0
- package/dist/tree-table/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/types.d.ts +12 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/utils/childrenCount.d.ts +3 -0
- package/dist/utils/childrenCount.d.ts.map +1 -0
- package/dist/utils/cn.d.ts +6 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/createLazyComponent.d.ts +22 -0
- package/dist/utils/createLazyComponent.d.ts.map +1 -0
- package/dist/utils/deepCloneWithoutFunctions.d.ts +20 -0
- package/dist/utils/deepCloneWithoutFunctions.d.ts.map +1 -0
- package/dist/utils/deepCopyWithoutFunctions.d.ts +10 -0
- package/dist/utils/deepCopyWithoutFunctions.d.ts.map +1 -0
- package/dist/utils/index.d.ts +17 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +209 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/keyboard.d.ts +36 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/selectNavigation.d.ts +8 -0
- package/dist/utils/selectNavigation.d.ts.map +1 -0
- package/dist/utils/stableStringify.d.ts +8 -0
- package/dist/utils/stableStringify.d.ts.map +1 -0
- package/dist/utils/toBase64.d.ts +3 -0
- package/dist/utils/toBase64.d.ts.map +1 -0
- package/dist/utils/treeNode.d.ts +9 -0
- package/dist/utils/treeNode.d.ts.map +1 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +54 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/isDomReference.d.ts +3 -0
- package/dist/validators/isDomReference.d.ts.map +1 -0
- package/dist/validators/isImageExtension.d.ts +3 -0
- package/dist/validators/isImageExtension.d.ts.map +1 -0
- package/dist/validators/isRecord.d.ts +5 -0
- package/dist/validators/isRecord.d.ts.map +1 -0
- package/dist/validators/isSafe.d.ts +2 -0
- package/dist/validators/isSafe.d.ts.map +1 -0
- package/dist/validators/positiveInteger.d.ts +2 -0
- package/dist/validators/positiveInteger.d.ts.map +1 -0
- package/dist/validators/validateUrl.d.ts +10 -0
- package/dist/validators/validateUrl.d.ts.map +1 -0
- package/dist/virtualizer/index.d.ts +2 -0
- package/dist/virtualizer/index.d.ts.map +1 -0
- package/dist/virtualizer/index.js +19 -0
- package/dist/virtualizer/index.js.map +1 -0
- package/dist/virtualizer/useFetchNextPageEffect.d.ts +8 -0
- package/dist/virtualizer/useFetchNextPageEffect.d.ts.map +1 -0
- package/dist/xml/index.d.ts +2 -0
- package/dist/xml/index.d.ts.map +1 -0
- package/dist/xml/index.js +17 -0
- package/dist/xml/index.js.map +1 -0
- package/dist/xml/xml.d.ts +5 -0
- package/dist/xml/xml.d.ts.map +1 -0
- package/package.json +428 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type ReorderTableHeaderColumnsArgs = {
|
|
2
|
+
order: readonly string[];
|
|
3
|
+
headerIds: readonly string[];
|
|
4
|
+
lockedIds?: readonly string[];
|
|
5
|
+
pinnedIds?: readonly string[];
|
|
6
|
+
activeId: string;
|
|
7
|
+
overId: string;
|
|
8
|
+
};
|
|
9
|
+
export type TableColumnOrderState = string[];
|
|
10
|
+
export declare function normalizeTableColumnOrder(order: readonly string[] | undefined): TableColumnOrderState;
|
|
11
|
+
/**
|
|
12
|
+
* Переставляет только верхнеуровневые колонки табличной шапки.
|
|
13
|
+
*
|
|
14
|
+
* Ограничения:
|
|
15
|
+
* - дочерние колонки групп не являются самостоятельными draggable-элементами;
|
|
16
|
+
* - locked-колонки остаются в фиксированном порядке;
|
|
17
|
+
* - pinned-колонки не переносятся между закреплённой и обычной зонами.
|
|
18
|
+
*/
|
|
19
|
+
export declare function reorderTableHeaderColumns(args: ReorderTableHeaderColumnsArgs): string[];
|
|
20
|
+
export declare function resolveReorderedTableHeaderColumns(args: ReorderTableHeaderColumnsArgs): string[] | null;
|
|
21
|
+
//# sourceMappingURL=columnOrder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnOrder.d.ts","sourceRoot":"","sources":["../../src/table/columnOrder.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,6BAA6B,GAAG;IAC3C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,EAAE,CAAC;AAE7C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,qBAAqB,CAErG;AAcD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,6BAA6B,GAAG,MAAM,EAAE,CA0BvF;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,6BAA6B,GAAG,MAAM,EAAE,GAAG,IAAI,CAIvG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type TableColumnSizingState = Record<string, number>;
|
|
2
|
+
export declare const DEFAULT_TABLE_COLUMN_MIN_WIDTH = 60;
|
|
3
|
+
export declare function normalizeTableColumnWidth(px: number, minWidth?: number): number;
|
|
4
|
+
export declare function normalizeTableColumnSizing(state: Readonly<Record<string, number>> | undefined, minWidth?: number): TableColumnSizingState;
|
|
5
|
+
export declare function patchTableColumnWidth(state: Readonly<Record<string, number>>, columnId: string, width: number, minWidth?: number): TableColumnSizingState;
|
|
6
|
+
export declare function removeTableColumnWidth(state: Readonly<Record<string, number>>, columnId: string): TableColumnSizingState;
|
|
7
|
+
//# sourceMappingURL=columnSizing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnSizing.d.ts","sourceRoot":"","sources":["../../src/table/columnSizing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE5D,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAuC,GAAG,MAAM,CAK/G;AAED,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EACnD,QAAQ,GAAE,MAAuC,GAC/C,sBAAsB,CAYxB;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAuC,GAC/C,sBAAsB,CASxB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAUxH"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./columnLayout";
|
|
2
|
+
export * from "./columnOrder";
|
|
3
|
+
export * from "./columnSizing";
|
|
4
|
+
export * from "./odataAdapter";
|
|
5
|
+
export * from "./selection";
|
|
6
|
+
export * from "./types";
|
|
7
|
+
export * from "./useTableRowSelection";
|
|
8
|
+
export * from "./utils";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { d as e, i as t, u as n } from "../chunks/array-BBSjoTRy.js";
|
|
2
|
+
import { useCallback as r, useEffect as i, useEffectEvent as a, useRef as o, useState as s } from "react";
|
|
3
|
+
//#region src/table/columnLayout.ts
|
|
4
|
+
function c({ ids: n, order: r }) {
|
|
5
|
+
return t(e(r, n), n);
|
|
6
|
+
}
|
|
7
|
+
function l({ ids: e, getWidth: t }) {
|
|
8
|
+
return e.map((e) => ({
|
|
9
|
+
id: e,
|
|
10
|
+
width: t(e)
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/table/columnOrder.ts
|
|
15
|
+
function u(e) {
|
|
16
|
+
return Array.from(new Set((e ?? []).filter((e) => e.trim().length > 0)));
|
|
17
|
+
}
|
|
18
|
+
function d(e, t, n) {
|
|
19
|
+
let r = [...e], [i] = r.splice(t, 1);
|
|
20
|
+
return i === void 0 || r.splice(n, 0, i), r;
|
|
21
|
+
}
|
|
22
|
+
function f(e) {
|
|
23
|
+
let { activeId: t, overId: n, order: r } = e;
|
|
24
|
+
if (!t || !n || t === n) return [...r];
|
|
25
|
+
let i = new Set(e.headerIds);
|
|
26
|
+
if (!i.has(t) || !i.has(n)) return [...r];
|
|
27
|
+
let a = new Set(e.lockedIds ?? []);
|
|
28
|
+
if (a.has(t) || a.has(n)) return [...r];
|
|
29
|
+
let o = new Set(e.pinnedIds ?? []);
|
|
30
|
+
if (o.has(t) || o.has(n)) return [...r];
|
|
31
|
+
let s = [...r];
|
|
32
|
+
s.includes(t) || s.push(t), s.includes(n) || s.push(n);
|
|
33
|
+
let c = s.indexOf(t), l = s.indexOf(n);
|
|
34
|
+
return c === -1 || l === -1 || c === l ? s : d(s, c, l);
|
|
35
|
+
}
|
|
36
|
+
function p(e) {
|
|
37
|
+
let t = f(e);
|
|
38
|
+
return n(t, e.order) ? null : t;
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region src/table/columnSizing.ts
|
|
42
|
+
var m = 60;
|
|
43
|
+
function h(e, t = 60) {
|
|
44
|
+
let n = Number.isFinite(t) && t > 0 ? Math.floor(t) : 60;
|
|
45
|
+
return Math.max(n, Number.isFinite(e) ? Math.floor(e) : n);
|
|
46
|
+
}
|
|
47
|
+
function g(e, t = 60) {
|
|
48
|
+
let n = {};
|
|
49
|
+
for (let [r, i] of Object.entries(e ?? {})) typeof r != "string" || r.trim().length === 0 || !Number.isFinite(i) || (n[r] = h(i, t));
|
|
50
|
+
return n;
|
|
51
|
+
}
|
|
52
|
+
function _(e, t, n, r = 60) {
|
|
53
|
+
return t.trim().length === 0 ? g(e, r) : {
|
|
54
|
+
...g(e, r),
|
|
55
|
+
[t]: h(n, r)
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function v(e, t) {
|
|
59
|
+
let n = {};
|
|
60
|
+
for (let [r, i] of Object.entries(e)) r !== t && (n[r] = i);
|
|
61
|
+
return n;
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
//#region src/table/odataAdapter.ts
|
|
65
|
+
function y(e) {
|
|
66
|
+
let { role: t, type: n } = e;
|
|
67
|
+
return {
|
|
68
|
+
role: n === "decimal" || n === "float" || n === "double" || n === "int" || n === "byte" ? "measure" : t,
|
|
69
|
+
type: n
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function b(e) {
|
|
73
|
+
return e.role === "measure" ? "right" : "left";
|
|
74
|
+
}
|
|
75
|
+
function x(e, t) {
|
|
76
|
+
return e.semanticType !== "code" || !e.linkedColumnId ? !0 : t.get(e.linkedColumnId)?.semanticType !== "text";
|
|
77
|
+
}
|
|
78
|
+
function S(e) {
|
|
79
|
+
if (typeof e.id == "string" && e.id.trim()) return e.id;
|
|
80
|
+
if ("accessorKey" in e && typeof e.accessorKey == "string" && e.accessorKey.trim()) return e.accessorKey;
|
|
81
|
+
}
|
|
82
|
+
function C(e, t) {
|
|
83
|
+
return e.map((e) => "columns" in e && Array.isArray(e.columns) && e.columns.length > 0 ? {
|
|
84
|
+
...e,
|
|
85
|
+
columns: C(e.columns, t)
|
|
86
|
+
} : t(e));
|
|
87
|
+
}
|
|
88
|
+
function w(e, t) {
|
|
89
|
+
let n = new Map(e.map((e) => [e.id, e]));
|
|
90
|
+
return Object.fromEntries(e.map((e) => {
|
|
91
|
+
let r = t?.resolveVisible?.(e) ?? x(e, n);
|
|
92
|
+
return [e.id, r];
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
function T(e, t) {
|
|
96
|
+
return e.map((e) => {
|
|
97
|
+
let n = y(e), r = b(n), i = t?.resolveFormatting?.(e);
|
|
98
|
+
return {
|
|
99
|
+
id: e.id,
|
|
100
|
+
accessorKey: e.id,
|
|
101
|
+
header: t?.resolveHeader?.(e) ?? e.label ?? e.id,
|
|
102
|
+
meta: {
|
|
103
|
+
align: r,
|
|
104
|
+
formatting: {
|
|
105
|
+
...i,
|
|
106
|
+
id: e.id,
|
|
107
|
+
role: n.role,
|
|
108
|
+
type: n.type
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function E(e, t, n) {
|
|
115
|
+
let r = new Map(t.map((e) => [e.id, e]));
|
|
116
|
+
return C(e, (e) => {
|
|
117
|
+
let t = S(e);
|
|
118
|
+
if (!t) return e;
|
|
119
|
+
let i = n?.resolveMetadataColumn?.({
|
|
120
|
+
columnId: t,
|
|
121
|
+
metadataColumnsById: r
|
|
122
|
+
}) ?? r.get(t);
|
|
123
|
+
if (!i || e.meta?.formatting?.role && e.meta.formatting.type) return e;
|
|
124
|
+
let a = y(i);
|
|
125
|
+
return {
|
|
126
|
+
...e,
|
|
127
|
+
meta: {
|
|
128
|
+
...e.meta,
|
|
129
|
+
formatting: {
|
|
130
|
+
...e.meta?.formatting,
|
|
131
|
+
id: t,
|
|
132
|
+
role: a.role,
|
|
133
|
+
type: a.type
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/table/selection.ts
|
|
141
|
+
function D(e) {
|
|
142
|
+
return Object.keys(e).filter((t) => e[t]);
|
|
143
|
+
}
|
|
144
|
+
function O(e, t, n) {
|
|
145
|
+
if (n === "none") return {};
|
|
146
|
+
let r = new Set(t), i = D(e).filter((e) => r.has(e));
|
|
147
|
+
if (n === "single") {
|
|
148
|
+
let e = i.at(-1);
|
|
149
|
+
return e ? { [e]: !0 } : {};
|
|
150
|
+
}
|
|
151
|
+
return Object.fromEntries(i.map((e) => [e, !0]));
|
|
152
|
+
}
|
|
153
|
+
function k(e, t, n) {
|
|
154
|
+
if (n === "none") return {};
|
|
155
|
+
if (n === "single") return e[t] ? e : { [t]: !0 };
|
|
156
|
+
if (e[t]) {
|
|
157
|
+
let n = { ...e };
|
|
158
|
+
return delete n[t], n;
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
...e,
|
|
162
|
+
[t]: !0
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/table/useTableRowSelection.ts
|
|
167
|
+
function A({ availableRowIds: e, rowById: t, selectionMode: n, selectedRowIds: c, onRowSelectionChange: l }) {
|
|
168
|
+
let [u, d] = s({}), f = o(!1), p = r((e, t) => {
|
|
169
|
+
let n = Object.keys(e).filter((t) => e[t]), r = Object.keys(t).filter((e) => t[e]);
|
|
170
|
+
return n.length === r.length ? n.every((e) => t[e]) : !1;
|
|
171
|
+
}, []), m = a((e) => {
|
|
172
|
+
d((t) => O(t, e, n));
|
|
173
|
+
}), h = a((e, t) => {
|
|
174
|
+
let r = O(Object.fromEntries(e.map((e) => [e, !0])), t, n);
|
|
175
|
+
d((e) => p(e, r) ? e : (f.current = !0, r));
|
|
176
|
+
}), g = a((e) => {
|
|
177
|
+
if (!l) return;
|
|
178
|
+
let n = [];
|
|
179
|
+
for (let r of Object.keys(e)) {
|
|
180
|
+
if (!e[r]) continue;
|
|
181
|
+
let i = t.get(r);
|
|
182
|
+
i && n.push(i);
|
|
183
|
+
}
|
|
184
|
+
l(n);
|
|
185
|
+
});
|
|
186
|
+
return i(() => {
|
|
187
|
+
if (c !== void 0) {
|
|
188
|
+
h(c, e);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
m(e);
|
|
192
|
+
}, [
|
|
193
|
+
e,
|
|
194
|
+
c,
|
|
195
|
+
n
|
|
196
|
+
]), i(() => {
|
|
197
|
+
if (f.current) {
|
|
198
|
+
f.current = !1;
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
g(u);
|
|
202
|
+
}, [u]), {
|
|
203
|
+
rowSelection: u,
|
|
204
|
+
setRowSelection: d,
|
|
205
|
+
activateRowSelection: r((e, t) => {
|
|
206
|
+
n === "none" || !t || d((t) => k(t, e, n));
|
|
207
|
+
}, [n])
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region src/table/utils.ts
|
|
212
|
+
function j(e) {
|
|
213
|
+
return e.meta;
|
|
214
|
+
}
|
|
215
|
+
function M(e) {
|
|
216
|
+
return e.meta?.formatting;
|
|
217
|
+
}
|
|
218
|
+
function N(e) {
|
|
219
|
+
return typeof e == "number" ? `${e}em` : e;
|
|
220
|
+
}
|
|
221
|
+
function P(e, t) {
|
|
222
|
+
if (!(e instanceof HTMLElement)) return !1;
|
|
223
|
+
let n = "button, a, input, select, textarea, [role=\"button\"], [role=\"link\"]", r = t ? `${n}, ${t}` : n;
|
|
224
|
+
return !!e.closest(r);
|
|
225
|
+
}
|
|
226
|
+
//#endregion
|
|
227
|
+
export { m as DEFAULT_TABLE_COLUMN_MIN_WIDTH, l as buildTableColumnLayout, w as createTableColumnVisibilityFromODataMetadata, T as createTableColumnsFromODataMetadata, E as enrichTableColumnsWithODataFormatting, M as getTableColumnFormattingMeta, j as getTableColumnMeta, P as isTableInteractiveElement, u as normalizeTableColumnOrder, g as normalizeTableColumnSizing, h as normalizeTableColumnWidth, _ as patchTableColumnWidth, O as pruneTableRowSelection, v as removeTableColumnWidth, f as reorderTableHeaderColumns, p as resolveReorderedTableHeaderColumns, S as resolveStableColumnId, y as resolveTableColumnFormattingContextFromODataColumn, c as resolveTableColumnOrder, N as resolveTableLength, k as toggleTableRowSelection, A as useTableRowSelection };
|
|
228
|
+
|
|
229
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/table/columnLayout.ts","../../src/table/columnOrder.ts","../../src/table/columnSizing.ts","../../src/table/odataAdapter.ts","../../src/table/selection.ts","../../src/table/useTableRowSelection.ts","../../src/table/utils.ts"],"sourcesContent":["import { appendMissingIds, filterAndDeduplicateIds } from \"../array\";\n\nexport type TableColumnLayoutItem<TColumnId extends string = string, TWidth = number> = {\n\tid: TColumnId;\n\twidth: TWidth;\n};\n\nexport type ResolveTableColumnOrderArgs<TColumnId extends string = string> = {\n\tids: readonly TColumnId[];\n\torder?: readonly string[];\n};\n\nexport type BuildTableColumnLayoutArgs<TColumnId extends string = string, TWidth = number> = {\n\tids: readonly TColumnId[];\n\tgetWidth: (id: TColumnId) => TWidth;\n};\n\n/**\n * Возвращает порядок колонок как в AnalyticalTable: сначала сохранённый order,\n * затем новые или отсутствующие в order id. Ширины при этом остаются привязаны\n * к columnId, а не к визуальной позиции.\n */\nexport function resolveTableColumnOrder<TColumnId extends string>({ ids, order }: ResolveTableColumnOrderArgs<TColumnId>): TColumnId[] {\n\treturn appendMissingIds(filterAndDeduplicateIds(order, ids), ids);\n}\n\n/**\n * Строит layout колонок из уже вычисленного порядка и функции ширины по id.\n */\nexport function buildTableColumnLayout<TColumnId extends string, TWidth>({\n\tids,\n\tgetWidth\n}: BuildTableColumnLayoutArgs<TColumnId, TWidth>): TableColumnLayoutItem<TColumnId, TWidth>[] {\n\treturn ids.map((id) => ({\n\t\tid,\n\t\twidth: getWidth(id)\n\t}));\n}\n","import { arraysEqual } from \"../array\";\n\nexport type ReorderTableHeaderColumnsArgs = {\n\torder: readonly string[];\n\theaderIds: readonly string[];\n\tlockedIds?: readonly string[];\n\tpinnedIds?: readonly string[];\n\tactiveId: string;\n\toverId: string;\n};\n\nexport type TableColumnOrderState = string[];\n\nexport function normalizeTableColumnOrder(order: readonly string[] | undefined): TableColumnOrderState {\n\treturn Array.from(new Set((order ?? []).filter((columnId) => columnId.trim().length > 0)));\n}\n\nfunction moveItem<T>(items: readonly T[], fromIndex: number, toIndex: number): T[] {\n\tconst nextItems = [...items];\n\tconst [item] = nextItems.splice(fromIndex, 1);\n\n\tif (item === undefined) {\n\t\treturn nextItems;\n\t}\n\n\tnextItems.splice(toIndex, 0, item);\n\treturn nextItems;\n}\n\n/**\n * Переставляет только верхнеуровневые колонки табличной шапки.\n *\n * Ограничения:\n * - дочерние колонки групп не являются самостоятельными draggable-элементами;\n * - locked-колонки остаются в фиксированном порядке;\n * - pinned-колонки не переносятся между закреплённой и обычной зонами.\n */\nexport function reorderTableHeaderColumns(args: ReorderTableHeaderColumnsArgs): string[] {\n\tconst { activeId, overId, order } = args;\n\tif (!activeId || !overId || activeId === overId) return [...order];\n\n\tconst headerSet = new Set(args.headerIds);\n\tif (!headerSet.has(activeId) || !headerSet.has(overId)) return [...order];\n\n\tconst lockedSet = new Set(args.lockedIds ?? []);\n\tif (lockedSet.has(activeId) || lockedSet.has(overId)) return [...order];\n\n\tconst pinnedSet = new Set(args.pinnedIds ?? []);\n\tif (pinnedSet.has(activeId) || pinnedSet.has(overId)) return [...order];\n\n\tconst nextOrder = [...order];\n\tif (!nextOrder.includes(activeId)) {\n\t\tnextOrder.push(activeId);\n\t}\n\tif (!nextOrder.includes(overId)) {\n\t\tnextOrder.push(overId);\n\t}\n\n\tconst fromIndex = nextOrder.indexOf(activeId);\n\tconst toIndex = nextOrder.indexOf(overId);\n\tif (fromIndex === -1 || toIndex === -1 || fromIndex === toIndex) return nextOrder;\n\n\treturn moveItem(nextOrder, fromIndex, toIndex);\n}\n\nexport function resolveReorderedTableHeaderColumns(args: ReorderTableHeaderColumnsArgs): string[] | null {\n\tconst nextOrder = reorderTableHeaderColumns(args);\n\n\treturn arraysEqual(nextOrder, args.order) ? null : nextOrder;\n}\n","export type TableColumnSizingState = Record<string, number>;\n\nexport const DEFAULT_TABLE_COLUMN_MIN_WIDTH = 60;\n\nexport function normalizeTableColumnWidth(px: number, minWidth: number = DEFAULT_TABLE_COLUMN_MIN_WIDTH): number {\n\tconst normalizedMinWidth = Number.isFinite(minWidth) && minWidth > 0 ? Math.floor(minWidth) : DEFAULT_TABLE_COLUMN_MIN_WIDTH;\n\tconst normalizedWidth = Number.isFinite(px) ? Math.floor(px) : normalizedMinWidth;\n\n\treturn Math.max(normalizedMinWidth, normalizedWidth);\n}\n\nexport function normalizeTableColumnSizing(\n\tstate: Readonly<Record<string, number>> | undefined,\n\tminWidth: number = DEFAULT_TABLE_COLUMN_MIN_WIDTH\n): TableColumnSizingState {\n\tconst nextState: TableColumnSizingState = {};\n\n\tfor (const [columnId, width] of Object.entries(state ?? {})) {\n\t\tif (typeof columnId !== \"string\" || columnId.trim().length === 0 || !Number.isFinite(width)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tnextState[columnId] = normalizeTableColumnWidth(width, minWidth);\n\t}\n\n\treturn nextState;\n}\n\nexport function patchTableColumnWidth(\n\tstate: Readonly<Record<string, number>>,\n\tcolumnId: string,\n\twidth: number,\n\tminWidth: number = DEFAULT_TABLE_COLUMN_MIN_WIDTH\n): TableColumnSizingState {\n\tif (columnId.trim().length === 0) {\n\t\treturn normalizeTableColumnSizing(state, minWidth);\n\t}\n\n\treturn {\n\t\t...normalizeTableColumnSizing(state, minWidth),\n\t\t[columnId]: normalizeTableColumnWidth(width, minWidth)\n\t};\n}\n\nexport function removeTableColumnWidth(state: Readonly<Record<string, number>>, columnId: string): TableColumnSizingState {\n\tconst nextState: TableColumnSizingState = {};\n\n\tfor (const [key, width] of Object.entries(state)) {\n\t\tif (key !== columnId) {\n\t\t\tnextState[key] = width;\n\t\t}\n\t}\n\n\treturn nextState;\n}\n","import type { FormattersPipelineTypedValueContext } from \"../formatters/pipeline\";\nimport type { EntityColumnProperty } from \"../odata-service\";\nimport type { TableColumnAlign, TableColumnDef, TableColumnFormattingMetaInput } from \"./types\";\n\n/**\n * Опции генерации колонок по OData metadata.\n */\nexport interface CreateTableColumnsFromODataMetadataOptions {\n\t/**\n\t * Позволяет переопределить заголовок колонки.\n\t */\n\tresolveHeader?: (column: EntityColumnProperty) => string;\n\t/**\n\t * Позволяет сразу навесить formatting-конфиг на generated column.\n\t *\n\t * `id`, `role` и `type` будут автоматически получены из metadata.\n\t */\n\tresolveFormatting?: (column: EntityColumnProperty) => TableColumnFormattingMetaInput | undefined;\n}\n\n/**\n * Опции обогащения уже существующих колонок данными OData metadata.\n */\nexport interface EnrichTableColumnsWithODataFormattingOptions {\n\t/**\n\t * Позволяет подменить стратегию поиска metadata по колонке.\n\t */\n\tresolveMetadataColumn?: (args: {\n\t\tcolumnId: string;\n\t\tmetadataColumnsById: ReadonlyMap<string, EntityColumnProperty>;\n\t}) => EntityColumnProperty | undefined;\n}\n\n/**\n * Опции построения стартовой карты видимости колонок по OData metadata.\n */\nexport interface CreateTableColumnVisibilityFromODataMetadataOptions {\n\t/**\n\t * Позволяет явно переопределить стартовую видимость колонки.\n\t */\n\tresolveVisible?: (column: EntityColumnProperty) => boolean;\n}\n\n/**\n * Возвращает typed-formatting контекст по metadata OData-колонки.\n */\nexport function resolveTableColumnFormattingContextFromODataColumn(column: EntityColumnProperty): FormattersPipelineTypedValueContext {\n\tconst { role, type } = column;\n\tconst forceMeasure = type === \"decimal\" || type === \"float\" || type === \"double\" || type === \"int\" || type === \"byte\";\n\n\treturn {\n\t\trole: forceMeasure ? \"measure\" : role,\n\t\ttype: type\n\t};\n}\n\n/**\n * Создаёт базовое выравнивание по семантике OData-колонки.\n *\n * NOTE: \"не аналитические\" все поля возвращают как \"dimension\"...\n */\nfunction resolveTableColumnAlignFromODataColumn(columnContext: FormattersPipelineTypedValueContext): TableColumnAlign {\n\treturn columnContext.role === \"measure\" ? \"right\" : \"left\";\n}\n\n/**\n * Определяет видимость metadata-колонки по умолчанию.\n *\n * Кодовые поля скрываются только если у них есть явная text-пара,\n * чтобы экран по умолчанию показывал человекочитаемое значение.\n */\nfunction resolveMetadataColumnVisibleByDefault(\n\tcolumn: EntityColumnProperty,\n\tmetadataColumnsById: ReadonlyMap<string, EntityColumnProperty>\n): boolean {\n\tif (column.semanticType !== \"code\" || !column.linkedColumnId) {\n\t\treturn true;\n\t}\n\n\tconst linkedColumn = metadataColumnsById.get(column.linkedColumnId);\n\n\treturn linkedColumn?.semanticType !== \"text\";\n}\n\n/**\n * Определяет стабильный идентификатор колонки для сопоставления с metadata.\n */\nexport function resolveStableColumnId<TData extends object>(column: TableColumnDef<TData>): string | undefined {\n\tif (typeof column.id === \"string\" && column.id.trim()) {\n\t\treturn column.id;\n\t}\n\n\tif (\"accessorKey\" in column && typeof column.accessorKey === \"string\" && column.accessorKey.trim()) {\n\t\treturn column.accessorKey;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Рекурсивно обходит только leaf-колонки.\n */\nfunction mapLeafTableColumns<TData extends object>(\n\tcolumns: readonly TableColumnDef<TData>[],\n\tmapper: (column: TableColumnDef<TData>) => TableColumnDef<TData>\n): TableColumnDef<TData>[] {\n\treturn columns.map((column) => {\n\t\tif (\"columns\" in column && Array.isArray(column.columns) && column.columns.length > 0) {\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\tcolumns: mapLeafTableColumns(column.columns as TableColumnDef<TData>[], mapper)\n\t\t\t};\n\t\t}\n\n\t\treturn mapper(column);\n\t});\n}\n\n/**\n * Строит стартовую карту видимости колонок из metadata OData-сущности.\n *\n * Возвращает visibility-state для TanStack Table, не удаляя сами колонки\n * из результата build-режима.\n */\nexport function createTableColumnVisibilityFromODataMetadata(\n\tmetadataColumns: readonly EntityColumnProperty[],\n\toptions?: CreateTableColumnVisibilityFromODataMetadataOptions\n): Record<string, boolean> {\n\tconst metadataColumnsById = new Map(metadataColumns.map((column) => [column.id, column]));\n\n\treturn Object.fromEntries(\n\t\tmetadataColumns.map((column) => {\n\t\t\tconst visible = options?.resolveVisible?.(column) ?? resolveMetadataColumnVisibleByDefault(column, metadataColumnsById);\n\n\t\t\treturn [column.id, visible];\n\t\t})\n\t);\n}\n\n/**\n * Создаёт базовые generic-колонки из metadata OData-сущности.\n */\nexport function createTableColumnsFromODataMetadata<TData extends object = Record<string, unknown>>(\n\tmetadataColumns: readonly EntityColumnProperty[],\n\toptions?: CreateTableColumnsFromODataMetadataOptions\n): TableColumnDef<TData>[] {\n\treturn metadataColumns.map((metadataColumn) => {\n\t\t// NOTE: Ячейка сама определит выравнивание, `align` только для переопределения\n\t\tconst columnContext = resolveTableColumnFormattingContextFromODataColumn(metadataColumn);\n\t\tconst align = resolveTableColumnAlignFromODataColumn(columnContext);\n\t\tconst resolvedFormatting = options?.resolveFormatting?.(metadataColumn);\n\n\t\treturn {\n\t\t\tid: metadataColumn.id,\n\t\t\taccessorKey: metadataColumn.id,\n\t\t\theader: options?.resolveHeader?.(metadataColumn) ?? metadataColumn.label ?? metadataColumn.id,\n\t\t\tmeta: {\n\t\t\t\talign,\n\t\t\t\tformatting: {\n\t\t\t\t\t...resolvedFormatting,\n\t\t\t\t\tid: metadataColumn.id,\n\t\t\t\t\trole: columnContext.role,\n\t\t\t\t\ttype: columnContext.type\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}) as TableColumnDef<TData>[];\n}\n\n/**\n * Дозаполняет уже существующие колонки typed-formatting контекстом из OData metadata.\n */\nexport function enrichTableColumnsWithODataFormatting<TData extends object>(\n\tcolumns: readonly TableColumnDef<TData>[],\n\tmetadataColumns: readonly EntityColumnProperty[],\n\toptions?: EnrichTableColumnsWithODataFormattingOptions\n): TableColumnDef<TData>[] {\n\tconst metadataColumnsById = new Map(metadataColumns.map((column) => [column.id, column]));\n\n\treturn mapLeafTableColumns(columns, (column) => {\n\t\tconst columnId = resolveStableColumnId(column);\n\t\tif (!columnId) {\n\t\t\treturn column;\n\t\t}\n\n\t\tconst metadataColumn =\n\t\t\toptions?.resolveMetadataColumn?.({\n\t\t\t\tcolumnId,\n\t\t\t\tmetadataColumnsById\n\t\t\t}) ?? metadataColumnsById.get(columnId);\n\n\t\tif (!metadataColumn) {\n\t\t\treturn column;\n\t\t}\n\n\t\tif (column.meta?.formatting?.role && column.meta.formatting.type) {\n\t\t\treturn column;\n\t\t}\n\t\tconst columnContext = resolveTableColumnFormattingContextFromODataColumn(metadataColumn);\n\n\t\treturn {\n\t\t\t...column,\n\t\t\tmeta: {\n\t\t\t\t...column.meta,\n\t\t\t\tformatting: {\n\t\t\t\t\t...column.meta?.formatting,\n\t\t\t\t\tid: columnId,\n\t\t\t\t\trole: columnContext.role,\n\t\t\t\t\ttype: columnContext.type\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n","import { RowSelectionState } from \"@tanstack/react-table\";\n\nimport { TableSelectionMode } from \"./types\";\n\n/**\n * Возвращает только активные идентификаторы выбранных строк.\n */\nfunction getSelectedRowIds(selection: RowSelectionState): string[] {\n\treturn Object.keys(selection).filter((rowId) => selection[rowId]);\n}\n\n/**\n * Нормализует состояние выбора относительно списка доступных строк и текущего режима.\n */\nexport function pruneTableRowSelection(\n\tselection: RowSelectionState,\n\tavailableRowIds: readonly string[],\n\tselectionMode: TableSelectionMode\n): RowSelectionState {\n\tif (selectionMode === \"none\") {\n\t\treturn {};\n\t}\n\n\tconst availableRowIdSet = new Set(availableRowIds);\n\tconst selectedRowIds = getSelectedRowIds(selection).filter((rowId) => availableRowIdSet.has(rowId));\n\n\tif (selectionMode === \"single\") {\n\t\tconst lastSelectedRowId = selectedRowIds.at(-1);\n\n\t\treturn lastSelectedRowId ? { [lastSelectedRowId]: true } : {};\n\t}\n\n\treturn Object.fromEntries(selectedRowIds.map((rowId) => [rowId, true]));\n}\n\n/**\n * Вычисляет следующее состояние выбора после активации строки пользователем.\n *\n * Семантика:\n * - `none` не хранит выбор;\n * - `single` всегда оставляет только одну строку и не снимает выбор повторным кликом;\n * - `multi` переключает строку как toggle.\n */\nexport function toggleTableRowSelection(selection: RowSelectionState, rowId: string, selectionMode: TableSelectionMode): RowSelectionState {\n\tif (selectionMode === \"none\") {\n\t\treturn {};\n\t}\n\n\tif (selectionMode === \"single\") {\n\t\treturn selection[rowId] ? selection : { [rowId]: true };\n\t}\n\n\tif (selection[rowId]) {\n\t\tconst nextSelection = { ...selection };\n\n\t\tdelete nextSelection[rowId];\n\n\t\treturn nextSelection;\n\t}\n\n\treturn {\n\t\t...selection,\n\t\t[rowId]: true\n\t};\n}\n","import { useCallback, useEffect, useEffectEvent, useRef, useState } from \"react\";\n\nimport { RowSelectionState } from \"@tanstack/react-table\";\n\nimport { pruneTableRowSelection, toggleTableRowSelection } from \"./selection\";\nimport { TableSelectionMode } from \"./types\";\n\ninterface UseTableRowSelectionParams<TData extends object> {\n\tavailableRowIds: readonly string[];\n\trowById: Map<string, TData>;\n\tselectionMode: TableSelectionMode;\n\tselectedRowIds?: readonly string[];\n\tonRowSelectionChange?: (rows: TData[]) => void;\n}\n\n/**\n * Общая модель выбора строк для плоской и древовидной таблиц.\n */\nexport function useTableRowSelection<TData extends object>({\n\tavailableRowIds,\n\trowById,\n\tselectionMode,\n\tselectedRowIds,\n\tonRowSelectionChange\n}: UseTableRowSelectionParams<TData>) {\n\tconst [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n\tconst shouldSkipNextSelectionEmitRef = useRef(false);\n\n\t/**\n\t * Сравнивает состояния выбора без лишних перерисовок.\n\t */\n\tconst areSelectionsEqual = useCallback((left: RowSelectionState, right: RowSelectionState) => {\n\t\tconst leftRowIds = Object.keys(left).filter((rowId) => left[rowId]);\n\t\tconst rightRowIds = Object.keys(right).filter((rowId) => right[rowId]);\n\n\t\tif (leftRowIds.length !== rightRowIds.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn leftRowIds.every((rowId) => right[rowId]);\n\n\t\t/*\n\n Более оптимизированная версия, но для текущего случая может быть практически незначительной\n\n let leftCount = 0;\n\t\tlet rightCount = 0;\n\n\t\tfor (const rowId of Object.keys(left)) {\n\t\t\tif (!left[rowId]) continue;\n\t\t\tleftCount += 1;\n\t\t\tif (!right[rowId]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const rowId of Object.keys(right)) {\n\t\t\tif (right[rowId]) {\n\t\t\t\trightCount += 1;\n\t\t\t}\n\t\t}\n\n\t\tif (leftCount !== rightCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\n */\n\t}, []);\n\n\tconst syncRowSelectionState = useEffectEvent((nextAvailableRowIds: readonly string[]) => {\n\t\tsetRowSelection((currentSelection) => pruneTableRowSelection(currentSelection, nextAvailableRowIds, selectionMode));\n\t});\n\n\tconst syncControlledRowSelectionState = useEffectEvent(\n\t\t(nextSelectedRowIds: readonly string[], nextAvailableRowIds: readonly string[]) => {\n\t\t\tconst nextSelection = pruneTableRowSelection(\n\t\t\t\tObject.fromEntries(nextSelectedRowIds.map((rowId) => [rowId, true])),\n\t\t\t\tnextAvailableRowIds,\n\t\t\t\tselectionMode\n\t\t\t);\n\n\t\t\tsetRowSelection((currentSelection) => {\n\t\t\t\tif (areSelectionsEqual(currentSelection, nextSelection)) {\n\t\t\t\t\treturn currentSelection;\n\t\t\t\t}\n\n\t\t\t\t// Пропускаем следующий emit, потому что это синхронизация от внешнего controlled-состояния,\n\t\t\t\t// а не пользовательское изменение выбора внутри таблицы.\n\t\t\t\tshouldSkipNextSelectionEmitRef.current = true;\n\n\t\t\t\treturn nextSelection;\n\t\t\t});\n\t\t}\n\t);\n\n\tconst emitRowSelectionChange = useEffectEvent((currentSelection: RowSelectionState) => {\n\t\tif (!onRowSelectionChange) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedRows: TData[] = [];\n\n\t\tfor (const rowId of Object.keys(currentSelection)) {\n\t\t\tif (!currentSelection[rowId]) continue;\n\n\t\t\tconst row = rowById.get(rowId);\n\t\t\tif (row) {\n\t\t\t\tselectedRows.push(row);\n\t\t\t}\n\t\t}\n\n\t\tonRowSelectionChange(selectedRows);\n\t});\n\n\tuseEffect(() => {\n\t\tif (selectedRowIds !== undefined) {\n\t\t\tsyncControlledRowSelectionState(selectedRowIds, availableRowIds);\n\t\t\treturn;\n\t\t}\n\n\t\tsyncRowSelectionState(availableRowIds);\n\t}, [availableRowIds, selectedRowIds, selectionMode]);\n\n\tuseEffect(() => {\n\t\tif (shouldSkipNextSelectionEmitRef.current) {\n\t\t\tshouldSkipNextSelectionEmitRef.current = false;\n\t\t\treturn;\n\t\t}\n\n\t\temitRowSelectionChange(rowSelection);\n\t}, [rowSelection]);\n\n\t/**\n\t * Применяет изменение выбора при активации конкретной строки.\n\t */\n\tconst activateRowSelection = useCallback(\n\t\t(rowId: string, canSelect: boolean) => {\n\t\t\tif (selectionMode === \"none\" || !canSelect) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetRowSelection((currentSelection) => toggleTableRowSelection(currentSelection, rowId, selectionMode));\n\t\t},\n\t\t[selectionMode]\n\t);\n\n\treturn {\n\t\trowSelection,\n\t\tsetRowSelection,\n\t\tactivateRowSelection\n\t};\n}\n","import { TableColumnDef, TableColumnFormattingMeta, TableColumnMeta } from \"./types\";\n\n/**\n * Возвращает метаданные колонки таблицы.\n */\nexport function getTableColumnMeta<TData extends object>(column: TableColumnDef<TData>): TableColumnMeta | undefined {\n\treturn column.meta;\n}\n\n/**\n * Возвращает форматирующий блок метаданных колонки.\n */\nexport function getTableColumnFormattingMeta<TData extends object>(column: TableColumnDef<TData>): TableColumnFormattingMeta | undefined {\n\treturn column.meta?.formatting;\n}\n\n/**\n * Нормализует размер таблицы.\n *\n * Числовое значение трактуется как `em`, чтобы разметка масштабировалась вместе со шрифтом.\n */\nexport function resolveTableLength(length: string | number): string {\n\tif (typeof length === \"number\") {\n\t\treturn `${length}em`;\n\t}\n\n\treturn length;\n}\n\n/**\n * Определяет, пришёл ли клик из интерактивного элемента внутри таблицы.\n */\nexport function isTableInteractiveElement(target: EventTarget | null, extraSelector?: string): boolean {\n\tif (!(target instanceof HTMLElement)) {\n\t\treturn false;\n\t}\n\n\tconst baseSelector = 'button, a, input, select, textarea, [role=\"button\"], [role=\"link\"]';\n\tconst selector = extraSelector ? `${baseSelector}, ${extraSelector}` : baseSelector;\n\n\treturn Boolean(target.closest(selector));\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { FormattersPipelineTypedValueContext } from "../formatters/pipeline";
|
|
2
|
+
import type { EntityColumnProperty } from "../odata-service";
|
|
3
|
+
import type { TableColumnDef, TableColumnFormattingMetaInput } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* Опции генерации колонок по OData metadata.
|
|
6
|
+
*/
|
|
7
|
+
export interface CreateTableColumnsFromODataMetadataOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Позволяет переопределить заголовок колонки.
|
|
10
|
+
*/
|
|
11
|
+
resolveHeader?: (column: EntityColumnProperty) => string;
|
|
12
|
+
/**
|
|
13
|
+
* Позволяет сразу навесить formatting-конфиг на generated column.
|
|
14
|
+
*
|
|
15
|
+
* `id`, `role` и `type` будут автоматически получены из metadata.
|
|
16
|
+
*/
|
|
17
|
+
resolveFormatting?: (column: EntityColumnProperty) => TableColumnFormattingMetaInput | undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Опции обогащения уже существующих колонок данными OData metadata.
|
|
21
|
+
*/
|
|
22
|
+
export interface EnrichTableColumnsWithODataFormattingOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Позволяет подменить стратегию поиска metadata по колонке.
|
|
25
|
+
*/
|
|
26
|
+
resolveMetadataColumn?: (args: {
|
|
27
|
+
columnId: string;
|
|
28
|
+
metadataColumnsById: ReadonlyMap<string, EntityColumnProperty>;
|
|
29
|
+
}) => EntityColumnProperty | undefined;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Опции построения стартовой карты видимости колонок по OData metadata.
|
|
33
|
+
*/
|
|
34
|
+
export interface CreateTableColumnVisibilityFromODataMetadataOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Позволяет явно переопределить стартовую видимость колонки.
|
|
37
|
+
*/
|
|
38
|
+
resolveVisible?: (column: EntityColumnProperty) => boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Возвращает typed-formatting контекст по metadata OData-колонки.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveTableColumnFormattingContextFromODataColumn(column: EntityColumnProperty): FormattersPipelineTypedValueContext;
|
|
44
|
+
/**
|
|
45
|
+
* Определяет стабильный идентификатор колонки для сопоставления с metadata.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveStableColumnId<TData extends object>(column: TableColumnDef<TData>): string | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Строит стартовую карту видимости колонок из metadata OData-сущности.
|
|
50
|
+
*
|
|
51
|
+
* Возвращает visibility-state для TanStack Table, не удаляя сами колонки
|
|
52
|
+
* из результата build-режима.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createTableColumnVisibilityFromODataMetadata(metadataColumns: readonly EntityColumnProperty[], options?: CreateTableColumnVisibilityFromODataMetadataOptions): Record<string, boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Создаёт базовые generic-колонки из metadata OData-сущности.
|
|
57
|
+
*/
|
|
58
|
+
export declare function createTableColumnsFromODataMetadata<TData extends object = Record<string, unknown>>(metadataColumns: readonly EntityColumnProperty[], options?: CreateTableColumnsFromODataMetadataOptions): TableColumnDef<TData>[];
|
|
59
|
+
/**
|
|
60
|
+
* Дозаполняет уже существующие колонки typed-formatting контекстом из OData metadata.
|
|
61
|
+
*/
|
|
62
|
+
export declare function enrichTableColumnsWithODataFormatting<TData extends object>(columns: readonly TableColumnDef<TData>[], metadataColumns: readonly EntityColumnProperty[], options?: EnrichTableColumnsWithODataFormattingOptions): TableColumnDef<TData>[];
|
|
63
|
+
//# sourceMappingURL=odataAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odataAdapter.d.ts","sourceRoot":"","sources":["../../src/table/odataAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAoB,cAAc,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,0CAA0C;IAC1D;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,MAAM,CAAC;IACzD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,8BAA8B,GAAG,SAAS,CAAC;CACjG;AAED;;GAEG;AACH,MAAM,WAAW,4CAA4C;IAC5D;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;KAC/D,KAAK,oBAAoB,GAAG,SAAS,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mDAAmD;IACnE;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC;CAC3D;AAED;;GAEG;AACH,wBAAgB,kDAAkD,CAAC,MAAM,EAAE,oBAAoB,GAAG,mCAAmC,CAQpI;AA8BD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,SAAS,CAU7G;AAqBD;;;;;GAKG;AACH,wBAAgB,4CAA4C,CAC3D,eAAe,EAAE,SAAS,oBAAoB,EAAE,EAChD,OAAO,CAAC,EAAE,mDAAmD,GAC3D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjG,eAAe,EAAE,SAAS,oBAAoB,EAAE,EAChD,OAAO,CAAC,EAAE,0CAA0C,GAClD,cAAc,CAAC,KAAK,CAAC,EAAE,CAsBzB;AAED;;GAEG;AACH,wBAAgB,qCAAqC,CAAC,KAAK,SAAS,MAAM,EACzE,OAAO,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,EACzC,eAAe,EAAE,SAAS,oBAAoB,EAAE,EAChD,OAAO,CAAC,EAAE,4CAA4C,GACpD,cAAc,CAAC,KAAK,CAAC,EAAE,CAqCzB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RowSelectionState } from "@tanstack/react-table";
|
|
2
|
+
import { TableSelectionMode } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Нормализует состояние выбора относительно списка доступных строк и текущего режима.
|
|
5
|
+
*/
|
|
6
|
+
export declare function pruneTableRowSelection(selection: RowSelectionState, availableRowIds: readonly string[], selectionMode: TableSelectionMode): RowSelectionState;
|
|
7
|
+
/**
|
|
8
|
+
* Вычисляет следующее состояние выбора после активации строки пользователем.
|
|
9
|
+
*
|
|
10
|
+
* Семантика:
|
|
11
|
+
* - `none` не хранит выбор;
|
|
12
|
+
* - `single` всегда оставляет только одну строку и не снимает выбор повторным кликом;
|
|
13
|
+
* - `multi` переключает строку как toggle.
|
|
14
|
+
*/
|
|
15
|
+
export declare function toggleTableRowSelection(selection: RowSelectionState, rowId: string, selectionMode: TableSelectionMode): RowSelectionState;
|
|
16
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/table/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAS7C;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,aAAa,EAAE,kBAAkB,GAC/B,iBAAiB,CAenB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,GAAG,iBAAiB,CAqBzI"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type ColumnDef } from "@tanstack/react-table";
|
|
2
|
+
import { type FormattersPipelineRuntimeField } from "../formatters/pipeline";
|
|
3
|
+
/**
|
|
4
|
+
* Режим выбора строк таблицы.
|
|
5
|
+
*/
|
|
6
|
+
export type TableSelectionMode = "none" | "single" | "multi";
|
|
7
|
+
/**
|
|
8
|
+
* Выравнивание содержимого ячейки таблицы.
|
|
9
|
+
*/
|
|
10
|
+
export type TableColumnAlign = "left" | "center" | "right";
|
|
11
|
+
type TableColumnFormattingOptions = Omit<FormattersPipelineRuntimeField, "id" | "role" | "type" | "formulaExecutor" | "formattersPipelineExecutor">;
|
|
12
|
+
/**
|
|
13
|
+
* Форматирующий input-контракт generic-колонки.
|
|
14
|
+
*
|
|
15
|
+
* `role/type` можно не указывать для маленьких локальных таблиц: snapshot
|
|
16
|
+
* нормализует их в runtime-field перед компиляцией pipeline.
|
|
17
|
+
*/
|
|
18
|
+
export type TableColumnFormattingMeta = TableColumnFormattingOptions & Partial<Pick<FormattersPipelineRuntimeField, "id" | "role" | "type">>;
|
|
19
|
+
/**
|
|
20
|
+
* Пользовательские настройки форматирования, которые можно добавить к
|
|
21
|
+
* runtime-полю, построенному из metadata колонки.
|
|
22
|
+
*/
|
|
23
|
+
export type TableColumnFormattingMetaInput = TableColumnFormattingOptions;
|
|
24
|
+
/**
|
|
25
|
+
* Метаданные колонки таблицы.
|
|
26
|
+
*/
|
|
27
|
+
export interface TableColumnMeta {
|
|
28
|
+
/**
|
|
29
|
+
* Ширина колонки.
|
|
30
|
+
*
|
|
31
|
+
* Строка используется как CSS-значение, число трактуется как `em`.
|
|
32
|
+
*/
|
|
33
|
+
width?: number | "auto" | `${number}%`;
|
|
34
|
+
/**
|
|
35
|
+
* Выравнивание содержимого заголовка и ячеек.
|
|
36
|
+
*/
|
|
37
|
+
align?: TableColumnAlign;
|
|
38
|
+
/**
|
|
39
|
+
* Включает display-only слияние подряд идущих дубликатов без изменения структуры строк.
|
|
40
|
+
*
|
|
41
|
+
* Сравнение выполняется по raw-значению `accessor`/`cell.getValue()`, а не по
|
|
42
|
+
* отформатированному отображению. Повторяющиеся значения скрываются в
|
|
43
|
+
* последующих строках, а визуальная склейка выполняется через CSS.
|
|
44
|
+
*/
|
|
45
|
+
mergeDuplicates?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Декларативный конфиг форматирования ячейки.
|
|
48
|
+
*
|
|
49
|
+
* @experimental не использовать, функционал в разработке
|
|
50
|
+
*/
|
|
51
|
+
formatting?: TableColumnFormattingMeta;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Базовый тип колонки таблицы.
|
|
55
|
+
*/
|
|
56
|
+
export type TableColumnDef<TData extends object, TValue = unknown> = ColumnDef<TData, TValue> & {
|
|
57
|
+
meta?: TableColumnMeta;
|
|
58
|
+
};
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/table/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D,KAAK,4BAA4B,GAAG,IAAI,CACvC,8BAA8B,EAC9B,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,iBAAiB,GAAG,4BAA4B,CACzE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,4BAA4B,GACnE,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC;IAEvC;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,GAAG,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;IAC/F,IAAI,CAAC,EAAE,eAAe,CAAC;CACvB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RowSelectionState } from "@tanstack/react-table";
|
|
2
|
+
import { TableSelectionMode } from "./types";
|
|
3
|
+
interface UseTableRowSelectionParams<TData extends object> {
|
|
4
|
+
availableRowIds: readonly string[];
|
|
5
|
+
rowById: Map<string, TData>;
|
|
6
|
+
selectionMode: TableSelectionMode;
|
|
7
|
+
selectedRowIds?: readonly string[];
|
|
8
|
+
onRowSelectionChange?: (rows: TData[]) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Общая модель выбора строк для плоской и древовидной таблиц.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useTableRowSelection<TData extends object>({ availableRowIds, rowById, selectionMode, selectedRowIds, onRowSelectionChange }: UseTableRowSelectionParams<TData>): {
|
|
14
|
+
rowSelection: RowSelectionState;
|
|
15
|
+
setRowSelection: import("react").Dispatch<import("react").SetStateAction<RowSelectionState>>;
|
|
16
|
+
activateRowSelection: (rowId: string, canSelect: boolean) => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=useTableRowSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableRowSelection.d.ts","sourceRoot":"","sources":["../../src/table/useTableRowSelection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,UAAU,0BAA0B,CAAC,KAAK,SAAS,MAAM;IACxD,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5B,aAAa,EAAE,kBAAkB,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,MAAM,EAAE,EAC1D,eAAe,EACf,OAAO,EACP,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,EAAE,0BAA0B,CAAC,KAAK,CAAC;;;kCAkH1B,MAAM,aAAa,OAAO;EAenC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TableColumnDef, TableColumnFormattingMeta, TableColumnMeta } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Возвращает метаданные колонки таблицы.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getTableColumnMeta<TData extends object>(column: TableColumnDef<TData>): TableColumnMeta | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Возвращает форматирующий блок метаданных колонки.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getTableColumnFormattingMeta<TData extends object>(column: TableColumnDef<TData>): TableColumnFormattingMeta | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Нормализует размер таблицы.
|
|
12
|
+
*
|
|
13
|
+
* Числовое значение трактуется как `em`, чтобы разметка масштабировалась вместе со шрифтом.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveTableLength(length: string | number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Определяет, пришёл ли клик из интерактивного элемента внутри таблицы.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isTableInteractiveElement(target: EventTarget | null, extraSelector?: string): boolean;
|
|
20
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/table/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAErF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,eAAe,GAAG,SAAS,CAEnH;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,yBAAyB,GAAG,SAAS,CAEvI;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAMlE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CASrG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/three-scene/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { useMediaQuery as e } from "../media/index.js";
|
|
2
|
+
import { useEffect as t, useState as n } from "react";
|
|
3
|
+
//#region src/three-scene/threeSceneAvailability.ts
|
|
4
|
+
var r = {
|
|
5
|
+
webgl: [
|
|
6
|
+
"webgl2",
|
|
7
|
+
"webgl",
|
|
8
|
+
"experimental-webgl"
|
|
9
|
+
],
|
|
10
|
+
webgl2: ["webgl2"]
|
|
11
|
+
}, i = "react-foundation-lib:three-scene:disabled";
|
|
12
|
+
function a(e = i) {
|
|
13
|
+
if (typeof window > "u") return !0;
|
|
14
|
+
try {
|
|
15
|
+
return window.sessionStorage.getItem(e) === "1";
|
|
16
|
+
} catch {
|
|
17
|
+
return !1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function o(e = i) {
|
|
21
|
+
if (!(typeof window > "u")) try {
|
|
22
|
+
window.sessionStorage.setItem(e, "1");
|
|
23
|
+
} catch {}
|
|
24
|
+
}
|
|
25
|
+
function s({ webGLVersion: e = "webgl2" } = {}) {
|
|
26
|
+
if (typeof document > "u") return !1;
|
|
27
|
+
try {
|
|
28
|
+
let t = document.createElement("canvas"), n = r[e];
|
|
29
|
+
for (let e of n) {
|
|
30
|
+
let n = t.getContext(e, {
|
|
31
|
+
alpha: !0,
|
|
32
|
+
antialias: !1,
|
|
33
|
+
depth: !0,
|
|
34
|
+
stencil: !1,
|
|
35
|
+
powerPreference: "default"
|
|
36
|
+
});
|
|
37
|
+
if (n) return n.getExtension("WEBGL_lose_context")?.loseContext(), !0;
|
|
38
|
+
}
|
|
39
|
+
return !1;
|
|
40
|
+
} catch {
|
|
41
|
+
return !1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/three-scene/useThreeSceneAvailability.ts
|
|
46
|
+
function c({ disabledStorageKey: r = i, disableWhenReducedMotion: c = !1, webGLVersion: l = "webgl2" } = {}) {
|
|
47
|
+
let u = e("(prefers-reduced-motion: reduce)"), [d, f] = n({
|
|
48
|
+
status: "unavailable",
|
|
49
|
+
reason: "ssr"
|
|
50
|
+
});
|
|
51
|
+
return t(() => {
|
|
52
|
+
if (c && u) {
|
|
53
|
+
f({
|
|
54
|
+
status: "unavailable",
|
|
55
|
+
reason: "reducedMotion"
|
|
56
|
+
});
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (a(r)) {
|
|
60
|
+
f({
|
|
61
|
+
status: "unavailable",
|
|
62
|
+
reason: "sessionDisabled"
|
|
63
|
+
});
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!s({ webGLVersion: l })) {
|
|
67
|
+
o(r), f({
|
|
68
|
+
status: "unavailable",
|
|
69
|
+
reason: "webglUnsupported"
|
|
70
|
+
});
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
f({ status: "available" });
|
|
74
|
+
}, [
|
|
75
|
+
c,
|
|
76
|
+
r,
|
|
77
|
+
u,
|
|
78
|
+
l
|
|
79
|
+
]), d;
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
export { o as disableThreeSceneForSession, a as isThreeSceneDisabledForSession, s as isThreeSceneSupported, i as threeSceneDefaultDisabledStorageKey, c as useThreeSceneAvailability };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=index.js.map
|