namirasoft-site-react 1.5.19 → 1.5.20

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.
Files changed (487) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +10 -10
  3. package/Dockerfile +18 -18
  4. package/SKILL.md +307 -307
  5. package/config-overrides.js +72 -72
  6. package/dist/App.css +33 -33
  7. package/dist/App.d.ts +1 -1
  8. package/dist/NSBoxBuilder.d.ts +25 -25
  9. package/dist/components/NSBanner.d.ts +1 -1
  10. package/dist/components/NSBanner.module.css +47 -47
  11. package/dist/components/NSBarAction.d.ts +1 -1
  12. package/dist/components/NSBarAction.module.css +91 -91
  13. package/dist/components/NSBarAlert.d.ts +1 -1
  14. package/dist/components/NSBarAlert.module.css +79 -79
  15. package/dist/components/NSBarNotification.d.ts +1 -1
  16. package/dist/components/NSBarNotification.module.css +34 -34
  17. package/dist/components/NSBarTitle.d.ts +1 -1
  18. package/dist/components/NSBarTitle.module.css +9 -9
  19. package/dist/components/NSBox.module.css +87 -87
  20. package/dist/components/NSBoxBaseCombo.d.ts +1 -1
  21. package/dist/components/NSBoxBaseCombo.js +1 -1
  22. package/dist/components/NSBoxBaseCombo.js.map +1 -1
  23. package/dist/components/NSBoxBaseCombo.module.css +22 -6
  24. package/dist/components/NSBoxBaseLayout.d.ts +1 -1
  25. package/dist/components/NSBoxBaseLayoutRecursive.d.ts +1 -1
  26. package/dist/components/NSBoxBoolean.d.ts +1 -1
  27. package/dist/components/NSBoxBoolean.module.css +73 -73
  28. package/dist/components/NSBoxBooleans.d.ts +1 -1
  29. package/dist/components/NSBoxColor.d.ts +1 -1
  30. package/dist/components/NSBoxCombo.d.ts +1 -1
  31. package/dist/components/NSBoxDate.d.ts +1 -1
  32. package/dist/components/NSBoxDate.module.css +4 -4
  33. package/dist/components/NSBoxDateRange.d.ts +1 -1
  34. package/dist/components/NSBoxDateRangeBase.d.ts +1 -1
  35. package/dist/components/NSBoxDateRangeBase.module.css +73 -73
  36. package/dist/components/NSBoxDateTime.d.ts +1 -1
  37. package/dist/components/NSBoxDateTime.module.css +4 -4
  38. package/dist/components/NSBoxDateTimeRange.d.ts +1 -1
  39. package/dist/components/NSBoxDouble.d.ts +1 -1
  40. package/dist/components/NSBoxDuration.d.ts +1 -1
  41. package/dist/components/NSBoxDuration.module.css +4 -4
  42. package/dist/components/NSBoxDynamic.d.ts +1 -1
  43. package/dist/components/NSBoxDynamics.d.ts +1 -1
  44. package/dist/components/NSBoxEmail.d.ts +1 -1
  45. package/dist/components/NSBoxEntity.d.ts +1 -1
  46. package/dist/components/NSBoxEntity.js.map +1 -1
  47. package/dist/components/NSBoxEnum.d.ts +1 -1
  48. package/dist/components/NSBoxFile.d.ts +1 -1
  49. package/dist/components/NSBoxFile.module.css +10 -10
  50. package/dist/components/NSBoxFilePath.d.ts +1 -1
  51. package/dist/components/NSBoxFont.d.ts +1 -1
  52. package/dist/components/NSBoxIPV4.d.ts +1 -1
  53. package/dist/components/NSBoxIPV4Range.d.ts +1 -1
  54. package/dist/components/NSBoxIPV6.d.ts +1 -1
  55. package/dist/components/NSBoxIPV6Range.d.ts +1 -1
  56. package/dist/components/NSBoxInteger.d.ts +1 -1
  57. package/dist/components/NSBoxInteger.module.css +16 -16
  58. package/dist/components/NSBoxMoney.d.ts +1 -1
  59. package/dist/components/NSBoxOptions.d.ts +1 -1
  60. package/dist/components/NSBoxOptions.module.css +53 -53
  61. package/dist/components/NSBoxPhone.d.ts +1 -1
  62. package/dist/components/NSBoxPhone.module.css +35 -35
  63. package/dist/components/NSBoxRadio.d.ts +1 -1
  64. package/dist/components/NSBoxRadio.module.css +33 -33
  65. package/dist/components/NSBoxSchemaBase.d.ts +1 -1
  66. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  67. package/dist/components/NSBoxSchemaVariable.d.ts +1 -1
  68. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  69. package/dist/components/NSBoxSearch.d.ts +1 -1
  70. package/dist/components/NSBoxSensitive.d.ts +1 -1
  71. package/dist/components/NSBoxString.d.ts +1 -1
  72. package/dist/components/NSBoxTextArea.d.ts +1 -1
  73. package/dist/components/NSBoxTextArea.module.css +12 -12
  74. package/dist/components/NSBoxTime.d.ts +1 -1
  75. package/dist/components/NSBoxTime.module.css +4 -4
  76. package/dist/components/NSBoxTimeRange.d.ts +1 -1
  77. package/dist/components/NSBoxTimeZone.d.ts +1 -1
  78. package/dist/components/NSBoxURL.d.ts +1 -1
  79. package/dist/components/NSBoxVersion.d.ts +1 -1
  80. package/dist/components/NSButton.module.css +57 -57
  81. package/dist/components/NSButtonBlue.d.ts +1 -1
  82. package/dist/components/NSButtonBlue.module.css +4 -4
  83. package/dist/components/NSButtonGreen.d.ts +1 -1
  84. package/dist/components/NSButtonGreen.module.css +4 -4
  85. package/dist/components/NSButtonRed.d.ts +1 -1
  86. package/dist/components/NSButtonRed.module.css +4 -4
  87. package/dist/components/NSCard.d.ts +1 -1
  88. package/dist/components/NSCard.module.css +113 -113
  89. package/dist/components/NSCardScreenshot.d.ts +1 -1
  90. package/dist/components/NSCardScreenshot.module.css +41 -41
  91. package/dist/components/NSChartBar.d.ts +1 -1
  92. package/dist/components/NSChartDoughnut.d.ts +1 -1
  93. package/dist/components/NSChartLine.d.ts +1 -1
  94. package/dist/components/NSChartPie.d.ts +1 -1
  95. package/dist/components/NSChartRange.d.ts +1 -1
  96. package/dist/components/NSColumn.d.ts +1 -1
  97. package/dist/components/NSColumn.module.css +16 -16
  98. package/dist/components/NSCopy.d.ts +1 -1
  99. package/dist/components/NSCopyBox.d.ts +1 -1
  100. package/dist/components/NSCopyBox.module.css +39 -39
  101. package/dist/components/NSDialog.d.ts +1 -1
  102. package/dist/components/NSDialog.module.css +105 -105
  103. package/dist/components/NSDialogBox.d.ts +1 -1
  104. package/dist/components/NSDialogBoxDate.d.ts +1 -1
  105. package/dist/components/NSDialogBoxDateTime.d.ts +1 -1
  106. package/dist/components/NSDialogBoxPhone.d.ts +1 -1
  107. package/dist/components/NSDialogBoxString.d.ts +1 -1
  108. package/dist/components/NSDialogDelete.d.ts +1 -1
  109. package/dist/components/NSDialogInfo.d.ts +1 -1
  110. package/dist/components/NSDialogPageSelection.d.ts +2 -2
  111. package/dist/components/NSDialogPageSelection.module.css +103 -103
  112. package/dist/components/NSDownTimer.d.ts +1 -1
  113. package/dist/components/NSDownTimer.module.css +55 -55
  114. package/dist/components/NSDownload.d.ts +1 -1
  115. package/dist/components/NSDownload.module.css +46 -46
  116. package/dist/components/NSElectronicCard.d.ts +1 -1
  117. package/dist/components/NSElectronicCard.module.css +60 -60
  118. package/dist/components/NSEntityCardBackground.d.ts +1 -1
  119. package/dist/components/NSEntityCardBackground.module.css +27 -27
  120. package/dist/components/NSFilterBox.d.ts +2 -2
  121. package/dist/components/NSFilterBox.module.css +27 -27
  122. package/dist/components/NSFilterBoxItems.d.ts +1 -1
  123. package/dist/components/NSFilterBoxItems.module.css +15 -15
  124. package/dist/components/NSFilterItem.d.ts +1 -1
  125. package/dist/components/NSFilterItem.module.css +24 -24
  126. package/dist/components/NSFooter.d.ts +1 -1
  127. package/dist/components/NSFooter.module.css +140 -140
  128. package/dist/components/NSGauge.d.ts +1 -1
  129. package/dist/components/NSGauge.module.css +67 -67
  130. package/dist/components/NSGaugeDate.d.ts +1 -1
  131. package/dist/components/NSGaugeDate.module.css +57 -57
  132. package/dist/components/NSGaugeNumber.d.ts +1 -1
  133. package/dist/components/NSGaugeNumber.module.css +66 -66
  134. package/dist/components/NSHeader.d.ts +1 -1
  135. package/dist/components/NSHeader.module.css +316 -316
  136. package/dist/components/NSHeaderScreenshot.d.ts +1 -1
  137. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  138. package/dist/components/NSID.d.ts +1 -1
  139. package/dist/components/NSInfo.d.ts +1 -1
  140. package/dist/components/NSLabel.d.ts +1 -1
  141. package/dist/components/NSLabel.module.css +25 -25
  142. package/dist/components/NSLabelErrorNotifier.d.ts +1 -1
  143. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  144. package/dist/components/NSLabelSensitive.d.ts +1 -1
  145. package/dist/components/NSLabelSensitive.module.css +9 -9
  146. package/dist/components/NSLayout.d.ts +1 -1
  147. package/dist/components/NSLayout.module.css +22 -22
  148. package/dist/components/NSLine.d.ts +1 -1
  149. package/dist/components/NSLine.module.css +15 -15
  150. package/dist/components/NSLineText.d.ts +1 -1
  151. package/dist/components/NSLineText.module.css +38 -38
  152. package/dist/components/NSLink.d.ts +1 -1
  153. package/dist/components/NSLink.module.css +36 -36
  154. package/dist/components/NSLinkBlue.d.ts +1 -1
  155. package/dist/components/NSLinkGreen.d.ts +1 -1
  156. package/dist/components/NSLinkRed.d.ts +1 -1
  157. package/dist/components/NSListGrouped.d.ts +1 -1
  158. package/dist/components/NSListGrouped.module.css +69 -69
  159. package/dist/components/NSListProduct.d.ts +1 -1
  160. package/dist/components/NSLoading.d.ts +1 -1
  161. package/dist/components/NSLoading.module.css +10 -10
  162. package/dist/components/NSMegaMenu.d.ts +1 -1
  163. package/dist/components/NSMegaMenu.module.css +133 -133
  164. package/dist/components/NSMenuAction.d.ts +1 -1
  165. package/dist/components/NSMenuAction.module.css +88 -88
  166. package/dist/components/NSMenuButton.d.ts +1 -1
  167. package/dist/components/NSMenuButton.module.css +44 -44
  168. package/dist/components/NSNoData.d.ts +1 -1
  169. package/dist/components/NSNoData.module.css +11 -11
  170. package/dist/components/NSPagination.d.ts +1 -1
  171. package/dist/components/NSPagination.module.css +87 -87
  172. package/dist/components/NSPanel.d.ts +1 -1
  173. package/dist/components/NSPanel.module.css +28 -28
  174. package/dist/components/NSPanelAccordion.d.ts +1 -1
  175. package/dist/components/NSPanelAccordion.module.css +4 -4
  176. package/dist/components/NSProductSearch.d.ts +1 -1
  177. package/dist/components/NSProductSearch.module.css +73 -73
  178. package/dist/components/NSProgressBar.d.ts +1 -1
  179. package/dist/components/NSProgressBar.module.css +38 -38
  180. package/dist/components/NSRange.d.ts +1 -1
  181. package/dist/components/NSRange.module.css +66 -66
  182. package/dist/components/NSReorderDialog.d.ts +1 -1
  183. package/dist/components/NSReorderDialog.module.css +49 -49
  184. package/dist/components/NSRepeater.d.ts +1 -1
  185. package/dist/components/NSRepeaterNSBoxSchemaVariable.d.ts +1 -1
  186. package/dist/components/NSRepeaterNSTag.d.ts +1 -1
  187. package/dist/components/NSRow.d.ts +1 -1
  188. package/dist/components/NSRow.module.css +17 -17
  189. package/dist/components/NSSection.d.ts +1 -1
  190. package/dist/components/NSSection.module.css +4 -4
  191. package/dist/components/NSSectionCards.d.ts +1 -1
  192. package/dist/components/NSSectionCards.module.css +38 -38
  193. package/dist/components/NSSectionTiles.d.ts +1 -1
  194. package/dist/components/NSSectionTiles.module.css +10 -10
  195. package/dist/components/NSSectionTitle.d.ts +1 -1
  196. package/dist/components/NSSortDialog.d.ts +1 -1
  197. package/dist/components/NSSpace.d.ts +1 -1
  198. package/dist/components/NSSplitter.d.ts +1 -1
  199. package/dist/components/NSSplitter.module.css +59 -59
  200. package/dist/components/NSTabPage.d.ts +1 -1
  201. package/dist/components/NSTabPage.module.css +59 -59
  202. package/dist/components/NSTable.d.ts +1 -1
  203. package/dist/components/NSTable.js +23 -23
  204. package/dist/components/NSTable.module.css +368 -372
  205. package/dist/components/NSTableChart.d.ts +1 -1
  206. package/dist/components/NSTableChart.module.css +119 -119
  207. package/dist/components/NSTag.d.ts +1 -1
  208. package/dist/components/NSTile.d.ts +1 -1
  209. package/dist/components/NSTile.module.css +76 -76
  210. package/dist/components/NSTimelineMonthly.d.ts +1 -1
  211. package/dist/components/NSTimelineMonthly.module.css +71 -71
  212. package/dist/components/NSTitle.d.ts +1 -1
  213. package/dist/components/NSTitle.module.css +15 -15
  214. package/dist/pages/NSImplementing.d.ts +1 -1
  215. package/dist/pages/NSImplementing.module.css +35 -35
  216. package/dist/pages/NSNotFoundPage.d.ts +1 -1
  217. package/dist/pages/NSNotFoundPage.module.css +18 -18
  218. package/dist/pages/NSUpdating.d.ts +1 -1
  219. package/dist/pages/NSUpdating.module.css +35 -35
  220. package/package.json +86 -86
  221. package/public/index.html +38 -38
  222. package/src/App.css +33 -33
  223. package/src/App.tsx +167 -167
  224. package/src/BrowserDetector.ts +109 -109
  225. package/src/Color.tsx +10 -10
  226. package/src/CopyToClipboard.ts +6 -6
  227. package/src/EncryptionOperation.ts +98 -98
  228. package/src/KeyOperation.ts +109 -109
  229. package/src/LinkOperation.ts +101 -101
  230. package/src/NSBoxBuilder.tsx +922 -922
  231. package/src/ProductCacheService.ts +15 -15
  232. package/src/Validator.ts +199 -199
  233. package/src/components/INSBox.tsx +7 -7
  234. package/src/components/NSBanner.module.css +47 -47
  235. package/src/components/NSBanner.tsx +80 -80
  236. package/src/components/NSBarAction.module.css +91 -91
  237. package/src/components/NSBarAction.tsx +95 -95
  238. package/src/components/NSBarAlert.module.css +79 -79
  239. package/src/components/NSBarAlert.tsx +35 -35
  240. package/src/components/NSBarNotification.module.css +34 -34
  241. package/src/components/NSBarNotification.tsx +89 -89
  242. package/src/components/NSBarTitle.module.css +9 -9
  243. package/src/components/NSBarTitle.tsx +23 -23
  244. package/src/components/NSBox.module.css +87 -87
  245. package/src/components/NSBox.tsx +19 -19
  246. package/src/components/NSBoxBaseCombo.module.css +22 -6
  247. package/src/components/NSBoxBaseCombo.tsx +487 -488
  248. package/src/components/NSBoxBaseLayout.tsx +163 -163
  249. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  250. package/src/components/NSBoxBoolean.module.css +73 -73
  251. package/src/components/NSBoxBoolean.tsx +152 -152
  252. package/src/components/NSBoxBooleans.tsx +181 -181
  253. package/src/components/NSBoxColor.tsx +107 -107
  254. package/src/components/NSBoxCombo.tsx +95 -95
  255. package/src/components/NSBoxDate.module.css +4 -4
  256. package/src/components/NSBoxDate.tsx +144 -144
  257. package/src/components/NSBoxDateRange.tsx +88 -88
  258. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  259. package/src/components/NSBoxDateRangeBase.tsx +236 -236
  260. package/src/components/NSBoxDateTime.module.css +4 -4
  261. package/src/components/NSBoxDateTime.tsx +136 -136
  262. package/src/components/NSBoxDateTimeRange.tsx +66 -66
  263. package/src/components/NSBoxDouble.tsx +110 -110
  264. package/src/components/NSBoxDuration.module.css +4 -4
  265. package/src/components/NSBoxDuration.tsx +107 -107
  266. package/src/components/NSBoxDynamic.tsx +73 -73
  267. package/src/components/NSBoxDynamics.tsx +68 -68
  268. package/src/components/NSBoxEmail.tsx +117 -117
  269. package/src/components/NSBoxEntity.tsx +180 -181
  270. package/src/components/NSBoxEnum.tsx +113 -113
  271. package/src/components/NSBoxFile.module.css +10 -10
  272. package/src/components/NSBoxFile.tsx +106 -106
  273. package/src/components/NSBoxFilePath.tsx +106 -106
  274. package/src/components/NSBoxFont.tsx +107 -107
  275. package/src/components/NSBoxIPV4.tsx +107 -107
  276. package/src/components/NSBoxIPV4Range.tsx +107 -107
  277. package/src/components/NSBoxIPV6.tsx +104 -104
  278. package/src/components/NSBoxIPV6Range.tsx +107 -107
  279. package/src/components/NSBoxInteger.module.css +16 -16
  280. package/src/components/NSBoxInteger.tsx +126 -126
  281. package/src/components/NSBoxMoney.tsx +115 -115
  282. package/src/components/NSBoxOptions.module.css +53 -53
  283. package/src/components/NSBoxOptions.tsx +182 -182
  284. package/src/components/NSBoxPhone.module.css +35 -35
  285. package/src/components/NSBoxPhone.tsx +120 -120
  286. package/src/components/NSBoxRadio.module.css +33 -33
  287. package/src/components/NSBoxRadio.tsx +104 -104
  288. package/src/components/NSBoxSchemaBase.module.css +17 -17
  289. package/src/components/NSBoxSchemaBase.tsx +562 -562
  290. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  291. package/src/components/NSBoxSchemaVariable.tsx +263 -263
  292. package/src/components/NSBoxSearch.tsx +112 -112
  293. package/src/components/NSBoxSensitive.tsx +133 -133
  294. package/src/components/NSBoxString.tsx +106 -106
  295. package/src/components/NSBoxTextArea.module.css +12 -12
  296. package/src/components/NSBoxTextArea.tsx +136 -136
  297. package/src/components/NSBoxTime.module.css +4 -4
  298. package/src/components/NSBoxTime.tsx +106 -106
  299. package/src/components/NSBoxTimeRange.tsx +220 -220
  300. package/src/components/NSBoxTimeZone.tsx +122 -122
  301. package/src/components/NSBoxURL.tsx +117 -117
  302. package/src/components/NSBoxVersion.tsx +107 -107
  303. package/src/components/NSButton.module.css +57 -57
  304. package/src/components/NSButton.tsx +74 -74
  305. package/src/components/NSButtonBlue.module.css +4 -4
  306. package/src/components/NSButtonBlue.tsx +29 -29
  307. package/src/components/NSButtonGreen.module.css +4 -4
  308. package/src/components/NSButtonGreen.tsx +29 -29
  309. package/src/components/NSButtonRed.module.css +4 -4
  310. package/src/components/NSButtonRed.tsx +29 -29
  311. package/src/components/NSCard.module.css +113 -113
  312. package/src/components/NSCard.tsx +67 -67
  313. package/src/components/NSCardScreenshot.module.css +41 -41
  314. package/src/components/NSCardScreenshot.tsx +31 -31
  315. package/src/components/NSChartBar.tsx +134 -134
  316. package/src/components/NSChartDoughnut.tsx +114 -114
  317. package/src/components/NSChartLine.tsx +110 -110
  318. package/src/components/NSChartPie.tsx +105 -105
  319. package/src/components/NSChartRange.tsx +14 -14
  320. package/src/components/NSColumn.module.css +16 -16
  321. package/src/components/NSColumn.tsx +24 -24
  322. package/src/components/NSCopy.tsx +95 -95
  323. package/src/components/NSCopyBox.module.css +39 -39
  324. package/src/components/NSCopyBox.tsx +53 -53
  325. package/src/components/NSDialog.module.css +105 -105
  326. package/src/components/NSDialog.tsx +72 -72
  327. package/src/components/NSDialogBox.tsx +38 -38
  328. package/src/components/NSDialogBoxDate.tsx +28 -28
  329. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  330. package/src/components/NSDialogBoxPhone.tsx +28 -28
  331. package/src/components/NSDialogBoxString.tsx +28 -28
  332. package/src/components/NSDialogDelete.tsx +36 -36
  333. package/src/components/NSDialogInfo.tsx +49 -49
  334. package/src/components/NSDialogPageSelection.module.css +103 -103
  335. package/src/components/NSDialogPageSelection.tsx +233 -233
  336. package/src/components/NSDownTimer.module.css +55 -55
  337. package/src/components/NSDownTimer.tsx +91 -91
  338. package/src/components/NSDownload.module.css +46 -46
  339. package/src/components/NSDownload.tsx +69 -69
  340. package/src/components/NSElectronicCard.module.css +60 -60
  341. package/src/components/NSElectronicCard.tsx +46 -46
  342. package/src/components/NSEntityCardBackground.module.css +27 -27
  343. package/src/components/NSEntityCardBackground.tsx +36 -36
  344. package/src/components/NSFilterBox.module.css +27 -27
  345. package/src/components/NSFilterBox.tsx +477 -477
  346. package/src/components/NSFilterBoxItems.module.css +15 -15
  347. package/src/components/NSFilterBoxItems.tsx +52 -52
  348. package/src/components/NSFilterItem.module.css +24 -24
  349. package/src/components/NSFilterItem.tsx +27 -27
  350. package/src/components/NSFooter.module.css +140 -140
  351. package/src/components/NSFooter.tsx +321 -321
  352. package/src/components/NSGauge.module.css +67 -67
  353. package/src/components/NSGauge.tsx +52 -52
  354. package/src/components/NSGaugeDate.module.css +57 -57
  355. package/src/components/NSGaugeDate.tsx +125 -125
  356. package/src/components/NSGaugeNumber.module.css +66 -66
  357. package/src/components/NSGaugeNumber.tsx +93 -93
  358. package/src/components/NSHeader.module.css +316 -316
  359. package/src/components/NSHeader.tsx +337 -337
  360. package/src/components/NSHeaderScreenshot.module.css +35 -35
  361. package/src/components/NSHeaderScreenshot.tsx +39 -39
  362. package/src/components/NSID.tsx +190 -190
  363. package/src/components/NSInfo.tsx +50 -50
  364. package/src/components/NSLabel.module.css +25 -25
  365. package/src/components/NSLabel.tsx +47 -47
  366. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  367. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  368. package/src/components/NSLabelSensitive.module.css +9 -9
  369. package/src/components/NSLabelSensitive.tsx +101 -101
  370. package/src/components/NSLayout.module.css +22 -22
  371. package/src/components/NSLayout.tsx +143 -143
  372. package/src/components/NSLine.module.css +15 -15
  373. package/src/components/NSLine.tsx +13 -13
  374. package/src/components/NSLineText.module.css +38 -38
  375. package/src/components/NSLineText.tsx +17 -17
  376. package/src/components/NSLink.module.css +36 -36
  377. package/src/components/NSLink.tsx +26 -26
  378. package/src/components/NSLinkBlue.tsx +22 -22
  379. package/src/components/NSLinkGreen.tsx +13 -13
  380. package/src/components/NSLinkRed.tsx +13 -13
  381. package/src/components/NSListGrouped.module.css +69 -69
  382. package/src/components/NSListGrouped.tsx +106 -106
  383. package/src/components/NSListProduct.tsx +78 -78
  384. package/src/components/NSLoading.module.css +10 -10
  385. package/src/components/NSLoading.tsx +43 -43
  386. package/src/components/NSMegaMenu.module.css +133 -133
  387. package/src/components/NSMegaMenu.tsx +188 -188
  388. package/src/components/NSMenuAction.module.css +88 -88
  389. package/src/components/NSMenuAction.tsx +106 -106
  390. package/src/components/NSMenuButton.module.css +44 -44
  391. package/src/components/NSMenuButton.tsx +198 -198
  392. package/src/components/NSNoData.module.css +11 -11
  393. package/src/components/NSNoData.tsx +24 -24
  394. package/src/components/NSPagination.module.css +87 -87
  395. package/src/components/NSPagination.tsx +183 -183
  396. package/src/components/NSPanel.module.css +28 -28
  397. package/src/components/NSPanel.tsx +26 -26
  398. package/src/components/NSPanelAccordion.module.css +4 -4
  399. package/src/components/NSPanelAccordion.tsx +51 -51
  400. package/src/components/NSProductSearch.module.css +73 -73
  401. package/src/components/NSProductSearch.tsx +193 -193
  402. package/src/components/NSProgressBar.module.css +38 -38
  403. package/src/components/NSProgressBar.tsx +29 -29
  404. package/src/components/NSRange.module.css +66 -66
  405. package/src/components/NSRange.tsx +83 -83
  406. package/src/components/NSReorderDialog.module.css +49 -49
  407. package/src/components/NSReorderDialog.tsx +184 -184
  408. package/src/components/NSRepeater.tsx +328 -328
  409. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +94 -94
  410. package/src/components/NSRepeaterNSTag.tsx +86 -86
  411. package/src/components/NSRow.module.css +17 -17
  412. package/src/components/NSRow.tsx +24 -24
  413. package/src/components/NSSection.module.css +4 -4
  414. package/src/components/NSSection.tsx +26 -26
  415. package/src/components/NSSectionCards.module.css +38 -38
  416. package/src/components/NSSectionCards.tsx +51 -51
  417. package/src/components/NSSectionTiles.module.css +10 -10
  418. package/src/components/NSSectionTiles.tsx +25 -25
  419. package/src/components/NSSectionTitle.tsx +19 -19
  420. package/src/components/NSSortDialog.tsx +124 -124
  421. package/src/components/NSSpace.tsx +28 -28
  422. package/src/components/NSSplitter.module.css +59 -59
  423. package/src/components/NSSplitter.tsx +211 -211
  424. package/src/components/NSTabPage.module.css +59 -59
  425. package/src/components/NSTabPage.tsx +122 -122
  426. package/src/components/NSTable.module.css +368 -372
  427. package/src/components/NSTable.tsx +1443 -1443
  428. package/src/components/NSTableChart.module.css +119 -119
  429. package/src/components/NSTableChart.tsx +732 -732
  430. package/src/components/NSTag.tsx +74 -74
  431. package/src/components/NSTile.module.css +76 -76
  432. package/src/components/NSTile.tsx +27 -27
  433. package/src/components/NSTimelineMonthly.module.css +71 -71
  434. package/src/components/NSTimelineMonthly.tsx +44 -44
  435. package/src/components/NSTitle.module.css +15 -15
  436. package/src/components/NSTitle.tsx +19 -19
  437. package/src/css.d.ts +13 -13
  438. package/src/formatter/BackColorFormatter.tsx +23 -23
  439. package/src/formatter/BaseColumnFormatter.ts +86 -86
  440. package/src/formatter/BaseURLImageFormatter.tsx +37 -37
  441. package/src/formatter/BooleanFormatter.ts +26 -26
  442. package/src/formatter/BytesFormatter.tsx +19 -19
  443. package/src/formatter/DateFormatter.ts +26 -26
  444. package/src/formatter/DateTimeFormatter.ts +26 -26
  445. package/src/formatter/DurationFormatter.ts +17 -17
  446. package/src/formatter/EmailFormatter.tsx +25 -25
  447. package/src/formatter/EnumFormatter.ts +17 -17
  448. package/src/formatter/FloatFormatter.ts +27 -27
  449. package/src/formatter/ForeColorFormatter.tsx +24 -24
  450. package/src/formatter/IDFormatter.tsx +57 -57
  451. package/src/formatter/IPFormatter.ts +39 -39
  452. package/src/formatter/IntegerFormatter.ts +27 -27
  453. package/src/formatter/JsonFormatter.tsx +75 -75
  454. package/src/formatter/MoneyFormatter.ts +39 -39
  455. package/src/formatter/PercentFormatter.tsx +43 -43
  456. package/src/formatter/PhoneFormatter.tsx +25 -25
  457. package/src/formatter/SensitiveFormatter.tsx +40 -40
  458. package/src/formatter/StringFormatter.tsx +49 -49
  459. package/src/formatter/TimeFormatter.ts +25 -25
  460. package/src/formatter/URLFormatter.tsx +28 -28
  461. package/src/formatter/UnknowFormatter.ts +22 -22
  462. package/src/index.tsx +7 -7
  463. package/src/main.ts +263 -263
  464. package/src/pages/NSImplementing.module.css +35 -35
  465. package/src/pages/NSImplementing.tsx +32 -32
  466. package/src/pages/NSNotFoundPage.module.css +18 -18
  467. package/src/pages/NSNotFoundPage.tsx +14 -14
  468. package/src/pages/NSUpdating.module.css +35 -35
  469. package/src/pages/NSUpdating.tsx +32 -32
  470. package/src/props/IBackgroundProps.ts +5 -5
  471. package/src/props/IBaseComponentProps.ts +8 -8
  472. package/src/props/IHeaderIconProps.ts +10 -10
  473. package/src/props/IHeaderLeftProps.ts +6 -6
  474. package/src/props/IHeaderRightProps.ts +8 -8
  475. package/src/props/IImageProps.ts +4 -4
  476. package/src/props/ILinkProps.ts +4 -4
  477. package/src/props/IValidationNumberProps.ts +4 -4
  478. package/src/props/IValidationPrecisionProps.ts +3 -3
  479. package/src/props/IValidationProps.ts +9 -9
  480. package/src/props/IValidationRegexProps.ts +4 -4
  481. package/src/props/IValidationStringProps.ts +4 -4
  482. package/src/routing/NSNotifier.ts +114 -114
  483. package/src/routing/NSRouterMaker.tsx +28 -28
  484. package/tsconfig.json +43 -43
  485. package/dist/components/NSListMenu.d.ts +0 -9
  486. package/dist/components/NSListMenu.js +0 -135
  487. package/dist/components/NSListMenu.js.map +0 -1
@@ -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
  }
@@ -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
  }
@@ -1,102 +1,102 @@
1
- import { NavigateFunction, NavigateOptions } from "react-router-dom";
2
- import { KeyOperation } from "./KeyOperation";
3
-
4
- export enum LinkTarget
5
- {
6
- Self = "_self",
7
- Blank = "_blank",
8
- Window = "_window",
9
- }
10
-
11
- export class LinkOperation
12
- {
13
- private static navigate?: NavigateFunction;
14
-
15
- static setNavigate(navigate: NavigateFunction): void
16
- {
17
- LinkOperation.navigate = navigate;
18
- }
19
-
20
- private static resolveTarget(target?: LinkTarget): LinkTarget
21
- {
22
- if (target)
23
- return target;
24
- if (KeyOperation.isShiftPressed())
25
- return LinkTarget.Window;
26
- if (KeyOperation.isControlPressed() || KeyOperation.isMetaPressed())
27
- return LinkTarget.Blank;
28
- return LinkTarget.Self;
29
- }
30
-
31
- private static isExternal(url: string): boolean
32
- {
33
- return /^[a-z][a-z0-9+.-]*:/i.test(url) || url.startsWith("//");
34
- }
35
-
36
- static open(url: string, target?: LinkTarget, options?: NavigateOptions): void
37
- {
38
- const resolved = LinkOperation.resolveTarget(target);
39
- if (resolved === LinkTarget.Blank)
40
- {
41
- LinkOperation.openBlank(url);
42
- return;
43
- }
44
- if (resolved === LinkTarget.Window)
45
- {
46
- LinkOperation.openWindow(url);
47
- return;
48
- }
49
- if (LinkOperation.isExternal(url) || !LinkOperation.navigate)
50
- {
51
- window.location.href = url;
52
- return;
53
- }
54
- LinkOperation.navigate(url, options);
55
- }
56
-
57
- static openBlank(url: string): void
58
- {
59
- if (typeof window === "undefined")
60
- return;
61
- window.open(url, "_blank", "noopener,noreferrer");
62
- }
63
-
64
- static openWindow(url: string): void
65
- {
66
- if (typeof window === "undefined")
67
- return;
68
- window.open(url, "_blank", "noopener,noreferrer,popup");
69
- }
70
-
71
- static openSelf(url: string, options?: NavigateOptions): void
72
- {
73
- LinkOperation.open(url, LinkTarget.Self, options);
74
- }
75
-
76
- static replace(url: string, options?: NavigateOptions): void
77
- {
78
- LinkOperation.open(url, LinkTarget.Self, { ...options, replace: true });
79
- }
80
-
81
- static back(): void
82
- {
83
- if (LinkOperation.navigate)
84
- LinkOperation.navigate(-1);
85
- else if (typeof window !== "undefined")
86
- window.history.back();
87
- }
88
-
89
- static forward(): void
90
- {
91
- if (LinkOperation.navigate)
92
- LinkOperation.navigate(1);
93
- else if (typeof window !== "undefined")
94
- window.history.forward();
95
- }
96
-
97
- static reload(): void
98
- {
99
- if (typeof window !== "undefined")
100
- window.location.reload();
101
- }
1
+ import { NavigateFunction, NavigateOptions } from "react-router-dom";
2
+ import { KeyOperation } from "./KeyOperation";
3
+
4
+ export enum LinkTarget
5
+ {
6
+ Self = "_self",
7
+ Blank = "_blank",
8
+ Window = "_window",
9
+ }
10
+
11
+ export class LinkOperation
12
+ {
13
+ private static navigate?: NavigateFunction;
14
+
15
+ static setNavigate(navigate: NavigateFunction): void
16
+ {
17
+ LinkOperation.navigate = navigate;
18
+ }
19
+
20
+ private static resolveTarget(target?: LinkTarget): LinkTarget
21
+ {
22
+ if (target)
23
+ return target;
24
+ if (KeyOperation.isShiftPressed())
25
+ return LinkTarget.Window;
26
+ if (KeyOperation.isControlPressed() || KeyOperation.isMetaPressed())
27
+ return LinkTarget.Blank;
28
+ return LinkTarget.Self;
29
+ }
30
+
31
+ private static isExternal(url: string): boolean
32
+ {
33
+ return /^[a-z][a-z0-9+.-]*:/i.test(url) || url.startsWith("//");
34
+ }
35
+
36
+ static open(url: string, target?: LinkTarget, options?: NavigateOptions): void
37
+ {
38
+ const resolved = LinkOperation.resolveTarget(target);
39
+ if (resolved === LinkTarget.Blank)
40
+ {
41
+ LinkOperation.openBlank(url);
42
+ return;
43
+ }
44
+ if (resolved === LinkTarget.Window)
45
+ {
46
+ LinkOperation.openWindow(url);
47
+ return;
48
+ }
49
+ if (LinkOperation.isExternal(url) || !LinkOperation.navigate)
50
+ {
51
+ window.location.href = url;
52
+ return;
53
+ }
54
+ LinkOperation.navigate(url, options);
55
+ }
56
+
57
+ static openBlank(url: string): void
58
+ {
59
+ if (typeof window === "undefined")
60
+ return;
61
+ window.open(url, "_blank", "noopener,noreferrer");
62
+ }
63
+
64
+ static openWindow(url: string): void
65
+ {
66
+ if (typeof window === "undefined")
67
+ return;
68
+ window.open(url, "_blank", "noopener,noreferrer,popup");
69
+ }
70
+
71
+ static openSelf(url: string, options?: NavigateOptions): void
72
+ {
73
+ LinkOperation.open(url, LinkTarget.Self, options);
74
+ }
75
+
76
+ static replace(url: string, options?: NavigateOptions): void
77
+ {
78
+ LinkOperation.open(url, LinkTarget.Self, { ...options, replace: true });
79
+ }
80
+
81
+ static back(): void
82
+ {
83
+ if (LinkOperation.navigate)
84
+ LinkOperation.navigate(-1);
85
+ else if (typeof window !== "undefined")
86
+ window.history.back();
87
+ }
88
+
89
+ static forward(): void
90
+ {
91
+ if (LinkOperation.navigate)
92
+ LinkOperation.navigate(1);
93
+ else if (typeof window !== "undefined")
94
+ window.history.forward();
95
+ }
96
+
97
+ static reload(): void
98
+ {
99
+ if (typeof window !== "undefined")
100
+ window.location.reload();
101
+ }
102
102
  }