@nice2dev/erp-adapter 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -0
- package/dist/ErpAuthAdapter.d.ts +0 -1
- package/dist/ErpDataAdapter.d.ts +0 -1
- package/dist/ErpExportAdapter.d.ts +0 -1
- package/dist/ErpFileAdapter.d.ts +0 -1
- package/dist/ErpOfflineQueue.d.ts +0 -1
- package/dist/ErpOptimisticStore.d.ts +0 -1
- package/dist/ErpRateLimiter.d.ts +0 -1
- package/dist/ErpSignalRAdapter.d.ts +0 -1
- package/dist/IconConfig.d.ts +0 -1
- package/dist/__tests__/ErpAuthAdapter.test.d.ts +0 -1
- package/dist/__tests__/ErpDataAdapter.test.d.ts +0 -1
- package/dist/__tests__/ErpExportAdapter.test.d.ts +0 -1
- package/dist/__tests__/ErpFileAdapter.test.d.ts +0 -1
- package/dist/__tests__/ErpOfflineQueue.test.d.ts +0 -1
- package/dist/__tests__/ErpOptimisticStore.test.d.ts +0 -1
- package/dist/__tests__/ErpRateLimiter.test.d.ts +0 -1
- package/dist/__tests__/middleware.test.d.ts +0 -1
- package/dist/__tests__/registries.test.d.ts +0 -1
- package/dist/business/formation.d.ts +0 -1
- package/dist/certification/hub.d.ts +0 -1
- package/dist/finance/loans.d.ts +0 -1
- package/dist/finance/useLoanApi.d.ts +0 -1
- package/dist/gov/services.d.ts +0 -1
- package/dist/grants/subsidies.d.ts +0 -1
- package/dist/index.cjs +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.mjs +358 -117
- package/dist/life/travel.d.ts +0 -1
- package/dist/middleware.d.ts +0 -1
- package/dist/registries/audioControls.d.ts +0 -1
- package/dist/registries/authControls.d.ts +0 -1
- package/dist/registries/businessControls.d.ts +0 -1
- package/dist/registries/gamificationControls.d.ts +0 -1
- package/dist/registries/graphicControls.d.ts +0 -1
- package/dist/registries/index.d.ts +0 -1
- package/dist/registries/socialControls.d.ts +0 -1
- package/dist/registries/threeControls.d.ts +0 -1
- package/dist/types.d.ts +4 -5
- package/dist/useCollaborativeDataGrid.d.ts +0 -1
- package/dist/useEntityPresence.d.ts +0 -1
- package/dist/useSignalRLiveData.d.ts +0 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,57 @@
|
|
|
1
1
|
# @nice2dev/erp-adapter — Changelog
|
|
2
2
|
|
|
3
|
+
## 1.1.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Close the three items left open in the 1.1.6 response to OmniVerk.
|
|
8
|
+
|
|
9
|
+
**Every value control works without state in the parent.** The `audit-controllable-state` gate
|
|
10
|
+
counted 87 value props that were required with no `default*`, so the control could not render from a
|
|
11
|
+
manifest without data. It now reports 0 and gates CI at `--max=0`. 48 controls gained `default*` props
|
|
12
|
+
through `useControllableState` (existing `value` + handler call sites behave as before); 33 read-only
|
|
13
|
+
data lists are optional with a stable empty default; 4 props paired with a handler only by name are
|
|
14
|
+
optional; `NiceWhiteboard` and `NiceMetricsDashboard` render an empty state until a session or
|
|
15
|
+
dashboard arrives. Additive API only — nothing renamed or removed.
|
|
16
|
+
|
|
17
|
+
- `NicePivotGrid.fields`, `NiceScheduler.events` and `NiceGitHooks.hooks` are controlled only together
|
|
18
|
+
with their change handler, as `NiceScheduler` already documented for `currentDate`/`view`. A bare
|
|
19
|
+
prop stays an initial value; prop plus handler now always wins (later prop updates used to be
|
|
20
|
+
ignored). `NiceGitHooks.onHookChange` is now called; `onHooksChange` and
|
|
21
|
+
`NiceLocaleManager.onTranslationsChange` are new.
|
|
22
|
+
- `NiceCodeEditor` / `NiceCodeDiffEditor` no longer report a value written from the prop back through
|
|
23
|
+
`onChange`, and call the latest handler rather than the one captured at mount.
|
|
24
|
+
- `NiceHtmlEditor` no longer rewrites its content on every render (React 19 compares the
|
|
25
|
+
`dangerouslySetInnerHTML` object, not its string), which moved the caret; the HTML source and
|
|
26
|
+
Markdown views can be closed again.
|
|
27
|
+
- Selections seeded once from the first item (access manager, automation/scene editors, git diff
|
|
28
|
+
viewer, ribbon, setup wizard) follow data that arrives after mount.
|
|
29
|
+
- `useControllableState`: new `fallbackValue` seed that never triggers the value/default clash warning;
|
|
30
|
+
two functional updates in one tick no longer lose the first; `onChange` is called with one argument
|
|
31
|
+
when there is no meta. `UseControllableStateOptions` is now a union type alias.
|
|
32
|
+
|
|
33
|
+
**`--nice-*` is the source of truth for design tokens.** Controls read only `--nice-*` (9,225 reads in
|
|
34
|
+
339 files). The unprefixed names (`--color-primary`, `--bg-primary`, `--text-muted`, …) stay declared
|
|
35
|
+
as aliases pointing at the Nice tokens, so reading them works, but setting them no longer repaints Nice
|
|
36
|
+
controls. Apps that relied on that can import `@nice2dev/ui/css/legacy-bg-text-aliases.css` after
|
|
37
|
+
`style.css` (removed in 1.2), or set `--nice-color-primary` and friends directly. 13 tokens that were
|
|
38
|
+
read and never declared (`--color-danger`, `--text-on-primary`, `--color-white`, …) are defined; the
|
|
39
|
+
dark blocks define the canonical names, so `.nice-dark` on `<body>` no longer leaves them on light
|
|
40
|
+
values; `--nice-primary-bg` and `--nice-selected-bg` are a primary tint instead of falling through to
|
|
41
|
+
grey. New gate `audit-token-names`.
|
|
42
|
+
|
|
43
|
+
**Node ESM and `require()`.** `@nice2dev/spatial-core` imports from plain Node ESM (51 relative
|
|
44
|
+
specifiers gained extensions, enforced by `nodenext`), and so does `@nice2dev/ui-buildings`, which
|
|
45
|
+
failed through it. `require()` works for `ui-3d`, `ui-graphics` and `game-engine`. The package-exports
|
|
46
|
+
gate now loads every entry in both module systems.
|
|
47
|
+
|
|
48
|
+
**Hygiene.** Sources are prettier-formatted and CI gates on it; 640 stale `.d.ts` files were removed
|
|
49
|
+
from source trees (never published).
|
|
50
|
+
|
|
51
|
+
## 1.1.6
|
|
52
|
+
|
|
53
|
+
No changes in this release.
|
|
54
|
+
|
|
3
55
|
## 1.1.5
|
|
4
56
|
|
|
5
57
|
No changes in this release.
|
package/dist/ErpAuthAdapter.d.ts
CHANGED
package/dist/ErpDataAdapter.d.ts
CHANGED
package/dist/ErpFileAdapter.d.ts
CHANGED
|
@@ -40,4 +40,3 @@ export declare class ErpFileAdapter {
|
|
|
40
40
|
*/
|
|
41
41
|
uploadMultipleWithProgress(files: File[], onProgress: (fileIndex: number, event: UploadProgressEvent) => void, folder?: string, signal?: AbortSignal): Promise<ErpResponse<ErpFileInfo>[]>;
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=ErpFileAdapter.d.ts.map
|
package/dist/ErpRateLimiter.d.ts
CHANGED
|
@@ -14,4 +14,3 @@ export interface ErpSignalRAdapter {
|
|
|
14
14
|
* This keeps the dependency optional — consumers must install it themselves.
|
|
15
15
|
*/
|
|
16
16
|
export declare function createSignalRAdapter(config: ErpSignalRConfig): Promise<ErpSignalRAdapter>;
|
|
17
|
-
//# sourceMappingURL=ErpSignalRAdapter.d.ts.map
|
package/dist/IconConfig.d.ts
CHANGED
package/dist/finance/loans.d.ts
CHANGED
package/dist/gov/services.d.ts
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var we=Object.create;var ie=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var ve=Object.getOwnPropertyNames;var ke=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Ee=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ve(e))!Ce.call(i,a)&&a!==t&&ie(i,a,{get:()=>e[a],enumerable:!(n=Se(e,a))||n.enumerable});return i};var Te=(i,e,t)=>(t=i!=null?we(ke(i)):{},Ee(e||!i||!i.__esModule?ie(t,"default",{value:i,enumerable:!0}):t,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react");class Ve{constructor(e){this.cfg=typeof e=="string"?{baseUrl:e}:e}async request(e,t){const n=this.cfg.fetch??globalThis.fetch,a={"Content-Type":"application/json",...this.cfg.headers};if(this.cfg.tokenFactory){const l=await this.cfg.tokenFactory();a.Authorization=`Bearer ${l}`}const r=await n(`${this.cfg.baseUrl}${e}`,{...t,headers:{...a,...t==null?void 0:t.headers}});if(!r.ok)throw new Error(`ERP request failed: ${r.status} ${r.statusText}`);return r.json()}async load(e){var a,r;const t=new URLSearchParams;(e==null?void 0:e.skip)!=null&&t.set("skip",String(e.skip)),(e==null?void 0:e.take)!=null&&t.set("take",String(e.take)),e!=null&&e.search&&t.set("search",e.search),(a=e==null?void 0:e.sort)!=null&&a.length&&t.set("sort",JSON.stringify(e.sort)),(r=e==null?void 0:e.filters)!=null&&r.length&&t.set("filters",JSON.stringify(e.filters));const n=t.toString();return this.request(n?`?${n}`:"")}async getById(e){return this.request(`/${e}`)}async create(e){return this.request("",{method:"POST",body:JSON.stringify(e)})}async update(e,t){return this.request(`/${e}`,{method:"PUT",body:JSON.stringify(t)})}async remove(e){return this.request(`/${e}`,{method:"DELETE"})}async removeBatch(e){return this.request("/batch-delete",{method:"POST",body:JSON.stringify({ids:e})})}async createBatch(e){return this.request("/batch",{method:"POST",body:JSON.stringify({items:e})})}async updateBatch(e){return this.request("/batch",{method:"PUT",body:JSON.stringify({items:e})})}async patch(e,t){return this.request(`/${e}`,{method:"PATCH",body:JSON.stringify(t)})}}async function Pe(i){const e=await import("@microsoft/signalr");let t="disconnected";const n=new Set,a=d=>{t=d,n.forEach(g=>g(d))},l=new e.HubConnectionBuilder().withUrl(i.hubUrl,{accessTokenFactory:i.accessTokenFactory?()=>i.accessTokenFactory():void 0}).withAutomaticReconnect().build();return l.onreconnecting(()=>a("reconnecting")),l.onreconnected(()=>a("connected")),l.onclose(()=>a("disconnected")),{get status(){return t},async start(){a("connecting"),await l.start(),a("connected")},async stop(){await l.stop(),a("disconnected")},on(d,g){l.on(d,g)},off(d,g){l.off(d,g)},invoke(d,...g){return l.invoke(d,...g)},onStatusChange(d){return n.add(d),()=>n.delete(d)}}}function ue(i){const{adapter:e,entityName:t,keyField:n,initialData:a=[],onBeforeChange:r,onAfterChange:l,onConflict:c,subscribeMethod:d="SubscribeToEntity",unsubscribeMethod:g="UnsubscribeFromEntity",changeEventName:S="EntityChanged",flashChanges:w=!0,flashDuration:T=500,optimisticUpdates:A=!0}=i,[W,L]=o.useState(a),[Q,G]=o.useState(e.status),[X,D]=o.useState(new Set),[q,O]=o.useState(new Set),[Z,ee]=o.useState(null),B=o.useRef(new Map),z=o.useRef(new Map),_=o.useCallback((y,V)=>{const{operation:v,key:E,data:k,changes:M}=V;switch(v){case"insert":return!k||y.some(R=>R[n]===E)?y:[...y,k];case"update":return y.map(R=>{if(R[n]!==E)return R;const K=B.current.get(E);if(K&&c){const ae=c({...R,...K.changes},k??{...R,...M},V);return ae==="local"?{...R,...K.changes}:ae==="remote"?(B.current.delete(E),k??{...R,...M}):ae==="merge"?{...R,...M,...K.changes}:ae}return k||{...R,...M}});case"delete":return y.filter(R=>R[n]!==E);default:return y}},[n,c]),N=o.useCallback(y=>{if(!w)return;const V=z.current.get(y);V&&clearTimeout(V),D(E=>new Set([...E,y]));const v=setTimeout(()=>{D(E=>{const k=new Set(E);return k.delete(y),k}),z.current.delete(y)},T);z.current.set(y,v)},[w,T]),$=o.useCallback(async y=>{y.entityName===t&&(r&&!await r(y)||(L(V=>{const v=_(V,y);return l==null||l(y,v),v}),N(y.key)))},[t,r,_,l,N]),p=o.useCallback(y=>{$(y)},[$]),se=o.useCallback((y,V)=>{if(!A)return;const v=W.find(E=>E[n]===y);v&&(B.current.set(y,{original:v,changes:V}),O(E=>new Set([...E,y])))},[W,n,A]),j=o.useCallback(y=>{B.current.delete(y),O(V=>{const v=new Set(V);return v.delete(y),v})},[]),U=o.useCallback(y=>{const V=B.current.get(y);V&&(L(v=>v.map(E=>E[n]===y?V.original:E)),B.current.delete(y),O(v=>{const E=new Set(v);return E.delete(y),E}))},[n]),te=o.useCallback(async()=>{if(e.status==="connected")try{await e.invoke(d,t),ee(null)}catch(y){ee(y instanceof Error?y:new Error(String(y)))}},[e,d,t]),ne=o.useCallback(async()=>{if(e.status==="connected")try{await e.invoke(g,t)}catch{}},[e,g,t]);return o.useEffect(()=>{const y=e.onStatusChange(v=>{G(v),v==="connected"&&te()});e.on(S,$),e.status==="connected"&&te();const V=z.current;return()=>{y(),e.off(S,$),ne(),V.forEach(v=>clearTimeout(v)),V.clear()}},[e,S,$,te,ne]),o.useEffect(()=>{L(a)},[a]),{data:W,status:Q,flashedKeys:X,pendingKeys:q,error:Z,applyRemoteUpdate:p,registerPendingChange:se,confirmPendingChange:j,rollbackPendingChange:U,resubscribe:te}}function Ae(i){const{adapter:e,entityName:t,keyField:n,fetchMethod:a="GetEntities",insertMethod:r="InsertEntity",updateMethod:l="UpdateEntity",deleteMethod:c="DeleteEntity"}=i;return{async fetchAll(d){return e.invoke(a,t,d)},async insert(d){return e.invoke(r,t,d)},async update(d,g){return e.invoke(l,t,d,g)},async remove(d){return e.invoke(c,t,d)},getKeyField(){return n}}}function Oe(i,e,t){const n=new Map(i.map(a=>[a[t],a]));for(const a of e)switch(a.operation){case"insert":a.data&&!n.has(a.key)&&n.set(a.key,a.data);break;case"update":if(n.has(a.key)){const r=n.get(a.key);n.set(a.key,a.data??{...r,...a.changes})}break;case"delete":n.delete(a.key);break}return Array.from(n.values())}function ce(i){const{adapter:e,entityType:t,entityId:n,currentUser:a,initialStatus:r="viewing",heartbeatInterval:l=3e4,idleTimeout:c=6e4,awayTimeout:d=3e5,joinMethod:g="JoinEntityView",leaveMethod:S="LeaveEntityView",updateMethod:w="UpdateEntityPresence",presenceEventName:T="EntityPresenceChanged",joinedEventName:A="EntityUserJoined",leftEventName:W="EntityUserLeft",onPresenceChange:L,onEditConflict:Q}=i,[G,X]=o.useState([]),[D,q]=o.useState(r),[O,Z]=o.useState(),[ee,B]=o.useState(e.status),z=o.useRef(Date.now()),_=o.useRef(null),N=o.useRef(null),$=o.useRef(null),p=o.useMemo(()=>Array.isArray(n)?n:[n],[n]),se=o.useMemo(()=>`${t}:${[...p].sort().join(",")}`,[t,p]),j=o.useCallback(async(f,C,s)=>{if(e.status==="connected")try{await e.invoke(w,{entityType:t,entityIds:p,userId:a.id,status:f,editingField:C,selection:s,timestamp:new Date().toISOString()})}catch{}},[e,w,t,p,a.id]),U=o.useCallback((f,C)=>{q(f),Z(C),j(f,C),z.current=Date.now()},[j]),te=o.useCallback(f=>{const C=G.find(s=>s.user.id!==a.id&&s.status==="editing"&&s.editingField===f);C&&(Q==null||Q(C.user,f)),U("editing",f)},[G,a.id,Q,U]),ne=o.useCallback(()=>{U("viewing",void 0)},[U]),y=o.useCallback(f=>{j(D,O,f),z.current=Date.now()},[j,D,O]),V=o.useCallback(f=>{const C=G.find(s=>s.user.id!==a.id&&s.status==="editing"&&s.editingField===f);return(C==null?void 0:C.user)??null},[G,a.id]),v=o.useCallback(f=>{const C=G.find(s=>s.status==="editing"&&s.editingField===f);return(C==null?void 0:C.user)??null},[G]),E=o.useCallback(async()=>{if(e.status==="connected")try{const f=await e.invoke("GetEntityPresence",t,p);Array.isArray(f)&&(X(f),L==null||L(f))}catch{}},[e,t,p,L]),k=o.useCallback(()=>{z.current=Date.now(),N.current&&clearTimeout(N.current),$.current&&clearTimeout($.current),(D==="idle"||D==="away")&&U(O?"editing":"viewing",O),N.current=setTimeout(()=>{U("idle",O)},c),$.current=setTimeout(()=>{U("away",O)},d)},[D,O,c,d,U]),M=o.useCallback(f=>{f.entityType!==t||!f.entityIds.some(s=>p.includes(s))||(X(f.presence.filter(s=>s.user.id!==a.id)),L==null||L(f.presence))},[t,p,a.id,L]),R=o.useCallback(f=>{f.entityType!==t||!f.entityIds.some(s=>p.includes(s))||f.presence.user.id===a.id||X(s=>{const b=s.findIndex(I=>I.user.id===f.presence.user.id);if(b>=0){const I=[...s];return I[b]=f.presence,I}return[...s,f.presence]})},[t,p,a.id]),K=o.useCallback(f=>{f.entityType!==t||!f.entityIds.some(s=>p.includes(s))||X(s=>s.filter(b=>b.user.id!==f.userId))},[t,p]);o.useEffect(()=>{const f=e.onStatusChange(B);e.on(T,M),e.on(A,R),e.on(W,K);const C=async()=>{if(e.status==="connected")try{await e.invoke(g,{entityType:t,entityIds:p,user:a,status:D}),await E()}catch{}};return e.status==="connected"&&C(),()=>{f(),e.off(T,M),e.off(A,R),e.off(W,K),e.status==="connected"&&e.invoke(S,{entityType:t,entityIds:p,userId:a.id}).catch(()=>{})}},[e,se,g,S,T,A,W,M,R,K,E,a,D,t,p]),o.useEffect(()=>(_.current=setInterval(()=>{j(D,O)},l),()=>{_.current&&clearInterval(_.current)}),[l,j,D,O]),o.useEffect(()=>{const f=["mousemove","keydown","mousedown","touchstart","scroll"];return f.forEach(C=>window.addEventListener(C,k,{passive:!0})),N.current=setTimeout(()=>{U("idle",O)},c),$.current=setTimeout(()=>{U("away",O)},d),()=>{f.forEach(C=>window.removeEventListener(C,k)),N.current&&clearTimeout(N.current),$.current&&clearTimeout($.current)}},[k,c,d,O,U]);const ae=G.filter(f=>f.status==="viewing"||f.status==="idle").map(f=>f.user),oe=G.filter(f=>f.status==="editing").map(f=>f.user),re=oe.length>0;return{presence:G,viewers:ae,editors:oe,myStatus:D,setMyStatus:U,startEditing:te,stopEditing:ne,updateSelection:y,connectionStatus:ee,isFieldLocked:V,hasActiveEditors:re,getFieldEditor:v,refresh:E}}function de(i){const e=["#3b82f6","#ef4444","#22c55e","#f59e0b","#8b5cf6","#ec4899","#06b6d4","#84cc16","#f97316","#14b8a6"];let t=0;for(let n=0;n<i.length;n++)t=i.charCodeAt(n)+((t<<5)-t);return e[Math.abs(t)%e.length]}function Re(i){switch(i){case"viewing":return"Viewing";case"editing":return"Editing";case"idle":return"Idle";case"away":return"Away";default:return"Unknown"}}function xe(i){const{adapter:e,entityType:t,currentUser:n,batchEventName:a="BatchPresenceUpdate"}=i,[r,l]=o.useState(new Map),c=o.useCallback(w=>{w.entityType===t&&l(new Map(Object.entries(w.presenceByEntity)))},[t]);o.useEffect(()=>(e.on(a,c),()=>{e.off(a,c)}),[e,a,c]);const d=o.useCallback(w=>r.get(w)??[],[r]),g=o.useCallback(w=>{const T=r.get(w);return(T==null?void 0:T.some(A=>A.status==="editing"&&A.user.id!==n.id))??!1},[r,n.id]),S=o.useCallback(w=>{const T=r.get(w);return(T==null?void 0:T.filter(A=>A.status==="editing").map(A=>A.user))??[]},[r]);return{presenceByEntity:r,getPresence:d,isEntityBeingEdited:g,getEntityEditors:S}}function J(i){return`${String(i.rowKey)}:${i.field}`}function Le(i){return i?typeof i=="number"?i:new Date(i).getTime():Date.now()}function De(i){const{adapter:e,entityType:t,keyField:n,currentUser:a,initialData:r=[],conflictStrategy:l="last-write-wins",mergeFunction:c,onConflict:d,onBeforeCommit:g,onAfterCommit:S,enableCellLocking:w=!0,lockTimeout:T=6e4,enableCursorSharing:A=!0,cursorDebounce:W=50,optimisticUpdates:L=!0,flashChanges:Q=!0,flashDuration:G=500,liveDataOptions:X={}}=i,[D,q]=o.useState(new Map),[O,Z]=o.useState(new Map),[ee,B]=o.useState([]),[z,_]=o.useState(null),[N,$]=o.useState([]),[p,se]=o.useState([]),[j,U]=o.useState(null),[te,ne]=o.useState([]),y=o.useRef(null),V=o.useRef(new Map),v=o.useCallback(u=>(V.current.has(u)||V.current.set(u,de(u)),V.current.get(u)),[]),E=o.useCallback((u,m,h)=>{if(!h.changes)return m;const P=O.get(J({rowKey:h.key,field:Object.keys(h.changes)[0]}));if(!P)return m;const F=P.timestamp,x=Le(h.timestamp);switch(l){case"last-write-wins":return F>x?"local":"remote";case"first-write-wins":return F<x?"local":"remote";case"merge":return c?c(u,m,Object.keys(h.changes)[0]):"merge";case"ask-user":{const H={cell:{rowKey:h.key,field:Object.keys(h.changes)[0]},localValue:P.newValue,remoteValue:h.changes[Object.keys(h.changes)[0]],localUser:a,remoteUser:h.changedBy?{id:h.changedBy,name:h.changedBy}:{id:"unknown",name:"Unknown"},localTimestamp:F,remoteTimestamp:x};return B(le=>[...le,H]),"local"}case"reject":return"remote";default:return"remote"}},[O,l,c,a]),k=ue({adapter:e,entityName:t,keyField:n,initialData:r,flashChanges:Q,flashDuration:G,optimisticUpdates:L,onConflict:E,...X}),M=ce({adapter:e,entityType:t,entityId:"grid",currentUser:a,initialStatus:"viewing"}),R=o.useCallback(()=>{!A||e.status!=="connected"||e.invoke("UpdateGridSelection",{entityType:t,userId:a.id,focusedCell:z,selectedCells:N,selectedRows:p,editingCell:j}).catch(()=>{})},[e,A,t,a.id,z,N,p,j]);o.useEffect(()=>{if(A)return y.current&&clearTimeout(y.current),y.current=setTimeout(R,W),()=>{y.current&&clearTimeout(y.current)}},[A,R,W,z,N,p,j]),o.useEffect(()=>{if(!A)return;const u=m=>{m.entityType!==t||m.userId===a.id||ne(h=>{const P=h.findIndex(x=>x.user.id===m.userId),F={user:{id:m.userId,name:m.userName,avatarUrl:m.avatarUrl},focusedCell:m.focusedCell,selectedCells:m.selectedCells,selectedRows:m.selectedRows,editingCell:m.editingCell,color:v(m.userId)};if(P>=0){const x=[...h];return x[P]=F,x}return[...h,F]})};return e.on("GridSelectionUpdated",u),()=>{e.off("GridSelectionUpdated",u)}},[e,A,t,a.id,v]),o.useEffect(()=>{if(!w)return;const u=h=>{h.entityType===t&&q(P=>{const F=new Map(P);return F.set(J(h.cell),{user:h.user,timestamp:h.timestamp}),F})},m=h=>{h.entityType===t&&q(P=>{const F=new Map(P);return F.delete(J(h.cell)),F})};return e.on("CellLocked",u),e.on("CellUnlocked",m),()=>{e.off("CellLocked",u),e.off("CellUnlocked",m)}},[e,w,t]),o.useEffect(()=>{if(!w)return;const u=setInterval(()=>{const m=Date.now();q(h=>{const P=new Map(h);let F=!1;for(const[x,H]of P)m-H.timestamp>T&&(P.delete(x),F=!0);return F?P:h})},1e4);return()=>clearInterval(u)},[w,T]);const K=o.useCallback(u=>{if(!w)return!1;const m=D.get(J(u));return m?m.user.id!==a.id&&Date.now()-m.timestamp<T:!1},[w,D,a.id,T]),ae=o.useCallback(u=>{const m=D.get(J(u));return!m||Date.now()-m.timestamp>T?null:m.user},[D,T]),oe=o.useCallback(u=>K(u)?!1:(U(u),M.startEditing(`${u.rowKey}:${u.field}`),w&&e.status==="connected"&&(e.invoke("AcquireCellLock",{entityType:t,cell:u,user:a,timestamp:Date.now()}).catch(()=>{}),q(m=>{const h=new Map(m);return h.set(J(u),{user:a,timestamp:Date.now()}),h})),!0),[K,M,w,e,t,a]),re=o.useCallback(async(u,m)=>{const h=k.data.find(x=>x[n]===u.rowKey);if(!h)return!1;const P=h[u.field];if(g&&!await g(u,P,m))return f(u),!1;const F={cell:u,originalValue:P,newValue:m,timestamp:Date.now()};Z(x=>{const H=new Map(x);return H.set(J(u),F),H}),L&&k.registerPendingChange(u.rowKey,{[u.field]:m});try{return await e.invoke("UpdateEntityField",{entityType:t,entityId:u.rowKey,field:u.field,value:m,userId:a.id,timestamp:F.timestamp}),k.confirmPendingChange(u.rowKey),Z(x=>{const H=new Map(x);return H.delete(J(u)),H}),S==null||S(u,m),w&&(e.invoke("ReleaseCellLock",{entityType:t,cell:u}).catch(()=>{}),q(x=>{const H=new Map(x);return H.delete(J(u)),H})),U(null),M.stopEditing(),!0}catch(x){throw k.rollbackPendingChange(u.rowKey),Z(H=>{const le=new Map(H);return le.delete(J(u)),le}),x}},[k,n,g,L,e,t,a.id,S,w,M]),f=o.useCallback(u=>{U(null),M.stopEditing(),w&&e.status==="connected"&&(e.invoke("ReleaseCellLock",{entityType:t,cell:u}).catch(()=>{}),q(m=>{const h=new Map(m);return h.delete(J(u)),h})),Z(m=>{const h=new Map(m);return h.delete(J(u)),h})},[M,w,e,t]),C=o.useCallback((u,m)=>{const h=ee.find(P=>J(P.cell)===J(u));h&&(m==="remote"&&k.applyRemoteUpdate({operation:"update",entityName:t,key:u.rowKey,changes:{[u.field]:h.remoteValue}}),B(P=>P.filter(F=>J(F.cell)!==J(u))))},[ee,k,t]),s=o.useCallback(async u=>{await e.invoke("InsertEntity",t,u)},[e,t]),b=o.useCallback(async(u,m)=>{L&&k.registerPendingChange(u,m);try{await e.invoke("UpdateEntity",t,u,m),k.confirmPendingChange(u)}catch(h){throw k.rollbackPendingChange(u),h}},[e,t,L,k]),I=o.useCallback(async u=>{await e.invoke("DeleteEntity",t,u)},[e,t]),Y=o.useMemo(()=>({user:a,focusedCell:z,selectedCells:N,selectedRows:p,editingCell:j,color:v(a.id)}),[a,z,N,p,j,v]);return{data:k.data,presence:M.presence,userSelections:te,mySelection:Y,flashedKeys:k.flashedKeys,pendingEdits:O,connectionStatus:k.status,myPresenceStatus:M.myStatus,setFocusedCell:_,setSelectedCells:$,setSelectedRows:se,startCellEdit:oe,commitCellEdit:re,cancelCellEdit:f,isCellLocked:K,getCellEditor:ae,getUserColor:v,insertRow:s,updateRow:b,deleteRow:I,resolveConflict:C,conflicts:ee}}class Ne{constructor(e){this.accessToken=null,this.refreshToken=null,this.tokenFactory=async()=>{if(!this.accessToken)throw new Error("Not authenticated");return this.accessToken},this.cfg=e}getAccessToken(){return this.accessToken}async post(e,t){const a=await(this.cfg.fetch??globalThis.fetch)(`${this.cfg.baseUrl}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw new Error(`Auth request failed: ${a.status}`);return a.json()}async login(e){var n,a;const t=await this.post("/login",e);return t.token&&(this.accessToken=t.token,this.refreshToken=t.refreshToken??null,(a=(n=this.cfg).onTokens)==null||a.call(n,t.token,t.refreshToken??"")),t}async refresh(){var t,n;if(!this.refreshToken)throw new Error("No refresh token");const e=await this.post("/refresh",{refreshToken:this.refreshToken});return e.token&&(this.accessToken=e.token,this.refreshToken=e.refreshToken??this.refreshToken,(n=(t=this.cfg).onTokens)==null||n.call(t,e.token,this.refreshToken)),e}async me(){const t=await(this.cfg.fetch??globalThis.fetch)(`${this.cfg.baseUrl}/me`,{headers:{Authorization:`Bearer ${this.accessToken}`}});if(!t.ok)throw new Error(`Auth /me failed: ${t.status}`);return t.json()}async logout(){try{await(this.cfg.fetch??globalThis.fetch)(`${this.cfg.baseUrl}/logout`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`}})}finally{this.accessToken=null,this.refreshToken=null}}}class Ue{constructor(e){this.cfg=e}async headers(){const e={};return this.cfg.tokenFactory&&(e.Authorization=`Bearer ${await this.cfg.tokenFactory()}`),e}async upload(e,t){const n=this.cfg.fetch??globalThis.fetch,a=new FormData;a.append("file",e),t&&a.append("folder",t);const r=await n(this.cfg.baseUrl,{method:"POST",headers:await this.headers(),body:a});if(!r.ok)throw new Error(`File upload failed: ${r.status}`);return r.json()}async uploadMultiple(e,t){const n=this.cfg.fetch??globalThis.fetch,a=new FormData;e.forEach(l=>a.append("files",l)),t&&a.append("folder",t);const r=await n(`${this.cfg.baseUrl}/batch`,{method:"POST",headers:await this.headers(),body:a});if(!r.ok)throw new Error(`Batch upload failed: ${r.status}`);return r.json()}async getInfo(e){const n=await(this.cfg.fetch??globalThis.fetch)(`${this.cfg.baseUrl}/${e}/info`,{headers:{...await this.headers(),"Content-Type":"application/json"}});if(!n.ok)throw new Error(`File info failed: ${n.status}`);return n.json()}async getDownloadUrl(e){const n=await(this.cfg.fetch??globalThis.fetch)(`${this.cfg.baseUrl}/${e}`,{headers:await this.headers()});if(!n.ok)throw new Error(`File download failed: ${n.status}`);const a=await n.blob();return URL.createObjectURL(a)}async remove(e){const n=await(this.cfg.fetch??globalThis.fetch)(`${this.cfg.baseUrl}/${e}`,{method:"DELETE",headers:{...await this.headers(),"Content-Type":"application/json"}});if(!n.ok)throw new Error(`File delete failed: ${n.status}`);return n.json()}async uploadWithProgress(e,t,n,a){if(typeof XMLHttpRequest>"u")return this.upload(e,n);const r=await this.headers();return new Promise((l,c)=>{const d=new XMLHttpRequest,g=new FormData;if(g.append("file",e),n&&g.append("folder",n),a){if(a.aborted){c(new DOMException("Aborted","AbortError"));return}a.addEventListener("abort",()=>{d.abort(),c(new DOMException("Aborted","AbortError"))})}d.upload.addEventListener("progress",S=>{t({loaded:S.loaded,total:S.total,percent:S.lengthComputable?S.loaded/S.total:NaN})}),d.addEventListener("load",()=>{if(d.status>=200&&d.status<300)try{l(JSON.parse(d.responseText))}catch{c(new Error("Invalid JSON response"))}else c(new Error(`File upload failed: ${d.status}`))}),d.addEventListener("error",()=>c(new Error("Network error during upload"))),d.addEventListener("abort",()=>c(new DOMException("Aborted","AbortError"))),d.open("POST",this.cfg.baseUrl),Object.entries(r).forEach(([S,w])=>d.setRequestHeader(S,w)),d.send(g)})}async uploadMultipleWithProgress(e,t,n,a){const r=[];for(let l=0;l<e.length;l++){if(a!=null&&a.aborted)throw new DOMException("Aborted","AbortError");const c=await this.uploadWithProgress(e[l],d=>t(l,d),n,a);r.push(c)}return r}}class Fe{constructor(e){this.cfg=e}async headers(){const e={"Content-Type":"application/json"};return this.cfg.tokenFactory&&(e.Authorization=`Bearer ${await this.cfg.tokenFactory()}`),e}async requestExport(e){const n=await(this.cfg.fetch??globalThis.fetch)(this.cfg.baseUrl,{method:"POST",headers:await this.headers(),body:JSON.stringify(e)});if(!n.ok)throw new Error(`Export request failed: ${n.status}`);return n.json()}async download(e){const n=await(this.cfg.fetch??globalThis.fetch)(e,{headers:await this.headers()});if(!n.ok)throw new Error(`Export download failed: ${n.status}`);return n.blob()}async downloadToFile(e,t){var c;const n=await this.requestExport(e);if(!((c=n.data)!=null&&c.downloadUrl))throw new Error("No download URL returned");const a=await this.download(n.data.downloadUrl),r=URL.createObjectURL(a),l=document.createElement("a");l.href=r,l.download=t??`export.${e.format}`,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(r)}}function Me(i){return e=>{const t=e??globalThis.fetch;return(a,r)=>{const d={url:typeof a=="string"?a:a instanceof URL?a.toString():a.url,init:r??{},meta:{}};let g=S=>t(S.url,S.init);for(let S=i.length-1;S>=0;S--){const w=i[S],T=g;g=A=>w(A,T)}return g(d)}}}function Ie(){return async(i,e)=>{const t=performance.now(),n=(i.init.method??"GET").toUpperCase();try{const a=await e(i),r=(performance.now()-t).toFixed(1);return console.debug(`[ERP] ${n} ${i.url} → ${a.status} (${r}ms)`),a}catch(a){const r=(performance.now()-t).toFixed(1);throw console.error(`[ERP] ${n} ${i.url} FAILED (${r}ms)`,a),a}}}function $e(i){const e=(i==null?void 0:i.maxRetries)??3,t=(i==null?void 0:i.baseDelay)??500,n=new Set((i==null?void 0:i.retryOn)??[408,429,500,502,503,504]);return async(a,r)=>{let l;for(let c=0;c<=e;c++){try{const g=await r(a);if(g.ok||!n.has(g.status)||c===e)return g;l=new Error(`HTTP ${g.status}`)}catch(g){if(l=g,c===e)throw g}const d=t*Math.pow(2,c)*(.5+Math.random()*.5);await new Promise(g=>setTimeout(g,d))}throw l}}function Be(i){return async(e,t)=>{const n=typeof i=="function"?await i():i;return e.init.headers={...e.init.headers,...n},t(e)}}class ze{constructor(e){this.inFlight=0,this.timestamps=[],this.queue=[],this.processing=!1,this.backingOff=!1,this.maxConcurrent=(e==null?void 0:e.maxConcurrent)??6,this.maxPerSecond=(e==null?void 0:e.maxPerSecond)??20,this.backoffDelay=(e==null?void 0:e.backoffDelay)??2e3,this.baseFetch=(e==null?void 0:e.baseFetch)??globalThis.fetch.bind(globalThis),this.fetch=this.fetch.bind(this)}fetch(e,t){return new Promise((n,a)=>{this.queue.push({resolve:n,reject:a,input:e,init:t}),this.drain()})}get pending(){return this.queue.length}get active(){return this.inFlight}drain(){if(this.processing)return;this.processing=!0;const e=()=>{if(this.queue.length===0||this.backingOff){this.processing=!1;return}if(this.inFlight>=this.maxConcurrent){this.processing=!1;return}const t=Date.now();if(this.timestamps=this.timestamps.filter(a=>t-a<1e3),this.timestamps.length>=this.maxPerSecond){const a=this.timestamps[0],r=1e3-(t-a)+1;setTimeout(()=>{this.processing=!1,this.drain()},r);return}const n=this.queue.shift();this.inFlight++,this.timestamps.push(t),this.baseFetch(n.input,n.init).then(a=>{if(this.inFlight--,a.status===429){this.queue.unshift(n),this.inFlight++,this.inFlight--,this.backingOff=!0,setTimeout(()=>{this.backingOff=!1,this.drain()},this.backoffDelay);return}n.resolve(a),queueMicrotask(e)}).catch(a=>{this.inFlight--,n.reject(a),queueMicrotask(e)}),queueMicrotask(e)};e()}}class je{constructor(e,t="id"){this.items=[],this.mutations=[],this.listeners=new Set,this.nextMutationId=1,this.adapter=e,this.keyField=t}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){const e=[...this.items],t=[...this.mutations];this.listeners.forEach(n=>n(e,t))}getItems(){return[...this.items]}getPending(){return this.mutations.filter(e=>e.status==="pending")}setItems(e){this.items=[...e],this.notify()}async load(...e){const t=await this.adapter.load(...e);return t.success&&(this.items=t.data,this.mutations=[],this.notify()),t}async create(e){const t=`__temp_${this.nextMutationId}`,n={...e,[this.keyField]:t},r={id:String(this.nextMutationId++),type:"create",optimisticData:n,timestamp:Date.now(),status:"pending"};this.items=[...this.items,n],this.mutations.push(r),this.notify();try{const l=await this.adapter.create(e);return l.success?(this.items=this.items.map(c=>c[this.keyField]===t?l.data:c),r.status="confirmed",r.entityId=l.data[this.keyField]):(this.items=this.items.filter(c=>c[this.keyField]!==t),r.status="failed",r.error=l.error),this.notify(),l}catch(l){throw this.items=this.items.filter(c=>c[this.keyField]!==t),r.status="failed",r.error=l instanceof Error?l.message:String(l),this.notify(),l}}async update(e,t){const n=this.items.findIndex(c=>c[this.keyField]===e),a=n>=0?{...this.items[n]}:void 0,l={id:String(this.nextMutationId++),type:"update",entityId:e,previousData:a,timestamp:Date.now(),status:"pending"};n>=0&&(this.items=this.items.map((c,d)=>d===n?{...c,...t}:c)),this.mutations.push(l),this.notify();try{const c=await this.adapter.update(e,t);return c.success?(this.items=this.items.map(d=>d[this.keyField]===e?c.data:d),l.status="confirmed"):(a&&n>=0&&(this.items=this.items.map(d=>d[this.keyField]===e?a:d)),l.status="failed",l.error=c.error),this.notify(),c}catch(c){throw a&&n>=0&&(this.items=this.items.map(d=>d[this.keyField]===e?a:d)),l.status="failed",l.error=c instanceof Error?c.message:String(c),this.notify(),c}}async remove(e){const t=this.items.findIndex(l=>l[this.keyField]===e),n=t>=0?{...this.items[t]}:void 0,r={id:String(this.nextMutationId++),type:"delete",entityId:e,previousData:n,timestamp:Date.now(),status:"pending"};this.items=this.items.filter(l=>l[this.keyField]!==e),this.mutations.push(r),this.notify();try{const l=await this.adapter.remove(e);return l.success?r.status="confirmed":(n&&this.items.splice(t,0,n),r.status="failed",r.error=l.error),this.notify(),l}catch(l){throw n&&this.items.splice(t,0,n),r.status="failed",r.error=l instanceof Error?l.message:String(l),this.notify(),l}}}class Je{constructor(e){this.queue=[],this.syncing=!1,this.nextId=1,this.config=e??{},this.baseFetch=(e==null?void 0:e.baseFetch)??globalThis.fetch.bind(globalThis),this.storageKey=(e==null?void 0:e.storageKey)??"erp_offline_",this.fetch=this.fetch.bind(this),this.restoreQueue(),this.boundOnline=()=>{var t,n;(n=(t=this.config).onStatusChange)==null||n.call(t,!0),this.sync()},this.boundOffline=()=>{var t,n;(n=(t=this.config).onStatusChange)==null||n.call(t,!1)},typeof window<"u"&&(window.addEventListener("online",this.boundOnline),window.addEventListener("offline",this.boundOffline))}fetch(e,t){var l,c;const n=typeof e=="string"?e:e instanceof URL?e.toString():e.url,a=((t==null?void 0:t.method)??"GET").toUpperCase();if(this.isOnline())return this.baseFetch(e,t);if(a==="GET"||a==="HEAD")return Promise.reject(new Error("Offline: GET requests are not queued"));const r={id:`q_${this.nextId++}`,url:n,method:a,headers:{...t==null?void 0:t.headers},body:typeof(t==null?void 0:t.body)=="string"?t.body:void 0,timestamp:Date.now()};return this.queue.push(r),this.persistQueue(),(c=(l=this.config).onQueued)==null||c.call(l,r),Promise.resolve(new Response(JSON.stringify({queued:!0,queueId:r.id}),{status:202,headers:{"Content-Type":"application/json"}}))}isOnline(){return typeof navigator>"u"||navigator.onLine}get pendingCount(){return this.queue.length}getQueue(){return[...this.queue]}clear(){this.queue=[],this.persistQueue()}async sync(){var t,n;if(this.syncing||this.queue.length===0||!this.isOnline())return[];this.syncing=!0;const e=[];for(;this.queue.length>0&&this.isOnline();){const a=this.queue[0];try{const r=await this.baseFetch(a.url,{method:a.method,headers:a.headers,body:a.body});e.push({entry:a,success:r.ok,status:r.status,error:r.ok?void 0:`HTTP ${r.status}`}),this.queue.shift()}catch(r){e.push({entry:a,success:!1,error:r instanceof Error?r.message:String(r)});break}}return this.persistQueue(),this.syncing=!1,e.length>0&&((n=(t=this.config).onSync)==null||n.call(t,e)),e}destroy(){typeof window<"u"&&(window.removeEventListener("online",this.boundOnline),window.removeEventListener("offline",this.boundOffline))}persistQueue(){try{typeof localStorage<"u"&&localStorage.setItem(`${this.storageKey}queue`,JSON.stringify(this.queue))}catch{}}restoreQueue(){try{if(typeof localStorage<"u"){const e=localStorage.getItem(`${this.storageKey}queue`);e&&(this.queue=JSON.parse(e),this.nextId=this.queue.reduce((t,n)=>Math.max(t,parseInt(n.id.replace("q_",""),10)||0),0)+1)}}catch{this.queue=[]}}}const he=[{type:"NiceAudioPlayer",label:"Audio Player",category:"Audio",icon:"music",defaultProps:{src:"",autoplay:!1,showWaveform:!0},propDescriptors:[{name:"src",type:"string",label:"Audio source URL"},{name:"autoplay",type:"boolean",label:"Auto-play",defaultValue:!1},{name:"loop",type:"boolean",label:"Loop",defaultValue:!1},{name:"showWaveform",type:"boolean",label:"Show waveform",defaultValue:!0},{name:"showPlaylist",type:"boolean",label:"Show playlist",defaultValue:!1},{name:"visualizerMode",type:"select",label:"Visualizer mode",options:[{label:"None",value:"none"},{label:"Bars",value:"bars"},{label:"Wave",value:"wave"},{label:"Circle",value:"circle"}],defaultValue:"bars"},{name:"height",type:"size",label:"Height",group:"Layout"}]},{type:"NiceWaveform",label:"Waveform",category:"Audio",icon:"waveform",defaultProps:{peaks:[],color:"#4a90d9"},propDescriptors:[{name:"peaks",type:"json",label:"Peak data (JSON array)"},{name:"color",type:"color",label:"Waveform color",defaultValue:"#4a90d9"},{name:"progressColor",type:"color",label:"Progress color",defaultValue:"#1b5e20"},{name:"barWidth",type:"number",label:"Bar width (px)",min:1,max:10,step:1,defaultValue:2},{name:"height",type:"size",label:"Height",group:"Layout"},{name:"interactive",type:"boolean",label:"Allow seeking",defaultValue:!0}]},{type:"NicePianoRoll",label:"Piano Roll",category:"Audio",icon:"piano",defaultProps:{notes:[],octaves:4,startOctave:3},propDescriptors:[{name:"notes",type:"json",label:"MIDI notes (JSON)"},{name:"octaves",type:"number",label:"Visible octaves",min:1,max:8,defaultValue:4},{name:"startOctave",type:"number",label:"Start octave",min:0,max:8,defaultValue:3},{name:"quantize",type:"select",label:"Quantize",options:[{label:"1/4",value:"4"},{label:"1/8",value:"8"},{label:"1/16",value:"16"},{label:"1/32",value:"32"}],defaultValue:"16"},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1},{name:"height",type:"size",label:"Height",group:"Layout"}]},{type:"NiceKaraoke",label:"Karaoke",category:"Audio",icon:"microphone",defaultProps:{lyrics:[],audioSrc:""},propDescriptors:[{name:"audioSrc",type:"string",label:"Audio source URL"},{name:"lyrics",type:"json",label:"Lyrics (JSON array of {time, text})"},{name:"showScore",type:"boolean",label:"Show score",defaultValue:!0},{name:"pitchDetection",type:"boolean",label:"Pitch detection",defaultValue:!0},{name:"highlightColor",type:"color",label:"Highlight color",defaultValue:"#ffd700"},{name:"fontSize",type:"size",label:"Font size",group:"Typography"}]}],pe=[{type:"NiceLoginForm",label:"Login Form",category:"Auth",icon:"log-in",defaultProps:{showRemember:!0,showForgotPassword:!0},propDescriptors:[{name:"title",type:"string",label:"Form title",defaultValue:"Sign In"},{name:"showRemember",type:"boolean",label:"Show 'Remember me'",defaultValue:!0},{name:"showForgotPassword",type:"boolean",label:"Show 'Forgot password'",defaultValue:!0},{name:"showRegisterLink",type:"boolean",label:"Show register link",defaultValue:!1},{name:"showLogo",type:"boolean",label:"Show logo",defaultValue:!0},{name:"logoUrl",type:"string",label:"Logo URL",group:"Branding"},{name:"primaryColor",type:"color",label:"Primary color",defaultValue:"#1976d2",group:"Branding"},{name:"variant",type:"variant",label:"Visual style",defaultValue:"card"}]},{type:"NiceCaptcha",label:"Captcha",category:"Auth",icon:"shield",defaultProps:{provider:"recaptcha",size:"normal"},propDescriptors:[{name:"provider",type:"select",label:"Provider",options:[{label:"reCAPTCHA v2",value:"recaptcha"},{label:"reCAPTCHA v3",value:"recaptcha-v3"},{label:"hCaptcha",value:"hcaptcha"},{label:"Turnstile",value:"turnstile"}],defaultValue:"recaptcha"},{name:"siteKey",type:"string",label:"Site key"},{name:"size",type:"select",label:"Size",options:[{label:"Normal",value:"normal"},{label:"Compact",value:"compact"},{label:"Invisible",value:"invisible"}],defaultValue:"normal"},{name:"theme",type:"select",label:"Theme",options:[{label:"Light",value:"light"},{label:"Dark",value:"dark"}],defaultValue:"light"}]},{type:"Nice2FASetup",label:"2FA Setup",category:"Auth",icon:"key",defaultProps:{method:"totp"},propDescriptors:[{name:"method",type:"select",label:"2FA method",options:[{label:"TOTP (Authenticator)",value:"totp"},{label:"SMS",value:"sms"},{label:"Email",value:"email"}],defaultValue:"totp"},{name:"issuer",type:"string",label:"Issuer name",defaultValue:"OmniVerk"},{name:"showBackupCodes",type:"boolean",label:"Show backup codes",defaultValue:!0},{name:"showQR",type:"boolean",label:"Show QR code",defaultValue:!0},{name:"codeLength",type:"number",label:"Code length",min:4,max:8,defaultValue:6}]}],fe=[{type:"NiceAddress",label:"Address Editor",category:"Business",icon:"map-pin",defaultProps:{country:"PL"},propDescriptors:[{name:"street",type:"string",label:"Street",group:"Address"},{name:"city",type:"string",label:"City",group:"Address"},{name:"postalCode",type:"string",label:"Postal code",group:"Address"},{name:"country",type:"select",label:"Country",options:[{label:"Poland",value:"PL"},{label:"Germany",value:"DE"},{label:"USA",value:"US"},{label:"UK",value:"GB"},{label:"France",value:"FR"}],defaultValue:"PL",group:"Address"},{name:"showMap",type:"boolean",label:"Show map preview",defaultValue:!1},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1}]},{type:"NicePhone",label:"Phone Input",category:"Business",icon:"phone",defaultProps:{countryCode:"+48"},propDescriptors:[{name:"value",type:"string",label:"Phone number"},{name:"countryCode",type:"string",label:"Default country code",defaultValue:"+48"},{name:"showFlag",type:"boolean",label:"Show country flag",defaultValue:!0},{name:"format",type:"select",label:"Format",options:[{label:"International",value:"international"},{label:"National",value:"national"},{label:"E.164",value:"e164"}],defaultValue:"international"},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1}]},{type:"NiceCurrency",label:"Currency Input",category:"Business",icon:"dollar-sign",defaultProps:{currency:"PLN",decimals:2},propDescriptors:[{name:"value",type:"number",label:"Amount",defaultValue:0},{name:"currency",type:"select",label:"Currency",options:[{label:"PLN",value:"PLN"},{label:"EUR",value:"EUR"},{label:"USD",value:"USD"},{label:"GBP",value:"GBP"}],defaultValue:"PLN"},{name:"decimals",type:"number",label:"Decimal places",min:0,max:4,defaultValue:2},{name:"showCurrencySymbol",type:"boolean",label:"Show symbol",defaultValue:!0},{name:"thousandSeparator",type:"boolean",label:"Thousand separator",defaultValue:!0},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1}]},{type:"NiceVAT",label:"VAT Input",category:"Business",icon:"percent",defaultProps:{rate:23,country:"PL"},propDescriptors:[{name:"netValue",type:"number",label:"Net value",defaultValue:0,group:"Values"},{name:"rate",type:"number",label:"VAT rate (%)",min:0,max:100,defaultValue:23,group:"Values"},{name:"country",type:"select",label:"Country",options:[{label:"Poland",value:"PL"},{label:"Germany",value:"DE"},{label:"France",value:"FR"}],defaultValue:"PL"},{name:"showGross",type:"boolean",label:"Show gross value",defaultValue:!0},{name:"showVatAmount",type:"boolean",label:"Show VAT amount",defaultValue:!0},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1}]},{type:"NiceInvoiceLines",label:"Invoice Lines",category:"Business",icon:"file-text",defaultProps:{lines:[],currency:"PLN"},propDescriptors:[{name:"lines",type:"json",label:"Invoice lines (JSON)"},{name:"currency",type:"select",label:"Currency",options:[{label:"PLN",value:"PLN"},{label:"EUR",value:"EUR"},{label:"USD",value:"USD"}],defaultValue:"PLN"},{name:"showVAT",type:"boolean",label:"Show VAT column",defaultValue:!0},{name:"showDiscount",type:"boolean",label:"Show discount column",defaultValue:!1},{name:"showTotal",type:"boolean",label:"Show totals row",defaultValue:!0},{name:"editable",type:"boolean",label:"Editable",defaultValue:!0},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1}]}],me=[{type:"NiceLeaderboard",label:"Leaderboard",category:"Gamification",icon:"trophy",defaultProps:{dataSource:[],maxRows:10},propDescriptors:[{name:"dataSource",type:"json",label:"Data source (JSON)"},{name:"maxRows",type:"number",label:"Max visible rows",min:3,max:100,defaultValue:10},{name:"showRank",type:"boolean",label:"Show rank column",defaultValue:!0},{name:"showAvatar",type:"boolean",label:"Show avatar",defaultValue:!0},{name:"highlightCurrentUser",type:"boolean",label:"Highlight current user",defaultValue:!0},{name:"scoreField",type:"string",label:"Score field name",defaultValue:"score"},{name:"nameField",type:"string",label:"Name field name",defaultValue:"name"},{name:"variant",type:"variant",label:"Visual style",defaultValue:"default"}]},{type:"NiceAchievement",label:"Achievement Badge",category:"Gamification",icon:"award",defaultProps:{title:"Achievement",unlocked:!1},propDescriptors:[{name:"title",type:"string",label:"Achievement title",defaultValue:"Achievement"},{name:"description",type:"string",label:"Description"},{name:"icon",type:"string",label:"Icon URL"},{name:"unlocked",type:"boolean",label:"Unlocked",defaultValue:!1},{name:"progress",type:"number",label:"Progress (0-100)",min:0,max:100,defaultValue:0},{name:"rarity",type:"select",label:"Rarity",options:[{label:"Common",value:"common"},{label:"Rare",value:"rare"},{label:"Epic",value:"epic"},{label:"Legendary",value:"legendary"}],defaultValue:"common"},{name:"size",type:"size",label:"Badge size",group:"Layout"}]},{type:"NiceQuest",label:"Quest Tracker",category:"Gamification",icon:"map",defaultProps:{title:"Quest",steps:[]},propDescriptors:[{name:"title",type:"string",label:"Quest title",defaultValue:"Quest"},{name:"description",type:"string",label:"Quest description"},{name:"steps",type:"json",label:"Steps (JSON array of {title, completed})"},{name:"reward",type:"string",label:"Reward description"},{name:"rewardXP",type:"number",label:"Reward XP",min:0,defaultValue:100},{name:"showProgress",type:"boolean",label:"Show progress bar",defaultValue:!0},{name:"variant",type:"variant",label:"Visual style",defaultValue:"default"}]},{type:"NiceProgress",label:"XP / Level Bar",category:"Gamification",icon:"zap",defaultProps:{value:350,max:1e3,label:"Level 5",variant:"success",showValue:!0},propDescriptors:[{name:"value",type:"number",label:"Current XP",min:0,defaultValue:350},{name:"max",type:"number",label:"Max XP (next level)",min:1,defaultValue:1e3},{name:"label",type:"string",label:"Label (e.g. level)",defaultValue:"Level 5"},{name:"showValue",type:"boolean",label:"Show value",defaultValue:!0},{name:"variant",type:"variant",label:"Visual style",defaultValue:"success"},{name:"striped",type:"boolean",label:"Striped",defaultValue:!1},{name:"animated",type:"boolean",label:"Animate changes",defaultValue:!0},{name:"size",type:"size",label:"Bar height",group:"Layout"}]}],ye=[{type:"NicePixelEditor",label:"Pixel Editor",category:"Graphics",icon:"grid",defaultProps:{width:32,height:32,palette:[]},propDescriptors:[{name:"width",type:"number",label:"Canvas width (px)",min:1,max:256,defaultValue:32},{name:"height",type:"number",label:"Canvas height (px)",min:1,max:256,defaultValue:32},{name:"palette",type:"json",label:"Color palette (JSON array)"},{name:"gridVisible",type:"boolean",label:"Show grid",defaultValue:!0},{name:"zoom",type:"number",label:"Zoom level",min:1,max:32,step:1,defaultValue:8},{name:"layers",type:"boolean",label:"Enable layers",defaultValue:!0},{name:"onion",type:"boolean",label:"Onion skin (animation)",defaultValue:!1}]},{type:"NiceVectorEditor",label:"Vector Editor",category:"Graphics",icon:"pen-tool",defaultProps:{width:800,height:600},propDescriptors:[{name:"width",type:"number",label:"Canvas width",min:100,max:4096,defaultValue:800,group:"Layout"},{name:"height",type:"number",label:"Canvas height",min:100,max:4096,defaultValue:600,group:"Layout"},{name:"showRulers",type:"boolean",label:"Show rulers",defaultValue:!0},{name:"snapToGrid",type:"boolean",label:"Snap to grid",defaultValue:!0},{name:"gridSize",type:"number",label:"Grid size",min:1,max:100,defaultValue:10},{name:"fillColor",type:"color",label:"Default fill",defaultValue:"#ffffff"},{name:"strokeColor",type:"color",label:"Default stroke",defaultValue:"#000000"},{name:"strokeWidth",type:"number",label:"Stroke width",min:0,max:20,step:.5,defaultValue:1}]},{type:"NicePhotoEditor",label:"Photo Editor",category:"Graphics",icon:"image",defaultProps:{src:""},propDescriptors:[{name:"src",type:"string",label:"Image source URL"},{name:"crop",type:"boolean",label:"Allow crop",defaultValue:!0},{name:"rotate",type:"boolean",label:"Allow rotate",defaultValue:!0},{name:"filters",type:"boolean",label:"Show filters",defaultValue:!0},{name:"adjustments",type:"boolean",label:"Show adjustments",defaultValue:!0},{name:"text",type:"boolean",label:"Allow text overlay",defaultValue:!0},{name:"outputFormat",type:"select",label:"Output format",options:[{label:"PNG",value:"png"},{label:"JPEG",value:"jpeg"},{label:"WebP",value:"webp"}],defaultValue:"png"},{name:"maxWidth",type:"number",label:"Max output width",min:100,max:8192,group:"Output"}]}],be=[{type:"NiceComments",label:"Comments",category:"Social",icon:"message-circle",defaultProps:{threadId:"",allowReplies:!0},propDescriptors:[{name:"threadId",type:"string",label:"Thread ID / entity ID"},{name:"allowReplies",type:"boolean",label:"Allow replies (nested)",defaultValue:!0},{name:"maxDepth",type:"number",label:"Max nesting depth",min:1,max:10,defaultValue:3},{name:"sortOrder",type:"select",label:"Default sort",options:[{label:"Newest first",value:"newest"},{label:"Oldest first",value:"oldest"},{label:"Most liked",value:"popular"}],defaultValue:"newest"},{name:"allowReactions",type:"boolean",label:"Allow reactions",defaultValue:!0},{name:"showAvatar",type:"boolean",label:"Show avatars",defaultValue:!0},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1}]},{type:"NiceRatings",label:"Ratings",category:"Social",icon:"star",defaultProps:{maxStars:5,allowHalf:!0},propDescriptors:[{name:"value",type:"number",label:"Current rating",min:0,max:10,step:.5,defaultValue:0},{name:"maxStars",type:"number",label:"Maximum stars",min:3,max:10,defaultValue:5},{name:"allowHalf",type:"boolean",label:"Allow half stars",defaultValue:!0},{name:"showCount",type:"boolean",label:"Show vote count",defaultValue:!0},{name:"showAverage",type:"boolean",label:"Show average",defaultValue:!0},{name:"color",type:"color",label:"Star color",defaultValue:"#ffc107"},{name:"size",type:"size",label:"Star size",group:"Layout"},{name:"readOnly",type:"boolean",label:"Read only",defaultValue:!1}]},{type:"NiceWiki",label:"Wiki Editor",category:"Social",icon:"book",defaultProps:{content:"",showTOC:!0},propDescriptors:[{name:"content",type:"string",label:"Initial content (Markdown)"},{name:"showTOC",type:"boolean",label:"Show table of contents",defaultValue:!0},{name:"showHistory",type:"boolean",label:"Show version history",defaultValue:!0},{name:"allowEdit",type:"boolean",label:"Allow editing",defaultValue:!0},{name:"showToolbar",type:"boolean",label:"Show Markdown toolbar",defaultValue:!0},{name:"previewMode",type:"select",label:"Preview mode",options:[{label:"Side by side",value:"split"},{label:"Tab switch",value:"tabs"},{label:"Live preview",value:"live"}],defaultValue:"split"},{name:"maxLength",type:"number",label:"Max content length",min:0,defaultValue:0}]}],ge=[{type:"NiceModelEditor",label:"3D Model Editor",category:"3D",icon:"cube",defaultProps:{modelUrl:""},propDescriptors:[{name:"modelUrl",type:"string",label:"Model URL (.glb / .gltf)"},{name:"environmentMap",type:"select",label:"Environment",options:[{label:"Studio",value:"studio"},{label:"Outdoor",value:"outdoor"},{label:"Warehouse",value:"warehouse"},{label:"None",value:"none"}],defaultValue:"studio"},{name:"showGrid",type:"boolean",label:"Show grid",defaultValue:!0},{name:"showAxes",type:"boolean",label:"Show axes",defaultValue:!0},{name:"enablePhysics",type:"boolean",label:"Enable physics",defaultValue:!1},{name:"wireframe",type:"boolean",label:"Wireframe mode",defaultValue:!1},{name:"backgroundColor",type:"color",label:"Background",defaultValue:"#1a1a2e"},{name:"height",type:"size",label:"Viewport height",group:"Layout"}]},{type:"NiceModelViewer",label:"3D Model Viewer",category:"3D",icon:"eye",defaultProps:{modelUrl:"",autoRotate:!0},propDescriptors:[{name:"modelUrl",type:"string",label:"Model URL (.glb / .gltf)"},{name:"autoRotate",type:"boolean",label:"Auto-rotate",defaultValue:!0},{name:"rotateSpeed",type:"number",label:"Rotate speed",min:.1,max:10,step:.1,defaultValue:1},{name:"zoom",type:"boolean",label:"Allow zoom",defaultValue:!0},{name:"pan",type:"boolean",label:"Allow pan",defaultValue:!0},{name:"environmentMap",type:"select",label:"Environment",options:[{label:"Studio",value:"studio"},{label:"Outdoor",value:"outdoor"},{label:"Warehouse",value:"warehouse"},{label:"None",value:"none"}],defaultValue:"studio"},{name:"backgroundColor",type:"color",label:"Background",defaultValue:"#1a1a2e"},{name:"showAnnotations",type:"boolean",label:"Show annotations",defaultValue:!1},{name:"height",type:"size",label:"Viewport height",group:"Layout"}]}],Ge=[...he,...ye,...ge,...me,...fe,...pe,...be];async function qe(i,e){const t=await fetch(i,{...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}});if(!t.ok){const n=await t.text();let a={};try{a=JSON.parse(n)}catch{}throw{code:a.code||`HTTP_${t.status}`,message:a.message||t.statusText,statusCode:t.status}}return t.json()}function Ke(i){const{baseUrl:e,currency:t="PLN",timeout:n=3e4,fetcher:a=qe,getAuthToken:r,onError:l}=i,[c,d]=o.useState([]),[g,S]=o.useState(null),[w,T]=o.useState(null),[A,W]=o.useState(null),[L,Q]=o.useState(null),[G,X]=o.useState(null),[D,q]=o.useState([]),[O,Z]=o.useState([]),[ee,B]=o.useState(null),[z,_]=o.useState({offers:!1,calculate:!1,compare:!1,apply:!1,creditCheck:!1,refinancing:!1,consolidation:!1,savedCalculations:!1}),N=o.useRef(new Map),$=o.useCallback(()=>{const s={"Content-Type":"application/json"},b=r==null?void 0:r();return b&&(s.Authorization=`Bearer ${b}`),s},[r]),p=o.useCallback(async(s,b={},I)=>{const Y=N.current.get(s);Y&&Y.abort();const u=new AbortController;N.current.set(s,u);const m=setTimeout(()=>u.abort(),n);_(h=>({...h,[I]:!0})),B(null);try{const h=`${e}${s}`;return await a(h,{...b,headers:{...$(),...b.headers},signal:u.signal})}catch(h){const P={code:h.code||"UNKNOWN_ERROR",message:h.message||"An unknown error occurred",details:h.details,endpoint:s,statusCode:h.statusCode};throw h.name!=="AbortError"&&(B(P),l==null||l(P)),P}finally{clearTimeout(m),N.current.delete(s),_(h=>({...h,[I]:!1}))}},[e,n,a,$,l]),se=o.useCallback(async s=>{var m,h;const b=new URLSearchParams;s!=null&&s.loanType&&b.set("loanType",s.loanType),s!=null&&s.minAmount&&b.set("minAmount",String(s.minAmount)),s!=null&&s.maxAmount&&b.set("maxAmount",String(s.maxAmount)),s!=null&&s.minTerm&&b.set("minTerm",String(s.minTerm)),s!=null&&s.maxTerm&&b.set("maxTerm",String(s.maxTerm)),s!=null&&s.maxApr&&b.set("maxApr",String(s.maxApr)),(m=s==null?void 0:s.banks)!=null&&m.length&&b.set("banks",s.banks.join(",")),(h=s==null?void 0:s.features)!=null&&h.length&&b.set("features",s.features.join(",")),b.set("currency",(s==null?void 0:s.currency)||t);const I=b.toString(),Y=`/offers${I?`?${I}`:""}`,u=await p(Y,{method:"GET"},"offers");return d(u),u},[p,t]),j=o.useCallback(s=>{S(s)},[]),U=o.useCallback(async s=>p(`/offers/${s}`,{method:"GET"},"offers"),[p]),te=o.useCallback(async s=>{const b=await p("/calculate/amortization",{method:"POST",body:JSON.stringify({...s,currency:s.currency||t})},"calculate");return T(b),b},[p,t]),ne=o.useCallback(async s=>{const b=await p("/calculate/compare",{method:"POST",body:JSON.stringify({scenarios:s,currency:t})},"compare");return W(b),b},[p,t]),y=o.useCallback(async(s,b,I)=>{const Y=await p("/credit/analyze",{method:"POST",body:JSON.stringify({monthlyIncome:s,monthlyDebts:b,requestedAmount:I,currency:t})},"creditCheck");return X(Y),Y},[p,t]),V=o.useCallback(async s=>{const b=await p("/applications",{method:"POST",body:JSON.stringify(s)},"apply");return Q(b),b},[p]),v=o.useCallback(async s=>{const b=await p(`/applications/${s}`,{method:"GET"},"apply");return Q(b),b},[p]),E=o.useCallback(async s=>{await p(`/applications/${s}/cancel`,{method:"POST"},"apply"),Q(null)},[p]),k=o.useCallback(async(s,b,I,Y)=>{const u=await p("/calculations",{method:"POST",body:JSON.stringify({name:s,config:b,result:I,notes:Y})},"savedCalculations");return q(m=>[...m,u]),u},[p]),M=o.useCallback(async s=>p(`/calculations/${s}`,{method:"GET"},"savedCalculations"),[p]),R=o.useCallback(async s=>{await p(`/calculations/${s}`,{method:"DELETE"},"savedCalculations"),q(b=>b.filter(I=>I.id!==s))},[p]),K=o.useCallback(async()=>{const s=await p("/calculations",{method:"GET"},"savedCalculations");return q(s),s},[p]),ae=o.useCallback(async(s,b)=>p("/refinancing/analyze",{method:"POST",body:JSON.stringify({currentLoanId:s,newOfferIds:b})},"refinancing"),[p]),oe=o.useCallback(async(s,b)=>p("/consolidation/simulate",{method:"POST",body:JSON.stringify({debts:s,targetRate:b,currency:t})},"consolidation"),[p,t]),re=o.useCallback(async()=>{const s=await p("/active",{method:"GET"},"offers");return Z(s),s},[p]),f=o.useCallback(()=>{B(null)},[]),C=o.useCallback(()=>{d([]),S(null),T(null),W(null),Q(null),X(null),q([]),Z([]),B(null),_({offers:!1,calculate:!1,compare:!1,apply:!1,creditCheck:!1,refinancing:!1,consolidation:!1,savedCalculations:!1})},[]);return o.useEffect(()=>{const s=N.current;return()=>{s.forEach(b=>b.abort()),s.clear()}},[]),{offers:c,selectedOffer:g,latestCalculation:w,latestComparison:A,applicationState:L,creditAnalysis:G,savedCalculations:D,activeLoans:O,loading:z,error:ee,fetchOffers:se,selectOffer:j,getOfferDetails:U,calculateAmortization:te,compareLoanScenarios:ne,runCreditAnalysis:y,submitApplication:V,getApplicationStatus:v,cancelApplication:E,saveCalculation:k,loadCalculation:M,deleteSavedCalculation:R,fetchSavedCalculations:K,analyzeRefinancing:ae,simulateConsolidation:oe,fetchActiveLoans:re,clearError:f,reset:C}}class He{constructor(e){this.baseUrl=e.baseUrl,this.currency=e.currency||"PLN",this.timeout=e.timeout||3e4,this.getAuthToken=e.getAuthToken}async request(e,t={}){var c;const n=new AbortController,a=setTimeout(()=>n.abort(),this.timeout),r={"Content-Type":"application/json"},l=(c=this.getAuthToken)==null?void 0:c.call(this);l&&(r.Authorization=`Bearer ${l}`);try{const d=await fetch(`${this.baseUrl}${e}`,{...t,headers:{...r,...t.headers},signal:n.signal});if(!d.ok)throw new Error(`HTTP ${d.status}: ${d.statusText}`);return d.json()}finally{clearTimeout(a)}}async getOffers(e){const t=new URLSearchParams;e!=null&&e.loanType&&t.set("loanType",e.loanType),e!=null&&e.minAmount&&t.set("minAmount",String(e.minAmount)),e!=null&&e.maxAmount&&t.set("maxAmount",String(e.maxAmount)),t.set("currency",(e==null?void 0:e.currency)||this.currency);const n=t.toString();return this.request(`/offers${n?`?${n}`:""}`)}async getOfferById(e){return this.request(`/offers/${e}`)}async calculateAmortization(e){return this.request("/calculate/amortization",{method:"POST",body:JSON.stringify({...e,currency:e.currency||this.currency})})}async compareScenarios(e){return this.request("/calculate/compare",{method:"POST",body:JSON.stringify({scenarios:e,currency:this.currency})})}async submitApplication(e){return this.request("/applications",{method:"POST",body:JSON.stringify(e)})}async getApplicationStatus(e){return this.request(`/applications/${e}`)}async analyzeRefinancing(e,t){return this.request("/refinancing/analyze",{method:"POST",body:JSON.stringify({currentLoanId:e,newOfferIds:t})})}async simulateConsolidation(e,t){return this.request("/consolidation/simulate",{method:"POST",body:JSON.stringify({debts:e,targetRate:t,currency:this.currency})})}async getActiveLoans(){return this.request("/active")}}exports.ErpAuthAdapter=Ne;exports.ErpDataAdapter=Ve;exports.ErpExportAdapter=Fe;exports.ErpFileAdapter=Ue;exports.ErpOfflineQueue=Je;exports.ErpOptimisticStore=je;exports.ErpRateLimiter=ze;exports.LoanService=He;exports.allControlRegistries=Ge;exports.applyBatchChanges=Oe;exports.audioControlRegistry=he;exports.authControlRegistry=pe;exports.businessControlRegistry=fe;exports.createMiddlewarePipeline=Me;exports.createSignalRAdapter=Pe;exports.createSignalRDataOperations=Ae;exports.formatPresenceStatus=Re;exports.gamificationControlRegistry=me;exports.generateUserColor=de;exports.graphicControlRegistry=ye;exports.headerMiddleware=Be;exports.loggingMiddleware=Ie;exports.retryMiddleware=$e;exports.socialControlRegistry=be;exports.threeControlRegistry=ge;exports.useCollaborativeDataGrid=De;exports.useEntityPresence=ce;exports.useLoanApi=Ke;exports.useMultiEntityPresence=xe;exports.useSignalRLiveData=ue;
|
|
2
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.d.ts
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1319,10 +1319,12 @@ class ze {
|
|
|
1319
1319
|
body: typeof (t == null ? void 0 : t.body) == "string" ? t.body : void 0,
|
|
1320
1320
|
timestamp: Date.now()
|
|
1321
1321
|
};
|
|
1322
|
-
return this.queue.push(o), this.persistQueue(), (i = (r = this.config).onQueued) == null || i.call(r, o), Promise.resolve(
|
|
1323
|
-
JSON.stringify({ queued: !0, queueId: o.id }),
|
|
1324
|
-
|
|
1325
|
-
|
|
1322
|
+
return this.queue.push(o), this.persistQueue(), (i = (r = this.config).onQueued) == null || i.call(r, o), Promise.resolve(
|
|
1323
|
+
new Response(JSON.stringify({ queued: !0, queueId: o.id }), {
|
|
1324
|
+
status: 202,
|
|
1325
|
+
headers: { "Content-Type": "application/json" }
|
|
1326
|
+
})
|
|
1327
|
+
);
|
|
1326
1328
|
}
|
|
1327
1329
|
/** Is the browser currently online? */
|
|
1328
1330
|
isOnline() {
|
|
@@ -1378,10 +1380,7 @@ class ze {
|
|
|
1378
1380
|
}
|
|
1379
1381
|
persistQueue() {
|
|
1380
1382
|
try {
|
|
1381
|
-
typeof localStorage < "u" && localStorage.setItem(
|
|
1382
|
-
`${this.storageKey}queue`,
|
|
1383
|
-
JSON.stringify(this.queue)
|
|
1384
|
-
);
|
|
1383
|
+
typeof localStorage < "u" && localStorage.setItem(`${this.storageKey}queue`, JSON.stringify(this.queue));
|
|
1385
1384
|
} catch {
|
|
1386
1385
|
}
|
|
1387
1386
|
}
|
|
@@ -1412,12 +1411,18 @@ const ye = [
|
|
|
1412
1411
|
{ name: "loop", type: "boolean", label: "Loop", defaultValue: !1 },
|
|
1413
1412
|
{ name: "showWaveform", type: "boolean", label: "Show waveform", defaultValue: !0 },
|
|
1414
1413
|
{ name: "showPlaylist", type: "boolean", label: "Show playlist", defaultValue: !1 },
|
|
1415
|
-
{
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1414
|
+
{
|
|
1415
|
+
name: "visualizerMode",
|
|
1416
|
+
type: "select",
|
|
1417
|
+
label: "Visualizer mode",
|
|
1418
|
+
options: [
|
|
1419
|
+
{ label: "None", value: "none" },
|
|
1420
|
+
{ label: "Bars", value: "bars" },
|
|
1421
|
+
{ label: "Wave", value: "wave" },
|
|
1422
|
+
{ label: "Circle", value: "circle" }
|
|
1423
|
+
],
|
|
1424
|
+
defaultValue: "bars"
|
|
1425
|
+
},
|
|
1421
1426
|
{ name: "height", type: "size", label: "Height", group: "Layout" }
|
|
1422
1427
|
]
|
|
1423
1428
|
},
|
|
@@ -1431,7 +1436,15 @@ const ye = [
|
|
|
1431
1436
|
{ name: "peaks", type: "json", label: "Peak data (JSON array)" },
|
|
1432
1437
|
{ name: "color", type: "color", label: "Waveform color", defaultValue: "#4a90d9" },
|
|
1433
1438
|
{ name: "progressColor", type: "color", label: "Progress color", defaultValue: "#1b5e20" },
|
|
1434
|
-
{
|
|
1439
|
+
{
|
|
1440
|
+
name: "barWidth",
|
|
1441
|
+
type: "number",
|
|
1442
|
+
label: "Bar width (px)",
|
|
1443
|
+
min: 1,
|
|
1444
|
+
max: 10,
|
|
1445
|
+
step: 1,
|
|
1446
|
+
defaultValue: 2
|
|
1447
|
+
},
|
|
1435
1448
|
{ name: "height", type: "size", label: "Height", group: "Layout" },
|
|
1436
1449
|
{ name: "interactive", type: "boolean", label: "Allow seeking", defaultValue: !0 }
|
|
1437
1450
|
]
|
|
@@ -1444,14 +1457,34 @@ const ye = [
|
|
|
1444
1457
|
defaultProps: { notes: [], octaves: 4, startOctave: 3 },
|
|
1445
1458
|
propDescriptors: [
|
|
1446
1459
|
{ name: "notes", type: "json", label: "MIDI notes (JSON)" },
|
|
1447
|
-
{
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1460
|
+
{
|
|
1461
|
+
name: "octaves",
|
|
1462
|
+
type: "number",
|
|
1463
|
+
label: "Visible octaves",
|
|
1464
|
+
min: 1,
|
|
1465
|
+
max: 8,
|
|
1466
|
+
defaultValue: 4
|
|
1467
|
+
},
|
|
1468
|
+
{
|
|
1469
|
+
name: "startOctave",
|
|
1470
|
+
type: "number",
|
|
1471
|
+
label: "Start octave",
|
|
1472
|
+
min: 0,
|
|
1473
|
+
max: 8,
|
|
1474
|
+
defaultValue: 3
|
|
1475
|
+
},
|
|
1476
|
+
{
|
|
1477
|
+
name: "quantize",
|
|
1478
|
+
type: "select",
|
|
1479
|
+
label: "Quantize",
|
|
1480
|
+
options: [
|
|
1481
|
+
{ label: "1/4", value: "4" },
|
|
1482
|
+
{ label: "1/8", value: "8" },
|
|
1483
|
+
{ label: "1/16", value: "16" },
|
|
1484
|
+
{ label: "1/32", value: "32" }
|
|
1485
|
+
],
|
|
1486
|
+
defaultValue: "16"
|
|
1487
|
+
},
|
|
1455
1488
|
{ name: "readOnly", type: "boolean", label: "Read only", defaultValue: !1 },
|
|
1456
1489
|
{ name: "height", type: "size", label: "Height", group: "Layout" }
|
|
1457
1490
|
]
|
|
@@ -1481,11 +1514,27 @@ const ye = [
|
|
|
1481
1514
|
propDescriptors: [
|
|
1482
1515
|
{ name: "title", type: "string", label: "Form title", defaultValue: "Sign In" },
|
|
1483
1516
|
{ name: "showRemember", type: "boolean", label: "Show 'Remember me'", defaultValue: !0 },
|
|
1484
|
-
{
|
|
1485
|
-
|
|
1517
|
+
{
|
|
1518
|
+
name: "showForgotPassword",
|
|
1519
|
+
type: "boolean",
|
|
1520
|
+
label: "Show 'Forgot password'",
|
|
1521
|
+
defaultValue: !0
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
name: "showRegisterLink",
|
|
1525
|
+
type: "boolean",
|
|
1526
|
+
label: "Show register link",
|
|
1527
|
+
defaultValue: !1
|
|
1528
|
+
},
|
|
1486
1529
|
{ name: "showLogo", type: "boolean", label: "Show logo", defaultValue: !0 },
|
|
1487
1530
|
{ name: "logoUrl", type: "string", label: "Logo URL", group: "Branding" },
|
|
1488
|
-
{
|
|
1531
|
+
{
|
|
1532
|
+
name: "primaryColor",
|
|
1533
|
+
type: "color",
|
|
1534
|
+
label: "Primary color",
|
|
1535
|
+
defaultValue: "#1976d2",
|
|
1536
|
+
group: "Branding"
|
|
1537
|
+
},
|
|
1489
1538
|
{ name: "variant", type: "variant", label: "Visual style", defaultValue: "card" }
|
|
1490
1539
|
]
|
|
1491
1540
|
},
|
|
@@ -1496,22 +1545,40 @@ const ye = [
|
|
|
1496
1545
|
icon: "shield",
|
|
1497
1546
|
defaultProps: { provider: "recaptcha", size: "normal" },
|
|
1498
1547
|
propDescriptors: [
|
|
1499
|
-
{
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1548
|
+
{
|
|
1549
|
+
name: "provider",
|
|
1550
|
+
type: "select",
|
|
1551
|
+
label: "Provider",
|
|
1552
|
+
options: [
|
|
1553
|
+
{ label: "reCAPTCHA v2", value: "recaptcha" },
|
|
1554
|
+
{ label: "reCAPTCHA v3", value: "recaptcha-v3" },
|
|
1555
|
+
{ label: "hCaptcha", value: "hcaptcha" },
|
|
1556
|
+
{ label: "Turnstile", value: "turnstile" }
|
|
1557
|
+
],
|
|
1558
|
+
defaultValue: "recaptcha"
|
|
1559
|
+
},
|
|
1505
1560
|
{ name: "siteKey", type: "string", label: "Site key" },
|
|
1506
|
-
{
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1561
|
+
{
|
|
1562
|
+
name: "size",
|
|
1563
|
+
type: "select",
|
|
1564
|
+
label: "Size",
|
|
1565
|
+
options: [
|
|
1566
|
+
{ label: "Normal", value: "normal" },
|
|
1567
|
+
{ label: "Compact", value: "compact" },
|
|
1568
|
+
{ label: "Invisible", value: "invisible" }
|
|
1569
|
+
],
|
|
1570
|
+
defaultValue: "normal"
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
name: "theme",
|
|
1574
|
+
type: "select",
|
|
1575
|
+
label: "Theme",
|
|
1576
|
+
options: [
|
|
1577
|
+
{ label: "Light", value: "light" },
|
|
1578
|
+
{ label: "Dark", value: "dark" }
|
|
1579
|
+
],
|
|
1580
|
+
defaultValue: "light"
|
|
1581
|
+
}
|
|
1515
1582
|
]
|
|
1516
1583
|
},
|
|
1517
1584
|
{
|
|
@@ -1521,11 +1588,17 @@ const ye = [
|
|
|
1521
1588
|
icon: "key",
|
|
1522
1589
|
defaultProps: { method: "totp" },
|
|
1523
1590
|
propDescriptors: [
|
|
1524
|
-
{
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1591
|
+
{
|
|
1592
|
+
name: "method",
|
|
1593
|
+
type: "select",
|
|
1594
|
+
label: "2FA method",
|
|
1595
|
+
options: [
|
|
1596
|
+
{ label: "TOTP (Authenticator)", value: "totp" },
|
|
1597
|
+
{ label: "SMS", value: "sms" },
|
|
1598
|
+
{ label: "Email", value: "email" }
|
|
1599
|
+
],
|
|
1600
|
+
defaultValue: "totp"
|
|
1601
|
+
},
|
|
1529
1602
|
{ name: "issuer", type: "string", label: "Issuer name", defaultValue: "OmniVerk" },
|
|
1530
1603
|
{ name: "showBackupCodes", type: "boolean", label: "Show backup codes", defaultValue: !0 },
|
|
1531
1604
|
{ name: "showQR", type: "boolean", label: "Show QR code", defaultValue: !0 },
|
|
@@ -1543,13 +1616,20 @@ const ye = [
|
|
|
1543
1616
|
{ name: "street", type: "string", label: "Street", group: "Address" },
|
|
1544
1617
|
{ name: "city", type: "string", label: "City", group: "Address" },
|
|
1545
1618
|
{ name: "postalCode", type: "string", label: "Postal code", group: "Address" },
|
|
1546
|
-
{
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1619
|
+
{
|
|
1620
|
+
name: "country",
|
|
1621
|
+
type: "select",
|
|
1622
|
+
label: "Country",
|
|
1623
|
+
options: [
|
|
1624
|
+
{ label: "Poland", value: "PL" },
|
|
1625
|
+
{ label: "Germany", value: "DE" },
|
|
1626
|
+
{ label: "USA", value: "US" },
|
|
1627
|
+
{ label: "UK", value: "GB" },
|
|
1628
|
+
{ label: "France", value: "FR" }
|
|
1629
|
+
],
|
|
1630
|
+
defaultValue: "PL",
|
|
1631
|
+
group: "Address"
|
|
1632
|
+
},
|
|
1553
1633
|
{ name: "showMap", type: "boolean", label: "Show map preview", defaultValue: !1 },
|
|
1554
1634
|
{ name: "readOnly", type: "boolean", label: "Read only", defaultValue: !1 }
|
|
1555
1635
|
]
|
|
@@ -1564,11 +1644,17 @@ const ye = [
|
|
|
1564
1644
|
{ name: "value", type: "string", label: "Phone number" },
|
|
1565
1645
|
{ name: "countryCode", type: "string", label: "Default country code", defaultValue: "+48" },
|
|
1566
1646
|
{ name: "showFlag", type: "boolean", label: "Show country flag", defaultValue: !0 },
|
|
1567
|
-
{
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1647
|
+
{
|
|
1648
|
+
name: "format",
|
|
1649
|
+
type: "select",
|
|
1650
|
+
label: "Format",
|
|
1651
|
+
options: [
|
|
1652
|
+
{ label: "International", value: "international" },
|
|
1653
|
+
{ label: "National", value: "national" },
|
|
1654
|
+
{ label: "E.164", value: "e164" }
|
|
1655
|
+
],
|
|
1656
|
+
defaultValue: "international"
|
|
1657
|
+
},
|
|
1572
1658
|
{ name: "readOnly", type: "boolean", label: "Read only", defaultValue: !1 }
|
|
1573
1659
|
]
|
|
1574
1660
|
},
|
|
@@ -1580,15 +1666,33 @@ const ye = [
|
|
|
1580
1666
|
defaultProps: { currency: "PLN", decimals: 2 },
|
|
1581
1667
|
propDescriptors: [
|
|
1582
1668
|
{ name: "value", type: "number", label: "Amount", defaultValue: 0 },
|
|
1583
|
-
{
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1669
|
+
{
|
|
1670
|
+
name: "currency",
|
|
1671
|
+
type: "select",
|
|
1672
|
+
label: "Currency",
|
|
1673
|
+
options: [
|
|
1674
|
+
{ label: "PLN", value: "PLN" },
|
|
1675
|
+
{ label: "EUR", value: "EUR" },
|
|
1676
|
+
{ label: "USD", value: "USD" },
|
|
1677
|
+
{ label: "GBP", value: "GBP" }
|
|
1678
|
+
],
|
|
1679
|
+
defaultValue: "PLN"
|
|
1680
|
+
},
|
|
1681
|
+
{
|
|
1682
|
+
name: "decimals",
|
|
1683
|
+
type: "number",
|
|
1684
|
+
label: "Decimal places",
|
|
1685
|
+
min: 0,
|
|
1686
|
+
max: 4,
|
|
1687
|
+
defaultValue: 2
|
|
1688
|
+
},
|
|
1590
1689
|
{ name: "showCurrencySymbol", type: "boolean", label: "Show symbol", defaultValue: !0 },
|
|
1591
|
-
{
|
|
1690
|
+
{
|
|
1691
|
+
name: "thousandSeparator",
|
|
1692
|
+
type: "boolean",
|
|
1693
|
+
label: "Thousand separator",
|
|
1694
|
+
defaultValue: !0
|
|
1695
|
+
},
|
|
1592
1696
|
{ name: "readOnly", type: "boolean", label: "Read only", defaultValue: !1 }
|
|
1593
1697
|
]
|
|
1594
1698
|
},
|
|
@@ -1600,12 +1704,26 @@ const ye = [
|
|
|
1600
1704
|
defaultProps: { rate: 23, country: "PL" },
|
|
1601
1705
|
propDescriptors: [
|
|
1602
1706
|
{ name: "netValue", type: "number", label: "Net value", defaultValue: 0, group: "Values" },
|
|
1603
|
-
{
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1707
|
+
{
|
|
1708
|
+
name: "rate",
|
|
1709
|
+
type: "number",
|
|
1710
|
+
label: "VAT rate (%)",
|
|
1711
|
+
min: 0,
|
|
1712
|
+
max: 100,
|
|
1713
|
+
defaultValue: 23,
|
|
1714
|
+
group: "Values"
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
name: "country",
|
|
1718
|
+
type: "select",
|
|
1719
|
+
label: "Country",
|
|
1720
|
+
options: [
|
|
1721
|
+
{ label: "Poland", value: "PL" },
|
|
1722
|
+
{ label: "Germany", value: "DE" },
|
|
1723
|
+
{ label: "France", value: "FR" }
|
|
1724
|
+
],
|
|
1725
|
+
defaultValue: "PL"
|
|
1726
|
+
},
|
|
1609
1727
|
{ name: "showGross", type: "boolean", label: "Show gross value", defaultValue: !0 },
|
|
1610
1728
|
{ name: "showVatAmount", type: "boolean", label: "Show VAT amount", defaultValue: !0 },
|
|
1611
1729
|
{ name: "readOnly", type: "boolean", label: "Read only", defaultValue: !1 }
|
|
@@ -1619,11 +1737,17 @@ const ye = [
|
|
|
1619
1737
|
defaultProps: { lines: [], currency: "PLN" },
|
|
1620
1738
|
propDescriptors: [
|
|
1621
1739
|
{ name: "lines", type: "json", label: "Invoice lines (JSON)" },
|
|
1622
|
-
{
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1740
|
+
{
|
|
1741
|
+
name: "currency",
|
|
1742
|
+
type: "select",
|
|
1743
|
+
label: "Currency",
|
|
1744
|
+
options: [
|
|
1745
|
+
{ label: "PLN", value: "PLN" },
|
|
1746
|
+
{ label: "EUR", value: "EUR" },
|
|
1747
|
+
{ label: "USD", value: "USD" }
|
|
1748
|
+
],
|
|
1749
|
+
defaultValue: "PLN"
|
|
1750
|
+
},
|
|
1627
1751
|
{ name: "showVAT", type: "boolean", label: "Show VAT column", defaultValue: !0 },
|
|
1628
1752
|
{ name: "showDiscount", type: "boolean", label: "Show discount column", defaultValue: !1 },
|
|
1629
1753
|
{ name: "showTotal", type: "boolean", label: "Show totals row", defaultValue: !0 },
|
|
@@ -1737,11 +1861,33 @@ const ye = [
|
|
|
1737
1861
|
icon: "grid",
|
|
1738
1862
|
defaultProps: { width: 32, height: 32, palette: [] },
|
|
1739
1863
|
propDescriptors: [
|
|
1740
|
-
{
|
|
1741
|
-
|
|
1864
|
+
{
|
|
1865
|
+
name: "width",
|
|
1866
|
+
type: "number",
|
|
1867
|
+
label: "Canvas width (px)",
|
|
1868
|
+
min: 1,
|
|
1869
|
+
max: 256,
|
|
1870
|
+
defaultValue: 32
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
name: "height",
|
|
1874
|
+
type: "number",
|
|
1875
|
+
label: "Canvas height (px)",
|
|
1876
|
+
min: 1,
|
|
1877
|
+
max: 256,
|
|
1878
|
+
defaultValue: 32
|
|
1879
|
+
},
|
|
1742
1880
|
{ name: "palette", type: "json", label: "Color palette (JSON array)" },
|
|
1743
1881
|
{ name: "gridVisible", type: "boolean", label: "Show grid", defaultValue: !0 },
|
|
1744
|
-
{
|
|
1882
|
+
{
|
|
1883
|
+
name: "zoom",
|
|
1884
|
+
type: "number",
|
|
1885
|
+
label: "Zoom level",
|
|
1886
|
+
min: 1,
|
|
1887
|
+
max: 32,
|
|
1888
|
+
step: 1,
|
|
1889
|
+
defaultValue: 8
|
|
1890
|
+
},
|
|
1745
1891
|
{ name: "layers", type: "boolean", label: "Enable layers", defaultValue: !0 },
|
|
1746
1892
|
{ name: "onion", type: "boolean", label: "Onion skin (animation)", defaultValue: !1 }
|
|
1747
1893
|
]
|
|
@@ -1753,14 +1899,38 @@ const ye = [
|
|
|
1753
1899
|
icon: "pen-tool",
|
|
1754
1900
|
defaultProps: { width: 800, height: 600 },
|
|
1755
1901
|
propDescriptors: [
|
|
1756
|
-
{
|
|
1757
|
-
|
|
1902
|
+
{
|
|
1903
|
+
name: "width",
|
|
1904
|
+
type: "number",
|
|
1905
|
+
label: "Canvas width",
|
|
1906
|
+
min: 100,
|
|
1907
|
+
max: 4096,
|
|
1908
|
+
defaultValue: 800,
|
|
1909
|
+
group: "Layout"
|
|
1910
|
+
},
|
|
1911
|
+
{
|
|
1912
|
+
name: "height",
|
|
1913
|
+
type: "number",
|
|
1914
|
+
label: "Canvas height",
|
|
1915
|
+
min: 100,
|
|
1916
|
+
max: 4096,
|
|
1917
|
+
defaultValue: 600,
|
|
1918
|
+
group: "Layout"
|
|
1919
|
+
},
|
|
1758
1920
|
{ name: "showRulers", type: "boolean", label: "Show rulers", defaultValue: !0 },
|
|
1759
1921
|
{ name: "snapToGrid", type: "boolean", label: "Snap to grid", defaultValue: !0 },
|
|
1760
1922
|
{ name: "gridSize", type: "number", label: "Grid size", min: 1, max: 100, defaultValue: 10 },
|
|
1761
1923
|
{ name: "fillColor", type: "color", label: "Default fill", defaultValue: "#ffffff" },
|
|
1762
1924
|
{ name: "strokeColor", type: "color", label: "Default stroke", defaultValue: "#000000" },
|
|
1763
|
-
{
|
|
1925
|
+
{
|
|
1926
|
+
name: "strokeWidth",
|
|
1927
|
+
type: "number",
|
|
1928
|
+
label: "Stroke width",
|
|
1929
|
+
min: 0,
|
|
1930
|
+
max: 20,
|
|
1931
|
+
step: 0.5,
|
|
1932
|
+
defaultValue: 1
|
|
1933
|
+
}
|
|
1764
1934
|
]
|
|
1765
1935
|
},
|
|
1766
1936
|
{
|
|
@@ -1776,12 +1946,25 @@ const ye = [
|
|
|
1776
1946
|
{ name: "filters", type: "boolean", label: "Show filters", defaultValue: !0 },
|
|
1777
1947
|
{ name: "adjustments", type: "boolean", label: "Show adjustments", defaultValue: !0 },
|
|
1778
1948
|
{ name: "text", type: "boolean", label: "Allow text overlay", defaultValue: !0 },
|
|
1779
|
-
{
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1949
|
+
{
|
|
1950
|
+
name: "outputFormat",
|
|
1951
|
+
type: "select",
|
|
1952
|
+
label: "Output format",
|
|
1953
|
+
options: [
|
|
1954
|
+
{ label: "PNG", value: "png" },
|
|
1955
|
+
{ label: "JPEG", value: "jpeg" },
|
|
1956
|
+
{ label: "WebP", value: "webp" }
|
|
1957
|
+
],
|
|
1958
|
+
defaultValue: "png"
|
|
1959
|
+
},
|
|
1960
|
+
{
|
|
1961
|
+
name: "maxWidth",
|
|
1962
|
+
type: "number",
|
|
1963
|
+
label: "Max output width",
|
|
1964
|
+
min: 100,
|
|
1965
|
+
max: 8192,
|
|
1966
|
+
group: "Output"
|
|
1967
|
+
}
|
|
1785
1968
|
]
|
|
1786
1969
|
}
|
|
1787
1970
|
], Se = [
|
|
@@ -1793,13 +1976,31 @@ const ye = [
|
|
|
1793
1976
|
defaultProps: { threadId: "", allowReplies: !0 },
|
|
1794
1977
|
propDescriptors: [
|
|
1795
1978
|
{ name: "threadId", type: "string", label: "Thread ID / entity ID" },
|
|
1796
|
-
{
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1979
|
+
{
|
|
1980
|
+
name: "allowReplies",
|
|
1981
|
+
type: "boolean",
|
|
1982
|
+
label: "Allow replies (nested)",
|
|
1983
|
+
defaultValue: !0
|
|
1984
|
+
},
|
|
1985
|
+
{
|
|
1986
|
+
name: "maxDepth",
|
|
1987
|
+
type: "number",
|
|
1988
|
+
label: "Max nesting depth",
|
|
1989
|
+
min: 1,
|
|
1990
|
+
max: 10,
|
|
1991
|
+
defaultValue: 3
|
|
1992
|
+
},
|
|
1993
|
+
{
|
|
1994
|
+
name: "sortOrder",
|
|
1995
|
+
type: "select",
|
|
1996
|
+
label: "Default sort",
|
|
1997
|
+
options: [
|
|
1998
|
+
{ label: "Newest first", value: "newest" },
|
|
1999
|
+
{ label: "Oldest first", value: "oldest" },
|
|
2000
|
+
{ label: "Most liked", value: "popular" }
|
|
2001
|
+
],
|
|
2002
|
+
defaultValue: "newest"
|
|
2003
|
+
},
|
|
1803
2004
|
{ name: "allowReactions", type: "boolean", label: "Allow reactions", defaultValue: !0 },
|
|
1804
2005
|
{ name: "showAvatar", type: "boolean", label: "Show avatars", defaultValue: !0 },
|
|
1805
2006
|
{ name: "readOnly", type: "boolean", label: "Read only", defaultValue: !1 }
|
|
@@ -1812,8 +2013,23 @@ const ye = [
|
|
|
1812
2013
|
icon: "star",
|
|
1813
2014
|
defaultProps: { maxStars: 5, allowHalf: !0 },
|
|
1814
2015
|
propDescriptors: [
|
|
1815
|
-
{
|
|
1816
|
-
|
|
2016
|
+
{
|
|
2017
|
+
name: "value",
|
|
2018
|
+
type: "number",
|
|
2019
|
+
label: "Current rating",
|
|
2020
|
+
min: 0,
|
|
2021
|
+
max: 10,
|
|
2022
|
+
step: 0.5,
|
|
2023
|
+
defaultValue: 0
|
|
2024
|
+
},
|
|
2025
|
+
{
|
|
2026
|
+
name: "maxStars",
|
|
2027
|
+
type: "number",
|
|
2028
|
+
label: "Maximum stars",
|
|
2029
|
+
min: 3,
|
|
2030
|
+
max: 10,
|
|
2031
|
+
defaultValue: 5
|
|
2032
|
+
},
|
|
1817
2033
|
{ name: "allowHalf", type: "boolean", label: "Allow half stars", defaultValue: !0 },
|
|
1818
2034
|
{ name: "showCount", type: "boolean", label: "Show vote count", defaultValue: !0 },
|
|
1819
2035
|
{ name: "showAverage", type: "boolean", label: "Show average", defaultValue: !0 },
|
|
@@ -1834,11 +2050,17 @@ const ye = [
|
|
|
1834
2050
|
{ name: "showHistory", type: "boolean", label: "Show version history", defaultValue: !0 },
|
|
1835
2051
|
{ name: "allowEdit", type: "boolean", label: "Allow editing", defaultValue: !0 },
|
|
1836
2052
|
{ name: "showToolbar", type: "boolean", label: "Show Markdown toolbar", defaultValue: !0 },
|
|
1837
|
-
{
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
2053
|
+
{
|
|
2054
|
+
name: "previewMode",
|
|
2055
|
+
type: "select",
|
|
2056
|
+
label: "Preview mode",
|
|
2057
|
+
options: [
|
|
2058
|
+
{ label: "Side by side", value: "split" },
|
|
2059
|
+
{ label: "Tab switch", value: "tabs" },
|
|
2060
|
+
{ label: "Live preview", value: "live" }
|
|
2061
|
+
],
|
|
2062
|
+
defaultValue: "split"
|
|
2063
|
+
},
|
|
1842
2064
|
{ name: "maxLength", type: "number", label: "Max content length", min: 0, defaultValue: 0 }
|
|
1843
2065
|
]
|
|
1844
2066
|
}
|
|
@@ -1851,12 +2073,18 @@ const ye = [
|
|
|
1851
2073
|
defaultProps: { modelUrl: "" },
|
|
1852
2074
|
propDescriptors: [
|
|
1853
2075
|
{ name: "modelUrl", type: "string", label: "Model URL (.glb / .gltf)" },
|
|
1854
|
-
{
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
2076
|
+
{
|
|
2077
|
+
name: "environmentMap",
|
|
2078
|
+
type: "select",
|
|
2079
|
+
label: "Environment",
|
|
2080
|
+
options: [
|
|
2081
|
+
{ label: "Studio", value: "studio" },
|
|
2082
|
+
{ label: "Outdoor", value: "outdoor" },
|
|
2083
|
+
{ label: "Warehouse", value: "warehouse" },
|
|
2084
|
+
{ label: "None", value: "none" }
|
|
2085
|
+
],
|
|
2086
|
+
defaultValue: "studio"
|
|
2087
|
+
},
|
|
1860
2088
|
{ name: "showGrid", type: "boolean", label: "Show grid", defaultValue: !0 },
|
|
1861
2089
|
{ name: "showAxes", type: "boolean", label: "Show axes", defaultValue: !0 },
|
|
1862
2090
|
{ name: "enablePhysics", type: "boolean", label: "Enable physics", defaultValue: !1 },
|
|
@@ -1874,15 +2102,29 @@ const ye = [
|
|
|
1874
2102
|
propDescriptors: [
|
|
1875
2103
|
{ name: "modelUrl", type: "string", label: "Model URL (.glb / .gltf)" },
|
|
1876
2104
|
{ name: "autoRotate", type: "boolean", label: "Auto-rotate", defaultValue: !0 },
|
|
1877
|
-
{
|
|
2105
|
+
{
|
|
2106
|
+
name: "rotateSpeed",
|
|
2107
|
+
type: "number",
|
|
2108
|
+
label: "Rotate speed",
|
|
2109
|
+
min: 0.1,
|
|
2110
|
+
max: 10,
|
|
2111
|
+
step: 0.1,
|
|
2112
|
+
defaultValue: 1
|
|
2113
|
+
},
|
|
1878
2114
|
{ name: "zoom", type: "boolean", label: "Allow zoom", defaultValue: !0 },
|
|
1879
2115
|
{ name: "pan", type: "boolean", label: "Allow pan", defaultValue: !0 },
|
|
1880
|
-
{
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
2116
|
+
{
|
|
2117
|
+
name: "environmentMap",
|
|
2118
|
+
type: "select",
|
|
2119
|
+
label: "Environment",
|
|
2120
|
+
options: [
|
|
2121
|
+
{ label: "Studio", value: "studio" },
|
|
2122
|
+
{ label: "Outdoor", value: "outdoor" },
|
|
2123
|
+
{ label: "Warehouse", value: "warehouse" },
|
|
2124
|
+
{ label: "None", value: "none" }
|
|
2125
|
+
],
|
|
2126
|
+
defaultValue: "studio"
|
|
2127
|
+
},
|
|
1886
2128
|
{ name: "backgroundColor", type: "color", label: "Background", defaultValue: "#1a1a2e" },
|
|
1887
2129
|
{ name: "showAnnotations", type: "boolean", label: "Show annotations", defaultValue: !1 },
|
|
1888
2130
|
{ name: "height", type: "size", label: "Viewport height", group: "Layout" }
|
|
@@ -2278,4 +2520,3 @@ export {
|
|
|
2278
2520
|
xe as useMultiEntityPresence,
|
|
2279
2521
|
he as useSignalRLiveData
|
|
2280
2522
|
};
|
|
2281
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/life/travel.d.ts
CHANGED
package/dist/middleware.d.ts
CHANGED
|
@@ -41,4 +41,3 @@ export interface RetryOptions {
|
|
|
41
41
|
export declare function retryMiddleware(opts?: RetryOptions): ErpMiddleware;
|
|
42
42
|
/** Header injection middleware — merges extra headers into every request. */
|
|
43
43
|
export declare function headerMiddleware(headers: Record<string, string> | (() => Record<string, string> | Promise<Record<string, string>>)): ErpMiddleware;
|
|
44
|
-
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -8,4 +8,3 @@ export { authControlRegistry } from './authControls';
|
|
|
8
8
|
export { socialControlRegistry } from './socialControls';
|
|
9
9
|
/** All control registries combined into a single flat array. */
|
|
10
10
|
export declare const allControlRegistries: ControlRegistryEntry[];
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/types.d.ts
CHANGED
|
@@ -15,13 +15,13 @@ export interface ErpResponse<T> {
|
|
|
15
15
|
/** Filter descriptor compatible with NiceDataGrid filtering. */
|
|
16
16
|
export interface ErpFilter {
|
|
17
17
|
field: string;
|
|
18
|
-
operator:
|
|
18
|
+
operator: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'startswith' | 'endswith' | 'in';
|
|
19
19
|
value: unknown;
|
|
20
20
|
}
|
|
21
21
|
/** Sort descriptor. */
|
|
22
22
|
export interface ErpSort {
|
|
23
23
|
field: string;
|
|
24
|
-
dir:
|
|
24
|
+
dir: 'asc' | 'desc';
|
|
25
25
|
}
|
|
26
26
|
/** Paged/filtered/sorted request. */
|
|
27
27
|
export interface ErpDataRequest {
|
|
@@ -62,7 +62,7 @@ export interface ErpFileInfo {
|
|
|
62
62
|
thumbnailUrl?: string;
|
|
63
63
|
createdAt: string;
|
|
64
64
|
}
|
|
65
|
-
export type ErpExportFormat =
|
|
65
|
+
export type ErpExportFormat = 'xlsx' | 'pdf' | 'csv' | 'json' | 'xml';
|
|
66
66
|
export interface ErpExportRequest {
|
|
67
67
|
format: ErpExportFormat;
|
|
68
68
|
reportId?: string;
|
|
@@ -92,7 +92,7 @@ export interface ControlRegistryEntry {
|
|
|
92
92
|
propDescriptors: PropDescriptor[];
|
|
93
93
|
defaultProps: Record<string, unknown>;
|
|
94
94
|
}
|
|
95
|
-
export type PropType =
|
|
95
|
+
export type PropType = 'string' | 'number' | 'boolean' | 'object' | 'array' | 'select' | 'color' | 'size' | 'variant' | 'json';
|
|
96
96
|
export interface PropDescriptor {
|
|
97
97
|
name: string;
|
|
98
98
|
type: PropType;
|
|
@@ -107,4 +107,3 @@ export interface PropDescriptor {
|
|
|
107
107
|
step?: number;
|
|
108
108
|
group?: string;
|
|
109
109
|
}
|
|
110
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -129,4 +129,3 @@ export interface CollaborativeDataGridState<T> {
|
|
|
129
129
|
}
|
|
130
130
|
export declare function useCollaborativeDataGrid<T extends Record<string, unknown>>(options: UseCollaborativeDataGridOptions<T>): CollaborativeDataGridState<T>;
|
|
131
131
|
export default useCollaborativeDataGrid;
|
|
132
|
-
//# sourceMappingURL=useCollaborativeDataGrid.d.ts.map
|
|
@@ -133,4 +133,3 @@ export interface MultiEntityPresenceState {
|
|
|
133
133
|
* Useful for DataGrid row-level presence indicators.
|
|
134
134
|
*/
|
|
135
135
|
export declare function useMultiEntityPresence(options: MultiEntityPresenceOptions): MultiEntityPresenceState;
|
|
136
|
-
//# sourceMappingURL=useEntityPresence.d.ts.map
|
|
@@ -118,4 +118,3 @@ export interface BatchChange<T> {
|
|
|
118
118
|
* Useful for initial sync or batch operations.
|
|
119
119
|
*/
|
|
120
120
|
export declare function applyBatchChanges<T extends Record<string, unknown>>(data: T[], changes: BatchChange<T>[], keyField: keyof T & string): T[];
|
|
121
|
-
//# sourceMappingURL=useSignalRLiveData.d.ts.map
|