namirasoft-site-react 1.5.23 → 1.5.25

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