namirasoft-site-react 1.5.13 → 1.5.15

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