namirasoft-site-react 1.5.22 → 1.5.24

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