@nice2dev/ui-tools 1.1.5 → 1.1.7

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 (80) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/access-control.d.ts +0 -1
  3. package/dist/accessibility-i18n.d.ts +0 -1
  4. package/dist/ai-assistant.d.ts +0 -1
  5. package/dist/ai-playgrounds.d.ts +0 -1
  6. package/dist/alerting-incidents.d.ts +0 -1
  7. package/dist/api-designer.d.ts +0 -1
  8. package/dist/api-testing.d.ts +0 -1
  9. package/dist/apm-profiling.d.ts +0 -1
  10. package/dist/artifacts.d.ts +0 -1
  11. package/dist/audit-compliance.d.ts +0 -1
  12. package/dist/certificates.d.ts +0 -1
  13. package/dist/chart-builder.d.ts +0 -1
  14. package/dist/cloud-instances.d.ts +0 -1
  15. package/dist/config-management.d.ts +0 -1
  16. package/dist/containers.d.ts +0 -1
  17. package/dist/dashboard-designer.d.ts +0 -1
  18. package/dist/data-management.d.ts +0 -1
  19. package/dist/data-pipeline.d.ts +0 -1
  20. package/dist/data-warehouse.d.ts +0 -1
  21. package/dist/dataset-management.d.ts +0 -1
  22. package/dist/db-adapters.d.ts +0 -1
  23. package/dist/db-admin.d.ts +0 -1
  24. package/dist/db-designer.d.ts +0 -1
  25. package/dist/debugger.d.ts +0 -1
  26. package/dist/device-management.d.ts +0 -1
  27. package/dist/distributed-tracing.d.ts +0 -1
  28. package/dist/dns-management.d.ts +0 -1
  29. package/dist/download-manager.d.ts +0 -1
  30. package/dist/download-torrent.d.ts +0 -1
  31. package/dist/edge-computing.d.ts +0 -1
  32. package/dist/education.d.ts +0 -1
  33. package/dist/email-template.d.ts +0 -1
  34. package/dist/erp-enterprise.d.ts +0 -1
  35. package/dist/form-builder.d.ts +0 -1
  36. package/dist/game-engine-advanced.d.ts +0 -1
  37. package/dist/git.d.ts +0 -1
  38. package/dist/hardware-integration.d.ts +0 -1
  39. package/dist/iac.d.ts +0 -1
  40. package/dist/icon-tools.d.ts +0 -1
  41. package/dist/ide.d.ts +0 -1
  42. package/dist/index.cjs +0 -1
  43. package/dist/index.d.ts +0 -1
  44. package/dist/index.mjs +0 -1
  45. package/dist/integration-platform.d.ts +0 -1
  46. package/dist/kubernetes.d.ts +0 -1
  47. package/dist/life-management.d.ts +0 -1
  48. package/dist/log-management.d.ts +0 -1
  49. package/dist/mathematics.d.ts +0 -1
  50. package/dist/message-queue.d.ts +0 -1
  51. package/dist/metrics-dashboard.d.ts +0 -1
  52. package/dist/mobile-components.d.ts +0 -1
  53. package/dist/model-deployment.d.ts +0 -1
  54. package/dist/model-registry.d.ts +0 -1
  55. package/dist/model-training.d.ts +0 -1
  56. package/dist/network-config.d.ts +0 -1
  57. package/dist/network-monitoring.d.ts +0 -1
  58. package/dist/pdf-tools.d.ts +0 -1
  59. package/dist/pipelines.d.ts +0 -1
  60. package/dist/remote-desktop.d.ts +0 -1
  61. package/dist/report-designer.d.ts +0 -1
  62. package/dist/scada-industrial.d.ts +0 -1
  63. package/dist/scientific-research.d.ts +0 -1
  64. package/dist/secret-management.d.ts +0 -1
  65. package/dist/security-scanning.d.ts +0 -1
  66. package/dist/self-service-analytics.d.ts +0 -1
  67. package/dist/sensor-dashboard.d.ts +0 -1
  68. package/dist/server-management.d.ts +0 -1
  69. package/dist/smart-home.d.ts +0 -1
  70. package/dist/spreadsheet.d.ts +0 -1
  71. package/dist/sql-editor.d.ts +0 -1
  72. package/dist/terminal.d.ts +0 -1
  73. package/dist/testing-qa.d.ts +0 -1
  74. package/dist/torrent-client.d.ts +0 -1
  75. package/dist/traceless.d.ts +0 -1
  76. package/dist/virtual-machines.d.ts +0 -1
  77. package/dist/visual-scripting.d.ts +0 -1
  78. package/dist/word-processor.d.ts +0 -1
  79. package/dist/workspace.d.ts +0 -1
  80. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @nice2dev/ui-tools
2
2
 
3
+ ## 1.1.7
4
+
5
+ ### Patch Changes
6
+
7
+ - Close the three items left open in the 1.1.6 response to OmniVerk.
8
+
9
+ **Every value control works without state in the parent.** The `audit-controllable-state` gate
10
+ counted 87 value props that were required with no `default*`, so the control could not render from a
11
+ manifest without data. It now reports 0 and gates CI at `--max=0`. 48 controls gained `default*` props
12
+ through `useControllableState` (existing `value` + handler call sites behave as before); 33 read-only
13
+ data lists are optional with a stable empty default; 4 props paired with a handler only by name are
14
+ optional; `NiceWhiteboard` and `NiceMetricsDashboard` render an empty state until a session or
15
+ dashboard arrives. Additive API only — nothing renamed or removed.
16
+
17
+ - `NicePivotGrid.fields`, `NiceScheduler.events` and `NiceGitHooks.hooks` are controlled only together
18
+ with their change handler, as `NiceScheduler` already documented for `currentDate`/`view`. A bare
19
+ prop stays an initial value; prop plus handler now always wins (later prop updates used to be
20
+ ignored). `NiceGitHooks.onHookChange` is now called; `onHooksChange` and
21
+ `NiceLocaleManager.onTranslationsChange` are new.
22
+ - `NiceCodeEditor` / `NiceCodeDiffEditor` no longer report a value written from the prop back through
23
+ `onChange`, and call the latest handler rather than the one captured at mount.
24
+ - `NiceHtmlEditor` no longer rewrites its content on every render (React 19 compares the
25
+ `dangerouslySetInnerHTML` object, not its string), which moved the caret; the HTML source and
26
+ Markdown views can be closed again.
27
+ - Selections seeded once from the first item (access manager, automation/scene editors, git diff
28
+ viewer, ribbon, setup wizard) follow data that arrives after mount.
29
+ - `useControllableState`: new `fallbackValue` seed that never triggers the value/default clash warning;
30
+ two functional updates in one tick no longer lose the first; `onChange` is called with one argument
31
+ when there is no meta. `UseControllableStateOptions` is now a union type alias.
32
+
33
+ **`--nice-*` is the source of truth for design tokens.** Controls read only `--nice-*` (9,225 reads in
34
+ 339 files). The unprefixed names (`--color-primary`, `--bg-primary`, `--text-muted`, …) stay declared
35
+ as aliases pointing at the Nice tokens, so reading them works, but setting them no longer repaints Nice
36
+ controls. Apps that relied on that can import `@nice2dev/ui/css/legacy-bg-text-aliases.css` after
37
+ `style.css` (removed in 1.2), or set `--nice-color-primary` and friends directly. 13 tokens that were
38
+ read and never declared (`--color-danger`, `--text-on-primary`, `--color-white`, …) are defined; the
39
+ dark blocks define the canonical names, so `.nice-dark` on `<body>` no longer leaves them on light
40
+ values; `--nice-primary-bg` and `--nice-selected-bg` are a primary tint instead of falling through to
41
+ grey. New gate `audit-token-names`.
42
+
43
+ **Node ESM and `require()`.** `@nice2dev/spatial-core` imports from plain Node ESM (51 relative
44
+ specifiers gained extensions, enforced by `nodenext`), and so does `@nice2dev/ui-buildings`, which
45
+ failed through it. `require()` works for `ui-3d`, `ui-graphics` and `game-engine`. The package-exports
46
+ gate now loads every entry in both module systems.
47
+
48
+ **Hygiene.** Sources are prettier-formatted and CI gates on it; 640 stale `.d.ts` files were removed
49
+ from source trees (never published).
50
+
51
+ ## 1.1.6
52
+
53
+ No changes in this release.
54
+
3
55
  ## 1.1.5
4
56
 
5
57
  No changes in this release.
@@ -723,4 +723,3 @@ export interface SessionAction {
723
723
  }
724
724
  /** Session action type */
725
725
  export type SessionActionType = 'revoke' | 'revoke_all' | 'revoke_all_except_current' | 'extend' | 'trust_device' | 'untrust_device';
726
- //# sourceMappingURL=access-control.d.ts.map
@@ -1014,4 +1014,3 @@ export declare const COMMON_LOCALES: LocaleCode[];
1014
1014
  * RTL locales.
1015
1015
  */
1016
1016
  export declare const RTL_LOCALES: LocaleCode[];
1017
- //# sourceMappingURL=accessibility-i18n.d.ts.map
@@ -260,4 +260,3 @@ export interface GeneratedDoc {
260
260
  column: number;
261
261
  };
262
262
  }
263
- //# sourceMappingURL=ai-assistant.d.ts.map
@@ -839,4 +839,3 @@ export interface DateRange {
839
839
  start: Date;
840
840
  end: Date;
841
841
  }
842
- //# sourceMappingURL=ai-playgrounds.d.ts.map
@@ -555,4 +555,3 @@ export interface AlertTrendPoint {
555
555
  readonly warning: number;
556
556
  readonly info: number;
557
557
  }
558
- //# sourceMappingURL=alerting-incidents.d.ts.map
@@ -1565,4 +1565,3 @@ export interface APIEditorNavigationEvent {
1565
1565
  to: string;
1566
1566
  type: 'reference' | 'definition' | 'usage';
1567
1567
  }
1568
- //# sourceMappingURL=api-designer.d.ts.map
@@ -1143,4 +1143,3 @@ export interface EditorSettings {
1143
1143
  minimap?: boolean;
1144
1144
  lineNumbers?: boolean;
1145
1145
  }
1146
- //# sourceMappingURL=api-testing.d.ts.map
@@ -653,4 +653,3 @@ export interface SloDataPoint {
653
653
  readonly value: number;
654
654
  readonly budgetRemaining: number;
655
655
  }
656
- //# sourceMappingURL=apm-profiling.d.ts.map
@@ -418,4 +418,3 @@ export interface RetentionPreview {
418
418
  totalCount: number;
419
419
  totalSize: number;
420
420
  }
421
- //# sourceMappingURL=artifacts.d.ts.map
@@ -749,4 +749,3 @@ export interface DataSubjectRequest {
749
749
  export type DataSubjectRequestType = 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection';
750
750
  /** DSR status */
751
751
  export type DsrStatus = 'received' | 'verifying' | 'processing' | 'completed' | 'denied' | 'extended';
752
- //# sourceMappingURL=audit-compliance.d.ts.map
@@ -253,4 +253,3 @@ export interface Crl {
253
253
  reason?: string;
254
254
  }>;
255
255
  }
256
- //# sourceMappingURL=certificates.d.ts.map
@@ -1401,4 +1401,3 @@ export interface ResponsiveCondition {
1401
1401
  maxAspectRatio?: number;
1402
1402
  minAspectRatio?: number;
1403
1403
  }
1404
- //# sourceMappingURL=chart-builder.d.ts.map
@@ -166,4 +166,3 @@ export interface CloudInitConfig {
166
166
  /** Gzip compress */
167
167
  gzipCompress: boolean;
168
168
  }
169
- //# sourceMappingURL=cloud-instances.d.ts.map
@@ -347,4 +347,3 @@ export interface SaltGrain {
347
347
  minion: string;
348
348
  grains: Record<string, unknown>;
349
349
  }
350
- //# sourceMappingURL=config-management.d.ts.map
@@ -253,4 +253,3 @@ export interface ContainerHealthCheck {
253
253
  output: string;
254
254
  }>;
255
255
  }
256
- //# sourceMappingURL=containers.d.ts.map
@@ -1235,4 +1235,3 @@ export interface UserSelection {
1235
1235
  type?: 'widget' | 'range' | 'cell';
1236
1236
  timestamp: Date;
1237
1237
  }
1238
- //# sourceMappingURL=dashboard-designer.d.ts.map
@@ -493,4 +493,3 @@ export interface SeedDataSource {
493
493
  readonly generationRules?: readonly GenerationRule[];
494
494
  readonly rowCount?: number;
495
495
  }
496
- //# sourceMappingURL=data-management.d.ts.map
@@ -1102,4 +1102,3 @@ export interface QualityDetails {
1102
1102
  stddev?: number;
1103
1103
  samples?: unknown[];
1104
1104
  }
1105
- //# sourceMappingURL=data-pipeline.d.ts.map
@@ -1094,4 +1094,3 @@ export interface MLflowExperiment {
1094
1094
  lifecycleStage: 'active' | 'deleted';
1095
1095
  lastUpdateTime?: Date;
1096
1096
  }
1097
- //# sourceMappingURL=data-warehouse.d.ts.map
@@ -779,4 +779,3 @@ export interface ExportFile {
779
779
  format: string;
780
780
  checksum?: string;
781
781
  }
782
- //# sourceMappingURL=dataset-management.d.ts.map
@@ -701,4 +701,3 @@ export interface CosmosDBIndexingPolicy {
701
701
  types: readonly string[];
702
702
  }[];
703
703
  }
704
- //# sourceMappingURL=db-adapters.d.ts.map
@@ -696,4 +696,3 @@ export interface BloatAnalysis {
696
696
  readonly recommendation: 'none' | 'vacuum' | 'vacuum_full' | 'reindex';
697
697
  readonly vacuumCommand: string;
698
698
  }
699
- //# sourceMappingURL=db-admin.d.ts.map
@@ -363,4 +363,3 @@ export interface ForwardEngineerResult {
363
363
  readonly warnings: readonly string[];
364
364
  readonly objectsCreated: number;
365
365
  }
366
- //# sourceMappingURL=db-designer.d.ts.map
@@ -353,4 +353,3 @@ export interface TimelineProfile {
353
353
  color?: string;
354
354
  }>;
355
355
  }
356
- //# sourceMappingURL=debugger.d.ts.map
@@ -868,4 +868,3 @@ export interface RuleMetadata {
868
868
  triggerCount?: number;
869
869
  lastTriggered?: Date;
870
870
  }
871
- //# sourceMappingURL=device-management.d.ts.map
@@ -424,4 +424,3 @@ export interface OperationInfo {
424
424
  readonly avgDuration: number;
425
425
  readonly errorRate: number;
426
426
  }
427
- //# sourceMappingURL=distributed-tracing.d.ts.map
@@ -212,4 +212,3 @@ export interface DdnsConfig {
212
212
  lastIp?: string;
213
213
  status: 'active' | 'error' | 'disabled';
214
214
  }
215
- //# sourceMappingURL=dns-management.d.ts.map
@@ -268,4 +268,3 @@ export interface UseDownloadManagerReturn {
268
268
  * React hook for download manager.
269
269
  */
270
270
  export declare function useDownloadManager(options?: UseDownloadManagerOptions): UseDownloadManagerReturn;
271
- //# sourceMappingURL=download-manager.d.ts.map
@@ -1059,4 +1059,3 @@ export interface ReportSchedule {
1059
1059
  dayOfMonth?: number;
1060
1060
  time: string;
1061
1061
  }
1062
- //# sourceMappingURL=download-torrent.d.ts.map
@@ -717,4 +717,3 @@ export interface DeviceProperty {
717
717
  accessMode: 'ReadOnly' | 'ReadWrite';
718
718
  defaultValue?: unknown;
719
719
  }
720
- //# sourceMappingURL=edge-computing.d.ts.map
@@ -1132,4 +1132,3 @@ export interface LMSSyncConfig {
1132
1132
  syncInterval?: number;
1133
1133
  direction?: 'import' | 'export' | 'both';
1134
1134
  }
1135
- //# sourceMappingURL=education.d.ts.map
@@ -1138,4 +1138,3 @@ export interface DarkModeIssue {
1138
1138
  description: string;
1139
1139
  fix?: string;
1140
1140
  }
1141
- //# sourceMappingURL=email-template.d.ts.map
@@ -1267,4 +1267,3 @@ export interface QuoteLine {
1267
1267
  total: number;
1268
1268
  notes?: string;
1269
1269
  }
1270
- //# sourceMappingURL=erp-enterprise.d.ts.map
@@ -1114,4 +1114,3 @@ export interface SubmissionAccessControl {
1114
1114
  deleteAll?: boolean;
1115
1115
  export?: boolean;
1116
1116
  }
1117
- //# sourceMappingURL=form-builder.d.ts.map
@@ -1046,4 +1046,3 @@ export interface NotificationChannel {
1046
1046
  /** Events to notify */
1047
1047
  events: ('start' | 'success' | 'failure' | 'warning')[];
1048
1048
  }
1049
- //# sourceMappingURL=game-engine-advanced.d.ts.map
package/dist/git.d.ts CHANGED
@@ -412,4 +412,3 @@ export interface LfsLock {
412
412
  owner: GitUser;
413
413
  lockedAt: string;
414
414
  }
415
- //# sourceMappingURL=git.d.ts.map
@@ -963,4 +963,3 @@ export interface ModbusReading {
963
963
  raw?: number[];
964
964
  timestamp: Date;
965
965
  }
966
- //# sourceMappingURL=hardware-integration.d.ts.map
package/dist/iac.d.ts CHANGED
@@ -315,4 +315,3 @@ export interface ArmDeployment {
315
315
  parameters: Record<string, unknown>;
316
316
  outputs: Record<string, unknown>;
317
317
  }
318
- //# sourceMappingURL=iac.d.ts.map
@@ -1020,4 +1020,3 @@ export interface ThematicIconPackage {
1020
1020
  * Available thematic packages.
1021
1021
  */
1022
1022
  export declare const THEMATIC_PACKAGES: ThematicIconPackage[];
1023
- //# sourceMappingURL=icon-tools.d.ts.map
package/dist/ide.d.ts CHANGED
@@ -319,4 +319,3 @@ export interface HotReloadEvent {
319
319
  /** State preserved */
320
320
  statePreserved?: boolean;
321
321
  }
322
- //# sourceMappingURL=ide.d.ts.map
package/dist/index.cjs CHANGED
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@nice2dev/ui"),u=require("react"),V=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),U=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),H=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),$=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),G=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),W=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),X=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),K=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),J=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Y=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Z=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ee=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),te=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),re=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),oe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ne=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ae=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ie=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),se=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),le=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),de=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ce=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ue=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),pe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ge=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),fe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),me=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),be=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),he=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ye=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),we=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Se=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),_e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ve={"operation-operationId":{name:"operation-operationId",description:"Operation must have an operationId",severity:"error",category:"structure",fixable:!1},"operation-description":{name:"operation-description",description:"Operation should have a description",severity:"warn",category:"documentation",fixable:!1},"info-contact":{name:"info-contact",description:"Info object should have contact information",severity:"warn",category:"documentation",fixable:!1},"no-$ref-siblings":{name:"no-$ref-siblings",description:"A $ref object must not have sibling properties",severity:"error",category:"structure",fixable:!1},"path-params":{name:"path-params",description:"Path parameters must be defined",severity:"error",category:"structure",fixable:!1}},Oe=Object.freeze(Object.defineProperty({__proto__:null,OPENAPI_LINT_RULES:ve},Symbol.toStringTag,{value:"Module"})),Pe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),je=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Me=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Te=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),De=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ce=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ae=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ke=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ze=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ne=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),xe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Le=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ie=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ee=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Fe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Re=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Be=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ve=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ue=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),He=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Qe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),qe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),$e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ge=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),We=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Xe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ke=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Je=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ye=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ze=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),et=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),tt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),rt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function ot(a,e=2){if(a===0)return"0 B";const t=1024,r=e<0?0:e,o=["B","KB","MB","GB","TB","PB"],i=Math.floor(Math.log(a)/Math.log(t));return parseFloat((a/Math.pow(t,i)).toFixed(r))+" "+o[i]}function f(a){let t="B/s",r=a;return a>=1024*1024*1024?(t="GB/s",r=a/(1024*1024*1024)):a>=1024*1024?(t="MB/s",r=a/(1024*1024)):a>=1024&&(t="KB/s",r=a/1024),{bytesPerSecond:a,displayValue:r.toFixed(2),displayUnit:t}}function nt(a){if(!isFinite(a)||a<0)return"∞";const e=Math.floor(a/3600),t=Math.floor(a%3600/60),r=Math.floor(a%60);return e>0?`${e}h ${t}m`:t>0?`${t}m ${r}s`:`${r}s`}function _(a,e){if(!(e<=0))return Math.ceil(a/e)}function D(a){var e;if(a.startsWith("magnet:"))return C(a);try{const t=new URL(a),o=decodeURIComponent(t.pathname).split("/").pop()||"download",i=o.includes(".")?(e=o.split(".").pop())==null?void 0:e.toLowerCase():void 0;let s="https";return t.protocol==="http:"?s="http":t.protocol==="ftp:"?s="ftp":t.protocol==="sftp:"&&(s="sftp"),{url:a,protocol:s,host:t.host,filename:o,extension:i,fileType:i?A(i):void 0,resumable:s==="https"||s==="http",requiresAuth:!!t.username,isMagnet:!1,isMetalink:!1}}catch{return{url:a,protocol:"https",host:"unknown",filename:"download",resumable:!1,isMagnet:!1,isMetalink:!1}}}function C(a){var b;const e=new URLSearchParams(a.replace("magnet:?","")),r=(e.get("xt")||"").replace("urn:btih:",""),o=e.get("dn")||"Unknown Torrent",i=e.getAll("tr"),s=e.get("xl")?parseInt(e.get("xl"),10):void 0,c=((b=e.get("kt"))==null?void 0:b.split("+"))||[];return{url:a,protocol:"bittorrent",host:"bittorrent",filename:o,size:s,resumable:!0,isMagnet:!0,isMetalink:!1,magnetInfo:{infoHash:r,displayName:o,trackers:i,exactLength:s,keywords:c}}}function A(a){const e={video:["mp4","mkv","avi","mov","wmv","flv","webm","m4v","mpeg","mpg","3gp"],audio:["mp3","flac","wav","aac","ogg","wma","m4a","opus","aiff"],image:["jpg","jpeg","png","gif","bmp","svg","webp","ico","tiff","raw"],document:["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","rtf","odt"],archive:["zip","rar","7z","tar","gz","bz2","xz","iso"],executable:["exe","msi","dmg","app","deb","rpm","apk"],code:["js","ts","py","java","cpp","c","cs","go","rs","rb","php"]};for(const[t,r]of Object.entries(e))if(r.includes(a.toLowerCase()))return t;return"other"}function k(){return`dl_${Date.now().toString(36)}_${Math.random().toString(36).substring(2,9)}`}async function z(a,e){if(typeof crypto>"u"||!crypto.subtle)return console.warn("Web Crypto API not available for checksum validation"),!0;const r={sha256:"SHA-256",sha512:"SHA-512",sha1:"SHA-1"}[e.algorithm];if(!r)return console.warn(`Unsupported checksum algorithm: ${e.algorithm}`),!0;const o=await crypto.subtle.digest(r,a);return Array.from(new Uint8Array(o)).map(c=>c.toString(16).padStart(2,"0")).join("").toLowerCase()===e.value.toLowerCase()}function at(a,e){if(a<=0||e<=0)return[];const t=Math.ceil(a/e),r=[];for(let o=0;o<e;o++){const i=o*t,s=Math.min(i+t-1,a-1);r.push({index:o,start:i,end:s,downloaded:0,status:"pending",retries:0})}return r}class N{constructor(e={}){this.downloads=new Map,this.activeDownloads=new Set,this.abortControllers=new Map,this.speedSamples=new Map,this.eventListeners=new Map,this.updateInterval=null,this.config={defaultDownloadPath:e.defaultDownloadPath??"/downloads",maxConcurrentDownloads:e.maxConcurrentDownloads??3,bandwidthLimit:e.bandwidthLimit,retryAttempts:e.retryAttempts??3,retryDelay:e.retryDelay??5e3,autoStart:e.autoStart??!0,resumeOnStartup:e.resumeOnStartup??!0,categories:e.categories??[],fileTypeFilters:e.fileTypeFilters??[]}}on(e,t){return this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e).add(t),()=>{var r;return(r=this.eventListeners.get(e))==null?void 0:r.delete(t)}}emit(e){const t=this.eventListeners.get(e.type);if(t)for(const r of t)try{r(e)}catch(o){console.error("Download event listener error:",o)}}addDownload(e,t={}){const r=D(e),o=k(),i={id:o,url:e,filename:t.filename??r.filename,path:t.path??this.config.defaultDownloadPath,status:"queued",priority:t.priority??"normal",size:r.size,downloadedBytes:0,progress:0,speed:f(0),addedDate:new Date,retryCount:0,category:t.category??this.detectCategory(r.extension),source:{type:r.isMagnet?"magnet":"direct",protocol:r.protocol,host:r.host},checksum:t.checksum};return this.downloads.set(o,i),this.emit({type:"added",download:i}),this.emitQueueChanged(),(t.autoStart??this.config.autoStart)&&this.activeDownloads.size<this.config.maxConcurrentDownloads&&this.startDownload(o),i}addDownloads(e,t={}){return e.map(r=>this.addDownload(r,t))}removeDownload(e,t=!1){return this.downloads.get(e)?(this.cancelDownload(e),this.downloads.delete(e),this.emitQueueChanged(),t&&console.warn("File deletion not implemented in browser environment"),!0):!1}getDownload(e){return this.downloads.get(e)}getAllDownloads(){return Array.from(this.downloads.values())}getQueue(){const e=this.getAllDownloads(),t=e.reduce((o,i)=>o+(i.size??0),0),r=e.reduce((o,i)=>o+i.downloadedBytes,0);return{items:e,totalSize:t,totalProgress:t>0?r/t*100:0,activeDownloads:this.activeDownloads.size,queuedDownloads:e.filter(o=>o.status==="queued").length,completedDownloads:e.filter(o=>o.status==="completed").length}}getDownloadsByStatus(e){return this.getAllDownloads().filter(t=>t.status===e)}getDownloadsByCategory(e){return this.getAllDownloads().filter(t=>t.category===e)}async startDownload(e){const t=this.downloads.get(e);if(!t||t.status==="downloading")return;if(this.activeDownloads.size>=this.config.maxConcurrentDownloads){t.status="queued";return}t.status="downloading",t.startedDate=new Date,this.activeDownloads.add(e);const r=new AbortController;this.abortControllers.set(e,r),this.speedSamples.set(e,[]),this.emit({type:"started",download:t});try{await this.executeDownload(t,r.signal),t.status="completed",t.completedDate=new Date,t.progress=100,this.emit({type:"completed",download:t})}catch(o){if(r.signal.aborted)return;t.errorMessage=o instanceof Error?o.message:"Download failed",t.retryCount<this.config.retryAttempts?(t.retryCount++,t.status="queued",setTimeout(()=>this.startDownload(e),this.config.retryDelay)):(t.status="failed",this.emit({type:"failed",download:t,error:o instanceof Error?o:new Error(String(o))}))}finally{this.activeDownloads.delete(e),this.abortControllers.delete(e),this.speedSamples.delete(e),this.emitQueueChanged(),this.processQueue()}}pauseDownload(e){const t=this.downloads.get(e);if(!t||t.status!=="downloading")return;const r=this.abortControllers.get(e);r&&r.abort(),t.status="paused",this.activeDownloads.delete(e),this.emit({type:"paused",download:t}),this.emitQueueChanged(),this.processQueue()}resumeDownload(e){const t=this.downloads.get(e);!t||t.status!=="paused"||(t.status="queued",this.emit({type:"resumed",download:t}),this.startDownload(e))}cancelDownload(e){const t=this.downloads.get(e);if(!t)return;const r=this.abortControllers.get(e);r&&r.abort(),t.status="cancelled",this.activeDownloads.delete(e),this.emit({type:"cancelled",download:t}),this.emitQueueChanged(),this.processQueue()}pauseAll(){for(const e of this.activeDownloads)this.pauseDownload(e)}resumeAll(){for(const e of this.downloads.values())e.status==="paused"&&this.resumeDownload(e.id)}cancelAll(){for(const e of this.downloads.keys())this.cancelDownload(e)}setPriority(e,t){const r=this.downloads.get(e);r&&(r.priority=t,this.emitQueueChanged())}moveInQueue(e,t){const r=this.getAllDownloads().filter(i=>i.status==="queued"),o=r.findIndex(i=>i.id===e);if(o!==-1){switch(t){case"top":r[o].priority="critical";break;case"up":r[o].priority==="normal"?r[o].priority="high":r[o].priority==="low"&&(r[o].priority="normal");break;case"down":r[o].priority==="normal"?r[o].priority="low":r[o].priority==="high"&&(r[o].priority="normal");break;case"bottom":r[o].priority="low";break}this.emitQueueChanged()}}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}setBandwidthLimit(e){this.config.bandwidthLimit=e}setMaxConcurrentDownloads(e){this.config.maxConcurrentDownloads=e,this.processQueue()}addCategory(e){this.config.categories=[...this.config.categories??[],e]}getStats(){const e=this.getAllDownloads(),t=e.reduce((i,s)=>i+s.downloadedBytes,0),r=e.reduce((i,s)=>i+(s.size??0),0);let o=0;for(const i of this.activeDownloads){const s=this.downloads.get(i);s&&(o+=s.speed.bytesPerSecond)}return{downloaded:t,uploaded:0,remaining:r-t,total:r,progress:r>0?t/r*100:0,downloadSpeed:f(o),uploadSpeed:f(0),eta:o>0?_(r-t,o):void 0}}async executeDownload(e,t){var g,d;const r=await fetch(e.url,{signal:t,headers:(g=e.source)!=null&&g.auth?this.buildAuthHeaders(e.source.auth):void 0});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const o=r.headers.get("content-length");o&&(e.size=parseInt(o,10));const i=(d=r.body)==null?void 0:d.getReader();if(!i)throw new Error("Response body is not readable");const s=[];let c=Date.now(),m=0;for(;;){const{done:p,value:h}=await i.read();if(p)break;s.push(h),e.downloadedBytes+=h.length,m+=h.length,e.size&&(e.progress=e.downloadedBytes/e.size*100);const S=Date.now(),T=S-c;if(T>=500){const O=m/T*1e3;this.updateSpeed(e.id,O),e.speed=f(O),e.eta=e.size?_(e.size-e.downloadedBytes,O):void 0,this.emit({type:"progress",download:e}),c=S,m=0}}const b=new Uint8Array(e.downloadedBytes);let l=0;for(const p of s)b.set(p,l),l+=p.length;if(e.checksum){if(!await z(b.buffer,e.checksum))throw new Error("Checksum validation failed");e.checksum.verified=!0}this.handleDownloadComplete(e,b)}handleDownloadComplete(e,t){if(typeof window<"u"&&typeof document<"u"){const r=new Blob([new Uint8Array(t)]),o=URL.createObjectURL(r),i=document.createElement("a");i.href=o,i.download=e.filename,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o)}}buildAuthHeaders(e){if(!e)return{};switch(e.type){case"basic":return{Authorization:`Basic ${btoa(`${e.username}:${e.password}`)}`};case"bearer":return{Authorization:`Bearer ${e.token}`};case"api_key":return{"X-API-Key":e.apiKey??""};default:return{}}}updateSpeed(e,t){const r=this.speedSamples.get(e)||[];r.push(t),r.length>10&&r.shift(),this.speedSamples.set(e,r)}processQueue(){if(this.activeDownloads.size>=this.config.maxConcurrentDownloads)return;const e=this.getDownloadsByStatus("queued").sort((t,r)=>{const o={critical:0,high:1,normal:2,low:3};return o[t.priority]-o[r.priority]});for(const t of e){if(this.activeDownloads.size>=this.config.maxConcurrentDownloads)break;this.startDownload(t.id)}}detectCategory(e){var t;if(!(!e||!this.config.categories)){for(const r of this.config.categories)if((t=r.fileTypes)!=null&&t.includes(e.toLowerCase()))return r.id}}emitQueueChanged(){this.emit({type:"queue-changed",queue:this.getQueue()})}dispose(){this.cancelAll(),this.updateInterval&&clearInterval(this.updateInterval),this.eventListeners.clear(),this.downloads.clear()}}let y=null;function x(a){return y||(y=new N(a)),y}function it(){y==null||y.dispose(),y=null}function st(a={}){const{config:e,autoRefresh:t=!0,refreshInterval:r=1e3}=a,o=u.useMemo(()=>x(e),[e]),[i,s]=u.useState(o.getQueue()),[c,m]=u.useState(o.getStats());u.useEffect(()=>{const d=()=>{s(o.getQueue()),m(o.getStats())},p=[o.on("added",d),o.on("started",d),o.on("progress",d),o.on("paused",d),o.on("resumed",d),o.on("completed",d),o.on("failed",d),o.on("cancelled",d),o.on("queue-changed",d)];let h;return t&&(h=setInterval(()=>{o.getQueue().activeDownloads>0&&d()},r)),()=>{p.forEach(S=>S()),h&&clearInterval(h)}},[o,t,r]);const b=u.useMemo(()=>i.items.filter(d=>d.status==="downloading"),[i]),l=u.useCallback((d,p)=>o.addDownload(d,p),[o]),g=u.useCallback((d,p)=>o.addDownloads(d,p),[o]);return{queue:i,stats:c,activeDownloads:b,addDownload:l,addDownloads:g,startDownload:u.useCallback(d=>o.startDownload(d),[o]),pauseDownload:u.useCallback(d=>o.pauseDownload(d),[o]),resumeDownload:u.useCallback(d=>o.resumeDownload(d),[o]),cancelDownload:u.useCallback(d=>o.cancelDownload(d),[o]),removeDownload:u.useCallback((d,p)=>o.removeDownload(d,p),[o]),pauseAll:u.useCallback(()=>o.pauseAll(),[o]),resumeAll:u.useCallback(()=>o.resumeAll(),[o]),setBandwidthLimit:u.useCallback(d=>o.setBandwidthLimit(d),[o]),setPriority:u.useCallback((d,p)=>o.setPriority(d,p),[o])}}function j(){const a="0123456789abcdef";let e="";for(let t=0;t<40;t++)e+=a[Math.floor(Math.random()*a.length)];return e}function L(){const a="-NI0100-",e=Array.from({length:12},()=>Math.floor(Math.random()*256).toString(16).padStart(2,"0")).join("");return a+e}function I(a){var m;if(!a.startsWith("magnet:?"))return null;const e=new URLSearchParams(a.replace("magnet:?","")),t=e.get("xt");if(!t)return null;const r=t.replace("urn:btih:",""),o=e.get("dn")||void 0,i=e.getAll("tr"),s=e.get("xl")?parseInt(e.get("xl"),10):void 0,c=((m=e.get("kt"))==null?void 0:m.split("+"))||void 0;return{infoHash:r,displayName:o,trackers:i.length>0?i:void 0,exactLength:s,keywords:c}}function E(a){const e=new URLSearchParams;if(e.set("xt",`urn:btih:${a.infoHash}`),e.set("dn",a.name),a.size&&e.set("xl",a.size.toString()),a.trackers)for(const t of a.trackers)e.append("tr",t);return`magnet:?${e.toString()}`}function v(a,e=262144){return Math.ceil(a/e)}function P(a){return Array.from({length:a},()=>"missing")}function lt(a,e){return`${a}/${e}`}function dt(a,e){if(a===0)return"dead";const t=a/(e+1);return t>=2&&a>=10?"excellent":t>=1&&a>=5?"good":a>=1?"fair":"poor"}function ct(a){return new Map(a.map(e=>[e.index,e.wanted]))}function M(a,e){return a.filter(t=>{var o;const r=(o=t.name.split(".").pop())==null?void 0:o.toLowerCase();return r&&e.includes(r)})}function ut(a){return M(a,["mp4","mkv","avi","mov","wmv","flv","webm","m4v","mpeg","mpg"])}function pt(a){return M(a,["mp3","flac","wav","aac","ogg","wma","m4a","opus"])}function gt(a){return a.reduce((e,t)=>t.size>((e==null?void 0:e.size)??0)?t:e,void 0)}class F{constructor(e={}){this.torrents=new Map,this.eventListeners=new Map,this.updateIntervals=new Map,this.peerId=L(),this.config={downloadPath:e.downloadPath??"/downloads/torrents",tempPath:e.tempPath,maxActiveTorrents:e.maxActiveTorrents??5,maxActiveSeedsperTorrent:e.maxActiveSeedsperTorrent??50,maxConnectionsPerTorrent:e.maxConnectionsPerTorrent??50,maxGlobalConnections:e.maxGlobalConnections??200,bandwidthLimit:e.bandwidthLimit??{enabled:!1,unit:"MB/s"},dhtEnabled:e.dhtEnabled??!0,pexEnabled:e.pexEnabled??!0,lpdEnabled:e.lpdEnabled??!0,upnpEnabled:e.upnpEnabled??!0,natPmpEnabled:e.natPmpEnabled??!0,encryptionMode:e.encryptionMode??"enabled",ipv6Enabled:e.ipv6Enabled??!0,listeningPort:e.listeningPort??6881,proxySettings:e.proxySettings},this.config.dhtEnabled&&this.initDHT(),this.config.pexEnabled&&this.initPEX()}on(e,t){return this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e).add(t),()=>{var r;return(r=this.eventListeners.get(e))==null?void 0:r.delete(t)}}emit(e){const t=this.eventListeners.get(e.type);if(t)for(const r of t)try{r(e)}catch(o){console.error("Torrent event listener error:",o)}}addMagnet(e,t={}){const r=I(e);if(!r)return console.error("Invalid magnet URI"),null;if(this.torrents.has(r.infoHash))return this.torrents.get(r.infoHash);const o=this.createTorrent({infoHash:r.infoHash,name:r.displayName??"Unknown Torrent",size:r.exactLength,trackers:r.trackers,magnetUri:e,...t});return this.torrents.set(o.infoHash,o),this.emit({type:"added",torrent:o}),t.autoStart!==!1&&this.startTorrent(o.infoHash),o}addTorrentFile(e,t={}){const r=j(),o=this.createTorrent({infoHash:r,name:"Torrent from file",...t});return this.torrents.set(o.infoHash,o),this.emit({type:"added",torrent:o}),t.autoStart!==!1&&this.startTorrent(o.infoHash),o}createTorrent(e){const t=e.size?v(e.size):0,r=(e.trackers||this.getDefaultTrackers()).filter((o,i,s)=>s.indexOf(o)===i).map((o,i)=>({url:o,tier:Math.floor(i/3),status:"not_contacted",seeds:void 0,leechers:void 0}));return{id:`torrent_${Date.now().toString(36)}_${Math.random().toString(36).substring(2,9)}`,infoHash:e.infoHash,name:e.name,status:"queued",priority:e.priority??"normal",size:e.size??0,downloadedBytes:0,uploadedBytes:0,progress:0,ratio:0,downloadSpeed:f(0),uploadSpeed:f(0),seeds:0,peers:0,trackers:r,files:[],pieces:P(t),savePath:e.path??this.config.downloadPath,isPrivate:!1,magnetUri:e.magnetUri,addedDate:new Date,sequentialDownload:e.sequentialDownload??!1,selectedFiles:e.selectedFiles??[]}}removeTorrent(e,t=!1){const r=this.torrents.get(e);return r?(this.stopTorrent(e),this.torrents.delete(e),this.emit({type:"removed",torrent:r}),t&&console.warn("Data deletion not implemented in browser environment"),!0):!1}getTorrent(e){return this.torrents.get(e)}getAllTorrents(){return Array.from(this.torrents.values())}getTorrentsByStatus(e){return this.getAllTorrents().filter(t=>t.status===e)}startTorrent(e){const t=this.torrents.get(e);t&&(t.status==="downloading"||t.status==="seeding"||(t.files.length===0&&t.magnetUri?(t.status="checking",this.fetchMetadata(t)):(t.status="downloading",t.startedDate=new Date),this.emit({type:"started",torrent:t}),this.simulateTorrentProgress(e)))}pauseTorrent(e){const t=this.torrents.get(e);if(!t)return;const r=this.updateIntervals.get(e);r&&(clearInterval(r),this.updateIntervals.delete(e)),t.status="paused",t.downloadSpeed=f(0),t.uploadSpeed=f(0),this.emit({type:"paused",torrent:t})}resumeTorrent(e){const t=this.torrents.get(e);!t||t.status!=="paused"||(t.status=t.progress>=100?"seeding":"downloading",this.emit({type:"resumed",torrent:t}),this.simulateTorrentProgress(e))}stopTorrent(e){const t=this.torrents.get(e);if(!t)return;const r=this.updateIntervals.get(e);r&&(clearInterval(r),this.updateIntervals.delete(e)),t.status="stopped",t.downloadSpeed=f(0),t.uploadSpeed=f(0)}recheckTorrent(e){const t=this.torrents.get(e);t&&(t.status="checking",setTimeout(()=>{t.status==="checking"&&(t.status=t.progress>=100?"seeding":"queued")},2e3))}announceToTrackers(e){const t=this.torrents.get(e);if(t)for(const r of t.trackers)r.status="updating",setTimeout(()=>{r.status="working",r.lastAnnounce=new Date,r.seeds=Math.floor(Math.random()*100),r.leechers=Math.floor(Math.random()*50),this.emit({type:"tracker-update",torrent:t,tracker:r})},1e3+Math.random()*2e3)}setFileSelection(e,t,r){const o=this.torrents.get(e);if(!o)return;const i=o.files.find(s=>s.index===t);i&&(i.wanted=r,i.priority=r?"normal":"skip",o.selectedFiles&&(r&&!o.selectedFiles.includes(t)?o.selectedFiles.push(t):r||(o.selectedFiles=o.selectedFiles.filter(s=>s!==t))))}setFilePriority(e,t,r){const o=this.torrents.get(e);if(!o)return;const i=o.files.find(s=>s.index===t);i&&(i.priority=r,i.wanted=r!=="skip")}selectAllFiles(e){const t=this.torrents.get(e);if(t){for(const r of t.files)r.wanted=!0,r.priority="normal";t.selectedFiles!==void 0&&(t.selectedFiles=t.files.map(r=>r.index))}}deselectAllFiles(e){const t=this.torrents.get(e);if(t){for(const r of t.files)r.wanted=!1,r.priority="skip";t.selectedFiles!==void 0&&(t.selectedFiles=[])}}setSequentialDownload(e,t){const r=this.torrents.get(e);r&&(r.sequentialDownload=t)}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}setDownloadLimit(e){e!==void 0?this.config.bandwidthLimit={...this.config.bandwidthLimit,download:e,enabled:!0}:this.config.bandwidthLimit={...this.config.bandwidthLimit,download:void 0}}setUploadLimit(e){e!==void 0?this.config.bandwidthLimit={...this.config.bandwidthLimit,upload:e,enabled:!0}:this.config.bandwidthLimit={...this.config.bandwidthLimit,upload:void 0}}setDHTEnabled(e){this.config.dhtEnabled=e,e&&this.initDHT()}setPEXEnabled(e){this.config.pexEnabled=e,e&&this.initPEX()}getStatistics(){const e=this.getAllTorrents();let t=0,r=0,o=0,i=0,s=0;for(const c of e)t+=c.downloadedBytes,r+=c.uploadedBytes,o+=c.downloadSpeed.bytesPerSecond,i+=c.uploadSpeed.bytesPerSecond,s+=c.peers;return{activeSeeders:e.filter(c=>c.status==="seeding").length,activeDownloads:e.filter(c=>c.status==="downloading").length,totalDownloaded:t,totalUploaded:r,downloadSpeed:f(o),uploadSpeed:f(i),globalRatio:t>0?r/t:0,dhtNodes:this.config.dhtEnabled?Math.floor(Math.random()*500+100):0,totalPeers:s,sessionDuration:0}}getDefaultTrackers(){return["udp://tracker.opentrackr.org:1337/announce","udp://tracker.openbittorrent.com:6969/announce","udp://open.stealth.si:80/announce","udp://tracker.torrent.eu.org:451/announce"]}initDHT(){console.log("DHT initialized")}initPEX(){console.log("PEX initialized")}fetchMetadata(e){setTimeout(()=>{e.status==="checking"&&(e.files=[{index:0,name:`${e.name}.mkv`,path:`${e.name}/${e.name}.mkv`,size:Math.floor(Math.random()*2e9)+5e8,progress:0,downloaded:0,priority:"normal",wanted:!0},{index:1,name:"sample.mp4",path:`${e.name}/sample.mp4`,size:Math.floor(Math.random()*5e7)+1e7,progress:0,downloaded:0,priority:"normal",wanted:!0},{index:2,name:"readme.txt",path:`${e.name}/readme.txt`,size:1024,progress:0,downloaded:0,priority:"low",wanted:!0}],e.size=e.files.reduce((t,r)=>t+r.size,0),e.selectedFiles=e.files.map(t=>t.index),e.pieces=P(v(e.size)),e.status="downloading",this.emit({type:"metadata",torrent:e}),this.emit({type:"started",torrent:e}))},2e3+Math.random()*3e3)}simulateTorrentProgress(e){this.updateIntervals.has(e)&&clearInterval(this.updateIntervals.get(e));const t=setInterval(()=>{const r=this.torrents.get(e);if(!r){clearInterval(t);return}if(!(r.status!=="downloading"&&r.status!=="seeding")){if(r.status==="downloading"&&r.size>0){const o=1e6+Math.random()*5e6,i=this.config.bandwidthLimit.download?Math.min(o,this.config.bandwidthLimit.download):o,s=i*(1+Math.random()*.5);r.downloadedBytes=Math.min(r.downloadedBytes+s,r.size),r.progress=r.downloadedBytes/r.size*100,r.downloadSpeed=f(i),r.uploadSpeed=f(i*.1*Math.random());for(const c of r.files)c.wanted&&(c.downloaded=Math.min(c.downloaded+s*(c.size/r.size),c.size),c.progress=c.downloaded/c.size*100);r.peers=Math.floor(Math.random()*30)+5,r.seeds=Math.floor(r.peers*.6),r.eta=_(r.size-r.downloadedBytes,i),this.emit({type:"progress",torrent:r}),r.progress>=100&&(r.status="seeding",r.completedDate=new Date,r.progress=100,r.downloadedBytes=r.size,this.emit({type:"completed",torrent:r}),this.emit({type:"seeding",torrent:r}))}if(r.status==="seeding"){const o=5e5+Math.random()*2e6;r.uploadedBytes+=o,r.uploadSpeed=f(o),r.downloadSpeed=f(0),r.ratio=r.size>0?r.uploadedBytes/r.size:0,r.peers=Math.floor(Math.random()*10)+1,r.seeds=0}}},1e3);this.updateIntervals.set(e,t)}dispose(){for(const e of this.updateIntervals.values())clearInterval(e);this.updateIntervals.clear(),this.torrents.clear(),this.eventListeners.clear()}}async function R(a){const{name:e,files:t,trackers:r=[],comment:o,isPrivate:i=!1,pieceSize:s=262144,webSeeds:c=[]}=a,m=t.reduce((h,S)=>h+S.size,0),b=j(),l=v(m,s),g=E({infoHash:b,name:e,trackers:r,size:m}),p=new TextEncoder().encode(JSON.stringify({announce:r[0]||"",info:{name:e,"piece length":s,length:m,private:i?1:0},comment:o,"url-list":c}));return{infoHash:b,magnetLink:g,torrentFile:p,size:m,pieceCount:l,pieceSize:s}}let w=null;function B(a){return w||(w=new F(a)),w}function ft(){w==null||w.dispose(),w=null}function mt(a={}){const{config:e,autoRefresh:t=!0,refreshInterval:r=1e3}=a,o=u.useMemo(()=>B(e),[e]),[i,s]=u.useState(o.getAllTorrents()),[c,m]=u.useState(o.getStatistics());u.useEffect(()=>{const l=()=>{s([...o.getAllTorrents()]),m(o.getStatistics())},g=[o.on("added",l),o.on("metadata",l),o.on("started",l),o.on("progress",l),o.on("paused",l),o.on("resumed",l),o.on("completed",l),o.on("seeding",l),o.on("failed",l),o.on("removed",l)];let d;return t&&(d=setInterval(()=>{(o.getStatistics().activeDownloads>0||o.getStatistics().activeSeeders>0)&&l()},r)),()=>{g.forEach(p=>p()),d&&clearInterval(d)}},[o,t,r]);const b=u.useMemo(()=>i.filter(l=>l.status==="downloading"||l.status==="seeding"),[i]);return{torrents:i,statistics:c,activeTorrents:b,addMagnet:u.useCallback((l,g)=>o.addMagnet(l,g),[o]),addTorrentFile:u.useCallback((l,g)=>o.addTorrentFile(l,g),[o]),removeTorrent:u.useCallback((l,g)=>o.removeTorrent(l,g),[o]),startTorrent:u.useCallback(l=>o.startTorrent(l),[o]),pauseTorrent:u.useCallback(l=>o.pauseTorrent(l),[o]),resumeTorrent:u.useCallback(l=>o.resumeTorrent(l),[o]),stopTorrent:u.useCallback(l=>o.stopTorrent(l),[o]),setFileSelection:u.useCallback((l,g,d)=>o.setFileSelection(l,g,d),[o]),setSequentialDownload:u.useCallback((l,g)=>o.setSequentialDownload(l,g),[o]),setDownloadLimit:u.useCallback(l=>o.setDownloadLimit(l),[o]),setUploadLimit:u.useCallback(l=>o.setUploadLimit(l),[o]),createTorrent:R}}const bt={cookiesAllowed:!1,localStorageAllowed:!1,sessionStorageAllowed:!1,indexedDBAllowed:!1,webSQLAllowed:!1,serviceWorkerCacheAllowed:!1,effectiveMode:"traceless",consentRequired:!1,canPersist:!1,policySource:"instance",resolvedAt:new Date().toISOString()},ht={cookiesAllowed:!0,localStorageAllowed:!0,sessionStorageAllowed:!0,indexedDBAllowed:!0,webSQLAllowed:!0,serviceWorkerCacheAllowed:!0,effectiveMode:"full",consentRequired:!0,canPersist:!0,policySource:"instance",resolvedAt:new Date().toISOString()},yt={traceless:{cookiesAllowed:!1,localStorageAllowed:!1,sessionStorageAllowed:!1,indexedDBAllowed:!1,webSQLAllowed:!1,serviceWorkerCacheAllowed:!1},ephemeral:{cookiesAllowed:!1,localStorageAllowed:!1,sessionStorageAllowed:!0,indexedDBAllowed:!1,webSQLAllowed:!1,serviceWorkerCacheAllowed:!1},private:{cookiesAllowed:!1,localStorageAllowed:!1,sessionStorageAllowed:!0,indexedDBAllowed:!1,webSQLAllowed:!1,serviceWorkerCacheAllowed:!1},balanced:{cookiesAllowed:!1,localStorageAllowed:!0,sessionStorageAllowed:!0,indexedDBAllowed:!0,webSQLAllowed:!1,serviceWorkerCacheAllowed:!0},full:{cookiesAllowed:!0,localStorageAllowed:!0,sessionStorageAllowed:!0,indexedDBAllowed:!0,webSQLAllowed:!0,serviceWorkerCacheAllowed:!0},custom:{cookiesAllowed:!1,localStorageAllowed:!1,sessionStorageAllowed:!1,indexedDBAllowed:!1,webSQLAllowed:!1,serviceWorkerCacheAllowed:!1}},wt=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_FULL_POLICY:ht,DEFAULT_TRACELESS_POLICY:bt,MODE_CAPABILITIES:yt},Symbol.toStringTag,{value:"Module"})),St={normalText:4.5,largeText:3,uiComponents:3,graphicalObjects:3,focusIndicators:3},_t={normalText:7,largeText:4.5,uiComponents:3,graphicalObjects:3,focusIndicators:4.5},vt={targetLevel:"AA",wcagVersion:"2.1",screenReaderOptimizations:!0,keyboardNavigation:!0,enforceColorContrast:!0,minContrastRatio:4.5,respectReducedMotion:!0,focusVisible:!0,highContrastSupport:!0,forcedColorsSupport:!0,automatedTesting:!0},Ot=["en","en-US","en-GB","es","es-ES","es-MX","fr","fr-FR","fr-CA","de","de-DE","it","it-IT","pt","pt-BR","pt-PT","ru","ru-RU","zh","zh-CN","zh-TW","ja","ja-JP","ko","ko-KR","ar","ar-SA","he","he-IL","hi","hi-IN","pl","pl-PL","nl","nl-NL","tr","tr-TR","sv","sv-SE","da","da-DK","no","nb-NO","fi","fi-FI","cs","cs-CZ","sk","sk-SK","hu","hu-HU","ro","ro-RO","bg","bg-BG","uk","uk-UA","el","el-GR","th","th-TH","vi","vi-VN","id","id-ID","ms","ms-MY"],Pt=["ar","ar-SA","ar-AE","ar-EG","ar-MA","he","he-IL","fa","fa-IR","ur","ur-PK","ps","sd","yi"],jt=Object.freeze(Object.defineProperty({__proto__:null,COMMON_LOCALES:Ot,DEFAULT_ACCESSIBILITY_CONFIG:vt,RTL_LOCALES:Pt,WCAG_AAA_CONTRAST:_t,WCAG_AA_CONTRAST:St},Symbol.toStringTag,{value:"Module"})),Mt=[{width:16,height:16,purpose:"favicon",format:"ico"},{width:32,height:32,purpose:"favicon",format:"png"},{width:48,height:48,purpose:"favicon",format:"png"},{width:180,height:180,purpose:"apple-touch",format:"png"},{width:192,height:192,purpose:"any",format:"png"},{width:512,height:512,purpose:"any",format:"png"},{width:512,height:512,purpose:"maskable",format:"png"}],Tt=[{name:"Business Icons",npmName:"@nice2dev/icons-business",description:"All ERP-related icons for business applications",iconCount:500,categories:["accounting","hr","crm","production","warehouse","sales","purchasing"],domains:["business","finance","hr","logistics"],dependencies:[],version:"1.0.0"},{name:"Education Icons",npmName:"@nice2dev/icons-education",description:"Educational, scientific, and mathematical icons",iconCount:300,categories:["subjects","learning","school","science","math"],domains:["education","science"],dependencies:[],version:"1.0.0"},{name:"Tech Icons",npmName:"@nice2dev/icons-tech",description:"Development tools, infrastructure, cloud, and containers",iconCount:400,categories:["devtools","infrastructure","cloud","containers","networking"],domains:["technology"],dependencies:[],version:"1.0.0"},{name:"Media Icons",npmName:"@nice2dev/icons-media",description:"Audio, video, graphics, 3D, and streaming icons",iconCount:350,categories:["audio","video","graphics","3d","streaming"],domains:["creative"],dependencies:[],version:"1.0.0"},{name:"Social Icons",npmName:"@nice2dev/icons-social",description:"Social platforms, reactions, and messaging icons",iconCount:200,categories:["platforms","reactions","messaging"],domains:[],dependencies:[],version:"1.0.0"},{name:"Game Icons",npmName:"@nice2dev/icons-game",description:"Characters, items, UI elements, and game actions",iconCount:400,categories:["characters","items","ui","actions"],domains:["gaming"],dependencies:[],version:"1.0.0"},{name:"Life Management Icons",npmName:"@nice2dev/icons-life",description:"Personal finance, health, productivity, and home icons",iconCount:300,categories:["finance","health","productivity","home","family"],domains:["life-management"],dependencies:[],version:"1.0.0"},{name:"All Icons",npmName:"@nice2dev/icons-all",description:"Meta-package containing all icon packs",iconCount:2500,categories:[],domains:[],dependencies:["@nice2dev/icons-business","@nice2dev/icons-education","@nice2dev/icons-tech","@nice2dev/icons-media","@nice2dev/icons-social","@nice2dev/icons-game","@nice2dev/icons-life"],version:"1.0.0"}],Dt=Object.freeze(Object.defineProperty({__proto__:null,STANDARD_FAVICON_SIZES:Mt,THEMATIC_PACKAGES:Tt},Symbol.toStringTag,{value:"Module"})),Ct=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));Object.defineProperty(exports,"CURRENT_SCHEMA_VERSION",{enumerable:!0,get:()=>n.CURRENT_SCHEMA_VERSION});Object.defineProperty(exports,"NiceAuditLog",{enumerable:!0,get:()=>n.NiceAuditLog});Object.defineProperty(exports,"NiceChat",{enumerable:!0,get:()=>n.NiceChat});Object.defineProperty(exports,"NiceColumnChooser",{enumerable:!0,get:()=>n.NiceColumnChooser});Object.defineProperty(exports,"NiceComponentTypeMapping",{enumerable:!0,get:()=>n.NiceComponentTypeMapping});Object.defineProperty(exports,"NiceDesignTokens",{enumerable:!0,get:()=>n.NiceDesignTokens});Object.defineProperty(exports,"NiceDiagramDesigner",{enumerable:!0,get:()=>n.NiceDiagramDesigner});Object.defineProperty(exports,"NiceDisplayStylePicker",{enumerable:!0,get:()=>n.NiceDisplayStylePicker});Object.defineProperty(exports,"NiceDocumentViewer",{enumerable:!0,get:()=>n.NiceDocumentViewer});Object.defineProperty(exports,"NiceDraggable",{enumerable:!0,get:()=>n.NiceDraggable});Object.defineProperty(exports,"NiceFeatureFlagsProvider",{enumerable:!0,get:()=>n.NiceFeatureFlagsProvider});Object.defineProperty(exports,"NiceFeatureGate",{enumerable:!0,get:()=>n.NiceFeatureGate});Object.defineProperty(exports,"NiceFileManager",{enumerable:!0,get:()=>n.NiceFileManager});Object.defineProperty(exports,"NiceFilterBuilder",{enumerable:!0,get:()=>n.NiceFilterBuilder});Object.defineProperty(exports,"NiceGallery",{enumerable:!0,get:()=>n.NiceGallery});Object.defineProperty(exports,"NiceGitManager",{enumerable:!0,get:()=>n.NiceGitManager});Object.defineProperty(exports,"NiceLifecycleHooksEditor",{enumerable:!0,get:()=>n.NiceLifecycleHooksEditor});Object.defineProperty(exports,"NiceMap",{enumerable:!0,get:()=>n.NiceMap});Object.defineProperty(exports,"NiceModuleHotSwap",{enumerable:!0,get:()=>n.NiceModuleHotSwap});Object.defineProperty(exports,"NiceModuleLoaderProvider",{enumerable:!0,get:()=>n.NiceModuleLoaderProvider});Object.defineProperty(exports,"NiceModuleRoute",{enumerable:!0,get:()=>n.NiceModuleRoute});Object.defineProperty(exports,"NicePermissionMatrix",{enumerable:!0,get:()=>n.NicePermissionMatrix});Object.defineProperty(exports,"NicePrintPreview",{enumerable:!0,get:()=>n.NicePrintPreview});Object.defineProperty(exports,"NiceRecipeEditor",{enumerable:!0,get:()=>n.NiceRecipeEditor});Object.defineProperty(exports,"NiceRevisionHistory",{enumerable:!0,get:()=>n.NiceRevisionHistory});Object.defineProperty(exports,"NiceShowcase",{enumerable:!0,get:()=>n.NiceShowcase});Object.defineProperty(exports,"NiceSortable",{enumerable:!0,get:()=>n.NiceSortable});Object.defineProperty(exports,"NiceSpeechToText",{enumerable:!0,get:()=>n.NiceSpeechToText});Object.defineProperty(exports,"NiceThemeDesigner",{enumerable:!0,get:()=>n.NiceThemeDesigner});Object.defineProperty(exports,"NiceUndoManager",{enumerable:!0,get:()=>n.NiceUndoManager});Object.defineProperty(exports,"NiceUndoProvider",{enumerable:!0,get:()=>n.NiceUndoProvider});Object.defineProperty(exports,"NiceUpload",{enumerable:!0,get:()=>n.NiceUpload});Object.defineProperty(exports,"NiceValidationGroup",{enumerable:!0,get:()=>n.NiceValidationGroup});Object.defineProperty(exports,"NiceValidationSummary",{enumerable:!0,get:()=>n.NiceValidationSummary});Object.defineProperty(exports,"NiceValidator",{enumerable:!0,get:()=>n.NiceValidator});Object.defineProperty(exports,"NiceViewCache",{enumerable:!0,get:()=>n.NiceViewCache});Object.defineProperty(exports,"NiceViewFetchError",{enumerable:!0,get:()=>n.NiceViewFetchError});Object.defineProperty(exports,"NiceViewFetcher",{enumerable:!0,get:()=>n.NiceViewFetcher});Object.defineProperty(exports,"NiceViewHotReload",{enumerable:!0,get:()=>n.NiceViewHotReload});Object.defineProperty(exports,"NiceViewRegistry",{enumerable:!0,get:()=>n.NiceViewRegistry});Object.defineProperty(exports,"NiceViewRenderer",{enumerable:!0,get:()=>n.NiceViewRenderer});Object.defineProperty(exports,"autoDetectColumns",{enumerable:!0,get:()=>n.autoDetectColumns});Object.defineProperty(exports,"checkModuleHealth",{enumerable:!0,get:()=>n.checkModuleHealth});Object.defineProperty(exports,"checkPermissions",{enumerable:!0,get:()=>n.checkPermissions});Object.defineProperty(exports,"checkSingleModule",{enumerable:!0,get:()=>n.checkSingleModule});Object.defineProperty(exports,"compareSemver",{enumerable:!0,get:()=>n.compareSemver});Object.defineProperty(exports,"createEmptyRecipe",{enumerable:!0,get:()=>n.createEmptyRecipe});Object.defineProperty(exports,"createStandardErpContracts",{enumerable:!0,get:()=>n.createStandardErpContracts});Object.defineProperty(exports,"createUndoMiddleware",{enumerable:!0,get:()=>n.createUndoMiddleware});Object.defineProperty(exports,"defaultTypeMapping",{enumerable:!0,get:()=>n.defaultTypeMapping});Object.defineProperty(exports,"defaultViewRegistry",{enumerable:!0,get:()=>n.defaultViewRegistry});Object.defineProperty(exports,"deserializeManifest",{enumerable:!0,get:()=>n.deserializeManifest});Object.defineProperty(exports,"deserializeRbacPolicy",{enumerable:!0,get:()=>n.deserializeRbacPolicy});Object.defineProperty(exports,"deserializeView",{enumerable:!0,get:()=>n.deserializeView});Object.defineProperty(exports,"diffObjects",{enumerable:!0,get:()=>n.diffObjects});Object.defineProperty(exports,"diffViews",{enumerable:!0,get:()=>n.diffViews});Object.defineProperty(exports,"downloadCSV",{enumerable:!0,get:()=>n.downloadCSV});Object.defineProperty(exports,"downloadHTML",{enumerable:!0,get:()=>n.downloadHTML});Object.defineProperty(exports,"downloadJSON",{enumerable:!0,get:()=>n.downloadJSON});Object.defineProperty(exports,"downloadPDF",{enumerable:!0,get:()=>n.downloadPDF});Object.defineProperty(exports,"downloadXLSX",{enumerable:!0,get:()=>n.downloadXLSX});Object.defineProperty(exports,"exportToCSV",{enumerable:!0,get:()=>n.exportToCSV});Object.defineProperty(exports,"exportToHTML",{enumerable:!0,get:()=>n.exportToHTML});Object.defineProperty(exports,"exportToJSON",{enumerable:!0,get:()=>n.exportToJSON});Object.defineProperty(exports,"exportToPDF",{enumerable:!0,get:()=>n.exportToPDF});Object.defineProperty(exports,"exportToXLSX",{enumerable:!0,get:()=>n.exportToXLSX});Object.defineProperty(exports,"extractControlTypes",{enumerable:!0,get:()=>n.extractControlTypes});Object.defineProperty(exports,"extractTokensFromTheme",{enumerable:!0,get:()=>n.extractTokensFromTheme});Object.defineProperty(exports,"formatDiffAsText",{enumerable:!0,get:()=>n.formatDiffAsText});Object.defineProperty(exports,"generateAllForRbac",{enumerable:!0,get:()=>n.generateAllForRbac});Object.defineProperty(exports,"generateAllForView",{enumerable:!0,get:()=>n.generateAllForView});Object.defineProperty(exports,"generateDartModel",{enumerable:!0,get:()=>n.generateDartModel});Object.defineProperty(exports,"generateMermaidSyntax",{enumerable:!0,get:()=>n.generateMermaidSyntax});Object.defineProperty(exports,"generateRbacDart",{enumerable:!0,get:()=>n.generateRbacDart});Object.defineProperty(exports,"generateRbacTypescript",{enumerable:!0,get:()=>n.generateRbacTypescript});Object.defineProperty(exports,"generateScaffold",{enumerable:!0,get:()=>n.generateScaffold});Object.defineProperty(exports,"generateStoriesFromViews",{enumerable:!0,get:()=>n.generateStoriesFromViews});Object.defineProperty(exports,"generateStoryFromView",{enumerable:!0,get:()=>n.generateStoryFromView});Object.defineProperty(exports,"generateTokens",{enumerable:!0,get:()=>n.generateTokens});Object.defineProperty(exports,"generateTypescriptModel",{enumerable:!0,get:()=>n.generateTypescriptModel});Object.defineProperty(exports,"generateViewCatalog",{enumerable:!0,get:()=>n.generateViewCatalog});Object.defineProperty(exports,"isAllowed",{enumerable:!0,get:()=>n.isAllowed});Object.defineProperty(exports,"isVersionCompatible",{enumerable:!0,get:()=>n.isVersionCompatible});Object.defineProperty(exports,"isViewCompatibleWith",{enumerable:!0,get:()=>n.isViewCompatibleWith});Object.defineProperty(exports,"listScaffoldTemplates",{enumerable:!0,get:()=>n.listScaffoldTemplates});Object.defineProperty(exports,"newRecipeId",{enumerable:!0,get:()=>n.newRecipeId});Object.defineProperty(exports,"niceExport",{enumerable:!0,get:()=>n.niceExport});Object.defineProperty(exports,"recipeTotalMinutes",{enumerable:!0,get:()=>n.recipeTotalMinutes});Object.defineProperty(exports,"resolvePermissions",{enumerable:!0,get:()=>n.resolvePermissions});Object.defineProperty(exports,"runContractTests",{enumerable:!0,get:()=>n.runContractTests});Object.defineProperty(exports,"serializeManifest",{enumerable:!0,get:()=>n.serializeManifest});Object.defineProperty(exports,"serializeRbacPolicy",{enumerable:!0,get:()=>n.serializeRbacPolicy});Object.defineProperty(exports,"serializeView",{enumerable:!0,get:()=>n.serializeView});Object.defineProperty(exports,"useAuditLog",{enumerable:!0,get:()=>n.useAuditLog});Object.defineProperty(exports,"useColumnChooser",{enumerable:!0,get:()=>n.useColumnChooser});Object.defineProperty(exports,"useFeatureFlag",{enumerable:!0,get:()=>n.useFeatureFlag});Object.defineProperty(exports,"useFeatureFlags",{enumerable:!0,get:()=>n.useFeatureFlags});Object.defineProperty(exports,"useModuleLoader",{enumerable:!0,get:()=>n.useModuleLoader});Object.defineProperty(exports,"useNiceValidation",{enumerable:!0,get:()=>n.useNiceValidation});Object.defineProperty(exports,"usePrintPreview",{enumerable:!0,get:()=>n.usePrintPreview});Object.defineProperty(exports,"useUndoKeyboard",{enumerable:!0,get:()=>n.useUndoKeyboard});Object.defineProperty(exports,"useUndoManager",{enumerable:!0,get:()=>n.useUndoManager});Object.defineProperty(exports,"validateCrossPlatformView",{enumerable:!0,get:()=>n.validateCrossPlatformView});Object.defineProperty(exports,"validateDiagramSchema",{enumerable:!0,get:()=>n.validateDiagramSchema});Object.defineProperty(exports,"validateModuleManifest",{enumerable:!0,get:()=>n.validateModuleManifest});Object.defineProperty(exports,"validateRbacPolicy",{enumerable:!0,get:()=>n.validateRbacPolicy});Object.defineProperty(exports,"validateViewDefinition",{enumerable:!0,get:()=>n.validateViewDefinition});Object.defineProperty(exports,"validateViewForDeploy",{enumerable:!0,get:()=>n.validateViewForDeploy});Object.defineProperty(exports,"validateViewsBatch",{enumerable:!0,get:()=>n.validateViewsBatch});exports.AIAssistant=ae;exports.AIPlaygrounds=Ge;exports.APMProfiling=be;exports.AccessControl=Se;exports.AccessibilityI18n=jt;exports.AlertingIncidents=he;exports.ApiDesigner=Oe;exports.ApiTesting=Pe;exports.Artifacts=re;exports.AuditCompliance=_e;exports.Certificates=J;exports.ChartBuilder=xe;exports.CloudInstances=q;exports.ConfigManagement=ee;exports.Containers=U;exports.DashboardDesigner=Ne;exports.DataManagement=ce;exports.DataPipeline=Le;exports.DataWarehouse=Ie;exports.DatasetManagement=He;exports.DbAdapters=ue;exports.DbAdmin=pe;exports.DbDesigner=de;exports.Debugger=ie;exports.DeviceManagement=Fe;exports.DistributedTracing=me;exports.DnsManagement=K;exports.DownloadManager=N;exports.DownloadTorrent=rt;exports.EdgeComputing=Be;exports.Education=Je;exports.EmailTemplate=ze;exports.ErpEnterprise=Ye;exports.FormBuilder=Ae;exports.GameEngineAdvanced=Ct;exports.Git=te;exports.HardwareIntegration=Xe;exports.IDE=oe;exports.IaC=Z;exports.IconTools=Dt;exports.IntegrationPlatform=je;exports.Kubernetes=H;exports.LifeManagement=Ze;exports.LogManagement=fe;exports.Mathematics=tt;exports.MessageQueue=Me;exports.MetricsDashboard=ge;exports.MobileComponents=We;exports.ModelDeployment=$e;exports.ModelRegistry=qe;exports.ModelTraining=Qe;exports.NetworkConfig=G;exports.NetworkMonitoring=W;exports.PdfTools=Te;exports.Pipelines=Y;exports.RemoteDesktop=V;exports.ReportDesigner=ke;exports.ScadaIndustrial=Ve;exports.ScientificResearch=et;exports.SecretManagement=we;exports.SecurityScanning=ye;exports.SelfServiceAnalytics=Ee;exports.SensorDashboard=Re;exports.ServerManagement=X;exports.SmartHome=Ue;exports.Spreadsheet=De;exports.SqlEditor=le;exports.Terminal=$;exports.TestingQA=Ke;exports.TorrentClient=F;exports.Traceless=wt;exports.VirtualMachines=Q;exports.VisualScripting=ne;exports.WordProcessor=Ce;exports.Workspace=se;exports.calculateETA=_;exports.calculatePieces=v;exports.calculateTorrentHealth=dt;exports.createDownloadSegments=at;exports.createFileSelection=ct;exports.createMagnetUri=E;exports.createPieceStatus=P;exports.createTorrent=R;exports.disposeDownloadManager=it;exports.disposeTorrentClient=ft;exports.filterFilesByExtension=M;exports.formatBytes=ot;exports.formatDuration=nt;exports.formatPeerCount=lt;exports.formatSpeed=f;exports.generateDownloadId=k;exports.generateInfoHash=j;exports.generatePeerId=L;exports.getAudioFiles=pt;exports.getDownloadManager=x;exports.getFileType=A;exports.getLargestFile=gt;exports.getTorrentClient=B;exports.getVideoFiles=ut;exports.parseDownloadUrl=D;exports.parseMagnetLink=C;exports.parseMagnetUri=I;exports.useDownloadManager=st;exports.useTorrentClient=mt;exports.validateChecksum=z;
2
- //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -177,4 +177,3 @@ export * as Traceless from './traceless';
177
177
  export * as AccessibilityI18n from './accessibility-i18n';
178
178
  export * as IconTools from './icon-tools';
179
179
  export * as GameEngineAdvanced from './game-engine-advanced';
180
- //# sourceMappingURL=index.d.ts.map
package/dist/index.mjs CHANGED
@@ -1889,4 +1889,3 @@ export {
1889
1889
  En as validateViewForDeploy,
1890
1890
  Nn as validateViewsBatch
1891
1891
  };
1892
- //# sourceMappingURL=index.mjs.map
@@ -854,4 +854,3 @@ export interface FlowValidationError {
854
854
  message: string;
855
855
  severity: 'error' | 'warning';
856
856
  }
857
- //# sourceMappingURL=integration-platform.d.ts.map
@@ -275,4 +275,3 @@ export interface MultiClusterConfig {
275
275
  /** Cross-cluster queries */
276
276
  federatedSearch: boolean;
277
277
  }
278
- //# sourceMappingURL=kubernetes.d.ts.map
@@ -1129,4 +1129,3 @@ export interface EventTimelineItem {
1129
1129
  duration?: number;
1130
1130
  notes?: string;
1131
1131
  }
1132
- //# sourceMappingURL=life-management.d.ts.map
@@ -470,4 +470,3 @@ export interface StackFrame {
470
470
  readonly module?: string;
471
471
  readonly context?: readonly string[];
472
472
  }
473
- //# sourceMappingURL=log-management.d.ts.map
@@ -867,4 +867,3 @@ export interface ConstantsReferenceConfig {
867
867
  }
868
868
  /** Constant copy format */
869
869
  export type ConstantCopyFormat = 'value' | 'symbol' | 'latex' | 'name_value';
870
- //# sourceMappingURL=mathematics.d.ts.map
@@ -1003,4 +1003,3 @@ export interface MetricValue {
1003
1003
  count?: number;
1004
1004
  rate?: number;
1005
1005
  }
1006
- //# sourceMappingURL=message-queue.d.ts.map
@@ -593,4 +593,3 @@ export interface TimeRange {
593
593
  }
594
594
  /** Panel options (generic) */
595
595
  export type PanelOptions = TimeSeriesOptions | GaugeOptions | BarGaugeOptions | StatOptions | TableOptions | HeatmapOptions | Record<string, unknown>;
596
- //# sourceMappingURL=metrics-dashboard.d.ts.map
@@ -763,4 +763,3 @@ export interface LocationData {
763
763
  heading?: number;
764
764
  timestamp: Date;
765
765
  }
766
- //# sourceMappingURL=mobile-components.d.ts.map
@@ -784,4 +784,3 @@ export interface ONNXSessionOptions {
784
784
  graphOptimizationLevel?: 'disabled' | 'basic' | 'extended' | 'all';
785
785
  executionMode?: 'sequential' | 'parallel';
786
786
  }
787
- //# sourceMappingURL=model-deployment.d.ts.map
@@ -737,4 +737,3 @@ export interface RollbackApproval {
737
737
  timestamp: Date;
738
738
  comments?: string;
739
739
  }
740
- //# sourceMappingURL=model-registry.d.ts.map
@@ -703,4 +703,3 @@ export interface Bottleneck {
703
703
  description: string;
704
704
  suggestion?: string;
705
705
  }
706
- //# sourceMappingURL=model-training.d.ts.map
@@ -331,4 +331,3 @@ export interface ComplianceResult {
331
331
  details: string;
332
332
  checkedAt: string;
333
333
  }
334
- //# sourceMappingURL=network-config.d.ts.map
@@ -288,4 +288,3 @@ export interface PoePortStatus {
288
288
  /** Priority */
289
289
  priority: 'critical' | 'high' | 'low';
290
290
  }
291
- //# sourceMappingURL=network-monitoring.d.ts.map
@@ -1000,4 +1000,3 @@ export interface PageThumbnail {
1000
1000
  data?: string;
1001
1001
  url?: string;
1002
1002
  }
1003
- //# sourceMappingURL=pdf-tools.d.ts.map
@@ -247,4 +247,3 @@ export interface GitOpsSync {
247
247
  status: 'synced' | 'out-of-sync' | 'pruned';
248
248
  }>;
249
249
  }
250
- //# sourceMappingURL=pipelines.d.ts.map
@@ -204,4 +204,3 @@ export interface TouchPenConfig {
204
204
  /** Palm rejection */
205
205
  palmRejection: boolean;
206
206
  }
207
- //# sourceMappingURL=remote-desktop.d.ts.map
@@ -1150,4 +1150,3 @@ export interface DrillThroughConfig {
1150
1150
  preserveParameters?: boolean;
1151
1151
  openInNewWindow?: boolean;
1152
1152
  }
1153
- //# sourceMappingURL=report-designer.d.ts.map
@@ -845,4 +845,3 @@ export interface AuditQuery {
845
845
  limit?: number;
846
846
  offset?: number;
847
847
  }
848
- //# sourceMappingURL=scada-industrial.d.ts.map
@@ -1146,4 +1146,3 @@ export interface MeetingNote {
1146
1146
  actionItems: CollaborationTask[];
1147
1147
  recordingUrl?: string;
1148
1148
  }
1149
- //# sourceMappingURL=scientific-research.d.ts.map
@@ -614,4 +614,3 @@ export interface TransitVerifyRequest {
614
614
  export interface TransitVerifyResponse {
615
615
  readonly valid: boolean;
616
616
  }
617
- //# sourceMappingURL=secret-management.d.ts.map
@@ -711,4 +711,3 @@ export interface PolicyException {
711
711
  readonly expiresAt?: Date;
712
712
  readonly scope: PolicyScope;
713
713
  }
714
- //# sourceMappingURL=security-scanning.d.ts.map
@@ -1205,4 +1205,3 @@ export interface CertificationHistory {
1205
1205
  notes?: string;
1206
1206
  previousStatus?: CertificationStatus;
1207
1207
  }
1208
- //# sourceMappingURL=self-service-analytics.d.ts.map
@@ -842,4 +842,3 @@ export interface ReportSchedule {
842
842
  cron?: string;
843
843
  timezone?: string;
844
844
  }
845
- //# sourceMappingURL=sensor-dashboard.d.ts.map
@@ -328,4 +328,3 @@ export interface BmcInfo {
328
328
  status: 'ok' | 'warning' | 'critical';
329
329
  }>;
330
330
  }
331
- //# sourceMappingURL=server-management.d.ts.map
@@ -858,4 +858,3 @@ export interface NotificationFilter {
858
858
  room?: string;
859
859
  muted: boolean;
860
860
  }
861
- //# sourceMappingURL=smart-home.d.ts.map
@@ -1040,4 +1040,3 @@ export interface MacroAPI {
1040
1040
  msgBox(message: string, title?: string): void;
1041
1041
  inputBox(prompt: string, title?: string, defaultValue?: string): string | null;
1042
1042
  }
1043
- //# sourceMappingURL=spreadsheet.d.ts.map
@@ -399,4 +399,3 @@ export interface QueryError {
399
399
  readonly line?: number;
400
400
  readonly column?: number;
401
401
  }
402
- //# sourceMappingURL=sql-editor.d.ts.map
@@ -242,4 +242,3 @@ export interface ExpectScript {
242
242
  /** On failure */
243
243
  onFailure: 'abort' | 'continue' | 'prompt';
244
244
  }
245
- //# sourceMappingURL=terminal.d.ts.map
@@ -1010,4 +1010,3 @@ export interface ContractChange {
1010
1010
  export type ChangeType = 'added' | 'removed' | 'modified' | 'renamed';
1011
1011
  /** Change severity */
1012
1012
  export type ChangeSeverity = 'breaking' | 'compatible' | 'unknown';
1013
- //# sourceMappingURL=testing-qa.d.ts.map
@@ -295,4 +295,3 @@ export interface UseTorrentClientReturn {
295
295
  * React hook for torrent client.
296
296
  */
297
297
  export declare function useTorrentClient(options?: UseTorrentClientOptions): UseTorrentClientReturn;
298
- //# sourceMappingURL=torrent-client.d.ts.map
@@ -756,4 +756,3 @@ export declare const DEFAULT_FULL_POLICY: ITracelessPolicy;
756
756
  * Mode to capabilities mapping.
757
757
  */
758
758
  export declare const MODE_CAPABILITIES: Record<TracelessMode, StorageCapabilities>;
759
- //# sourceMappingURL=traceless.d.ts.map
@@ -196,4 +196,3 @@ export interface VmImportExportConfig {
196
196
  /** Path */
197
197
  path: string;
198
198
  }
199
- //# sourceMappingURL=virtual-machines.d.ts.map
@@ -378,4 +378,3 @@ export interface CodeExportResult {
378
378
  errors: string[];
379
379
  warnings: string[];
380
380
  }
381
- //# sourceMappingURL=visual-scripting.d.ts.map
@@ -1121,4 +1121,3 @@ export interface ReplaceResult {
1121
1121
  newText: string;
1122
1122
  }[];
1123
1123
  }
1124
- //# sourceMappingURL=word-processor.d.ts.map
@@ -330,4 +330,3 @@ export interface WorkspaceState {
330
330
  cwd: string;
331
331
  }>;
332
332
  }
333
- //# sourceMappingURL=workspace.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nice2dev/ui-tools",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "Nice2Dev UI Tools — FileManager, FilterBuilder, Gallery, Map, Git, Validation, Export, ColumnChooser, AuditLog, Designers",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -33,7 +33,7 @@
33
33
  "react-dom": ">=17.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@nice2dev/ui": "^1.1.5",
36
+ "@nice2dev/ui": "^1.1.7",
37
37
  "@types/react": "^19.2.18",
38
38
  "@types/react-dom": "^19.2.7",
39
39
  "@vitejs/plugin-react": "^4.7.0",