@nice2dev/ui-tools 1.1.10 → 1.2.1
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.
- package/CHANGELOG.md +173 -0
- package/README.md +0 -6
- package/dist/api-designer.d.ts +5 -8
- package/dist/api-testing.d.ts +3 -6
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +14 -16
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,178 @@
|
|
|
1
1
|
# @nice2dev/ui-tools
|
|
2
2
|
|
|
3
|
+
## 1.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8c82c30: 1.2.1 — the decisions that waited since 1.2.0, and the debts the CI gates were holding. One API
|
|
8
|
+
change, agreed: `NiceIconSuggestorAI` suggests Nice icons only. Two stylesheets to import if you use
|
|
9
|
+
the packages: `@nice2dev/social/style.css`, `@nice2dev/ui-science/style.css`. Upgrade notes:
|
|
10
|
+
`documentation/omniverk/OMNIVERK_UPGRADE_1.2.1.md`.
|
|
11
|
+
|
|
12
|
+
**Tree-shaking.** An import from a package no longer brings the whole package. Module-level
|
|
13
|
+
statements that may have a side effect — a `displayName` assigned after each component (now
|
|
14
|
+
`Object.assign` inside `/* @__PURE__ */`, or under a development check for plain functions),
|
|
15
|
+
unannotated `forwardRef` / `memo` / `createContext` / icon-factory calls, spreads, registries filled
|
|
16
|
+
at import, `<style>` tags injected at import, a direct `eval` in ui-math — are gone. One import from
|
|
17
|
+
each of 53 packages: 5066.5 kB → 1171.6 kB (`@nice2dev/ui` 1928.2 kB → 12.9 kB, icon packs 48–275 kB
|
|
18
|
+
→ 1.6–2.6 kB). `defaultViewRegistry` has the Nice\* input controls from the start, each loading its
|
|
19
|
+
module on first render; sixteen controls add their styles to `<head>` on first render.
|
|
20
|
+
|
|
21
|
+
**Dead code.** 405 source files no entry point imported (never on npm) are deleted;
|
|
22
|
+
`NiceClipboardStack` (`@nice2dev/ui`) and `NiceSampleBrowser` (`@nice2dev/ui-audio`), finished and
|
|
23
|
+
documented, are exported.
|
|
24
|
+
|
|
25
|
+
**ui-mobile draws Nice icons.** New peer `@nice2dev/icons ^1.2.0`; `TabIcons`, `DrawerIcons`,
|
|
26
|
+
`HeaderIcons`, the `NiceSwipeActions` presets and the `NiceInfiniteScroll` states are `Ntd*` icons
|
|
27
|
+
instead of pasted `<svg>`, simple glyphs are CSS marks. `@nice2dev/icons` adds `NtdReply` and
|
|
28
|
+
`NtdInbox`; an icon no longer throws without `window.matchMedia`.
|
|
29
|
+
|
|
30
|
+
**`NiceIconSuggestorAI` (breaking, agreed).** `AIIconLibrary` is `'nice'`; `svgPath` and `unicode`
|
|
31
|
+
left `AISuggestedIcon`; the preview is a `<NiceIcon>`, "Copy SVG" is "Copy JSX".
|
|
32
|
+
|
|
33
|
+
**Peer ranges.** Every internal `@nice2dev/*` peer is `^1.2.0` (was as wide as `^1.0.20`), except
|
|
34
|
+
`@nice2dev/icons ^1.2.1` where a package draws an icon new in 1.2.1: ui-mobile (`NtdReply`,
|
|
35
|
+
`NtdInbox`), ui-audio (`NtdMicrophoneOff`) and ui-security (`NtdBackspace`). ui-security, licensing
|
|
36
|
+
(`^1.2.0`) and templates (`^1.2.0`) gain the `@nice2dev/icons` peer: their glyph icons (`⌫`, `←`,
|
|
37
|
+
`→`, `↑`, `↓`) are Nice icons now. `@nice2dev/icons` adds `NtdBackspace`.
|
|
38
|
+
|
|
39
|
+
**Class names inside components.** 834 class names in library stylesheets had no `nice-` prefix
|
|
40
|
+
(`.tab-button`, `.status-badge`, `.selected`, …) and styled every element of that name on the page.
|
|
41
|
+
They follow `nice-{block}__{element}--{modifier}` now — no change on screen. The class theme hooks
|
|
42
|
+
next to `[data-theme]` on seven controls (`dark` on the AI chart / data grid / code and HTML
|
|
43
|
+
editors / form builder, `light-theme` on `NiceMAM` and `NiceVideoAnnotator`) are `nice-dark` /
|
|
44
|
+
`nice-light`; `NiceLowPowerMode` marks `<html>` with `nice-lpm-no-animations` /
|
|
45
|
+
`nice-lpm-reduced-quality`; the `NiceVideoEditor` of `@nice2dev/ui-video` styles its elements under
|
|
46
|
+
`nice-video-studio`, so they no longer collide with the `NiceVideoEditor` of `@nice2dev/ui`.
|
|
47
|
+
Rules for classes nothing rendered are gone, among them the stylesheet of `NiceGanttChart`, which
|
|
48
|
+
left ui-erp in 1.0.10.
|
|
49
|
+
|
|
50
|
+
**Translations.** About 3,400 UI texts in 32 packages were hard-coded; they go through `t()` now,
|
|
51
|
+
with the English text unchanged and pl / de / fr / es / uk in `@nice2dev/i18n` (ui-diagrams,
|
|
52
|
+
ui-presentations and ui-math in their own dictionaries). In `@nice2dev/events` and
|
|
53
|
+
`@nice2dev/admin` that includes column headers, option labels and the statuses and roles they used
|
|
54
|
+
to print raw (`checked-in`, `no-show`) — English labels for those come from the dictionary. ui-3d and ui-graphics read the app's
|
|
55
|
+
global translator, as ui-audio does since 1.2.0 — their own provider overrides it. ui-audio's
|
|
56
|
+
controls used 631 keys the dictionary did not have (English in every language), and the radio
|
|
57
|
+
player showed raw keys (`search_stations`). Texts that were hard-coded **in Polish** — in
|
|
58
|
+
`NiceSidebarNav`, `NiceNetworkDiscoveryPanel`, the backup and smart-home controls,
|
|
59
|
+
`NiceSavedQueryPanel`, `NiceNotificationPreferences`, the ui-buildings panels, the ui-printing
|
|
60
|
+
template editor and the photo editor — default to English now; Polish is in the dictionary. English
|
|
61
|
+
plurals glued on (`result{s}`) are two keys. `presentationsTranslator(lang)` (ui-presentations)
|
|
62
|
+
translates outside its provider.
|
|
63
|
+
|
|
64
|
+
**List props are optional.** 170 list props (`items`, `columns`, `data`, …) in 15 packages that
|
|
65
|
+
were required without a default are optional, with a stable empty default; every one of those
|
|
66
|
+
controls mounts without data (tested). `NiceStockChart` without data no longer computes NaN
|
|
67
|
+
coordinates.
|
|
68
|
+
|
|
69
|
+
**Unstyled components get stylesheets.** 98 components rendered class names no stylesheet had —
|
|
70
|
+
admin panels, auth forms, events rounds and pickers, the ERP invoice / purchase order / VAT table /
|
|
71
|
+
HR dashboard, the radio player, `NiceInbox`, PWA prompts, `NiceViewRenderer`, shells, smart-home,
|
|
72
|
+
… The fixed layout that sat in inline style objects is in classes now, so an app can override it;
|
|
73
|
+
values that depend on data stay inline. **`@nice2dev/social` and `@nice2dev/ui-science` ship a
|
|
74
|
+
stylesheet — import `@nice2dev/social/style.css` / `@nice2dev/ui-science/style.css`.** ui-science's
|
|
75
|
+
`sideEffects` is `["*.css"]`. Colours, spacing and radii in every stylesheet come from theme tokens
|
|
76
|
+
(visible in dark themes: `NiceRecipe` difficulty badges, transcoder states, warehouse heat map).
|
|
77
|
+
|
|
78
|
+
**Icons only from Nice.** About 130 glyphs (`×`, `→`, `↑`) and 100 pasted `<svg>` used as icons
|
|
79
|
+
are Nice icons; 11 `<svg>` stay as the control's own graphic (logos, spinners, checkbox mark). `NiceIcon`
|
|
80
|
+
gains `pin`, `mic-off`, `log-out`, `chevrons-left`, `chevrons-right`, `zoom-in`, `zoom-out`,
|
|
81
|
+
`navigation`, `refresh-ccw`, `minimize` and `smartphone`; `@nice2dev/icons` gains
|
|
82
|
+
`NtdMicrophoneOff`. The `icon` fields of the module, menu, tab, mode, quick-action, scene and admin
|
|
83
|
+
widget DTOs, notification channels and view toolbar items are rendered through `NiceIcon` — they
|
|
84
|
+
used to be printed as text. `NiceRatings` `thumbs` draws shapes instead of emoji.
|
|
85
|
+
|
|
86
|
+
**Dialogs instead of `window.prompt` / `confirm` / `alert`.** New `useNiceDialogs()` — `prompt`,
|
|
87
|
+
`confirm` and `alert` as promises on `NicePromptDialog` / `NiceConfirmDialog` — and
|
|
88
|
+
`NiceConfirmDialog.showReject`. Seventeen controls asked through the browser's blocking dialogs and
|
|
89
|
+
use the library's now (`NiceFileManager`, `NiceHtmlEditor`, `NiceViewRenderer` action `confirm`, the 3D,
|
|
90
|
+
vector and pixel editors, …). Keys pressed in `NicePromptDialog` / `NiceConfirmDialog` no longer
|
|
91
|
+
reach the page's shortcuts (Escape still closes them), and `NicePromptDialog`'s backdrop covers the
|
|
92
|
+
whole viewport.
|
|
93
|
+
|
|
94
|
+
**Smaller fixes.** `NiceFileManager.items` is optional. `NiceMLStudio` status badges: `draft`,
|
|
95
|
+
`registered`, `archived`, `cancelled` get a neutral colour, deploying / stopped deployments theirs.
|
|
96
|
+
Component docs (`doc.json`) list only props the components have. `NiceMobileTabs`: tabs beyond
|
|
97
|
+
`maxTabs` open from "More" (it only logged). `NiceInventoryManager`: new `onCreatePurchaseOrder`;
|
|
98
|
+
without it the "Create PO" button is gone (it only logged). Keyboard: `NiceNavShell` tabs follow the
|
|
99
|
+
WAI-ARIA tabs pattern, clickable `NiceDeviceTile` / `NiceCardGroup` cards and animated icons with
|
|
100
|
+
`trigger="click"` are focusable. ui-math: `CalculatorService.evaluate` parses instead of running
|
|
101
|
+
`new Function` (`asin`, `sinh`, `ceil`, exponents and `angleUnit` were wrong); `ExpressionParser`
|
|
102
|
+
takes `functions`, `constants`, `ignoreCase` and `strict`, multiplies implicitly (`2x`) and reads `^`
|
|
103
|
+
right to left. `InvoiceLine.vatRate` and `VatRate.rate` are documented as fractions (0.23).
|
|
104
|
+
`AmqpServerBinding` is `Record<string, never>`.
|
|
105
|
+
|
|
106
|
+
## 1.2.0
|
|
107
|
+
|
|
108
|
+
### Minor Changes
|
|
109
|
+
|
|
110
|
+
- 3a4939d: 1.2.0 — the API cleanup announced for this version, dictionaries per language by default, and
|
|
111
|
+
three new controls. **Breaking:** every removal has a replacement, listed name by name in
|
|
112
|
+
`documentation/omniverk/OMNIVERK_UPGRADE_1.2.0.md`.
|
|
113
|
+
|
|
114
|
+
**Removed (breaking).** All 118 `@deprecated` names: the aliases without the `Nice` prefix in
|
|
115
|
+
`ui-audio`, `ui-graphics` and `ui-3d`; `NiceBarcodeGenerator` (→ `NiceBarcode`), `NiceFloorPlanCanvas`
|
|
116
|
+
(→ `NiceSpatialEditor` in `@nice2dev/ui-buildings`), the v2 props and types of `NiceTopNav`,
|
|
117
|
+
`NiceProgress.showLabel`, `NiceCountryPicker.showDialCode` / `showFlag`, `type` on
|
|
118
|
+
`NiceDateTimePicker` / `NiceDateRangeBox` (→ `dateFormatPreset`); `ZoneOccupancy` in
|
|
119
|
+
`ui-buildings` and `events`, the `SmartHome*` types; the icon variant `flat` (→ `cutout`) and
|
|
120
|
+
`NiceIconEditor` (→ `NiceVectorEditor`); `NiceSizeLegacy`; the `snapGrid` module of `ui-diagrams` (→
|
|
121
|
+
`@nice2dev/spatial-core`); the opt-in stylesheet `@nice2dev/ui/css/legacy-bg-text-aliases.css`, which
|
|
122
|
+
formed an alias cycle with `style.css`. Props that were accepted and never read — 19 on
|
|
123
|
+
`NiceModuleGrid`, and more on `NiceAutocomplete`, `NiceTaskInbox`, `NiceConsentBanner`, the
|
|
124
|
+
building and communication controls, four `ui-audio` panels and `NiceStreamDashboard` — are gone
|
|
125
|
+
from the types. `NiceResourceAllocation` in `ui-erp` is `NiceCapacityPlanner` (the one in `ui`
|
|
126
|
+
keeps its name); `NiceGenericPlayerStageVisualizer` (→ `NiceStageVisualizer`) and
|
|
127
|
+
`NiceCubeBrowserProps` are removed. The `@nice2dev/ui/overlays` entry calls its modal, drawer,
|
|
128
|
+
bottom sheet and context menu `NiceOverlayModal`, `NiceOverlayDrawer`, `NiceOverlayBottomSheet` and
|
|
129
|
+
`NiceOverlayContextMenu`: the old names belonged to different components of `@nice2dev/ui`.
|
|
130
|
+
|
|
131
|
+
**Dictionaries per language.** `NiceI18nProvider` loads only the language in use, with `import()`
|
|
132
|
+
(it was `NiceI18nLazyProvider` in 1.1.10, which stays as the same component); the controls show their
|
|
133
|
+
built-in English until it arrives — `await loadNiceDictionary(lang)` before the first render to start
|
|
134
|
+
in the language. Nothing on the main entry of `@nice2dev/i18n` imports a dictionary any more:
|
|
135
|
+
`NICE_I18N_DICTIONARIES`, `createTranslator`, `NICE_I18N_VARIANTS` / `resolvePlVariant` and the
|
|
136
|
+
translation tooling moved to the new entry `@nice2dev/i18n/all`, and `@nice2dev/ui-core` no longer
|
|
137
|
+
re-exports the dictionary map. `@nice2dev/ui` with what it bundles: 1283 kB → 952 kB gzip loaded up
|
|
138
|
+
front. The `ui-audio` controls read the app's `NiceI18nProvider` now; their own provider overrides it.
|
|
139
|
+
|
|
140
|
+
**New controls.** `NiceRecurrenceEditor`, `NiceStopwatch`, `NiceCountdownTimer` (`@nice2dev/ui`) and
|
|
141
|
+
`NicePasswordGenerator` (`@nice2dev/auth`), plus `recurrenceDates()` and `generatePassword()`.
|
|
142
|
+
`NiceScheduler` honours a weekly rule's `byDay`, which it ignored.
|
|
143
|
+
|
|
144
|
+
**Visible changes.** The palette meets WCAG AA for text on every fill: darker fills in the light
|
|
145
|
+
theme, dark text on the fills of the dark theme (new `--nice-text-on-success` / `-error` / `-info` /
|
|
146
|
+
`-accent` / `-warning`; `NiceThemeText` takes `onSuccess`, `onError`, `onInfo`, `onWarning`). Mobile
|
|
147
|
+
and platform panels follow the app theme instead of `prefers-color-scheme`. Swipes in
|
|
148
|
+
`NiceSwipeActions`, `NiceTouchTable` and `NiceMobileCalendar` work with a mouse and a pen. The
|
|
149
|
+
`ui-forms` editors have the intended spacing (it was four times too large). `NiceMAM`,
|
|
150
|
+
`NiceTranscoder`, `NiceVideoAnnotator` and `NiceStreamDashboard` use `nice-`-prefixed BEM classes.
|
|
151
|
+
|
|
152
|
+
**Fixes.** Controls that invented results ask the host instead: `NiceIntegrationHub`,
|
|
153
|
+
`NiceMLStudio` (`onExperimentRun` may return metrics), `NiceRemoteManagement`
|
|
154
|
+
(`onCaptureScreenshot`), `NicePoseDetector` (`detector`), `NiceBatchScannerProvider`,
|
|
155
|
+
`NiceCacheStrategies`; `NiceLowCodeStudio` accepts dropped components. Controls that did nothing
|
|
156
|
+
work or say why they are off: `NiceStreamDashboard` adds sources, sends chat and runs the chosen
|
|
157
|
+
transition (new `onAddPlatform`, `onSendChatMessage`, `onTransition`, `onScreenshot`,
|
|
158
|
+
`onOpenAudioMixer`, `onOpenSettings`; `receiveChatMessage` feeds incoming chat), `NiceMLStudio`
|
|
159
|
+
downloads through `onModelDownload`, `NiceETLBuilder` saves through `onSave` (its Save button had
|
|
160
|
+
no handler), `NiceTranscoder` makes jobs of picked and dropped files, `NiceAutomationEditor` offers
|
|
161
|
+
the trigger types its model has. Texts of about fifty components go
|
|
162
|
+
through `t()` in six languages, among them the AI data grid, chart and form builders, the ML
|
|
163
|
+
studio, the report designer, the song picker, `NiceProtocolConfig`, `NiceETLBuilder` and
|
|
164
|
+
`NiceInlineHelp` — every key the controls pass to `t()` now has a dictionary entry, so none of
|
|
165
|
+
them stays English under another language; `NiceDataGridAI` sorts on a query in any language, not
|
|
166
|
+
only in English. `NiceWindow`, `NiceConsole`, `NiceFileManager` and `NiceGitManager` no longer
|
|
167
|
+
crash when `accessMode` switches to or from `'hidden'`. Ids come from `createId()` (`@nice2dev/ui-core`), so nothing throws
|
|
168
|
+
outside a secure context as `crypto.randomUUID()` did on plain http. `ui-3d` runs on three r183
|
|
169
|
+
without its deprecation warnings. `NiceRemoteManagement` calls the handlers of the latest render.
|
|
170
|
+
The AI hint popover and the `ui-platform` panels follow the app theme, not the system's or a
|
|
171
|
+
`.dark` class on the host. `NiceCommandPalette` has styles and its search filters;
|
|
172
|
+
`NiceTimeoutFeedback` starts its clock; `NiceOfflineBanner` takes `online`; Monaco's workers in
|
|
173
|
+
`NiceCodeEditor` load; the `ui-audio` panels that used Bootstrap classes use Nice controls; colours
|
|
174
|
+
that reached a canvas as `var(…)` (karaoke lanes and notes) are resolved first.
|
|
175
|
+
|
|
3
176
|
## 1.1.10
|
|
4
177
|
|
|
5
178
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -103,12 +103,6 @@ See [docs/PER_PACKAGE_IMPORT_MATRIX.md](../../docs/PER_PACKAGE_IMPORT_MATRIX.md)
|
|
|
103
103
|
import '@nice2dev/ui/style.css';
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
-
Optional legacy token aliases:
|
|
107
|
-
|
|
108
|
-
```tsx
|
|
109
|
-
import '@nice2dev/ui/css/legacy-bg-text-aliases.css';
|
|
110
|
-
```
|
|
111
|
-
|
|
112
106
|
## Examples
|
|
113
107
|
|
|
114
108
|
Live, interactive examples for every component are available in the [Nice2Dev showcase](https://github.com/nice2dev/NiceToDev.UI/tree/main/packages/showcase) — each entry exposes presets, size / state / label / error placement selectors and full prop documentation.
|
package/dist/api-designer.d.ts
CHANGED
|
@@ -140,8 +140,7 @@ export interface OpenAPIEncoding {
|
|
|
140
140
|
allowReserved?: boolean;
|
|
141
141
|
}
|
|
142
142
|
/** Header object */
|
|
143
|
-
export
|
|
144
|
-
}
|
|
143
|
+
export type OpenAPIHeader = Omit<OpenAPIParameter, 'name' | 'in'>;
|
|
145
144
|
/** Response object */
|
|
146
145
|
export interface OpenAPIResponse {
|
|
147
146
|
description: string;
|
|
@@ -529,9 +528,8 @@ export interface KafkaServerBinding {
|
|
|
529
528
|
schemaRegistryUrl?: string;
|
|
530
529
|
schemaRegistryVendor?: string;
|
|
531
530
|
}
|
|
532
|
-
/** AMQP server binding */
|
|
533
|
-
export
|
|
534
|
-
}
|
|
531
|
+
/** AMQP server binding — the AsyncAPI bindings spec reserves it and defines no fields. */
|
|
532
|
+
export type AmqpServerBinding = Record<string, never>;
|
|
535
533
|
/** AsyncAPI channel */
|
|
536
534
|
export interface AsyncAPIChannel {
|
|
537
535
|
description?: string;
|
|
@@ -691,9 +689,8 @@ export interface AsyncAPIParameter {
|
|
|
691
689
|
schema?: AsyncAPISchema;
|
|
692
690
|
location?: string;
|
|
693
691
|
}
|
|
694
|
-
/** AsyncAPI schema (JSON Schema) */
|
|
695
|
-
export
|
|
696
|
-
}
|
|
692
|
+
/** AsyncAPI schema (JSON Schema, as OpenAPI's) */
|
|
693
|
+
export type AsyncAPISchema = OpenAPISchema;
|
|
697
694
|
/** AsyncAPI tag */
|
|
698
695
|
export interface AsyncAPITag {
|
|
699
696
|
name: string;
|
package/dist/api-testing.d.ts
CHANGED
|
@@ -446,14 +446,11 @@ export interface ScriptVariables {
|
|
|
446
446
|
toObject(): Record<string, string>;
|
|
447
447
|
}
|
|
448
448
|
/** Script environment */
|
|
449
|
-
export
|
|
450
|
-
}
|
|
449
|
+
export type ScriptEnvironment = ScriptVariables;
|
|
451
450
|
/** Script globals */
|
|
452
|
-
export
|
|
453
|
-
}
|
|
451
|
+
export type ScriptGlobals = ScriptVariables;
|
|
454
452
|
/** Script collection variables */
|
|
455
|
-
export
|
|
456
|
-
}
|
|
453
|
+
export type ScriptCollectionVariables = ScriptVariables;
|
|
457
454
|
/** Script iteration data */
|
|
458
455
|
export interface ScriptIterationData {
|
|
459
456
|
get(key: string): unknown;
|
package/dist/index.cjs
CHANGED
|
@@ -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;
|
|
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(){}initPEX(){}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;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CURRENT_SCHEMA_VERSION as It, NiceAuditLog as Et, NiceChat as Nt, NiceColumnChooser as Ft, NiceComponentTypeMapping as Bt, NiceDesignTokens as Rt, NiceDiagramDesigner as Ut, NiceDisplayStylePicker as Vt, NiceDocumentViewer as
|
|
1
|
+
import { CURRENT_SCHEMA_VERSION as It, NiceAuditLog as Et, NiceChat as Nt, NiceColumnChooser as Ft, NiceComponentTypeMapping as Bt, NiceDesignTokens as Rt, NiceDiagramDesigner as Ut, NiceDisplayStylePicker as Vt, NiceDocumentViewer as Qt, NiceDraggable as Ht, NiceFeatureFlagsProvider as $t, NiceFeatureGate as qt, NiceFileManager as Gt, NiceFilterBuilder as Wt, NiceGallery as Kt, NiceGitManager as Xt, NiceLifecycleHooksEditor as Jt, NiceMap as Yt, NiceModuleHotSwap as Zt, NiceModuleLoaderProvider as eo, NiceModuleRoute as to, NicePermissionMatrix as oo, NicePrintPreview as no, NiceRecipeEditor as ro, NiceRevisionHistory as so, NiceShowcase as ao, NiceSortable as io, NiceSpeechToText as lo, NiceThemeDesigner as co, NiceUndoManager as uo, NiceUndoProvider as po, NiceUpload as fo, NiceValidationGroup as go, NiceValidationSummary as mo, NiceValidator as ho, NiceViewCache as bo, NiceViewFetchError as wo, NiceViewFetcher as yo, NiceViewHotReload as So, NiceViewRegistry as _o, NiceViewRenderer as vo, autoDetectColumns as Mo, checkModuleHealth as To, checkPermissions as Do, checkSingleModule as Oo, compareSemver as Ao, createEmptyRecipe as jo, createStandardErpContracts as Po, createUndoMiddleware as zo, defaultTypeMapping as Co, defaultViewRegistry as ko, deserializeManifest as xo, deserializeRbacPolicy as Lo, deserializeView as Io, diffObjects as Eo, diffViews as No, downloadCSV as Fo, downloadHTML as Bo, downloadJSON as Ro, downloadPDF as Uo, downloadXLSX as Vo, exportToCSV as Qo, exportToHTML as Ho, exportToJSON as $o, exportToPDF as qo, exportToXLSX as Go, extractControlTypes as Wo, extractTokensFromTheme as Ko, formatDiffAsText as Xo, generateAllForRbac as Jo, generateAllForView as Yo, generateDartModel as Zo, generateMermaidSyntax as en, generateRbacDart as tn, generateRbacTypescript as on, generateScaffold as nn, generateStoriesFromViews as rn, generateStoryFromView as sn, generateTokens as an, generateTypescriptModel as ln, generateViewCatalog as dn, isAllowed as cn, isVersionCompatible as un, isViewCompatibleWith as pn, listScaffoldTemplates as fn, newRecipeId as gn, niceExport as mn, recipeTotalMinutes as hn, resolvePermissions as bn, runContractTests as wn, serializeManifest as yn, serializeRbacPolicy as Sn, serializeView as _n, useAuditLog as vn, useColumnChooser as Mn, useFeatureFlag as Tn, useFeatureFlags as Dn, useModuleLoader as On, useNiceValidation as An, usePrintPreview as jn, useUndoKeyboard as Pn, useUndoManager as zn, validateCrossPlatformView as Cn, validateDiagramSchema as kn, validateModuleManifest as xn, validateRbacPolicy as Ln, validateViewDefinition as In, validateViewForDeploy as En, validateViewsBatch as Nn } from "@nice2dev/ui";
|
|
2
2
|
import { useMemo as S, useState as _, useEffect as A, useCallback as c } from "react";
|
|
3
3
|
const te = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4
4
|
__proto__: null
|
|
@@ -121,10 +121,10 @@ const te = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
121
121
|
__proto__: null
|
|
122
122
|
}, Symbol.toStringTag, { value: "Module" })), Ve = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
123
123
|
__proto__: null
|
|
124
|
-
}, Symbol.toStringTag, { value: "Module" })), He = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
125
|
-
__proto__: null
|
|
126
124
|
}, Symbol.toStringTag, { value: "Module" })), Qe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
127
125
|
__proto__: null
|
|
126
|
+
}, Symbol.toStringTag, { value: "Module" })), He = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
127
|
+
__proto__: null
|
|
128
128
|
}, Symbol.toStringTag, { value: "Module" })), $e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
129
129
|
__proto__: null
|
|
130
130
|
}, Symbol.toStringTag, { value: "Module" })), qe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -1192,13 +1192,11 @@ class U {
|
|
|
1192
1192
|
* Initializes DHT.
|
|
1193
1193
|
*/
|
|
1194
1194
|
initDHT() {
|
|
1195
|
-
console.log("DHT initialized");
|
|
1196
1195
|
}
|
|
1197
1196
|
/**
|
|
1198
1197
|
* Initializes PEX.
|
|
1199
1198
|
*/
|
|
1200
1199
|
initPEX() {
|
|
1201
|
-
console.log("PEX initialized");
|
|
1202
1200
|
}
|
|
1203
1201
|
/**
|
|
1204
1202
|
* Fetches torrent metadata from magnet.
|
|
@@ -1315,14 +1313,14 @@ async function V(r) {
|
|
|
1315
1313
|
};
|
|
1316
1314
|
}
|
|
1317
1315
|
let w = null;
|
|
1318
|
-
function
|
|
1316
|
+
function Q(r) {
|
|
1319
1317
|
return w || (w = new U(r)), w;
|
|
1320
1318
|
}
|
|
1321
1319
|
function At() {
|
|
1322
1320
|
w == null || w.dispose(), w = null;
|
|
1323
1321
|
}
|
|
1324
1322
|
function jt(r = {}) {
|
|
1325
|
-
const { config: e, autoRefresh: t = !0, refreshInterval: o = 1e3 } = r, n = S(() =>
|
|
1323
|
+
const { config: e, autoRefresh: t = !0, refreshInterval: o = 1e3 } = r, n = S(() => Q(e), [e]), [s, a] = _(n.getAllTorrents()), [d, f] = _(n.getStatistics());
|
|
1326
1324
|
A(() => {
|
|
1327
1325
|
const i = () => {
|
|
1328
1326
|
a([...n.getAllTorrents()]), f(n.getStatistics());
|
|
@@ -1373,7 +1371,7 @@ function jt(r = {}) {
|
|
|
1373
1371
|
createTorrent: V
|
|
1374
1372
|
};
|
|
1375
1373
|
}
|
|
1376
|
-
const
|
|
1374
|
+
const H = {
|
|
1377
1375
|
cookiesAllowed: !1,
|
|
1378
1376
|
localStorageAllowed: !1,
|
|
1379
1377
|
sessionStorageAllowed: !1,
|
|
@@ -1450,7 +1448,7 @@ const Q = {
|
|
|
1450
1448
|
}, Pt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1451
1449
|
__proto__: null,
|
|
1452
1450
|
DEFAULT_FULL_POLICY: $,
|
|
1453
|
-
DEFAULT_TRACELESS_POLICY:
|
|
1451
|
+
DEFAULT_TRACELESS_POLICY: H,
|
|
1454
1452
|
MODE_CAPABILITIES: q
|
|
1455
1453
|
}, Symbol.toStringTag, { value: "Module" })), G = {
|
|
1456
1454
|
normalText: 4.5,
|
|
@@ -1708,7 +1706,7 @@ export {
|
|
|
1708
1706
|
ct as Education,
|
|
1709
1707
|
$e as EmailTemplate,
|
|
1710
1708
|
ut as ErpEnterprise,
|
|
1711
|
-
|
|
1709
|
+
Qe as FormBuilder,
|
|
1712
1710
|
kt as GameEngineAdvanced,
|
|
1713
1711
|
me as Git,
|
|
1714
1712
|
lt as HardwareIntegration,
|
|
@@ -1735,8 +1733,8 @@ export {
|
|
|
1735
1733
|
Rt as NiceDesignTokens,
|
|
1736
1734
|
Ut as NiceDiagramDesigner,
|
|
1737
1735
|
Vt as NiceDisplayStylePicker,
|
|
1738
|
-
|
|
1739
|
-
|
|
1736
|
+
Qt as NiceDocumentViewer,
|
|
1737
|
+
Ht as NiceDraggable,
|
|
1740
1738
|
$t as NiceFeatureFlagsProvider,
|
|
1741
1739
|
qt as NiceFeatureGate,
|
|
1742
1740
|
Gt as NiceFileManager,
|
|
@@ -1771,7 +1769,7 @@ export {
|
|
|
1771
1769
|
Re as PdfTools,
|
|
1772
1770
|
pe as Pipelines,
|
|
1773
1771
|
te as RemoteDesktop,
|
|
1774
|
-
|
|
1772
|
+
He as ReportDesigner,
|
|
1775
1773
|
et as ScadaIndustrial,
|
|
1776
1774
|
ft as ScientificResearch,
|
|
1777
1775
|
xe as SecretManagement,
|
|
@@ -1820,8 +1818,8 @@ export {
|
|
|
1820
1818
|
Ro as downloadJSON,
|
|
1821
1819
|
Uo as downloadPDF,
|
|
1822
1820
|
Vo as downloadXLSX,
|
|
1823
|
-
|
|
1824
|
-
|
|
1821
|
+
Qo as exportToCSV,
|
|
1822
|
+
Ho as exportToHTML,
|
|
1825
1823
|
$o as exportToJSON,
|
|
1826
1824
|
qo as exportToPDF,
|
|
1827
1825
|
Go as exportToXLSX,
|
|
@@ -1852,7 +1850,7 @@ export {
|
|
|
1852
1850
|
N as getDownloadManager,
|
|
1853
1851
|
x as getFileType,
|
|
1854
1852
|
Ot as getLargestFile,
|
|
1855
|
-
|
|
1853
|
+
Q as getTorrentClient,
|
|
1856
1854
|
Tt as getVideoFiles,
|
|
1857
1855
|
cn as isAllowed,
|
|
1858
1856
|
un as isVersionCompatible,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nice2dev/ui-tools",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Nice2Dev UI Tools — FileManager, FilterBuilder, Gallery, Map, Git, Validation, Export, ColumnChooser, AuditLog, Designers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
"prepublishOnly": "npm run build"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@nice2dev/ui": "^1.0
|
|
31
|
+
"@nice2dev/ui": "^1.2.0",
|
|
32
32
|
"react": ">=17.0.0",
|
|
33
33
|
"react-dom": ">=17.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@nice2dev/ui": "^1.1
|
|
36
|
+
"@nice2dev/ui": "^1.2.1",
|
|
37
37
|
"@types/react": "^19.2.18",
|
|
38
38
|
"@types/react-dom": "^19.2.7",
|
|
39
39
|
"@vitejs/plugin-react": "^4.7.0",
|