namirasoft-site-react 1.5.26 → 1.5.28
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/.dockerignore +86 -86
- package/.env.template +10 -10
- package/Dockerfile +18 -18
- package/SKILL.md +307 -307
- package/config-overrides.js +72 -72
- package/dist/App.css +33 -33
- package/dist/App.d.ts +5 -2
- package/dist/App.js +39 -29
- package/dist/App.js.map +1 -1
- package/dist/NSBoxBuilder.d.ts +25 -25
- package/dist/components/NSBanner.d.ts +1 -1
- package/dist/components/NSBanner.module.css +47 -47
- package/dist/components/NSBarAction.d.ts +1 -1
- package/dist/components/NSBarAction.module.css +91 -91
- package/dist/components/NSBarAlert.d.ts +1 -1
- package/dist/components/NSBarAlert.module.css +79 -79
- package/dist/components/NSBarNotification.d.ts +1 -1
- package/dist/components/NSBarNotification.module.css +34 -34
- package/dist/components/NSBarTitle.d.ts +1 -1
- package/dist/components/NSBarTitle.module.css +9 -9
- package/dist/components/NSBox.module.css +87 -87
- package/dist/components/NSBoxBaseCombo.d.ts +1 -1
- package/dist/components/NSBoxBaseCombo.module.css +24 -24
- package/dist/components/NSBoxBaseLayout.d.ts +1 -1
- package/dist/components/NSBoxBaseLayoutRecursive.d.ts +1 -1
- package/dist/components/NSBoxBoolean.d.ts +1 -1
- package/dist/components/NSBoxBoolean.module.css +73 -73
- package/dist/components/NSBoxBooleans.d.ts +1 -1
- package/dist/components/NSBoxColor.d.ts +1 -1
- package/dist/components/NSBoxCombo.d.ts +1 -1
- package/dist/components/NSBoxDate.d.ts +1 -1
- package/dist/components/NSBoxDate.module.css +4 -4
- package/dist/components/NSBoxDateRange.d.ts +1 -1
- package/dist/components/NSBoxDateRangeBase.d.ts +1 -1
- package/dist/components/NSBoxDateRangeBase.module.css +73 -73
- package/dist/components/NSBoxDateTime.d.ts +1 -1
- package/dist/components/NSBoxDateTime.module.css +4 -4
- package/dist/components/NSBoxDateTimeRange.d.ts +1 -1
- package/dist/components/NSBoxDouble.d.ts +1 -1
- package/dist/components/NSBoxDuration.d.ts +1 -1
- package/dist/components/NSBoxDuration.module.css +4 -4
- package/dist/components/NSBoxDynamic.d.ts +1 -1
- package/dist/components/NSBoxDynamics.d.ts +1 -1
- package/dist/components/NSBoxEmail.d.ts +1 -1
- package/dist/components/NSBoxEntity.d.ts +1 -1
- package/dist/components/NSBoxEnum.d.ts +1 -1
- package/dist/components/NSBoxFile.d.ts +1 -1
- package/dist/components/NSBoxFile.module.css +10 -10
- package/dist/components/NSBoxFilePath.d.ts +1 -1
- package/dist/components/NSBoxFont.d.ts +1 -1
- package/dist/components/NSBoxIPV4.d.ts +1 -1
- package/dist/components/NSBoxIPV4Range.d.ts +1 -1
- package/dist/components/NSBoxIPV6.d.ts +1 -1
- package/dist/components/NSBoxIPV6Range.d.ts +1 -1
- package/dist/components/NSBoxInteger.d.ts +1 -1
- package/dist/components/NSBoxInteger.module.css +16 -16
- package/dist/components/NSBoxMoney.d.ts +1 -1
- package/dist/components/NSBoxOptions.d.ts +1 -1
- package/dist/components/NSBoxOptions.module.css +53 -53
- package/dist/components/NSBoxPhone.d.ts +1 -1
- package/dist/components/NSBoxPhone.module.css +35 -35
- package/dist/components/NSBoxRadio.d.ts +1 -1
- package/dist/components/NSBoxRadio.module.css +33 -33
- package/dist/components/NSBoxSchemaBase.d.ts +1 -1
- package/dist/components/NSBoxSchemaBase.js +1 -1
- package/dist/components/NSBoxSchemaBase.js.map +1 -1
- package/dist/components/NSBoxSchemaBase.module.css +17 -17
- package/dist/components/NSBoxSchemaVariable.d.ts +1 -1
- package/dist/components/NSBoxSchemaVariable.module.css +16 -16
- package/dist/components/NSBoxSearch.d.ts +1 -1
- package/dist/components/NSBoxSensitive.d.ts +1 -1
- package/dist/components/NSBoxString.d.ts +1 -1
- package/dist/components/NSBoxTextArea.d.ts +1 -1
- package/dist/components/NSBoxTextArea.module.css +12 -12
- package/dist/components/NSBoxTime.d.ts +1 -1
- package/dist/components/NSBoxTime.module.css +4 -4
- package/dist/components/NSBoxTimeRange.d.ts +1 -1
- package/dist/components/NSBoxTimeZone.d.ts +1 -1
- package/dist/components/NSBoxURL.d.ts +1 -1
- package/dist/components/NSBoxVersion.d.ts +1 -1
- package/dist/components/NSButton.module.css +57 -57
- package/dist/components/NSButtonBlue.d.ts +1 -1
- package/dist/components/NSButtonBlue.module.css +4 -4
- package/dist/components/NSButtonGreen.d.ts +1 -1
- package/dist/components/NSButtonGreen.module.css +4 -4
- package/dist/components/NSButtonRed.d.ts +1 -1
- package/dist/components/NSButtonRed.module.css +4 -4
- package/dist/components/NSCard.d.ts +1 -1
- package/dist/components/NSCard.module.css +113 -113
- package/dist/components/NSCardScreenshot.d.ts +1 -1
- package/dist/components/NSCardScreenshot.module.css +41 -41
- package/dist/components/NSChartBar.d.ts +1 -1
- package/dist/components/NSChartDoughnut.d.ts +1 -1
- package/dist/components/NSChartLine.d.ts +1 -1
- package/dist/components/NSChartPie.d.ts +1 -1
- package/dist/components/NSChartRange.d.ts +1 -1
- package/dist/components/NSColumn.d.ts +1 -1
- package/dist/components/NSColumn.module.css +16 -16
- package/dist/components/NSCopy.d.ts +1 -1
- package/dist/components/NSCopyBox.d.ts +1 -1
- package/dist/components/NSCopyBox.module.css +39 -39
- package/dist/components/NSDialog.d.ts +1 -1
- package/dist/components/NSDialog.module.css +105 -105
- package/dist/components/NSDialogBox.d.ts +1 -1
- package/dist/components/NSDialogBoxDate.d.ts +1 -1
- package/dist/components/NSDialogBoxDateTime.d.ts +1 -1
- package/dist/components/NSDialogBoxPhone.d.ts +1 -1
- package/dist/components/NSDialogBoxString.d.ts +1 -1
- package/dist/components/NSDialogDelete.d.ts +1 -1
- package/dist/components/NSDialogInfo.d.ts +1 -1
- package/dist/components/NSDialogPageSelection.d.ts +2 -2
- package/dist/components/NSDialogPageSelection.module.css +103 -103
- package/dist/components/NSDownTimer.d.ts +1 -1
- package/dist/components/NSDownTimer.module.css +55 -55
- package/dist/components/NSDownload.d.ts +1 -1
- package/dist/components/NSDownload.module.css +46 -46
- package/dist/components/NSElectronicCard.d.ts +1 -1
- package/dist/components/NSElectronicCard.module.css +60 -60
- package/dist/components/NSEntityCardBackground.d.ts +1 -1
- package/dist/components/NSEntityCardBackground.module.css +27 -27
- package/dist/components/NSFilterBox.d.ts +2 -2
- package/dist/components/NSFilterBox.module.css +27 -27
- package/dist/components/NSFilterBoxItems.d.ts +1 -1
- package/dist/components/NSFilterBoxItems.module.css +15 -15
- package/dist/components/NSFilterItem.d.ts +1 -1
- package/dist/components/NSFilterItem.module.css +24 -24
- package/dist/components/NSFooter.d.ts +1 -1
- package/dist/components/NSFooter.module.css +140 -140
- package/dist/components/NSGauge.d.ts +1 -1
- package/dist/components/NSGauge.module.css +67 -67
- package/dist/components/NSGaugeDate.d.ts +1 -1
- package/dist/components/NSGaugeDate.module.css +57 -57
- package/dist/components/NSGaugeNumber.d.ts +1 -1
- package/dist/components/NSGaugeNumber.module.css +66 -66
- package/dist/components/NSHeader.d.ts +1 -1
- package/dist/components/NSHeader.module.css +316 -316
- package/dist/components/NSHeaderScreenshot.d.ts +1 -1
- package/dist/components/NSHeaderScreenshot.module.css +35 -35
- package/dist/components/NSID.d.ts +1 -1
- package/dist/components/NSInfo.d.ts +1 -1
- package/dist/components/NSLabel.d.ts +1 -1
- package/dist/components/NSLabel.module.css +25 -25
- package/dist/components/NSLabelErrorNotifier.d.ts +1 -1
- package/dist/components/NSLabelErrorNotifier.module.css +2 -2
- package/dist/components/NSLabelSensitive.d.ts +1 -1
- package/dist/components/NSLabelSensitive.module.css +9 -9
- package/dist/components/NSLayout.d.ts +1 -1
- package/dist/components/NSLayout.module.css +22 -22
- package/dist/components/NSLine.d.ts +1 -1
- package/dist/components/NSLine.module.css +15 -15
- package/dist/components/NSLineText.d.ts +1 -1
- package/dist/components/NSLineText.module.css +38 -38
- package/dist/components/NSLink.d.ts +1 -1
- package/dist/components/NSLink.module.css +36 -36
- package/dist/components/NSLinkBlue.d.ts +1 -1
- package/dist/components/NSLinkGreen.d.ts +1 -1
- package/dist/components/NSLinkRed.d.ts +1 -1
- package/dist/components/NSListGrouped.d.ts +1 -1
- package/dist/components/NSListGrouped.module.css +69 -69
- package/dist/components/NSListProduct.d.ts +1 -1
- package/dist/components/NSLoading.d.ts +1 -1
- package/dist/components/NSLoading.module.css +10 -10
- package/dist/components/NSMegaMenu.d.ts +1 -1
- package/dist/components/NSMegaMenu.module.css +133 -133
- package/dist/components/NSMenuAction.d.ts +1 -1
- package/dist/components/NSMenuAction.module.css +88 -88
- package/dist/components/NSMenuButton.d.ts +1 -1
- package/dist/components/NSMenuButton.module.css +44 -44
- package/dist/components/NSNoData.d.ts +1 -1
- package/dist/components/NSNoData.module.css +11 -11
- package/dist/components/NSPagination.d.ts +1 -1
- package/dist/components/NSPagination.module.css +94 -94
- package/dist/components/NSPanel.d.ts +1 -1
- package/dist/components/NSPanel.module.css +28 -28
- package/dist/components/NSPanelAccordion.d.ts +1 -1
- package/dist/components/NSPanelAccordion.module.css +4 -4
- package/dist/components/NSProductSearch.d.ts +1 -1
- package/dist/components/NSProductSearch.module.css +73 -73
- package/dist/components/NSProgressBar.d.ts +1 -1
- package/dist/components/NSProgressBar.module.css +38 -38
- package/dist/components/NSRange.d.ts +1 -1
- package/dist/components/NSRange.module.css +66 -66
- package/dist/components/NSReorderDialog.d.ts +4 -1
- package/dist/components/NSReorderDialog.js +10 -4
- package/dist/components/NSReorderDialog.js.map +1 -1
- package/dist/components/NSReorderDialog.module.css +53 -49
- package/dist/components/NSRepeater.d.ts +1 -1
- package/dist/components/NSRepeaterNSBoxSchemaVariable.d.ts +1 -1
- package/dist/components/NSRepeaterNSTag.d.ts +1 -1
- package/dist/components/NSRow.d.ts +1 -1
- package/dist/components/NSRow.module.css +17 -17
- package/dist/components/NSSection.d.ts +1 -1
- package/dist/components/NSSection.module.css +4 -4
- package/dist/components/NSSectionCards.d.ts +1 -1
- package/dist/components/NSSectionCards.module.css +38 -38
- package/dist/components/NSSectionTiles.d.ts +1 -1
- package/dist/components/NSSectionTiles.module.css +10 -10
- package/dist/components/NSSectionTitle.d.ts +1 -1
- package/dist/components/NSSortDialog.d.ts +1 -1
- package/dist/components/NSSpace.d.ts +1 -1
- package/dist/components/NSSplitter.d.ts +1 -1
- package/dist/components/NSSplitter.module.css +59 -59
- package/dist/components/NSTabPage.d.ts +1 -1
- package/dist/components/NSTabPage.module.css +59 -59
- package/dist/components/NSTable.d.ts +1 -1
- package/dist/components/NSTable.js +23 -23
- package/dist/components/NSTable.module.css +374 -374
- package/dist/components/NSTableChart.d.ts +1 -1
- package/dist/components/NSTableChart.module.css +119 -119
- package/dist/components/NSTag.d.ts +1 -1
- package/dist/components/NSTile.d.ts +1 -1
- package/dist/components/NSTile.module.css +76 -76
- package/dist/components/NSTimelineMonthly.d.ts +1 -1
- package/dist/components/NSTimelineMonthly.module.css +71 -71
- package/dist/components/NSTitle.d.ts +1 -1
- package/dist/components/NSTitle.module.css +15 -15
- package/dist/pages/NSImplementing.d.ts +1 -1
- package/dist/pages/NSImplementing.module.css +35 -35
- package/dist/pages/NSNotFoundPage.d.ts +1 -1
- package/dist/pages/NSNotFoundPage.module.css +18 -18
- package/dist/pages/NSUpdating.d.ts +1 -1
- package/dist/pages/NSUpdating.module.css +35 -35
- package/package.json +86 -86
- package/public/index.html +38 -38
- package/src/App.css +33 -33
- package/src/App.tsx +850 -176
- package/src/BrowserDetector.ts +109 -109
- package/src/Color.tsx +10 -10
- package/src/CopyToClipboard.ts +6 -6
- package/src/EncryptionOperation.ts +98 -98
- package/src/KeyOperation.ts +109 -109
- package/src/LinkOperation.ts +101 -101
- package/src/NSBoxBuilder.tsx +922 -922
- package/src/ProductCacheService.ts +36 -36
- package/src/Validator.ts +199 -199
- package/src/components/INSBox.tsx +7 -7
- package/src/components/NSBanner.module.css +47 -47
- package/src/components/NSBanner.tsx +80 -80
- package/src/components/NSBarAction.module.css +91 -91
- package/src/components/NSBarAction.tsx +95 -95
- package/src/components/NSBarAlert.module.css +79 -79
- package/src/components/NSBarAlert.tsx +35 -35
- package/src/components/NSBarNotification.module.css +34 -34
- package/src/components/NSBarNotification.tsx +89 -89
- package/src/components/NSBarTitle.module.css +9 -9
- package/src/components/NSBarTitle.tsx +23 -23
- package/src/components/NSBox.module.css +87 -87
- package/src/components/NSBox.tsx +19 -19
- package/src/components/NSBoxBaseCombo.module.css +24 -24
- package/src/components/NSBoxBaseCombo.tsx +501 -501
- package/src/components/NSBoxBaseLayout.tsx +163 -163
- package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
- package/src/components/NSBoxBoolean.module.css +73 -73
- package/src/components/NSBoxBoolean.tsx +152 -152
- package/src/components/NSBoxBooleans.tsx +181 -181
- package/src/components/NSBoxColor.tsx +107 -107
- package/src/components/NSBoxCombo.tsx +95 -95
- package/src/components/NSBoxDate.module.css +4 -4
- package/src/components/NSBoxDate.tsx +144 -144
- package/src/components/NSBoxDateRange.tsx +88 -88
- package/src/components/NSBoxDateRangeBase.module.css +73 -73
- package/src/components/NSBoxDateRangeBase.tsx +236 -236
- package/src/components/NSBoxDateTime.module.css +4 -4
- package/src/components/NSBoxDateTime.tsx +136 -136
- package/src/components/NSBoxDateTimeRange.tsx +66 -66
- package/src/components/NSBoxDouble.tsx +110 -110
- package/src/components/NSBoxDuration.module.css +4 -4
- package/src/components/NSBoxDuration.tsx +107 -107
- package/src/components/NSBoxDynamic.tsx +73 -73
- package/src/components/NSBoxDynamics.tsx +68 -68
- package/src/components/NSBoxEmail.tsx +117 -117
- package/src/components/NSBoxEntity.tsx +180 -180
- package/src/components/NSBoxEnum.tsx +113 -113
- package/src/components/NSBoxFile.module.css +10 -10
- package/src/components/NSBoxFile.tsx +106 -106
- package/src/components/NSBoxFilePath.tsx +106 -106
- package/src/components/NSBoxFont.tsx +107 -107
- package/src/components/NSBoxIPV4.tsx +107 -107
- package/src/components/NSBoxIPV4Range.tsx +107 -107
- package/src/components/NSBoxIPV6.tsx +104 -104
- package/src/components/NSBoxIPV6Range.tsx +107 -107
- package/src/components/NSBoxInteger.module.css +16 -16
- package/src/components/NSBoxInteger.tsx +126 -126
- package/src/components/NSBoxMoney.tsx +115 -115
- package/src/components/NSBoxOptions.module.css +53 -53
- package/src/components/NSBoxOptions.tsx +182 -182
- package/src/components/NSBoxPhone.module.css +35 -35
- package/src/components/NSBoxPhone.tsx +120 -120
- package/src/components/NSBoxRadio.module.css +33 -33
- package/src/components/NSBoxRadio.tsx +104 -104
- package/src/components/NSBoxSchemaBase.module.css +17 -17
- package/src/components/NSBoxSchemaBase.tsx +562 -561
- package/src/components/NSBoxSchemaVariable.module.css +16 -16
- package/src/components/NSBoxSchemaVariable.tsx +262 -262
- package/src/components/NSBoxSearch.tsx +112 -112
- package/src/components/NSBoxSensitive.tsx +133 -133
- package/src/components/NSBoxString.tsx +106 -106
- package/src/components/NSBoxTextArea.module.css +12 -12
- package/src/components/NSBoxTextArea.tsx +136 -136
- package/src/components/NSBoxTime.module.css +4 -4
- package/src/components/NSBoxTime.tsx +106 -106
- package/src/components/NSBoxTimeRange.tsx +220 -220
- package/src/components/NSBoxTimeZone.tsx +122 -122
- package/src/components/NSBoxURL.tsx +117 -117
- package/src/components/NSBoxVersion.tsx +107 -107
- package/src/components/NSButton.module.css +57 -57
- package/src/components/NSButton.tsx +74 -74
- package/src/components/NSButtonBlue.module.css +4 -4
- package/src/components/NSButtonBlue.tsx +29 -29
- package/src/components/NSButtonGreen.module.css +4 -4
- package/src/components/NSButtonGreen.tsx +29 -29
- package/src/components/NSButtonRed.module.css +4 -4
- package/src/components/NSButtonRed.tsx +29 -29
- package/src/components/NSCard.module.css +113 -113
- package/src/components/NSCard.tsx +67 -67
- package/src/components/NSCardScreenshot.module.css +41 -41
- package/src/components/NSCardScreenshot.tsx +31 -31
- package/src/components/NSChartBar.tsx +134 -134
- package/src/components/NSChartDoughnut.tsx +114 -114
- package/src/components/NSChartLine.tsx +110 -110
- package/src/components/NSChartPie.tsx +105 -105
- package/src/components/NSChartRange.tsx +14 -14
- package/src/components/NSColumn.module.css +16 -16
- package/src/components/NSColumn.tsx +24 -24
- package/src/components/NSCopy.tsx +95 -95
- package/src/components/NSCopyBox.module.css +39 -39
- package/src/components/NSCopyBox.tsx +53 -53
- package/src/components/NSDialog.module.css +105 -105
- package/src/components/NSDialog.tsx +72 -72
- package/src/components/NSDialogBox.tsx +38 -38
- package/src/components/NSDialogBoxDate.tsx +28 -28
- package/src/components/NSDialogBoxDateTime.tsx +28 -28
- package/src/components/NSDialogBoxPhone.tsx +28 -28
- package/src/components/NSDialogBoxString.tsx +28 -28
- package/src/components/NSDialogDelete.tsx +36 -36
- package/src/components/NSDialogInfo.tsx +49 -49
- package/src/components/NSDialogPageSelection.module.css +103 -103
- package/src/components/NSDialogPageSelection.tsx +233 -233
- package/src/components/NSDownTimer.module.css +55 -55
- package/src/components/NSDownTimer.tsx +91 -91
- package/src/components/NSDownload.module.css +46 -46
- package/src/components/NSDownload.tsx +69 -69
- package/src/components/NSElectronicCard.module.css +60 -60
- package/src/components/NSElectronicCard.tsx +46 -46
- package/src/components/NSEntityCardBackground.module.css +27 -27
- package/src/components/NSEntityCardBackground.tsx +36 -36
- package/src/components/NSFilterBox.module.css +27 -27
- package/src/components/NSFilterBox.tsx +477 -477
- package/src/components/NSFilterBoxItems.module.css +15 -15
- package/src/components/NSFilterBoxItems.tsx +52 -52
- package/src/components/NSFilterItem.module.css +24 -24
- package/src/components/NSFilterItem.tsx +27 -27
- package/src/components/NSFooter.module.css +140 -140
- package/src/components/NSFooter.tsx +321 -321
- package/src/components/NSGauge.module.css +67 -67
- package/src/components/NSGauge.tsx +52 -52
- package/src/components/NSGaugeDate.module.css +57 -57
- package/src/components/NSGaugeDate.tsx +125 -125
- package/src/components/NSGaugeNumber.module.css +66 -66
- package/src/components/NSGaugeNumber.tsx +93 -93
- package/src/components/NSHeader.module.css +316 -316
- package/src/components/NSHeader.tsx +337 -337
- package/src/components/NSHeaderScreenshot.module.css +35 -35
- package/src/components/NSHeaderScreenshot.tsx +39 -39
- package/src/components/NSID.tsx +178 -178
- package/src/components/NSInfo.tsx +50 -50
- package/src/components/NSLabel.module.css +25 -25
- package/src/components/NSLabel.tsx +47 -47
- package/src/components/NSLabelErrorNotifier.module.css +2 -2
- package/src/components/NSLabelErrorNotifier.tsx +35 -35
- package/src/components/NSLabelSensitive.module.css +9 -9
- package/src/components/NSLabelSensitive.tsx +101 -101
- package/src/components/NSLayout.module.css +22 -22
- package/src/components/NSLayout.tsx +143 -143
- package/src/components/NSLine.module.css +15 -15
- package/src/components/NSLine.tsx +13 -13
- package/src/components/NSLineText.module.css +38 -38
- package/src/components/NSLineText.tsx +17 -17
- package/src/components/NSLink.module.css +36 -36
- package/src/components/NSLink.tsx +26 -26
- package/src/components/NSLinkBlue.tsx +22 -22
- package/src/components/NSLinkGreen.tsx +13 -13
- package/src/components/NSLinkRed.tsx +13 -13
- package/src/components/NSListGrouped.module.css +69 -69
- package/src/components/NSListGrouped.tsx +106 -106
- package/src/components/NSListProduct.tsx +78 -78
- package/src/components/NSLoading.module.css +10 -10
- package/src/components/NSLoading.tsx +43 -43
- package/src/components/NSMegaMenu.module.css +133 -133
- package/src/components/NSMegaMenu.tsx +188 -188
- package/src/components/NSMenuAction.module.css +88 -88
- package/src/components/NSMenuAction.tsx +106 -106
- package/src/components/NSMenuButton.module.css +44 -44
- package/src/components/NSMenuButton.tsx +198 -198
- package/src/components/NSNoData.module.css +11 -11
- package/src/components/NSNoData.tsx +24 -24
- package/src/components/NSPagination.module.css +94 -94
- package/src/components/NSPagination.tsx +182 -182
- package/src/components/NSPanel.module.css +28 -28
- package/src/components/NSPanel.tsx +26 -26
- package/src/components/NSPanelAccordion.module.css +4 -4
- package/src/components/NSPanelAccordion.tsx +51 -51
- package/src/components/NSProductSearch.module.css +73 -73
- package/src/components/NSProductSearch.tsx +193 -193
- package/src/components/NSProgressBar.module.css +38 -38
- package/src/components/NSProgressBar.tsx +29 -29
- package/src/components/NSRange.module.css +66 -66
- package/src/components/NSRange.tsx +83 -83
- package/src/components/NSReorderDialog.module.css +53 -49
- package/src/components/NSReorderDialog.tsx +203 -184
- package/src/components/NSRepeater.tsx +327 -327
- package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +96 -96
- package/src/components/NSRepeaterNSTag.tsx +86 -86
- package/src/components/NSRow.module.css +17 -17
- package/src/components/NSRow.tsx +24 -24
- package/src/components/NSSection.module.css +4 -4
- package/src/components/NSSection.tsx +26 -26
- package/src/components/NSSectionCards.module.css +38 -38
- package/src/components/NSSectionCards.tsx +51 -51
- package/src/components/NSSectionTiles.module.css +10 -10
- package/src/components/NSSectionTiles.tsx +25 -25
- package/src/components/NSSectionTitle.tsx +19 -19
- package/src/components/NSSortDialog.tsx +124 -124
- package/src/components/NSSpace.tsx +28 -28
- package/src/components/NSSplitter.module.css +59 -59
- package/src/components/NSSplitter.tsx +211 -211
- package/src/components/NSTabPage.module.css +59 -59
- package/src/components/NSTabPage.tsx +122 -122
- package/src/components/NSTable.module.css +374 -374
- package/src/components/NSTable.tsx +1451 -1451
- package/src/components/NSTableChart.module.css +119 -119
- package/src/components/NSTableChart.tsx +732 -732
- package/src/components/NSTag.tsx +74 -74
- package/src/components/NSTile.module.css +76 -76
- package/src/components/NSTile.tsx +27 -27
- package/src/components/NSTimelineMonthly.module.css +71 -71
- package/src/components/NSTimelineMonthly.tsx +44 -44
- package/src/components/NSTitle.module.css +15 -15
- package/src/components/NSTitle.tsx +19 -19
- package/src/css.d.ts +13 -13
- package/src/formatter/BackColorFormatter.tsx +23 -23
- package/src/formatter/BaseColumnFormatter.ts +86 -86
- package/src/formatter/BaseURLImageFormatter.tsx +37 -37
- package/src/formatter/BooleanFormatter.ts +26 -26
- package/src/formatter/BytesFormatter.tsx +19 -19
- package/src/formatter/DateFormatter.ts +26 -26
- package/src/formatter/DateTimeFormatter.ts +26 -26
- package/src/formatter/DurationFormatter.ts +17 -17
- package/src/formatter/EmailFormatter.tsx +25 -25
- package/src/formatter/EnumFormatter.ts +17 -17
- package/src/formatter/FloatFormatter.ts +27 -27
- package/src/formatter/ForeColorFormatter.tsx +24 -24
- package/src/formatter/IDFormatter.tsx +58 -58
- package/src/formatter/IPFormatter.ts +39 -39
- package/src/formatter/IntegerFormatter.ts +27 -27
- package/src/formatter/JsonFormatter.tsx +75 -75
- package/src/formatter/MoneyFormatter.ts +39 -39
- package/src/formatter/PercentFormatter.tsx +43 -43
- package/src/formatter/PhoneFormatter.tsx +25 -25
- package/src/formatter/SensitiveFormatter.tsx +40 -40
- package/src/formatter/StringFormatter.tsx +49 -49
- package/src/formatter/TimeFormatter.ts +25 -25
- package/src/formatter/URLFormatter.tsx +28 -28
- package/src/formatter/UnknowFormatter.ts +22 -22
- package/src/index.tsx +7 -7
- package/src/main.ts +263 -263
- package/src/pages/NSImplementing.module.css +35 -35
- package/src/pages/NSImplementing.tsx +32 -32
- package/src/pages/NSNotFoundPage.module.css +18 -18
- package/src/pages/NSNotFoundPage.tsx +14 -14
- package/src/pages/NSUpdating.module.css +35 -35
- package/src/pages/NSUpdating.tsx +32 -32
- package/src/props/IBackgroundProps.ts +5 -5
- package/src/props/IBaseComponentProps.ts +8 -8
- package/src/props/IHeaderIconProps.ts +10 -10
- package/src/props/IHeaderLeftProps.ts +6 -6
- package/src/props/IHeaderRightProps.ts +8 -8
- package/src/props/IImageProps.ts +4 -4
- package/src/props/ILinkProps.ts +4 -4
- package/src/props/IValidationNumberProps.ts +4 -4
- package/src/props/IValidationPrecisionProps.ts +3 -3
- package/src/props/IValidationProps.ts +9 -9
- package/src/props/IValidationRegexProps.ts +4 -4
- package/src/props/IValidationStringProps.ts +4 -4
- package/src/routing/NSNotifier.ts +114 -114
- package/src/routing/NSRouterMaker.tsx +28 -28
- package/tsconfig.json +43 -43
- package/dist/components/NSListMenu.d.ts +0 -9
- package/dist/components/NSListMenu.js +0 -135
- package/dist/components/NSListMenu.js.map +0 -1
package/src/BrowserDetector.ts
CHANGED
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
export enum Browser
|
|
2
|
-
{
|
|
3
|
-
Chrome = "Chrome",
|
|
4
|
-
Edge = "Edge",
|
|
5
|
-
Brave = "Brave",
|
|
6
|
-
Opera = "Opera",
|
|
7
|
-
Samsung = "Samsung",
|
|
8
|
-
Firefox = "Firefox",
|
|
9
|
-
Safari = "Safari",
|
|
10
|
-
Unknown = "Unknown",
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface UserAgentBrand
|
|
14
|
-
{
|
|
15
|
-
brand: string;
|
|
16
|
-
version: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface UserAgentData
|
|
20
|
-
{
|
|
21
|
-
brands: UserAgentBrand[];
|
|
22
|
-
mobile: boolean;
|
|
23
|
-
platform: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export class BrowserDetector
|
|
27
|
-
{
|
|
28
|
-
private static cached?: Browser;
|
|
29
|
-
|
|
30
|
-
private static get userAgentData(): UserAgentData | undefined
|
|
31
|
-
{
|
|
32
|
-
if (typeof navigator === "undefined")
|
|
33
|
-
return undefined;
|
|
34
|
-
return (navigator as any).userAgentData as UserAgentData | undefined;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
private static getUserAgent(): string
|
|
38
|
-
{
|
|
39
|
-
if (typeof navigator === "undefined")
|
|
40
|
-
return "";
|
|
41
|
-
return navigator.userAgent;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
private static isBrave(): boolean
|
|
45
|
-
{
|
|
46
|
-
return typeof navigator !== "undefined" && (navigator as any).brave !== undefined;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
private static detectFromBrands(brands: UserAgentBrand[]): Browser | undefined
|
|
50
|
-
{
|
|
51
|
-
const names = brands.map(entry => entry.brand.toLowerCase());
|
|
52
|
-
const has = (value: string): boolean => names.some(name => name.includes(value));
|
|
53
|
-
|
|
54
|
-
if (BrowserDetector.isBrave())
|
|
55
|
-
return Browser.Brave;
|
|
56
|
-
if (has("microsoft edge"))
|
|
57
|
-
return Browser.Edge;
|
|
58
|
-
if (has("opera"))
|
|
59
|
-
return Browser.Opera;
|
|
60
|
-
if (has("samsung"))
|
|
61
|
-
return Browser.Samsung;
|
|
62
|
-
if (has("google chrome") || has("chromium"))
|
|
63
|
-
return Browser.Chrome;
|
|
64
|
-
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
private static detectFromUserAgent(): Browser
|
|
69
|
-
{
|
|
70
|
-
const ua = BrowserDetector.getUserAgent();
|
|
71
|
-
|
|
72
|
-
if (BrowserDetector.isBrave())
|
|
73
|
-
return Browser.Brave;
|
|
74
|
-
if (ua.includes("Edg/"))
|
|
75
|
-
return Browser.Edge;
|
|
76
|
-
if (ua.includes("OPR/") || ua.includes("Opera/"))
|
|
77
|
-
return Browser.Opera;
|
|
78
|
-
if (ua.includes("SamsungBrowser/"))
|
|
79
|
-
return Browser.Samsung;
|
|
80
|
-
if (ua.includes("Firefox/"))
|
|
81
|
-
return Browser.Firefox;
|
|
82
|
-
if (ua.includes("Chrome/"))
|
|
83
|
-
return Browser.Chrome;
|
|
84
|
-
if (ua.includes("Safari/"))
|
|
85
|
-
return Browser.Safari;
|
|
86
|
-
|
|
87
|
-
return Browser.Unknown;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
static detect(): Browser
|
|
91
|
-
{
|
|
92
|
-
if (BrowserDetector.cached)
|
|
93
|
-
return BrowserDetector.cached;
|
|
94
|
-
|
|
95
|
-
const data = BrowserDetector.userAgentData;
|
|
96
|
-
const detected = data ? BrowserDetector.detectFromBrands(data.brands) : undefined;
|
|
97
|
-
BrowserDetector.cached = detected ?? BrowserDetector.detectFromUserAgent();
|
|
98
|
-
return BrowserDetector.cached;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static is(browser: Browser): boolean
|
|
102
|
-
{
|
|
103
|
-
return BrowserDetector.detect() === browser;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
static reset(): void
|
|
107
|
-
{
|
|
108
|
-
BrowserDetector.cached = undefined;
|
|
109
|
-
}
|
|
1
|
+
export enum Browser
|
|
2
|
+
{
|
|
3
|
+
Chrome = "Chrome",
|
|
4
|
+
Edge = "Edge",
|
|
5
|
+
Brave = "Brave",
|
|
6
|
+
Opera = "Opera",
|
|
7
|
+
Samsung = "Samsung",
|
|
8
|
+
Firefox = "Firefox",
|
|
9
|
+
Safari = "Safari",
|
|
10
|
+
Unknown = "Unknown",
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface UserAgentBrand
|
|
14
|
+
{
|
|
15
|
+
brand: string;
|
|
16
|
+
version: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface UserAgentData
|
|
20
|
+
{
|
|
21
|
+
brands: UserAgentBrand[];
|
|
22
|
+
mobile: boolean;
|
|
23
|
+
platform: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export class BrowserDetector
|
|
27
|
+
{
|
|
28
|
+
private static cached?: Browser;
|
|
29
|
+
|
|
30
|
+
private static get userAgentData(): UserAgentData | undefined
|
|
31
|
+
{
|
|
32
|
+
if (typeof navigator === "undefined")
|
|
33
|
+
return undefined;
|
|
34
|
+
return (navigator as any).userAgentData as UserAgentData | undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private static getUserAgent(): string
|
|
38
|
+
{
|
|
39
|
+
if (typeof navigator === "undefined")
|
|
40
|
+
return "";
|
|
41
|
+
return navigator.userAgent;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private static isBrave(): boolean
|
|
45
|
+
{
|
|
46
|
+
return typeof navigator !== "undefined" && (navigator as any).brave !== undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
private static detectFromBrands(brands: UserAgentBrand[]): Browser | undefined
|
|
50
|
+
{
|
|
51
|
+
const names = brands.map(entry => entry.brand.toLowerCase());
|
|
52
|
+
const has = (value: string): boolean => names.some(name => name.includes(value));
|
|
53
|
+
|
|
54
|
+
if (BrowserDetector.isBrave())
|
|
55
|
+
return Browser.Brave;
|
|
56
|
+
if (has("microsoft edge"))
|
|
57
|
+
return Browser.Edge;
|
|
58
|
+
if (has("opera"))
|
|
59
|
+
return Browser.Opera;
|
|
60
|
+
if (has("samsung"))
|
|
61
|
+
return Browser.Samsung;
|
|
62
|
+
if (has("google chrome") || has("chromium"))
|
|
63
|
+
return Browser.Chrome;
|
|
64
|
+
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private static detectFromUserAgent(): Browser
|
|
69
|
+
{
|
|
70
|
+
const ua = BrowserDetector.getUserAgent();
|
|
71
|
+
|
|
72
|
+
if (BrowserDetector.isBrave())
|
|
73
|
+
return Browser.Brave;
|
|
74
|
+
if (ua.includes("Edg/"))
|
|
75
|
+
return Browser.Edge;
|
|
76
|
+
if (ua.includes("OPR/") || ua.includes("Opera/"))
|
|
77
|
+
return Browser.Opera;
|
|
78
|
+
if (ua.includes("SamsungBrowser/"))
|
|
79
|
+
return Browser.Samsung;
|
|
80
|
+
if (ua.includes("Firefox/"))
|
|
81
|
+
return Browser.Firefox;
|
|
82
|
+
if (ua.includes("Chrome/"))
|
|
83
|
+
return Browser.Chrome;
|
|
84
|
+
if (ua.includes("Safari/"))
|
|
85
|
+
return Browser.Safari;
|
|
86
|
+
|
|
87
|
+
return Browser.Unknown;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static detect(): Browser
|
|
91
|
+
{
|
|
92
|
+
if (BrowserDetector.cached)
|
|
93
|
+
return BrowserDetector.cached;
|
|
94
|
+
|
|
95
|
+
const data = BrowserDetector.userAgentData;
|
|
96
|
+
const detected = data ? BrowserDetector.detectFromBrands(data.brands) : undefined;
|
|
97
|
+
BrowserDetector.cached = detected ?? BrowserDetector.detectFromUserAgent();
|
|
98
|
+
return BrowserDetector.cached;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
static is(browser: Browser): boolean
|
|
102
|
+
{
|
|
103
|
+
return BrowserDetector.detect() === browser;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
static reset(): void
|
|
107
|
+
{
|
|
108
|
+
BrowserDetector.cached = undefined;
|
|
109
|
+
}
|
|
110
110
|
}
|
package/src/Color.tsx
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export class Color
|
|
2
|
-
{
|
|
3
|
-
static getColor(percentage: number): string
|
|
4
|
-
{
|
|
5
|
-
if (percentage >= 75) return '#368F01';
|
|
6
|
-
if (percentage >= 60) return ' #44B400';
|
|
7
|
-
if (percentage >= 50) return '#56E500';
|
|
8
|
-
if (percentage >= 25) return '#FAFF00';
|
|
9
|
-
return 'red';
|
|
10
|
-
}
|
|
1
|
+
export class Color
|
|
2
|
+
{
|
|
3
|
+
static getColor(percentage: number): string
|
|
4
|
+
{
|
|
5
|
+
if (percentage >= 75) return '#368F01';
|
|
6
|
+
if (percentage >= 60) return ' #44B400';
|
|
7
|
+
if (percentage >= 50) return '#56E500';
|
|
8
|
+
if (percentage >= 25) return '#FAFF00';
|
|
9
|
+
return 'red';
|
|
10
|
+
}
|
|
11
11
|
}
|
package/src/CopyToClipboard.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export class CopyToClipboard
|
|
2
|
-
{
|
|
3
|
-
static copyToClipboard(value: string): void
|
|
4
|
-
{
|
|
5
|
-
navigator.clipboard.writeText(value);
|
|
6
|
-
}
|
|
1
|
+
export class CopyToClipboard
|
|
2
|
+
{
|
|
3
|
+
static copyToClipboard(value: string): void
|
|
4
|
+
{
|
|
5
|
+
navigator.clipboard.writeText(value);
|
|
6
|
+
}
|
|
7
7
|
};
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
export class EncryptionOperation
|
|
2
|
-
{
|
|
3
|
-
private static async encrypt<T>(algorithm: string, secret: string, message: T): Promise<string>
|
|
4
|
-
{
|
|
5
|
-
// if (secret.length != 32)
|
|
6
|
-
// throw new Error("Secret length must be exactly 32");
|
|
7
|
-
const enc = new TextEncoder();
|
|
8
|
-
|
|
9
|
-
// Derive a key from the password using PBKDF2
|
|
10
|
-
const salt = crypto.getRandomValues(new Uint8Array(16));
|
|
11
|
-
const keyMaterial = await crypto.subtle.importKey(
|
|
12
|
-
"raw",
|
|
13
|
-
enc.encode(secret),
|
|
14
|
-
{ name: "PBKDF2" },
|
|
15
|
-
false,
|
|
16
|
-
["deriveKey"]
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
const key = await crypto.subtle.deriveKey(
|
|
20
|
-
{
|
|
21
|
-
name: "PBKDF2",
|
|
22
|
-
salt,
|
|
23
|
-
iterations: 100000,
|
|
24
|
-
hash: "SHA-256",
|
|
25
|
-
},
|
|
26
|
-
keyMaterial,
|
|
27
|
-
{ name: algorithm, length: 256 },
|
|
28
|
-
true,
|
|
29
|
-
["encrypt"]
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
// Generate random IV
|
|
33
|
-
const iv = crypto.getRandomValues(new Uint8Array(12));
|
|
34
|
-
|
|
35
|
-
const cipherText = await crypto.subtle.encrypt(
|
|
36
|
-
{
|
|
37
|
-
name: algorithm,
|
|
38
|
-
iv,
|
|
39
|
-
},
|
|
40
|
-
key,
|
|
41
|
-
enc.encode(JSON.stringify(message))
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
// Combine salt, iv, and cipherText for storage
|
|
45
|
-
const combined = new Uint8Array([...salt, ...iv, ...new Uint8Array(cipherText)]);
|
|
46
|
-
return btoa(String.fromCharCode(...combined));
|
|
47
|
-
}
|
|
48
|
-
private static async decrypt<T>(algorithm: string, secret: string, message: string): Promise<T>
|
|
49
|
-
{
|
|
50
|
-
const data = Uint8Array.from(atob(message), c => c.charCodeAt(0));
|
|
51
|
-
|
|
52
|
-
const salt = data.slice(0, 16);
|
|
53
|
-
const iv = data.slice(16, 28);
|
|
54
|
-
const cipherText = data.slice(28);
|
|
55
|
-
|
|
56
|
-
const enc = new TextEncoder();
|
|
57
|
-
const dec = new TextDecoder();
|
|
58
|
-
|
|
59
|
-
const keyMaterial = await crypto.subtle.importKey(
|
|
60
|
-
"raw",
|
|
61
|
-
enc.encode(secret),
|
|
62
|
-
{ name: "PBKDF2" },
|
|
63
|
-
false,
|
|
64
|
-
["deriveKey"]
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const key = await crypto.subtle.deriveKey(
|
|
68
|
-
{
|
|
69
|
-
name: "PBKDF2",
|
|
70
|
-
salt,
|
|
71
|
-
iterations: 100000,
|
|
72
|
-
hash: "SHA-256",
|
|
73
|
-
},
|
|
74
|
-
keyMaterial,
|
|
75
|
-
{ name: algorithm, length: 256 },
|
|
76
|
-
true,
|
|
77
|
-
["decrypt"]
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
const decrypted = await crypto.subtle.decrypt(
|
|
81
|
-
{
|
|
82
|
-
name: algorithm,
|
|
83
|
-
iv,
|
|
84
|
-
},
|
|
85
|
-
key,
|
|
86
|
-
cipherText
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
return JSON.parse(dec.decode(decrypted));
|
|
90
|
-
}
|
|
91
|
-
static async AES256GCMEncrypt<T>(secret: string, message: T): Promise<string>
|
|
92
|
-
{
|
|
93
|
-
return EncryptionOperation.encrypt("AES-GCM", secret, message);
|
|
94
|
-
}
|
|
95
|
-
static async AES256GCMDecrypt<T>(secret: string, message: string): Promise<T>
|
|
96
|
-
{
|
|
97
|
-
return EncryptionOperation.decrypt("AES-GCM", secret, message);
|
|
98
|
-
}
|
|
1
|
+
export class EncryptionOperation
|
|
2
|
+
{
|
|
3
|
+
private static async encrypt<T>(algorithm: string, secret: string, message: T): Promise<string>
|
|
4
|
+
{
|
|
5
|
+
// if (secret.length != 32)
|
|
6
|
+
// throw new Error("Secret length must be exactly 32");
|
|
7
|
+
const enc = new TextEncoder();
|
|
8
|
+
|
|
9
|
+
// Derive a key from the password using PBKDF2
|
|
10
|
+
const salt = crypto.getRandomValues(new Uint8Array(16));
|
|
11
|
+
const keyMaterial = await crypto.subtle.importKey(
|
|
12
|
+
"raw",
|
|
13
|
+
enc.encode(secret),
|
|
14
|
+
{ name: "PBKDF2" },
|
|
15
|
+
false,
|
|
16
|
+
["deriveKey"]
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const key = await crypto.subtle.deriveKey(
|
|
20
|
+
{
|
|
21
|
+
name: "PBKDF2",
|
|
22
|
+
salt,
|
|
23
|
+
iterations: 100000,
|
|
24
|
+
hash: "SHA-256",
|
|
25
|
+
},
|
|
26
|
+
keyMaterial,
|
|
27
|
+
{ name: algorithm, length: 256 },
|
|
28
|
+
true,
|
|
29
|
+
["encrypt"]
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
// Generate random IV
|
|
33
|
+
const iv = crypto.getRandomValues(new Uint8Array(12));
|
|
34
|
+
|
|
35
|
+
const cipherText = await crypto.subtle.encrypt(
|
|
36
|
+
{
|
|
37
|
+
name: algorithm,
|
|
38
|
+
iv,
|
|
39
|
+
},
|
|
40
|
+
key,
|
|
41
|
+
enc.encode(JSON.stringify(message))
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
// Combine salt, iv, and cipherText for storage
|
|
45
|
+
const combined = new Uint8Array([...salt, ...iv, ...new Uint8Array(cipherText)]);
|
|
46
|
+
return btoa(String.fromCharCode(...combined));
|
|
47
|
+
}
|
|
48
|
+
private static async decrypt<T>(algorithm: string, secret: string, message: string): Promise<T>
|
|
49
|
+
{
|
|
50
|
+
const data = Uint8Array.from(atob(message), c => c.charCodeAt(0));
|
|
51
|
+
|
|
52
|
+
const salt = data.slice(0, 16);
|
|
53
|
+
const iv = data.slice(16, 28);
|
|
54
|
+
const cipherText = data.slice(28);
|
|
55
|
+
|
|
56
|
+
const enc = new TextEncoder();
|
|
57
|
+
const dec = new TextDecoder();
|
|
58
|
+
|
|
59
|
+
const keyMaterial = await crypto.subtle.importKey(
|
|
60
|
+
"raw",
|
|
61
|
+
enc.encode(secret),
|
|
62
|
+
{ name: "PBKDF2" },
|
|
63
|
+
false,
|
|
64
|
+
["deriveKey"]
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const key = await crypto.subtle.deriveKey(
|
|
68
|
+
{
|
|
69
|
+
name: "PBKDF2",
|
|
70
|
+
salt,
|
|
71
|
+
iterations: 100000,
|
|
72
|
+
hash: "SHA-256",
|
|
73
|
+
},
|
|
74
|
+
keyMaterial,
|
|
75
|
+
{ name: algorithm, length: 256 },
|
|
76
|
+
true,
|
|
77
|
+
["decrypt"]
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
const decrypted = await crypto.subtle.decrypt(
|
|
81
|
+
{
|
|
82
|
+
name: algorithm,
|
|
83
|
+
iv,
|
|
84
|
+
},
|
|
85
|
+
key,
|
|
86
|
+
cipherText
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
return JSON.parse(dec.decode(decrypted));
|
|
90
|
+
}
|
|
91
|
+
static async AES256GCMEncrypt<T>(secret: string, message: T): Promise<string>
|
|
92
|
+
{
|
|
93
|
+
return EncryptionOperation.encrypt("AES-GCM", secret, message);
|
|
94
|
+
}
|
|
95
|
+
static async AES256GCMDecrypt<T>(secret: string, message: string): Promise<T>
|
|
96
|
+
{
|
|
97
|
+
return EncryptionOperation.decrypt("AES-GCM", secret, message);
|
|
98
|
+
}
|
|
99
99
|
}
|
package/src/KeyOperation.ts
CHANGED
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
export class KeyOperation
|
|
2
|
-
{
|
|
3
|
-
private static started: boolean = false;
|
|
4
|
-
private static readonly pressedCodes: Set<string> = new Set<string>();
|
|
5
|
-
private static readonly pressedKeys: Set<string> = new Set<string>();
|
|
6
|
-
|
|
7
|
-
private static readonly onKeyDown = (event: KeyboardEvent): void =>
|
|
8
|
-
{
|
|
9
|
-
KeyOperation.pressedCodes.add(event.code);
|
|
10
|
-
KeyOperation.pressedKeys.add(event.key.toLowerCase());
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
private static readonly onKeyUp = (event: KeyboardEvent): void =>
|
|
14
|
-
{
|
|
15
|
-
KeyOperation.pressedCodes.delete(event.code);
|
|
16
|
-
KeyOperation.pressedKeys.delete(event.key.toLowerCase());
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
private static readonly onBlur = (): void =>
|
|
20
|
-
{
|
|
21
|
-
KeyOperation.pressedCodes.clear();
|
|
22
|
-
KeyOperation.pressedKeys.clear();
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
static start(): void
|
|
26
|
-
{
|
|
27
|
-
if (KeyOperation.started)
|
|
28
|
-
return;
|
|
29
|
-
if (typeof window === "undefined")
|
|
30
|
-
return;
|
|
31
|
-
window.addEventListener("keydown", KeyOperation.onKeyDown);
|
|
32
|
-
window.addEventListener("keyup", KeyOperation.onKeyUp);
|
|
33
|
-
window.addEventListener("blur", KeyOperation.onBlur);
|
|
34
|
-
KeyOperation.started = true;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
static stop(): void
|
|
38
|
-
{
|
|
39
|
-
if (!KeyOperation.started)
|
|
40
|
-
return;
|
|
41
|
-
if (typeof window === "undefined")
|
|
42
|
-
return;
|
|
43
|
-
window.removeEventListener("keydown", KeyOperation.onKeyDown);
|
|
44
|
-
window.removeEventListener("keyup", KeyOperation.onKeyUp);
|
|
45
|
-
window.removeEventListener("blur", KeyOperation.onBlur);
|
|
46
|
-
KeyOperation.pressedCodes.clear();
|
|
47
|
-
KeyOperation.pressedKeys.clear();
|
|
48
|
-
KeyOperation.started = false;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
static isCodePressed(code: string): boolean
|
|
52
|
-
{
|
|
53
|
-
return KeyOperation.pressedCodes.has(code);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
static isKeyPressed(key: string): boolean
|
|
57
|
-
{
|
|
58
|
-
return KeyOperation.pressedKeys.has(key.toLowerCase());
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
static isAnyCodePressed(...codes: string[]): boolean
|
|
62
|
-
{
|
|
63
|
-
return codes.some(code => KeyOperation.pressedCodes.has(code));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
static areAllCodesPressed(...codes: string[]): boolean
|
|
67
|
-
{
|
|
68
|
-
return codes.every(code => KeyOperation.pressedCodes.has(code));
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
static isShiftPressed(): boolean
|
|
72
|
-
{
|
|
73
|
-
return KeyOperation.isAnyCodePressed("ShiftLeft", "ShiftRight");
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
static isControlPressed(): boolean
|
|
77
|
-
{
|
|
78
|
-
return KeyOperation.isAnyCodePressed("ControlLeft", "ControlRight");
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
static isAltPressed(): boolean
|
|
82
|
-
{
|
|
83
|
-
return KeyOperation.isAnyCodePressed("AltLeft", "AltRight");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
static isMetaPressed(): boolean
|
|
87
|
-
{
|
|
88
|
-
return KeyOperation.isAnyCodePressed("MetaLeft", "MetaRight");
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
static isEnterPressed(): boolean
|
|
92
|
-
{
|
|
93
|
-
return KeyOperation.isAnyCodePressed("Enter", "NumpadEnter");
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
static isEscapePressed(): boolean
|
|
97
|
-
{
|
|
98
|
-
return KeyOperation.isCodePressed("Escape");
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static isSpacePressed(): boolean
|
|
102
|
-
{
|
|
103
|
-
return KeyOperation.isCodePressed("Space");
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
static getPressedCodes(): string[]
|
|
107
|
-
{
|
|
108
|
-
return Array.from(KeyOperation.pressedCodes);
|
|
109
|
-
}
|
|
1
|
+
export class KeyOperation
|
|
2
|
+
{
|
|
3
|
+
private static started: boolean = false;
|
|
4
|
+
private static readonly pressedCodes: Set<string> = new Set<string>();
|
|
5
|
+
private static readonly pressedKeys: Set<string> = new Set<string>();
|
|
6
|
+
|
|
7
|
+
private static readonly onKeyDown = (event: KeyboardEvent): void =>
|
|
8
|
+
{
|
|
9
|
+
KeyOperation.pressedCodes.add(event.code);
|
|
10
|
+
KeyOperation.pressedKeys.add(event.key.toLowerCase());
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
private static readonly onKeyUp = (event: KeyboardEvent): void =>
|
|
14
|
+
{
|
|
15
|
+
KeyOperation.pressedCodes.delete(event.code);
|
|
16
|
+
KeyOperation.pressedKeys.delete(event.key.toLowerCase());
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
private static readonly onBlur = (): void =>
|
|
20
|
+
{
|
|
21
|
+
KeyOperation.pressedCodes.clear();
|
|
22
|
+
KeyOperation.pressedKeys.clear();
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
static start(): void
|
|
26
|
+
{
|
|
27
|
+
if (KeyOperation.started)
|
|
28
|
+
return;
|
|
29
|
+
if (typeof window === "undefined")
|
|
30
|
+
return;
|
|
31
|
+
window.addEventListener("keydown", KeyOperation.onKeyDown);
|
|
32
|
+
window.addEventListener("keyup", KeyOperation.onKeyUp);
|
|
33
|
+
window.addEventListener("blur", KeyOperation.onBlur);
|
|
34
|
+
KeyOperation.started = true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static stop(): void
|
|
38
|
+
{
|
|
39
|
+
if (!KeyOperation.started)
|
|
40
|
+
return;
|
|
41
|
+
if (typeof window === "undefined")
|
|
42
|
+
return;
|
|
43
|
+
window.removeEventListener("keydown", KeyOperation.onKeyDown);
|
|
44
|
+
window.removeEventListener("keyup", KeyOperation.onKeyUp);
|
|
45
|
+
window.removeEventListener("blur", KeyOperation.onBlur);
|
|
46
|
+
KeyOperation.pressedCodes.clear();
|
|
47
|
+
KeyOperation.pressedKeys.clear();
|
|
48
|
+
KeyOperation.started = false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
static isCodePressed(code: string): boolean
|
|
52
|
+
{
|
|
53
|
+
return KeyOperation.pressedCodes.has(code);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static isKeyPressed(key: string): boolean
|
|
57
|
+
{
|
|
58
|
+
return KeyOperation.pressedKeys.has(key.toLowerCase());
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static isAnyCodePressed(...codes: string[]): boolean
|
|
62
|
+
{
|
|
63
|
+
return codes.some(code => KeyOperation.pressedCodes.has(code));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static areAllCodesPressed(...codes: string[]): boolean
|
|
67
|
+
{
|
|
68
|
+
return codes.every(code => KeyOperation.pressedCodes.has(code));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static isShiftPressed(): boolean
|
|
72
|
+
{
|
|
73
|
+
return KeyOperation.isAnyCodePressed("ShiftLeft", "ShiftRight");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static isControlPressed(): boolean
|
|
77
|
+
{
|
|
78
|
+
return KeyOperation.isAnyCodePressed("ControlLeft", "ControlRight");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
static isAltPressed(): boolean
|
|
82
|
+
{
|
|
83
|
+
return KeyOperation.isAnyCodePressed("AltLeft", "AltRight");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static isMetaPressed(): boolean
|
|
87
|
+
{
|
|
88
|
+
return KeyOperation.isAnyCodePressed("MetaLeft", "MetaRight");
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static isEnterPressed(): boolean
|
|
92
|
+
{
|
|
93
|
+
return KeyOperation.isAnyCodePressed("Enter", "NumpadEnter");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static isEscapePressed(): boolean
|
|
97
|
+
{
|
|
98
|
+
return KeyOperation.isCodePressed("Escape");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
static isSpacePressed(): boolean
|
|
102
|
+
{
|
|
103
|
+
return KeyOperation.isCodePressed("Space");
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
static getPressedCodes(): string[]
|
|
107
|
+
{
|
|
108
|
+
return Array.from(KeyOperation.pressedCodes);
|
|
109
|
+
}
|
|
110
110
|
}
|