django-admin-react 1.4.10__tar.gz → 1.4.12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/PKG-INFO +29 -16
  2. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/README.md +25 -14
  3. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/static/admin_react/.vite/manifest.json +3 -3
  4. django_admin_react-1.4.10/django_admin_react/static/admin_react/assets/ColumnLayoutModal-WJwTw60H.js → django_admin_react-1.4.12/django_admin_react/static/admin_react/assets/ColumnLayoutModal-CLIzQjlm.js +1 -1
  5. django_admin_react-1.4.10/django_admin_react/static/admin_react/assets/JsonViewer-Do4CdnlE.js → django_admin_react-1.4.12/django_admin_react/static/admin_react/assets/JsonViewer-B0UvsOqx.js +1 -1
  6. django_admin_react-1.4.10/django_admin_react/static/admin_react/assets/index-D0bqDJUG.js → django_admin_react-1.4.12/django_admin_react/static/admin_react/assets/index-C3ZSD987.js +4 -4
  7. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/static/admin_react/index.html +1 -1
  8. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/pyproject.toml +1 -1
  9. django_admin_react-1.4.10/django_admin_react/static/admin_react/.gitkeep +0 -0
  10. django_admin_react-1.4.10/django_admin_react/static/admin_react/README.md +0 -15
  11. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/LICENSE +0 -0
  12. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/README.md +0 -0
  13. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/__init__.py +0 -0
  14. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/apps.py +0 -0
  15. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/audit.py +0 -0
  16. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/conf.py +0 -0
  17. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/pwa.py +0 -0
  18. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/static/admin_react/assets/index-DRQ2gAuA.css +0 -0
  19. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templates/README.md +0 -0
  20. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templates/admin/base_site.html +0 -0
  21. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templates/admin_react/README.md +0 -0
  22. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templates/admin_react/index.html +0 -0
  23. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templates/admin_react/login.html +0 -0
  24. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templates/admin_react/sw.js +0 -0
  25. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templates/django_admin_react/_experience_toggle_strip.html +0 -0
  26. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templatetags/__init__.py +0 -0
  27. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/templatetags/experience_toggle.py +0 -0
  28. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/urls.py +0 -0
  29. {django_admin_react-1.4.10 → django_admin_react-1.4.12}/django_admin_react/views.py +0 -0
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: django-admin-react
3
- Version: 1.4.10
3
+ Version: 1.4.12
4
4
  Summary: A drop-in React single-page admin for Django, driven entirely by ModelAdmin.
5
5
  License: MIT
6
+ License-File: LICENSE
6
7
  Keywords: django,admin,react,spa,tailwind
7
8
  Author: django-admin-react contributors
8
9
  Requires-Python: >=3.10,<4.0
@@ -21,6 +22,7 @@ Classifier: Programming Language :: Python :: 3.10
21
22
  Classifier: Programming Language :: Python :: 3.11
22
23
  Classifier: Programming Language :: Python :: 3.12
23
24
  Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Programming Language :: Python :: 3.14
24
26
  Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
25
27
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
28
  Requires-Dist: django (>=5.0,<7.0)
@@ -33,7 +35,7 @@ Description-Content-Type: text/markdown
33
35
 
34
36
  # django-admin-react
35
37
 
36
- [![Latest on Django Packages](https://img.shields.io/badge/PyPI-django--admin--react-tags-8c3c26.svg)](https://djangopackages.org/packages/p/django-admin-react/)
38
+ [![Latest on Django Packages](https://img.shields.io/badge/PyPI-django--admin--react--tags-8c3c26.svg)](https://djangopackages.org/packages/p/django-admin-react/)
37
39
 
38
40
  A drop-in **React single-page admin** for any Django 5+ project. Same
39
41
  `pip install`, same `INSTALLED_APPS`, same `urls.py include()` — and
@@ -457,38 +459,49 @@ class InvoiceAdmin(admin.ModelAdmin):
457
459
 
458
460
  ### Add custom admin actions
459
461
 
460
- One `actions = (...)` declaration. The API classifies each callable by signature and the SPA renders it on the right surface **changelist** (multi-select bulk run) or **detail page** (single-object button) automatically:
462
+ Declare actions the stock-Django way; the SPA surfaces them in both places automatically. **One `@admin.action` declaration two surfaces:** the changelist multi-select dropdown **and** a per-object button on the detail page. No `django-object-actions`, no `change_actions = (...)` redeclaration, no parameter-name gymnastics:
461
463
 
462
464
  ```python
463
465
  class InvoiceAdmin(admin.ModelAdmin):
464
- actions = ("mark_paid", "regenerate_pdf")
466
+ actions = ("mark_paid",)
465
467
 
466
- # Third parameter is `queryset` → batch shape.
467
- # Renders on the changelist with multi-select.
468
468
  @admin.action(description="Mark selected as paid")
469
469
  def mark_paid(self, request, queryset):
470
470
  queryset.update(status="paid", paid_at=timezone.now())
471
+ ```
472
+
473
+ That single declaration shows up in the changelist's bulk-actions dropdown (operating on every selected row) **and** as a button on the detail page (operating on the single visible row, dispatched as a one-row queryset).
474
+
475
+ #### Optional: detail-only actions
476
+
477
+ If you want an action to render **only** on the detail page (not in the changelist dropdown), give its third parameter a single-object shape — name it `obj_id` / `object_id` / `pk` / `id` / `object_pk`, or annotate it `str` / `int` / a `Model` subclass. The API's signature classifier (api 1.0.6+) marks those as `target: "detail"`:
478
+
479
+ ```python
480
+ class InvoiceAdmin(admin.ModelAdmin):
481
+ actions = ("mark_paid", "regenerate_pdf")
482
+
483
+ @admin.action(description="Mark selected as paid")
484
+ def mark_paid(self, request, queryset):
485
+ ... # changelist + detail (batch shape)
471
486
 
472
- # Third parameter named `obj_id` (or annotated `str`/`int`/Model)
473
- # → detail shape. Renders as a button on the single-invoice
474
- # detail page header.
475
487
  @admin.action(description="Regenerate PDF")
476
488
  def regenerate_pdf(self, request, obj_id: str):
477
489
  invoice = self.model.objects.get(pk=obj_id)
478
490
  invoice.regenerate_pdf()
479
- self.message_user(request, f"Regenerated PDF for #{invoice.pk}.")
491
+ # detail page only — the stock Django changelist runner
492
+ # expects a queryset, so this shape won't run from there.
480
493
  ```
481
494
 
482
495
  Classifier rules (api 1.0.6+):
483
496
 
484
497
  | Third parameter | Target | Where it renders |
485
498
  |---|---|---|
486
- | name `queryset` / `qs`, or `QuerySet` annotation | `batch` | Changelist multi-select |
487
- | name `obj_id` / `object_id` / `pk` / `id` / `object_pk` | `detail` | Detail page header |
488
- | annotation `str` / `int` / `Model` subclass | `detail` | Detail page header |
489
- | anything else | `batch` (default, preserves stock Django) | Changelist multi-select |
499
+ | name `queryset` / `qs`, or `QuerySet` annotation | `batch` (default) | Changelist multi-select **and** detail page |
500
+ | name `obj_id` / `object_id` / `pk` / `id` / `object_pk` | `detail` | Detail page only |
501
+ | annotation `str` / `int` / `Model` subclass | `detail` | Detail page only |
502
+ | anything else | `batch` (default, preserves stock Django) | Changelist multi-select **and** detail page |
490
503
 
491
- Same `@admin.action` decorator on both. Same `ModelAdmin.actions` tuple. Same audit trail. **No `django-object-actions`, no `change_actions = (...)` redeclaration** — the signature is the wire.
504
+ Same `@admin.action` decorator regardless. Same `ModelAdmin.actions` tuple. Same audit trail. The signature picks the surface; the default surfaces on both.
492
505
 
493
506
  ### Per-row permission gating
494
507
 
@@ -1,6 +1,6 @@
1
1
  # django-admin-react
2
2
 
3
- [![Latest on Django Packages](https://img.shields.io/badge/PyPI-django--admin--react-tags-8c3c26.svg)](https://djangopackages.org/packages/p/django-admin-react/)
3
+ [![Latest on Django Packages](https://img.shields.io/badge/PyPI-django--admin--react--tags-8c3c26.svg)](https://djangopackages.org/packages/p/django-admin-react/)
4
4
 
5
5
  A drop-in **React single-page admin** for any Django 5+ project. Same
6
6
  `pip install`, same `INSTALLED_APPS`, same `urls.py include()` — and
@@ -424,38 +424,49 @@ class InvoiceAdmin(admin.ModelAdmin):
424
424
 
425
425
  ### Add custom admin actions
426
426
 
427
- One `actions = (...)` declaration. The API classifies each callable by signature and the SPA renders it on the right surface **changelist** (multi-select bulk run) or **detail page** (single-object button) automatically:
427
+ Declare actions the stock-Django way; the SPA surfaces them in both places automatically. **One `@admin.action` declaration two surfaces:** the changelist multi-select dropdown **and** a per-object button on the detail page. No `django-object-actions`, no `change_actions = (...)` redeclaration, no parameter-name gymnastics:
428
428
 
429
429
  ```python
430
430
  class InvoiceAdmin(admin.ModelAdmin):
431
- actions = ("mark_paid", "regenerate_pdf")
431
+ actions = ("mark_paid",)
432
432
 
433
- # Third parameter is `queryset` → batch shape.
434
- # Renders on the changelist with multi-select.
435
433
  @admin.action(description="Mark selected as paid")
436
434
  def mark_paid(self, request, queryset):
437
435
  queryset.update(status="paid", paid_at=timezone.now())
436
+ ```
437
+
438
+ That single declaration shows up in the changelist's bulk-actions dropdown (operating on every selected row) **and** as a button on the detail page (operating on the single visible row, dispatched as a one-row queryset).
439
+
440
+ #### Optional: detail-only actions
441
+
442
+ If you want an action to render **only** on the detail page (not in the changelist dropdown), give its third parameter a single-object shape — name it `obj_id` / `object_id` / `pk` / `id` / `object_pk`, or annotate it `str` / `int` / a `Model` subclass. The API's signature classifier (api 1.0.6+) marks those as `target: "detail"`:
443
+
444
+ ```python
445
+ class InvoiceAdmin(admin.ModelAdmin):
446
+ actions = ("mark_paid", "regenerate_pdf")
447
+
448
+ @admin.action(description="Mark selected as paid")
449
+ def mark_paid(self, request, queryset):
450
+ ... # changelist + detail (batch shape)
438
451
 
439
- # Third parameter named `obj_id` (or annotated `str`/`int`/Model)
440
- # → detail shape. Renders as a button on the single-invoice
441
- # detail page header.
442
452
  @admin.action(description="Regenerate PDF")
443
453
  def regenerate_pdf(self, request, obj_id: str):
444
454
  invoice = self.model.objects.get(pk=obj_id)
445
455
  invoice.regenerate_pdf()
446
- self.message_user(request, f"Regenerated PDF for #{invoice.pk}.")
456
+ # detail page only — the stock Django changelist runner
457
+ # expects a queryset, so this shape won't run from there.
447
458
  ```
448
459
 
449
460
  Classifier rules (api 1.0.6+):
450
461
 
451
462
  | Third parameter | Target | Where it renders |
452
463
  |---|---|---|
453
- | name `queryset` / `qs`, or `QuerySet` annotation | `batch` | Changelist multi-select |
454
- | name `obj_id` / `object_id` / `pk` / `id` / `object_pk` | `detail` | Detail page header |
455
- | annotation `str` / `int` / `Model` subclass | `detail` | Detail page header |
456
- | anything else | `batch` (default, preserves stock Django) | Changelist multi-select |
464
+ | name `queryset` / `qs`, or `QuerySet` annotation | `batch` (default) | Changelist multi-select **and** detail page |
465
+ | name `obj_id` / `object_id` / `pk` / `id` / `object_pk` | `detail` | Detail page only |
466
+ | annotation `str` / `int` / `Model` subclass | `detail` | Detail page only |
467
+ | anything else | `batch` (default, preserves stock Django) | Changelist multi-select **and** detail page |
457
468
 
458
- Same `@admin.action` decorator on both. Same `ModelAdmin.actions` tuple. Same audit trail. **No `django-object-actions`, no `change_actions = (...)` redeclaration** — the signature is the wire.
469
+ Same `@admin.action` decorator regardless. Same `ModelAdmin.actions` tuple. Same audit trail. The signature picks the surface; the default surfaces on both.
459
470
 
460
471
  ### Per-row permission gating
461
472
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "../../packages/details/src/JsonViewer.tsx": {
3
- "file": "assets/JsonViewer-Do4CdnlE.js",
3
+ "file": "assets/JsonViewer-B0UvsOqx.js",
4
4
  "name": "JsonViewer",
5
5
  "src": "../../packages/details/src/JsonViewer.tsx",
6
6
  "isDynamicEntry": true,
@@ -9,7 +9,7 @@
9
9
  ]
10
10
  },
11
11
  "index.html": {
12
- "file": "assets/index-D0bqDJUG.js",
12
+ "file": "assets/index-C3ZSD987.js",
13
13
  "name": "index",
14
14
  "src": "index.html",
15
15
  "isEntry": true,
@@ -22,7 +22,7 @@
22
22
  ]
23
23
  },
24
24
  "src/ColumnLayoutModal.tsx": {
25
- "file": "assets/ColumnLayoutModal-WJwTw60H.js",
25
+ "file": "assets/ColumnLayoutModal-CLIzQjlm.js",
26
26
  "name": "ColumnLayoutModal",
27
27
  "src": "src/ColumnLayoutModal.tsx",
28
28
  "isDynamicEntry": true,
@@ -1,4 +1,4 @@
1
- import{c as tt,d as c,R as $,r as ke,j as I,M as kn,b as On,a as Jt}from"./index-D0bqDJUG.js";const Tn=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],Qt=tt("grip-vertical",Tn);const Ln=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]],jn=tt("lock-open",Ln);const zn=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],jt=tt("lock",zn);const $n=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],Bn=tt("rotate-ccw",$n);function Pn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c.useMemo(()=>r=>{t.forEach(o=>o(r))},t)}const nt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function xe(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function mt(e){return"nodeType"in e}function B(e){var t,n;return e?xe(e)?e:mt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function yt(e){const{Document:t}=B(e);return e instanceof t}function Pe(e){return xe(e)?!1:e instanceof B(e).HTMLElement}function Zt(e){return e instanceof B(e).SVGElement}function we(e){return e?xe(e)?e.document:mt(e)?yt(e)?e:Pe(e)||Zt(e)?e.ownerDocument:document:document:document}const Z=nt?c.useLayoutEffect:c.useEffect;function xt(e){const t=c.useRef(e);return Z(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function Fn(){const e=c.useRef(null),t=c.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=c.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function je(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return Z(()=>{n.current!==e&&(n.current=e)},t),n}function Fe(e,t){const n=c.useRef();return c.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Je(e){const t=xt(e),n=c.useRef(null),r=c.useCallback(o=>{o!==n.current&&t?.(o,n.current),n.current=o},[]);return[n,r]}function ht(e){const t=c.useRef();return c.useEffect(()=>{t.current=e},[e]),t.current}let lt={};function Xe(e,t){return c.useMemo(()=>{if(t)return t;const n=lt[e]==null?0:lt[e]+1;return lt[e]=n,e+"-"+n},[e,t])}function en(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((i,s)=>{const a=Object.entries(s);for(const[l,u]of a){const f=i[l];f!=null&&(i[l]=f+e*u)}return i},{...t})}}const ye=en(1),ze=en(-1);function Xn(e){return"clientX"in e&&"clientY"in e}function wt(e){if(!e)return!1;const{KeyboardEvent:t}=B(e.target);return t&&e instanceof t}function Un(e){if(!e)return!1;const{TouchEvent:t}=B(e.target);return t&&e instanceof t}function gt(e){if(Un(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Xn(e)?{x:e.clientX,y:e.clientY}:null}const $e=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[$e.Translate.toString(e),$e.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),zt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Yn(e){return e.matches(zt)?e:e.querySelector(zt)}const Wn={display:"none"};function Vn(e){let{id:t,value:n}=e;return $.createElement("div",{id:t,style:Wn},n)}function Hn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return $.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function Kn(){const[e,t]=c.useState("");return{announce:c.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const tn=c.createContext(null);function _n(e){const t=c.useContext(tn);c.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function qn(){const[e]=c.useState(()=>new Set),t=c.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[c.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const Gn={draggable:`
1
+ import{c as tt,d as c,R as $,r as ke,j as I,M as kn,b as On,a as Jt}from"./index-C3ZSD987.js";const Tn=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],Qt=tt("grip-vertical",Tn);const Ln=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]],jn=tt("lock-open",Ln);const zn=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],jt=tt("lock",zn);const $n=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],Bn=tt("rotate-ccw",$n);function Pn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c.useMemo(()=>r=>{t.forEach(o=>o(r))},t)}const nt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function xe(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function mt(e){return"nodeType"in e}function B(e){var t,n;return e?xe(e)?e:mt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function yt(e){const{Document:t}=B(e);return e instanceof t}function Pe(e){return xe(e)?!1:e instanceof B(e).HTMLElement}function Zt(e){return e instanceof B(e).SVGElement}function we(e){return e?xe(e)?e.document:mt(e)?yt(e)?e:Pe(e)||Zt(e)?e.ownerDocument:document:document:document}const Z=nt?c.useLayoutEffect:c.useEffect;function xt(e){const t=c.useRef(e);return Z(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function Fn(){const e=c.useRef(null),t=c.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=c.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function je(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return Z(()=>{n.current!==e&&(n.current=e)},t),n}function Fe(e,t){const n=c.useRef();return c.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Je(e){const t=xt(e),n=c.useRef(null),r=c.useCallback(o=>{o!==n.current&&t?.(o,n.current),n.current=o},[]);return[n,r]}function ht(e){const t=c.useRef();return c.useEffect(()=>{t.current=e},[e]),t.current}let lt={};function Xe(e,t){return c.useMemo(()=>{if(t)return t;const n=lt[e]==null?0:lt[e]+1;return lt[e]=n,e+"-"+n},[e,t])}function en(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((i,s)=>{const a=Object.entries(s);for(const[l,u]of a){const f=i[l];f!=null&&(i[l]=f+e*u)}return i},{...t})}}const ye=en(1),ze=en(-1);function Xn(e){return"clientX"in e&&"clientY"in e}function wt(e){if(!e)return!1;const{KeyboardEvent:t}=B(e.target);return t&&e instanceof t}function Un(e){if(!e)return!1;const{TouchEvent:t}=B(e.target);return t&&e instanceof t}function gt(e){if(Un(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Xn(e)?{x:e.clientX,y:e.clientY}:null}const $e=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[$e.Translate.toString(e),$e.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),zt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Yn(e){return e.matches(zt)?e:e.querySelector(zt)}const Wn={display:"none"};function Vn(e){let{id:t,value:n}=e;return $.createElement("div",{id:t,style:Wn},n)}function Hn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return $.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function Kn(){const[e,t]=c.useState("");return{announce:c.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const tn=c.createContext(null);function _n(e){const t=c.useContext(tn);c.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function qn(){const[e]=c.useState(()=>new Set),t=c.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[c.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const Gn={draggable:`
2
2
  To pick up a draggable item, press the space bar.
3
3
  While dragging, use the arrow keys to move the item.
4
4
  Press space again to drop the item in its new position, or press escape to cancel.
@@ -1 +1 @@
1
- import{c as d,d as l,j as e,C as h}from"./index-D0bqDJUG.js";const p=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],g=d("chevron-right",p);const y=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],j=d("copy",y);function N({raw:t,parsed:r}){const[s,c]=l.useState(!1);async function a(){try{await navigator.clipboard.writeText(t),c(!0),setTimeout(()=>c(!1),2e3)}catch{}}return e.jsxs("div",{className:"relative w-full overflow-x-auto rounded border border-gray-200 bg-gray-50 p-3 font-mono text-xs leading-relaxed text-gray-800 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-200",children:[e.jsx("button",{type:"button",onClick:a,"aria-label":"Copy JSON",title:s?"Copied":"Copy",className:"absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded border border-gray-300 bg-white text-gray-600 hover:bg-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",children:s?e.jsx(h,{className:"h-3.5 w-3.5 text-green-600","aria-hidden":!0}):e.jsx(j,{className:"h-3.5 w-3.5","aria-hidden":!0})}),e.jsx(o,{value:r,depth:0})]})}function o({value:t,depth:r}){return t===null?e.jsx("span",{className:"text-purple-600 dark:text-purple-400",children:"null"}):typeof t=="boolean"?e.jsx("span",{className:"text-purple-600 dark:text-purple-400",children:t?"true":"false"}):typeof t=="number"?e.jsx("span",{className:"text-blue-700",children:String(t)}):typeof t=="string"?e.jsxs("span",{className:"text-green-700 dark:text-green-400",children:['"',t,'"']}):Array.isArray(t)?e.jsx(u,{value:t,depth:r}):typeof t=="object"?e.jsx(m,{value:t,depth:r}):e.jsx("span",{className:"text-gray-500",children:String(t)})}function m({value:t,depth:r}){const s=Object.keys(t),[c,a]=l.useState(r<2);return s.length===0?e.jsx("span",{className:"text-gray-500",children:"{}"}):e.jsx(x,{open:c,onToggle:()=>a(n=>!n),collapsedLabel:`{…} ${s.length} ${s.length===1?"key":"keys"}`,openBracket:"{",closeBracket:"}",depth:r,children:s.map((n,i)=>e.jsxs("div",{className:"pl-4",children:[e.jsxs("span",{className:"text-rose-700 dark:text-rose-400",children:['"',n,'"']}),e.jsx("span",{className:"text-gray-500",children:": "}),e.jsx(o,{value:t[n],depth:r+1}),i<s.length-1?e.jsx("span",{className:"text-gray-500",children:","}):null]},n))})}function u({value:t,depth:r}){const[s,c]=l.useState(r<2);return t.length===0?e.jsx("span",{className:"text-gray-500",children:"[]"}):e.jsx(x,{open:s,onToggle:()=>c(a=>!a),collapsedLabel:`[…] ${t.length} ${t.length===1?"item":"items"}`,openBracket:"[",closeBracket:"]",depth:r,children:t.map((a,n)=>e.jsxs("div",{className:"pl-4",children:[e.jsx(o,{value:a,depth:r+1}),n<t.length-1?e.jsx("span",{className:"text-gray-500",children:","}):null]},n))})}function x({open:t,onToggle:r,collapsedLabel:s,openBracket:c,closeBracket:a,depth:n,children:i}){return e.jsxs("span",{children:[e.jsx("button",{type:"button",onClick:r,"aria-expanded":t,className:"inline-flex items-center align-baseline text-gray-500 hover:text-gray-800 dark:hover:text-gray-200",children:e.jsx(g,{className:`h-3 w-3 shrink-0 transition-transform ${t?"rotate-90":""}`,"aria-hidden":!0})}),e.jsx("span",{className:"text-gray-500",children:c}),t?e.jsxs(e.Fragment,{children:[i,e.jsx("div",{className:n===0?"":"pl-0",children:e.jsx("span",{className:"text-gray-500",children:a})})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"px-1 text-gray-500",children:s}),e.jsx("span",{className:"text-gray-500",children:a})]})]})}export{N as default};
1
+ import{c as d,d as l,j as e,C as h}from"./index-C3ZSD987.js";const p=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],g=d("chevron-right",p);const y=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],j=d("copy",y);function N({raw:t,parsed:r}){const[s,c]=l.useState(!1);async function a(){try{await navigator.clipboard.writeText(t),c(!0),setTimeout(()=>c(!1),2e3)}catch{}}return e.jsxs("div",{className:"relative w-full overflow-x-auto rounded border border-gray-200 bg-gray-50 p-3 font-mono text-xs leading-relaxed text-gray-800 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-200",children:[e.jsx("button",{type:"button",onClick:a,"aria-label":"Copy JSON",title:s?"Copied":"Copy",className:"absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded border border-gray-300 bg-white text-gray-600 hover:bg-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",children:s?e.jsx(h,{className:"h-3.5 w-3.5 text-green-600","aria-hidden":!0}):e.jsx(j,{className:"h-3.5 w-3.5","aria-hidden":!0})}),e.jsx(o,{value:r,depth:0})]})}function o({value:t,depth:r}){return t===null?e.jsx("span",{className:"text-purple-600 dark:text-purple-400",children:"null"}):typeof t=="boolean"?e.jsx("span",{className:"text-purple-600 dark:text-purple-400",children:t?"true":"false"}):typeof t=="number"?e.jsx("span",{className:"text-blue-700",children:String(t)}):typeof t=="string"?e.jsxs("span",{className:"text-green-700 dark:text-green-400",children:['"',t,'"']}):Array.isArray(t)?e.jsx(u,{value:t,depth:r}):typeof t=="object"?e.jsx(m,{value:t,depth:r}):e.jsx("span",{className:"text-gray-500",children:String(t)})}function m({value:t,depth:r}){const s=Object.keys(t),[c,a]=l.useState(r<2);return s.length===0?e.jsx("span",{className:"text-gray-500",children:"{}"}):e.jsx(x,{open:c,onToggle:()=>a(n=>!n),collapsedLabel:`{…} ${s.length} ${s.length===1?"key":"keys"}`,openBracket:"{",closeBracket:"}",depth:r,children:s.map((n,i)=>e.jsxs("div",{className:"pl-4",children:[e.jsxs("span",{className:"text-rose-700 dark:text-rose-400",children:['"',n,'"']}),e.jsx("span",{className:"text-gray-500",children:": "}),e.jsx(o,{value:t[n],depth:r+1}),i<s.length-1?e.jsx("span",{className:"text-gray-500",children:","}):null]},n))})}function u({value:t,depth:r}){const[s,c]=l.useState(r<2);return t.length===0?e.jsx("span",{className:"text-gray-500",children:"[]"}):e.jsx(x,{open:s,onToggle:()=>c(a=>!a),collapsedLabel:`[…] ${t.length} ${t.length===1?"item":"items"}`,openBracket:"[",closeBracket:"]",depth:r,children:t.map((a,n)=>e.jsxs("div",{className:"pl-4",children:[e.jsx(o,{value:a,depth:r+1}),n<t.length-1?e.jsx("span",{className:"text-gray-500",children:","}):null]},n))})}function x({open:t,onToggle:r,collapsedLabel:s,openBracket:c,closeBracket:a,depth:n,children:i}){return e.jsxs("span",{children:[e.jsx("button",{type:"button",onClick:r,"aria-expanded":t,className:"inline-flex items-center align-baseline text-gray-500 hover:text-gray-800 dark:hover:text-gray-200",children:e.jsx(g,{className:`h-3 w-3 shrink-0 transition-transform ${t?"rotate-90":""}`,"aria-hidden":!0})}),e.jsx("span",{className:"text-gray-500",children:c}),t?e.jsxs(e.Fragment,{children:[i,e.jsx("div",{className:n===0?"":"pl-0",children:e.jsx("span",{className:"text-gray-500",children:a})})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"px-1 text-gray-500",children:s}),e.jsx("span",{className:"text-gray-500",children:a})]})]})}export{N as default};