@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,99 @@
|
|
|
1
|
+
//#region src/number-scale/numberScale.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
if (!Number.isFinite(e)) return 0;
|
|
4
|
+
let t = e.toString().toLowerCase(), n = t.indexOf("e-");
|
|
5
|
+
if (n >= 0) return Number(t.slice(n + 2));
|
|
6
|
+
let r = t.indexOf(".");
|
|
7
|
+
return r >= 0 ? t.length - r - 1 : 0;
|
|
8
|
+
}
|
|
9
|
+
function t(e, t) {
|
|
10
|
+
if (t <= 0) return Math.round(e);
|
|
11
|
+
let n = 10 ** t;
|
|
12
|
+
return Math.round(e * n) / n;
|
|
13
|
+
}
|
|
14
|
+
function n(e, t) {
|
|
15
|
+
return !Number.isFinite(e) || !Number.isFinite(t) ? {
|
|
16
|
+
min: 0,
|
|
17
|
+
max: 100
|
|
18
|
+
} : e <= t ? {
|
|
19
|
+
min: e,
|
|
20
|
+
max: t
|
|
21
|
+
} : {
|
|
22
|
+
min: t,
|
|
23
|
+
max: e
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function r(e, t, n) {
|
|
27
|
+
return Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : t;
|
|
28
|
+
}
|
|
29
|
+
function i(e) {
|
|
30
|
+
return !Number.isFinite(e) || e === void 0 || e <= 0 ? 1 : e;
|
|
31
|
+
}
|
|
32
|
+
function a(e, t, n) {
|
|
33
|
+
if (!e?.length) return [];
|
|
34
|
+
let r = /* @__PURE__ */ new Set();
|
|
35
|
+
return e.filter((e) => Number.isFinite(e.value) && e.value >= t && e.value <= n).slice().sort((e, t) => e.value - t.value).filter((e) => r.has(e.value) ? !1 : (r.add(e.value), !0));
|
|
36
|
+
}
|
|
37
|
+
function o(n, a, o, s) {
|
|
38
|
+
let c = i(s), l = r(n, a, o), u = Math.max(e(c), e(a), e(o));
|
|
39
|
+
return r(t(a + Math.round((l - a) / c) * c, u), a, o);
|
|
40
|
+
}
|
|
41
|
+
function s(e, t) {
|
|
42
|
+
if (!t.length) return;
|
|
43
|
+
let n = t[0], r = Math.abs(e - n.value);
|
|
44
|
+
for (let i = 1; i < t.length; i += 1) {
|
|
45
|
+
let a = t[i], o = Math.abs(e - a.value);
|
|
46
|
+
o < r && (n = a, r = o);
|
|
47
|
+
}
|
|
48
|
+
return n;
|
|
49
|
+
}
|
|
50
|
+
function c(e, t, n, i) {
|
|
51
|
+
if (!t.length) return r(e, n, i);
|
|
52
|
+
let a = r(e, n, i);
|
|
53
|
+
return s(a, t)?.value ?? a;
|
|
54
|
+
}
|
|
55
|
+
function l(e, t) {
|
|
56
|
+
let { min: r, max: i } = n(t.min, t.max), s = a(t.marks, r, i);
|
|
57
|
+
return s.length > 0 ? c(e, s, r, i) : o(e, r, i, t.step);
|
|
58
|
+
}
|
|
59
|
+
function u(e, t, n) {
|
|
60
|
+
return n <= t ? 0 : (r(e, t, n) - t) / (n - t) * 100;
|
|
61
|
+
}
|
|
62
|
+
function d(e, t, n) {
|
|
63
|
+
if (n <= t) return t;
|
|
64
|
+
let i = r(e, 0, 100);
|
|
65
|
+
return t + (n - t) * i / 100;
|
|
66
|
+
}
|
|
67
|
+
function f(e, t, n, r, i = "value") {
|
|
68
|
+
return i === "index" && t.length > 1 ? e / (t.length - 1) * 100 : i === "index" ? 0 : u(t[e]?.value ?? n, n, r);
|
|
69
|
+
}
|
|
70
|
+
function p(e, t, n, i, a = "value") {
|
|
71
|
+
if (!t.length) return;
|
|
72
|
+
let o = r(e, 0, 100), s = t[0], c = Math.abs(o - f(0, t, n, i, a));
|
|
73
|
+
for (let e = 1; e < t.length; e += 1) {
|
|
74
|
+
let r = Math.abs(o - f(e, t, n, i, a));
|
|
75
|
+
r < c && (s = t[e], c = r);
|
|
76
|
+
}
|
|
77
|
+
return s;
|
|
78
|
+
}
|
|
79
|
+
function m(e, t) {
|
|
80
|
+
let { min: r, max: i } = n(t.min, t.max), s = a(t.marks, r, i);
|
|
81
|
+
return s.length > 0 ? p(e, s, r, i, t.marksPosition)?.value ?? r : o(d(e, r, i), r, i, t.step);
|
|
82
|
+
}
|
|
83
|
+
function h(e, t, s, c = s.min, l = s.max) {
|
|
84
|
+
let { min: u, max: d } = n(c, l), f = a(s.marks, u, d);
|
|
85
|
+
if (f.length > 0) {
|
|
86
|
+
let n = f.map((e) => e.value), i = 0, a = Math.abs(e - n[0]);
|
|
87
|
+
for (let t = 1; t < n.length; t += 1) {
|
|
88
|
+
let r = Math.abs(e - n[t]);
|
|
89
|
+
r < a && (a = r, i = t);
|
|
90
|
+
}
|
|
91
|
+
return n[r(i + t, 0, n.length - 1)];
|
|
92
|
+
}
|
|
93
|
+
let p = i(s.step);
|
|
94
|
+
return o(e + t * p, u, d, p);
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
export { r as clampNumberScaleValue, s as findClosestNumberScaleMark, p as findClosestNumberScaleMarkByPercent, f as getNumberScaleMarkPercent, i as normalizeNumberScaleStep, h as offsetNumberScaleValue, d as percentToNumberScaleValue, m as percentToSnappedNumberScaleValue, a as prepareNumberScaleMarks, n as resolveNumberScaleBounds, l as snapNumberScaleValue, c as snapNumberScaleValueToMarks, o as snapNumberScaleValueToStep, u as valueToNumberScalePercent };
|
|
98
|
+
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/number-scale/numberScale.ts"],"sourcesContent":["import { NumberScaleBounds, NumberScaleMark, NumberScaleMarksPosition, NumberScaleOptions } from \"./types\";\n\nfunction countFractionDigits(value: number) {\n\tif (!Number.isFinite(value)) {\n\t\treturn 0;\n\t}\n\n\tconst normalized = value.toString().toLowerCase();\n\tconst exponentIndex = normalized.indexOf(\"e-\");\n\tif (exponentIndex >= 0) {\n\t\treturn Number(normalized.slice(exponentIndex + 2));\n\t}\n\n\tconst dotIndex = normalized.indexOf(\".\");\n\treturn dotIndex >= 0 ? normalized.length - dotIndex - 1 : 0;\n}\n\nfunction roundWithPrecision(value: number, precision: number) {\n\tif (precision <= 0) {\n\t\treturn Math.round(value);\n\t}\n\n\tconst factor = 10 ** precision;\n\treturn Math.round(value * factor) / factor;\n}\n\n/**\n * Возвращает безопасные границы числовой шкалы и меняет их местами, если min больше max.\n */\nexport function resolveNumberScaleBounds(min: number, max: number): NumberScaleBounds {\n\tif (!Number.isFinite(min) || !Number.isFinite(max)) {\n\t\treturn { min: 0, max: 100 };\n\t}\n\n\treturn min <= max ? { min, max } : { min: max, max: min };\n}\n\n/**\n * Ограничивает значение конечными границами шкалы.\n */\nexport function clampNumberScaleValue(value: number, min: number, max: number) {\n\tif (!Number.isFinite(value)) {\n\t\treturn min;\n\t}\n\n\treturn Math.min(max, Math.max(min, value));\n}\n\n/**\n * Нормализует шаг шкалы: некорректные, нулевые и отрицательные значения заменяет на 1.\n */\nexport function normalizeNumberScaleStep(step?: number) {\n\tif (!Number.isFinite(step) || step === undefined || step <= 0) {\n\t\treturn 1;\n\t}\n\n\treturn step;\n}\n\n/**\n * Фильтрует, сортирует и дедуплицирует marks по finite value внутри границ шкалы.\n */\nexport function prepareNumberScaleMarks<TMark extends NumberScaleMark>(\n\tmarks: readonly TMark[] | undefined,\n\tmin: number,\n\tmax: number\n): TMark[] {\n\tif (!marks?.length) {\n\t\treturn [];\n\t}\n\n\tconst seen = new Set<number>();\n\n\treturn marks\n\t\t.filter((mark) => Number.isFinite(mark.value) && mark.value >= min && mark.value <= max)\n\t\t.slice()\n\t\t.sort((left, right) => left.value - right.value)\n\t\t.filter((mark) => {\n\t\t\tif (seen.has(mark.value)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tseen.add(mark.value);\n\t\t\treturn true;\n\t\t});\n}\n\n/**\n * Привязывает значение к ближайшему шагу с учётом десятичной точности min/max/step.\n */\nexport function snapNumberScaleValueToStep(value: number, min: number, max: number, step?: number) {\n\tconst normalizedStep = normalizeNumberScaleStep(step);\n\tconst clamped = clampNumberScaleValue(value, min, max);\n\tconst precision = Math.max(countFractionDigits(normalizedStep), countFractionDigits(min), countFractionDigits(max));\n\tconst snapped = min + Math.round((clamped - min) / normalizedStep) * normalizedStep;\n\n\treturn clampNumberScaleValue(roundWithPrecision(snapped, precision), min, max);\n}\n\n/**\n * Возвращает ближайший mark по числовому value.\n */\nexport function findClosestNumberScaleMark<TMark extends NumberScaleMark>(value: number, marks: readonly TMark[]) {\n\tif (!marks.length) {\n\t\treturn undefined;\n\t}\n\n\tlet nearest = marks[0];\n\tlet distance = Math.abs(value - nearest.value);\n\n\tfor (let index = 1; index < marks.length; index += 1) {\n\t\tconst mark = marks[index];\n\t\tconst nextDistance = Math.abs(value - mark.value);\n\n\t\tif (nextDistance < distance) {\n\t\t\tnearest = mark;\n\t\t\tdistance = nextDistance;\n\t\t}\n\t}\n\n\treturn nearest;\n}\n\n/**\n * Привязывает значение к value ближайшего mark.\n */\nexport function snapNumberScaleValueToMarks<TMark extends NumberScaleMark>(\n\tvalue: number,\n\tmarks: readonly TMark[],\n\tmin: number,\n\tmax: number\n) {\n\tif (!marks.length) {\n\t\treturn clampNumberScaleValue(value, min, max);\n\t}\n\n\tconst clamped = clampNumberScaleValue(value, min, max);\n\treturn findClosestNumberScaleMark(clamped, marks)?.value ?? clamped;\n}\n\n/**\n * Привязывает значение к marks, если они есть, иначе к step.\n */\nexport function snapNumberScaleValue<TMark extends NumberScaleMark>(value: number, options: NumberScaleOptions<TMark>) {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst preparedMarks = prepareNumberScaleMarks(options.marks, min, max);\n\n\tif (preparedMarks.length > 0) {\n\t\treturn snapNumberScaleValueToMarks(value, preparedMarks, min, max);\n\t}\n\n\treturn snapNumberScaleValueToStep(value, min, max, options.step);\n}\n\nexport function valueToNumberScalePercent(value: number, min: number, max: number) {\n\tif (max <= min) {\n\t\treturn 0;\n\t}\n\n\treturn ((clampNumberScaleValue(value, min, max) - min) / (max - min)) * 100;\n}\n\nexport function percentToNumberScaleValue(percent: number, min: number, max: number) {\n\tif (max <= min) {\n\t\treturn min;\n\t}\n\n\tconst safePercent = clampNumberScaleValue(percent, 0, 100);\n\treturn min + ((max - min) * safePercent) / 100;\n}\n\n/**\n * Возвращает позицию mark в процентах: по числовому value или равномерно по индексу.\n */\nexport function getNumberScaleMarkPercent(\n\tmarkIndex: number,\n\tmarks: readonly NumberScaleMark[],\n\tmin: number,\n\tmax: number,\n\tmarksPosition: NumberScaleMarksPosition = \"value\"\n) {\n\tif (marksPosition === \"index\" && marks.length > 1) {\n\t\treturn (markIndex / (marks.length - 1)) * 100;\n\t}\n\n\tif (marksPosition === \"index\") {\n\t\treturn 0;\n\t}\n\n\treturn valueToNumberScalePercent(marks[markIndex]?.value ?? min, min, max);\n}\n\n/**\n * Находит ближайший mark по визуальной позиции процента.\n */\nexport function findClosestNumberScaleMarkByPercent<TMark extends NumberScaleMark>(\n\tpercent: number,\n\tmarks: readonly TMark[],\n\tmin: number,\n\tmax: number,\n\tmarksPosition: NumberScaleMarksPosition = \"value\"\n) {\n\tif (!marks.length) {\n\t\treturn undefined;\n\t}\n\n\tconst safePercent = clampNumberScaleValue(percent, 0, 100);\n\tlet nearest = marks[0];\n\tlet distance = Math.abs(safePercent - getNumberScaleMarkPercent(0, marks, min, max, marksPosition));\n\n\tfor (let index = 1; index < marks.length; index += 1) {\n\t\tconst nextDistance = Math.abs(safePercent - getNumberScaleMarkPercent(index, marks, min, max, marksPosition));\n\n\t\tif (nextDistance < distance) {\n\t\t\tnearest = marks[index];\n\t\t\tdistance = nextDistance;\n\t\t}\n\t}\n\n\treturn nearest;\n}\n\n/**\n * Преобразует pointer percent в значение шкалы с учётом равномерного позиционирования marks.\n */\nexport function percentToSnappedNumberScaleValue<TMark extends NumberScaleMark>(percent: number, options: NumberScaleOptions<TMark>) {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst preparedMarks = prepareNumberScaleMarks(options.marks, min, max);\n\n\tif (preparedMarks.length > 0) {\n\t\tconst closestMark = findClosestNumberScaleMarkByPercent(percent, preparedMarks, min, max, options.marksPosition);\n\t\treturn closestMark?.value ?? min;\n\t}\n\n\treturn snapNumberScaleValueToStep(percentToNumberScaleValue(percent, min, max), min, max, options.step);\n}\n\n/**\n * Смещает значение на offset шагов или на offset marks.\n */\nexport function offsetNumberScaleValue<TMark extends NumberScaleMark>(\n\tcurrentValue: number,\n\toffset: number,\n\toptions: NumberScaleOptions<TMark>,\n\tlowerBound = options.min,\n\tupperBound = options.max\n) {\n\tconst { min, max } = resolveNumberScaleBounds(lowerBound, upperBound);\n\tconst preparedMarks = prepareNumberScaleMarks(options.marks, min, max);\n\n\tif (preparedMarks.length > 0) {\n\t\tconst values = preparedMarks.map((mark) => mark.value);\n\t\tlet nearestIndex = 0;\n\t\tlet nearestDistance = Math.abs(currentValue - values[0]);\n\n\t\tfor (let index = 1; index < values.length; index += 1) {\n\t\t\tconst nextDistance = Math.abs(currentValue - values[index]);\n\t\t\tif (nextDistance < nearestDistance) {\n\t\t\t\tnearestDistance = nextDistance;\n\t\t\t\tnearestIndex = index;\n\t\t\t}\n\t\t}\n\n\t\tconst nextIndex = clampNumberScaleValue(nearestIndex + offset, 0, values.length - 1);\n\t\treturn values[nextIndex];\n\t}\n\n\tconst normalizedStep = normalizeNumberScaleStep(options.step);\n\treturn snapNumberScaleValueToStep(currentValue + offset * normalizedStep, min, max, normalizedStep);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { NumberScaleBounds, NumberScaleMark, NumberScaleMarksPosition, NumberScaleOptions } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Возвращает безопасные границы числовой шкалы и меняет их местами, если min больше max.
|
|
4
|
+
*/
|
|
5
|
+
export declare function resolveNumberScaleBounds(min: number, max: number): NumberScaleBounds;
|
|
6
|
+
/**
|
|
7
|
+
* Ограничивает значение конечными границами шкалы.
|
|
8
|
+
*/
|
|
9
|
+
export declare function clampNumberScaleValue(value: number, min: number, max: number): number;
|
|
10
|
+
/**
|
|
11
|
+
* Нормализует шаг шкалы: некорректные, нулевые и отрицательные значения заменяет на 1.
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeNumberScaleStep(step?: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Фильтрует, сортирует и дедуплицирует marks по finite value внутри границ шкалы.
|
|
16
|
+
*/
|
|
17
|
+
export declare function prepareNumberScaleMarks<TMark extends NumberScaleMark>(marks: readonly TMark[] | undefined, min: number, max: number): TMark[];
|
|
18
|
+
/**
|
|
19
|
+
* Привязывает значение к ближайшему шагу с учётом десятичной точности min/max/step.
|
|
20
|
+
*/
|
|
21
|
+
export declare function snapNumberScaleValueToStep(value: number, min: number, max: number, step?: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Возвращает ближайший mark по числовому value.
|
|
24
|
+
*/
|
|
25
|
+
export declare function findClosestNumberScaleMark<TMark extends NumberScaleMark>(value: number, marks: readonly TMark[]): TMark | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Привязывает значение к value ближайшего mark.
|
|
28
|
+
*/
|
|
29
|
+
export declare function snapNumberScaleValueToMarks<TMark extends NumberScaleMark>(value: number, marks: readonly TMark[], min: number, max: number): number;
|
|
30
|
+
/**
|
|
31
|
+
* Привязывает значение к marks, если они есть, иначе к step.
|
|
32
|
+
*/
|
|
33
|
+
export declare function snapNumberScaleValue<TMark extends NumberScaleMark>(value: number, options: NumberScaleOptions<TMark>): number;
|
|
34
|
+
export declare function valueToNumberScalePercent(value: number, min: number, max: number): number;
|
|
35
|
+
export declare function percentToNumberScaleValue(percent: number, min: number, max: number): number;
|
|
36
|
+
/**
|
|
37
|
+
* Возвращает позицию mark в процентах: по числовому value или равномерно по индексу.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getNumberScaleMarkPercent(markIndex: number, marks: readonly NumberScaleMark[], min: number, max: number, marksPosition?: NumberScaleMarksPosition): number;
|
|
40
|
+
/**
|
|
41
|
+
* Находит ближайший mark по визуальной позиции процента.
|
|
42
|
+
*/
|
|
43
|
+
export declare function findClosestNumberScaleMarkByPercent<TMark extends NumberScaleMark>(percent: number, marks: readonly TMark[], min: number, max: number, marksPosition?: NumberScaleMarksPosition): TMark | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Преобразует pointer percent в значение шкалы с учётом равномерного позиционирования marks.
|
|
46
|
+
*/
|
|
47
|
+
export declare function percentToSnappedNumberScaleValue<TMark extends NumberScaleMark>(percent: number, options: NumberScaleOptions<TMark>): number;
|
|
48
|
+
/**
|
|
49
|
+
* Смещает значение на offset шагов или на offset marks.
|
|
50
|
+
*/
|
|
51
|
+
export declare function offsetNumberScaleValue<TMark extends NumberScaleMark>(currentValue: number, offset: number, options: NumberScaleOptions<TMark>, lowerBound?: number, upperBound?: number): number;
|
|
52
|
+
//# sourceMappingURL=numberScale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberScale.d.ts","sourceRoot":"","sources":["../../src/number-scale/numberScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA0B3G;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAMpF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAM5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,MAAM,UAMrD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,eAAe,EACpE,KAAK,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,EACnC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACT,KAAK,EAAE,CAmBT;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,UAOhG;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,SAAS,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,EAAE,qBAmB/G;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,SAAS,eAAe,EACxE,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,UAQX;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,UASpH;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAMhF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAOlF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,aAAa,GAAE,wBAAkC,UAWjD;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,SAAS,eAAe,EAChF,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,aAAa,GAAE,wBAAkC,qBAoBjD;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,SAAS,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,UAUlI;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,eAAe,EACnE,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAClC,UAAU,SAAc,EACxB,UAAU,SAAc,UAwBxB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Режим расчёта визуальных позиций marks.
|
|
3
|
+
* `value` использует числовую пропорцию, `index` расставляет marks равномерно.
|
|
4
|
+
*/
|
|
5
|
+
export type NumberScaleMarksPosition = "value" | "index";
|
|
6
|
+
export interface NumberScaleMark {
|
|
7
|
+
/**
|
|
8
|
+
* Координата mark на внутренней числовой шкале.
|
|
9
|
+
*/
|
|
10
|
+
value: number;
|
|
11
|
+
}
|
|
12
|
+
export interface NumberScaleOptions<TMark extends NumberScaleMark = NumberScaleMark> {
|
|
13
|
+
/**
|
|
14
|
+
* Минимальная координата шкалы.
|
|
15
|
+
*/
|
|
16
|
+
min: number;
|
|
17
|
+
/**
|
|
18
|
+
* Максимальная координата шкалы.
|
|
19
|
+
*/
|
|
20
|
+
max: number;
|
|
21
|
+
/**
|
|
22
|
+
* Шаг snap-логики, используется если нет marks.
|
|
23
|
+
*/
|
|
24
|
+
step?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Дискретные точки шкалы, к которым snap-ится значение.
|
|
27
|
+
*/
|
|
28
|
+
marks?: readonly TMark[];
|
|
29
|
+
/**
|
|
30
|
+
* Режим размещения marks на track.
|
|
31
|
+
*/
|
|
32
|
+
marksPosition?: NumberScaleMarksPosition;
|
|
33
|
+
}
|
|
34
|
+
export interface NumberScaleBounds {
|
|
35
|
+
/**
|
|
36
|
+
* Нормализованная минимальная координата.
|
|
37
|
+
*/
|
|
38
|
+
min: number;
|
|
39
|
+
/**
|
|
40
|
+
* Нормализованная максимальная координата.
|
|
41
|
+
*/
|
|
42
|
+
max: number;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/number-scale/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB,CAAC,KAAK,SAAS,eAAe,GAAG,eAAe;IAClF;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB;;OAEG;IACH,aAAa,CAAC,EAAE,wBAAwB,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACZ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CollectionItem, CollectionPair } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Создание разделенных массивов для каждого кодового поля
|
|
4
|
+
* @param items - исходные данные справочника
|
|
5
|
+
* @param pairs - пары код-текст
|
|
6
|
+
* @param excludeEmpty - флаг исключения пустых значений
|
|
7
|
+
* @returns Объект с разделенными массивами по кодовым полям
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildSeparatedArrays<T extends CollectionItem>(items: T[], pairs: CollectionPair[], excludeEmpty?: boolean, sortByCode?: boolean): Record<string, T[]>;
|
|
10
|
+
//# sourceMappingURL=buildSeparatedArrays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildSeparatedArrays.d.ts","sourceRoot":"","sources":["../../src/odata/buildSeparatedArrays.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAUzD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,cAAc,EAC5D,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,cAAc,EAAE,EACvB,YAAY,GAAE,OAAc,EAC5B,UAAU,GAAE,OAAc,GACxB,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CA8IrB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Форматы в стиле OData (совместимы с SAP UI5 DateFormat)
|
|
3
|
+
*
|
|
4
|
+
* Примеры:
|
|
5
|
+
* * datetime'2025-11-11T12:00:00'
|
|
6
|
+
* * datetimeoffset'2025-11-11T12:00:00Z'
|
|
7
|
+
* * time'PT12H30M00S'
|
|
8
|
+
*/
|
|
9
|
+
export declare const ODataDateFormat: {
|
|
10
|
+
datetime(date: Date): string;
|
|
11
|
+
datetimeOffset(date: Date): string;
|
|
12
|
+
time(date: Date): string;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=dateUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../src/odata/dateUtils.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;mBACZ,IAAI,GAAG,MAAM;yBAGP,IAAI,GAAG,MAAM;eAGvB,IAAI,GAAG,MAAM;CAGxB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CollectionItem, CollectionPair } from "./types";
|
|
2
|
+
export declare function findCollectionPairs(item: CollectionItem, options?: {
|
|
3
|
+
textSuffixes?: string[];
|
|
4
|
+
caseSensitive?: boolean;
|
|
5
|
+
returnUnpaired?: boolean;
|
|
6
|
+
}): {
|
|
7
|
+
pairs: CollectionPair[];
|
|
8
|
+
pairsMap: CollectionItem;
|
|
9
|
+
unpaired?: string[];
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=findCollectionPairs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findCollectionPairs.d.ts","sourceRoot":"","sources":["../../src/odata/findCollectionPairs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzD,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO;WAuCrE,cAAc,EAAE;cAAY,cAAc;eAAa,MAAM,EAAE;EAOtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/odata/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { t as e } from "../chunks/dateUtils-D9dpdTl7.js";
|
|
2
|
+
import { t } from "../chunks/string-comparison-BKT7PXmq.js";
|
|
3
|
+
import { create as n } from "zustand";
|
|
4
|
+
import { immer as r } from "zustand/middleware/immer";
|
|
5
|
+
//#region src/odata/buildSeparatedArrays.ts
|
|
6
|
+
function i(e) {
|
|
7
|
+
let t = {};
|
|
8
|
+
return e.forEach((e) => {
|
|
9
|
+
t[e.codeKey] = [];
|
|
10
|
+
}), t;
|
|
11
|
+
}
|
|
12
|
+
function a(e, n, r = !0, a = !0) {
|
|
13
|
+
if (!e || e.length === 0) return i(n);
|
|
14
|
+
let o = /* @__PURE__ */ new Set(), s = e[0];
|
|
15
|
+
s && Object.keys(s).forEach((e) => {
|
|
16
|
+
o.add(e);
|
|
17
|
+
});
|
|
18
|
+
let c = n.filter((e) => o.has(e.codeKey) && o.has(e.textKey));
|
|
19
|
+
if (c.length === 0) return i(n);
|
|
20
|
+
let l = {}, u = /* @__PURE__ */ new Map();
|
|
21
|
+
for (let e of c) {
|
|
22
|
+
let t = e.codeKey;
|
|
23
|
+
u.set(t, {
|
|
24
|
+
codeKey: e.codeKey,
|
|
25
|
+
textKey: e.textKey,
|
|
26
|
+
uniqueSet: /* @__PURE__ */ new Set()
|
|
27
|
+
}), l[t] = [];
|
|
28
|
+
}
|
|
29
|
+
n.forEach((e) => {
|
|
30
|
+
let t = e.codeKey;
|
|
31
|
+
u.has(t) || (l[t] = []);
|
|
32
|
+
});
|
|
33
|
+
for (let t of e) for (let [e, n] of u) {
|
|
34
|
+
let { codeKey: i, textKey: a, uniqueSet: o } = n, s = String(t[i]), c = String(t[a]);
|
|
35
|
+
if (r && !c || s == null) continue;
|
|
36
|
+
let u = `${String(s)}|${String(c)}`;
|
|
37
|
+
o.has(u) || (o.add(u), l[e].push({
|
|
38
|
+
[i]: s,
|
|
39
|
+
[a]: c
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
for (let [e, n] of u) {
|
|
43
|
+
let r = l[e];
|
|
44
|
+
if (r.length > 0) {
|
|
45
|
+
let e = a ? n.codeKey : n.textKey;
|
|
46
|
+
r.sort((n, r) => {
|
|
47
|
+
let i = n[e] || "", a = r[e] || "";
|
|
48
|
+
return t(String(i), String(a));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return l;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region src/odata/findCollectionPairs.ts
|
|
56
|
+
function o(e, t = {}) {
|
|
57
|
+
let { textSuffixes: n = [
|
|
58
|
+
"_txt",
|
|
59
|
+
"_text",
|
|
60
|
+
"_t",
|
|
61
|
+
"_Text",
|
|
62
|
+
"_TXT",
|
|
63
|
+
"_T"
|
|
64
|
+
], caseSensitive: r = !1, returnUnpaired: i = !1 } = t, a = Object.keys(e), o = [], s = {}, c = /* @__PURE__ */ new Set(), l = new Set(a), u = n.map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"), d = RegExp(`(.*)(${u})$`, r ? "" : "i"), f = a.filter((e) => d.test(e));
|
|
65
|
+
for (let e of f) {
|
|
66
|
+
if (c.has(e)) continue;
|
|
67
|
+
let t = e.match(d);
|
|
68
|
+
if (t) {
|
|
69
|
+
let n = t[1];
|
|
70
|
+
a.includes(n) && !c.has(n) && (o.push({
|
|
71
|
+
codeKey: n,
|
|
72
|
+
textKey: e
|
|
73
|
+
}), s[n] = e, c.add(n), c.add(e), l.delete(n), l.delete(e));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
let p = {
|
|
77
|
+
pairs: o,
|
|
78
|
+
pairsMap: s
|
|
79
|
+
};
|
|
80
|
+
return i && (p.unpaired = Array.from(l)), p;
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
//#region src/odata/store.ts
|
|
84
|
+
var s = n()(r((e) => ({
|
|
85
|
+
defaultMaxVisibleItems: 200,
|
|
86
|
+
defaultMinSearchCodeLength: 3,
|
|
87
|
+
defaultMinSearchTextLength: 1,
|
|
88
|
+
defaultSearchDebounceDelay: 100,
|
|
89
|
+
setDefaultMaxVisibleItems: (t) => e({ defaultMaxVisibleItems: t }),
|
|
90
|
+
setDefaultMinSearchTextLength: (t) => e({ defaultMinSearchTextLength: t }),
|
|
91
|
+
setDefaultMinSearchCodeLength: (t) => e({ defaultMinSearchCodeLength: t }),
|
|
92
|
+
setDefaultSearchDebounceDelay: (t) => e({ defaultSearchDebounceDelay: t })
|
|
93
|
+
}))), c = {
|
|
94
|
+
useMaxVisibleItems: () => s((e) => e.defaultMaxVisibleItems),
|
|
95
|
+
useMinSearchCodeLength: () => s((e) => e.defaultMinSearchCodeLength),
|
|
96
|
+
useMinSearchTextLength: () => s((e) => e.defaultMinSearchTextLength),
|
|
97
|
+
useSearchDebounce: () => s((e) => e.defaultSearchDebounceDelay)
|
|
98
|
+
};
|
|
99
|
+
//#endregion
|
|
100
|
+
export { e as ODataDateFormat, a as buildSeparatedArrays, o as findCollectionPairs, c as odataCollectionConfig, s as useODataCollectionStore };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/odata/buildSeparatedArrays.ts","../../src/odata/findCollectionPairs.ts","../../src/odata/store.ts"],"sourcesContent":["import { compareStrings } from \"../string-comparison\";\n\nimport { CollectionItem, CollectionPair } from \"./types\";\n\nfunction createEmptySeparated<T extends CollectionItem>(pairs: CollectionPair[]) {\n\tconst resultRef: Record<string, T[]> = {};\n\tpairs.forEach((pair) => {\n\t\tresultRef[pair.codeKey] = [];\n\t});\n\treturn resultRef;\n}\n\n/**\n * Создание разделенных массивов для каждого кодового поля\n * @param items - исходные данные справочника\n * @param pairs - пары код-текст\n * @param excludeEmpty - флаг исключения пустых значений\n * @returns Объект с разделенными массивами по кодовым полям\n */\nexport function buildSeparatedArrays<T extends CollectionItem>(\n\titems: T[],\n\tpairs: CollectionPair[],\n\texcludeEmpty: boolean = true,\n\tsortByCode: boolean = true\n): Record<string, T[]> {\n\t// Если items пустой, возвращаем пустые массивы для всех пар\n\tif (!items || items.length === 0) {\n\t\treturn createEmptySeparated(pairs);\n\t}\n\n\t// Определяем, какие ключи действительно существуют в items\n\tconst availableKeys = new Set<string>();\n\tconst firstItem = items[0];\n\n\tif (firstItem) {\n\t\t// Собираем все доступные ключи из первого элемента\n\t\tObject.keys(firstItem).forEach((key) => {\n\t\t\tavailableKeys.add(key);\n\t\t});\n\t}\n\n\t// Фильтруем пары, оставляем только те, где оба ключа существуют в items\n\tconst validPairs = pairs.filter((pair) => {\n\t\treturn availableKeys.has(pair.codeKey as string) && availableKeys.has(pair.textKey as string);\n\t});\n\n\t// Если нет валидных пар, возвращаем пустой результат\n\tif (validPairs.length === 0) {\n\t\treturn createEmptySeparated(pairs);\n\t}\n\n\tconst result: Record<string, T[]> = {};\n\t// Инициализируем структуры данных\n\tconst pairMap = new Map<\n\t\tstring,\n\t\t{\n\t\t\tcodeKey: keyof T;\n\t\t\ttextKey: keyof T;\n\t\t\tuniqueSet: Set<string>;\n\t\t}\n\t>();\n\n\t// Подготовка для валидных пар\n\tfor (const pair of validPairs) {\n\t\tconst codeKeyStr = pair.codeKey as string;\n\t\tpairMap.set(codeKeyStr, {\n\t\t\tcodeKey: pair.codeKey,\n\t\t\ttextKey: pair.textKey,\n\t\t\tuniqueSet: new Set<string>()\n\t\t});\n\t\tresult[codeKeyStr] = [];\n\t}\n\n\t// Для невалидных пар создаем пустые массивы\n\tpairs.forEach((pair) => {\n\t\tconst codeKeyStr = pair.codeKey as string;\n\t\tif (!pairMap.has(codeKeyStr)) {\n\t\t\tresult[codeKeyStr] = [];\n\t\t}\n\t});\n\n\t// Единый проход по всем элементам\n\tfor (const item of items) {\n\t\tfor (const [codeKeyStr, pairData] of pairMap) {\n\t\t\tconst { codeKey, textKey, uniqueSet } = pairData;\n\n\t\t\t// Получаем значения с проверкой на существование\n\t\t\tconst codeValue = String(item[codeKey]);\n\t\t\tconst textValue = String(item[textKey]);\n\n\t\t\t// Если excludeEmpty и текстовое значение пустое - пропускаем\n\t\t\tif (excludeEmpty && !textValue) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Проверяем, что codeValue существует\n\t\t\tif (codeValue === undefined || codeValue === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Проверка уникальности\n\t\t\tconst uniqueKey = `${String(codeValue)}|${String(textValue)}`;\n\t\t\tif (!uniqueSet.has(uniqueKey)) {\n\t\t\t\tuniqueSet.add(uniqueKey);\n\n\t\t\t\t// Создаем новый объект только с нужными полями\n\t\t\t\tresult[codeKeyStr].push({\n\t\t\t\t\t[codeKey]: codeValue,\n\t\t\t\t\t[textKey]: textValue\n\t\t\t\t} as T);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Сортировка результатов для валидных пар\n\tfor (const [codeKeyStr, pairData] of pairMap) {\n\t\tconst array = result[codeKeyStr];\n\t\tif (array.length > 0) {\n\t\t\tconst sortKey = sortByCode ? pairData.codeKey : pairData.textKey;\n\n\t\t\tarray.sort((a, b) => {\n\t\t\t\tconst valA = a[sortKey] || \"\";\n\t\t\t\tconst valB = b[sortKey] || \"\";\n\t\t\t\treturn compareStrings(String(valA), String(valB));\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n\n\t//\n\n\t// pairs.forEach((pair) => {\n\t// \tlet filteredItems = items;\n\n\t// \t// Фильтруем пустые значения, если требуется\n\t// \tif (excludeEmpty) {\n\t// \t\tfilteredItems = items.filter((item) => item[pair.textKey]);\n\t// \t}\n\n\t// \t// Создаем массив только с нужными полями\n\t// \tconst separatedItems = filteredItems.map(\n\t// \t\t(item) =>\n\t// \t\t\t({\n\t// \t\t\t\t[pair.codeKey]: item[pair.codeKey],\n\t// \t\t\t\t[pair.textKey]: item[pair.textKey]\n\t// \t\t\t}) as T\n\t// \t);\n\n\t// \t// Удаляем дубликаты\n\t// \tconst uniqueItems: T[] = Array.from(\n\t// \t\tnew Map(separatedItems.map((item) => [`${item[pair.codeKey]}|${item[pair.textKey]}`, item])).values()\n\t// \t);\n\n\t// \tconst sortKey = sortByCode ? pair.codeKey : pair.textKey;\n\n\t// \tuniqueItems.sort((a, b) => {\n\t// \t\tconst textA = a[sortKey] || \"\";\n\t// \t\tconst textB = b[sortKey] || \"\";\n\t// \t\treturn compareStrings(String(textA), String(textB));\n\t// \t});\n\n\t// \tresult[pair.codeKey] = uniqueItems;\n\t// });\n\n\t// return result;\n}\n","import { CollectionItem, CollectionPair } from \"./types\";\n\nexport function findCollectionPairs(\n\titem: CollectionItem,\n\toptions: { textSuffixes?: string[]; caseSensitive?: boolean; returnUnpaired?: boolean } = {}\n) {\n\tconst { textSuffixes = [\"_txt\", \"_text\", \"_t\", \"_Text\", \"_TXT\", \"_T\"], caseSensitive = false, returnUnpaired = false } = options;\n\n\tconst fields = Object.keys(item);\n\tconst pairs = [] as CollectionPair[];\n\tconst pairsMap = {} as Record<string, string>;\n\tconst usedFields = new Set();\n\tconst unpairedFields = new Set(fields);\n\n\t// Создаем регулярное выражение для поиска текстовых полей\n\tconst suffixPattern = textSuffixes.map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\");\n\tconst textFieldRegex = new RegExp(`(.*)(${suffixPattern})$`, caseSensitive ? \"\" : \"i\");\n\n\t// Сначала проходим по всем полям и находим текстовые\n\tconst textFields = fields.filter((field) => textFieldRegex.test(field));\n\n\t// Для каждого текстового поля ищем соответствующее кодовое\n\tfor (const textField of textFields) {\n\t\tif (usedFields.has(textField)) continue;\n\n\t\tconst match = textField.match(textFieldRegex);\n\t\tif (match) {\n\t\t\tconst baseName = match[1]; // Имя без суффикса\n\n\t\t\tif (fields.includes(baseName) && !usedFields.has(baseName)) {\n\t\t\t\tpairs.push({\n\t\t\t\t\tcodeKey: baseName,\n\t\t\t\t\ttextKey: textField\n\t\t\t\t});\n\t\t\t\tpairsMap[baseName] = textField;\n\t\t\t\tusedFields.add(baseName);\n\t\t\t\tusedFields.add(textField);\n\t\t\t\tunpairedFields.delete(baseName);\n\t\t\t\tunpairedFields.delete(textField);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst result: { pairs: CollectionPair[]; pairsMap: CollectionItem; unpaired?: string[] } = { pairs, pairsMap };\n\n\tif (returnUnpaired) {\n\t\tresult.unpaired = Array.from(unpairedFields);\n\t}\n\n\treturn result;\n}\n","// Глобальные конфигурируемые параметры\n\nimport { create } from \"zustand\";\nimport { immer } from \"zustand/middleware/immer\";\n\ntype ODataCollectionState = {\n\tdefaultMaxVisibleItems: number;\n\tdefaultMinSearchTextLength: number;\n\tdefaultMinSearchCodeLength: number;\n\tdefaultSearchDebounceDelay: number;\n};\n\ntype ODataCollectionActions = {\n\tsetDefaultMaxVisibleItems: (value: number) => void;\n\tsetDefaultMinSearchTextLength: (value: number) => void;\n\tsetDefaultMinSearchCodeLength: (value: number) => void;\n\tsetDefaultSearchDebounceDelay: (value: number) => void;\n};\n\nexport const useODataCollectionStore = create<ODataCollectionState & ODataCollectionActions>()(\n\timmer((set) => ({\n\t\tdefaultMaxVisibleItems: 200,\n\t\tdefaultMinSearchCodeLength: 3,\n\t\tdefaultMinSearchTextLength: 1,\n\t\tdefaultSearchDebounceDelay: 100,\n\n\t\tsetDefaultMaxVisibleItems: (defaultMaxVisibleItems) => set({ defaultMaxVisibleItems }),\n\t\tsetDefaultMinSearchTextLength: (defaultMinSearchTextLength) => set({ defaultMinSearchTextLength }),\n\t\tsetDefaultMinSearchCodeLength: (defaultMinSearchCodeLength) => set({ defaultMinSearchCodeLength }),\n\t\tsetDefaultSearchDebounceDelay: (defaultSearchDebounceDelay) => set({ defaultSearchDebounceDelay })\n\t}))\n);\n\n// export const useODataCollectionDefaultMaxVisibleItems = () => useODataCollectionStore((s) => s.defaultMaxVisibleItems);\n// export const useODataCollectionDefaultMinSearchCodeLength = () => useODataCollectionStore((s) => s.defaultMinSearchCodeLength);\n// export const useODataCollectionDefaultMinSearchTextLength = () => useODataCollectionStore((s) => s.defaultMinSearchTextLength);\n// export const useODataCollectionDefaultSearchDebounceDelay = () => useODataCollectionStore((s) => s.defaultSearchDebounceDelay);\n\nexport const odataCollectionConfig = {\n\tuseMaxVisibleItems: () => useODataCollectionStore((s) => s.defaultMaxVisibleItems),\n\tuseMinSearchCodeLength: () => useODataCollectionStore((s) => s.defaultMinSearchCodeLength),\n\tuseMinSearchTextLength: () => useODataCollectionStore((s) => s.defaultMinSearchTextLength),\n\tuseSearchDebounce: () => useODataCollectionStore((s) => s.defaultSearchDebounceDelay)\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
type ODataCollectionState = {
|
|
2
|
+
defaultMaxVisibleItems: number;
|
|
3
|
+
defaultMinSearchTextLength: number;
|
|
4
|
+
defaultMinSearchCodeLength: number;
|
|
5
|
+
defaultSearchDebounceDelay: number;
|
|
6
|
+
};
|
|
7
|
+
type ODataCollectionActions = {
|
|
8
|
+
setDefaultMaxVisibleItems: (value: number) => void;
|
|
9
|
+
setDefaultMinSearchTextLength: (value: number) => void;
|
|
10
|
+
setDefaultMinSearchCodeLength: (value: number) => void;
|
|
11
|
+
setDefaultSearchDebounceDelay: (value: number) => void;
|
|
12
|
+
};
|
|
13
|
+
export declare const useODataCollectionStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ODataCollectionState & ODataCollectionActions>, "setState"> & {
|
|
14
|
+
setState(nextStateOrUpdater: (ODataCollectionState & ODataCollectionActions) | Partial<ODataCollectionState & ODataCollectionActions> | ((state: {
|
|
15
|
+
defaultMaxVisibleItems: number;
|
|
16
|
+
defaultMinSearchTextLength: number;
|
|
17
|
+
defaultMinSearchCodeLength: number;
|
|
18
|
+
defaultSearchDebounceDelay: number;
|
|
19
|
+
setDefaultMaxVisibleItems: (value: number) => void;
|
|
20
|
+
setDefaultMinSearchTextLength: (value: number) => void;
|
|
21
|
+
setDefaultMinSearchCodeLength: (value: number) => void;
|
|
22
|
+
setDefaultSearchDebounceDelay: (value: number) => void;
|
|
23
|
+
}) => void), shouldReplace?: false): void;
|
|
24
|
+
setState(nextStateOrUpdater: (ODataCollectionState & ODataCollectionActions) | ((state: {
|
|
25
|
+
defaultMaxVisibleItems: number;
|
|
26
|
+
defaultMinSearchTextLength: number;
|
|
27
|
+
defaultMinSearchCodeLength: number;
|
|
28
|
+
defaultSearchDebounceDelay: number;
|
|
29
|
+
setDefaultMaxVisibleItems: (value: number) => void;
|
|
30
|
+
setDefaultMinSearchTextLength: (value: number) => void;
|
|
31
|
+
setDefaultMinSearchCodeLength: (value: number) => void;
|
|
32
|
+
setDefaultSearchDebounceDelay: (value: number) => void;
|
|
33
|
+
}) => void), shouldReplace: true): void;
|
|
34
|
+
}>;
|
|
35
|
+
export declare const odataCollectionConfig: {
|
|
36
|
+
useMaxVisibleItems: () => number;
|
|
37
|
+
useMinSearchCodeLength: () => number;
|
|
38
|
+
useMinSearchTextLength: () => number;
|
|
39
|
+
useSearchDebounce: () => number;
|
|
40
|
+
};
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/odata/store.ts"],"names":[],"mappings":"AAKA,KAAK,oBAAoB,GAAG;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC7B,yBAAyB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,uBAAuB;;gCAbX,MAAM;oCACF,MAAM;oCACN,MAAM;oCACN,MAAM;mCAIP,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;uCACnB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;uCACvB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;uCACvB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;gCAV9B,MAAM;oCACF,MAAM;oCACN,MAAM;oCACN,MAAM;mCAIP,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;uCACnB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;uCACvB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;uCACvB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;EAetD,CAAC;AAOF,eAAO,MAAM,qBAAqB;;;;;CAKjC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type CollectionItem = {
|
|
2
|
+
[K: string]: string;
|
|
3
|
+
};
|
|
4
|
+
export interface CollectionPair {
|
|
5
|
+
codeKey: string;
|
|
6
|
+
textKey: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DependencyFilter {
|
|
9
|
+
key: string;
|
|
10
|
+
values: CollectionItem[];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/odata/types.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,cAAc,GAAG;IAC5B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpB,CAAC;AAGF,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,gBAAgB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,cAAc,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BaseMetaType } from "./types";
|
|
2
|
+
export declare const BASE_META_TYPES: readonly ["string", "number", "boolean", "date"];
|
|
3
|
+
export declare const BASE_META_TYPE_LABELS: Readonly<Record<BaseMetaType, string>>;
|
|
4
|
+
export declare function isBaseMetaType(type: unknown): type is BaseMetaType;
|
|
5
|
+
export declare function resolveBaseTypeLabel(type: BaseMetaType): string;
|
|
6
|
+
//# sourceMappingURL=baseTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseTypes.d.ts","sourceRoot":"","sources":["../../src/odata-service/baseTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,eAAe,kDAAoG,CAAC;AAIjI,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAKvE,CAAC;AAEH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,YAAY,CAElE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAE/D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Построитель URL для OData сущностей на основе метаданных
|
|
3
|
+
*/
|
|
4
|
+
import { EntityMetadata, EntityParameterProperty, FunctionImportMetadata, ODataOperationMethod, ODataServiceConfig, WrappedODataParameters } from "./types";
|
|
5
|
+
type ParameterizedMetadata = {
|
|
6
|
+
parameters?: EntityParameterProperty[];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Собирает строку параметров запроса к сущности на основе метаданных
|
|
10
|
+
*
|
|
11
|
+
* @param metadata Метаданные сущности
|
|
12
|
+
* @param params Значения параметров
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildParameterEntries(metadata: ParameterizedMetadata, params: WrappedODataParameters): Array<[string, string]>;
|
|
15
|
+
/**
|
|
16
|
+
* Собирает строку параметров запроса к сущности на основе metadata.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildEntityParameters(metadata: EntityMetadata, params: WrappedODataParameters): string;
|
|
19
|
+
/**
|
|
20
|
+
* Собирает query string-параметры для FunctionImport.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildFunctionImportParameters(metadata: FunctionImportMetadata, params: WrappedODataParameters): URLSearchParams;
|
|
23
|
+
export declare function buildEntityOperationPath(metadata: EntityMetadata, config: ODataServiceConfig, params: WrappedODataParameters, method: Exclude<ODataOperationMethod, "fi">): string;
|
|
24
|
+
/**
|
|
25
|
+
* Собирает строку запроса к FunctionImport.
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildFunctionImportPath(metadata: FunctionImportMetadata, config: ODataServiceConfig, params: WrappedODataParameters): string;
|
|
28
|
+
/**
|
|
29
|
+
* Собирает строку запроса к EntitySet
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildEntityPath(metadata: EntityMetadata, config: ODataServiceConfig, params: WrappedODataParameters): string;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/odata-service/builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACN,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAElB,sBAAsB,EACtB,MAAM,SAAS,CAAC;AAEjB,KAAK,qBAAqB,GAAG;IAC5B,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACvC,CAAC;AAwBF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,sBAAsB,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6B9H;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAGtG;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,GAAG,eAAe,CAQ/H;AAED,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,GACzC,MAAM,CAyBR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,sBAAsB,GAC5B,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAK5H"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EntityColumnProperty } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Возвращает code-like filterable-колонки.
|
|
4
|
+
*/
|
|
5
|
+
export declare function collectFilterableColumns(columns: readonly Readonly<EntityColumnProperty>[]): Readonly<EntityColumnProperty>[];
|
|
6
|
+
/**
|
|
7
|
+
* Возвращает идентификаторы code-like filterable-колонок.
|
|
8
|
+
*/
|
|
9
|
+
export declare function collectFilterableColumnsIds(columns: readonly Readonly<EntityColumnProperty>[]): Readonly<Set<string>>;
|
|
10
|
+
//# sourceMappingURL=columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../src/odata-service/columns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,QAAQ,CAAC,oBAAoB,CAAC,EAAE,GAAG,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAE7H;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,SAAS,QAAQ,CAAC,oBAAoB,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAErH"}
|