json-edit-react 1.30.0 → 2.0.0-beta.0
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/README.md +77 -2
- package/build/index.cjs.js +1 -1
- package/build/index.d.ts +285 -210
- package/build/index.esm.js +1 -1
- package/build/style.css +500 -0
- package/package.json +5 -53
package/README.md
CHANGED
|
@@ -6,11 +6,86 @@ The {{BLOCKS}} below are replaced from the equivalent blocks in the main README
|
|
|
6
6
|
`yarn prepareReadme` script is run (which also happens before publish).
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
<img width="60" alt="screenshot" src="image/logo192.png" style="float:left; margin-right: 1em;">
|
|
10
|
+
|
|
11
|
+
A highly-configurable [React](https://github.com/facebook/react) component for editing or viewing JSON/object data
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [Explore the Demo](https://carlosnz.github.io/json-edit-react/) <!-- omit in toc -->
|
|
15
|
+
|
|
16
|
+

|
|
17
|
+

|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
[](https://deepwiki.com/CarlosNZ/json-edit-react)
|
|
21
|
+
[](https://github.com/CarlosNZ/json-edit-react/discussions)
|
|
22
|
+
[](https://github.com/sponsors/CarlosNZ)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features include:
|
|
26
|
+
|
|
27
|
+
- ✅ **Easy inline editing** of individual values or whole blocks of JSON text
|
|
28
|
+
- 🔒 **Granular control** – restrict edits, deletions, or additions per element
|
|
29
|
+
- 📏 **[JSON Schema](https://json-schema.org/) validation** (using 3rd-party validation library)
|
|
30
|
+
- 🎨 **Customisable UI** — built-in or custom [themes](https://github.com/CarlosNZ/json-edit-react#themes--styles), CSS overrides or targeted classes
|
|
31
|
+
- 📦 **Self-contained** — plain HTML/CSS, no external UI library dependencies, and *zero runtime dependencies*
|
|
32
|
+
- 🔍 **Search & filter** — find data by key, value or custom function
|
|
33
|
+
- 🚧 **[Custom components](https://github.com/CarlosNZ/json-edit-react#custom-nodes)** — replace keys and/or values with specialised components (e.g. date picker, links, images, `undefined`, `BigInt`, `Symbol`)
|
|
34
|
+
- 🌏 **[Localisation](https://github.com/CarlosNZ/json-edit-react#localisation)** — easily translate UI labels and messages
|
|
35
|
+
- 🔄 **[Drag-n-drop](https://github.com/CarlosNZ/json-edit-react#drag-n-drop)** re-ordering within objects/arrays
|
|
36
|
+
- 🎹 **[Keyboard customisation](https://github.com/CarlosNZ/json-edit-react#keyboard-customisation)** — define your own key bindings
|
|
37
|
+
- 🎮 **[External control](https://github.com/CarlosNZ/json-edit-react#external-control-1)** via callbacks and triggers
|
|
38
|
+
|
|
39
|
+
💡 Try the **[Live Demo](https://carlosnz.github.io/json-edit-react/)** to see these features in action!
|
|
40
|
+
|
|
41
|
+
<img width="392" alt="screenshot" src="image/screenshot.png">
|
|
10
42
|
|
|
11
43
|
<img width="838" alt="breaking changes" src="image/admonition_npm.png">
|
|
12
44
|
|
|
13
|
-
|
|
45
|
+
## Installation
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
# Depending on your package manager:
|
|
49
|
+
|
|
50
|
+
npm i json-edit-react
|
|
51
|
+
# OR
|
|
52
|
+
yarn add json-edit-react
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Implementation
|
|
56
|
+
|
|
57
|
+
```jsx
|
|
58
|
+
import { JsonEditor } from 'json-edit-react'
|
|
59
|
+
|
|
60
|
+
// In your React component:
|
|
61
|
+
return (
|
|
62
|
+
<JsonEditor
|
|
63
|
+
data={ jsonData }
|
|
64
|
+
setData={ setJsonData } // optional
|
|
65
|
+
{ ...otherProps } />
|
|
66
|
+
);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Usage
|
|
70
|
+
|
|
71
|
+
**(for end user)**
|
|
72
|
+
|
|
73
|
+
It's pretty self explanatory (click the "edit" icon to edit, etc.), but there are a few not-so-obvious ways of interacting with the editor:
|
|
74
|
+
|
|
75
|
+
- **Double-click** a value (or a key) to edit it
|
|
76
|
+
- When editing a string, use `Cmd/Ctrl/Shift-Enter` to add a new line (`Enter` submits the value)
|
|
77
|
+
- It's the opposite when editing a full object/array node (which you do by **clicking "edit"** on an object or array value) — `Enter` for new line, and `Cmd/Ctrl/Shift-Enter` for submit
|
|
78
|
+
- `Escape` to **cancel** editing
|
|
79
|
+
- When clicking the "**clipboard**" icon, holding down `Cmd/Ctrl` will copy the *path* to the selected node rather than its value
|
|
80
|
+
- When opening/closing a node, hold down "Alt/Option" to open/close *all* child nodes at once
|
|
81
|
+
- For Number inputs, **arrow-up** and **down** keys will increment/decrement the value
|
|
82
|
+
- For Boolean inputs, **space bar** will toggle the value
|
|
83
|
+
- Easily navigate to the next or previous node for editing using the `Tab`/`Shift-Tab` keys.
|
|
84
|
+
- **Drag and drop** items to change the structure or modify display order
|
|
85
|
+
- When editing is not permitted, double-clicking a string value will expand the text to the full value if it is truncated due to length (there is also a clickable "..." for long strings)
|
|
86
|
+
- **JSON text input** can accept "looser" input, if an additional JSON parsing method is provided (e.g. [JSON5](https://json5.org/)). See `jsonParse` prop.
|
|
87
|
+
|
|
88
|
+
[Have a play with the Demo app](https://carlosnz.github.io/json-edit-react/) to get a feel for it!
|
|
14
89
|
|
|
15
90
|
---
|
|
16
91
|
|
package/build/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react");function n(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function r(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{l(r.next(e))}catch(e){a(e)}}function s(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,s)}l((r=r.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const o=e=>e.split(/(\.|\[\d+\])/).filter((e=>"."!==e&&""!==e)).map((e=>{const t=/\[(\d+)\]/.exec(e);return t?Number(t[1]):e})),a=(e,t,n)=>{const r=Array.isArray(t)?t:o(t);if(0===r.length)return e;const s=r[0];if(Array.isArray(e)&&"number"!=typeof s&&e.length>0)return e.map((e=>a(e,r,n)));if("object"!=typeof e||null===e||!(s in e))return i(e,s,n);const l=e[s];return 1===r.length?l:a(l,r.slice(1),n)},i=(e,t,n)=>{if(void 0===n)throw new Error(`Unable to extract object property\nLooking for property: ${t}\nIn object: ${JSON.stringify(e)}`);return n},s=(e,t,n,r,o)=>{if(!r)throw new Error(null!=o?o:`Invalid property path: ${t}\nCouldn't access "${n}" in ${JSON.stringify(e)}`)},l=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),c=e=>Array.isArray(e),d=(e,t)=>e.filter(((e,n)=>n!==t)),u=(e,t,n,r={})=>{const{remove:a=!1,createNew:i=!0,noError:s=!1}=r,l=e,u="string"==typeof(m=t)?m:"number"==typeof m?String(m):m.reduce(((e,t)=>"number"==typeof t?`${e}[${t}]`:""===e?t:`${e}.${t}`),"");var m;const g=Object.assign(Object.assign({},r),{remove:a,createNew:i,noError:s,fullData:l,fullPath:u}),h=Array.isArray(t)?t:o(t);return c(e)&&a&&1===h.length?d(e,h[0]):p(e,h,n,g)},p=(e,t,n,r)=>{const o=l(e)?Object.assign({},e):null,a=c(e)?[...e]:null;if(0===t.length)return e;if(!o&&!a)throw new Error("Can't assign property -- invalid input object");const{createNew:i,remove:u,noError:h,fullData:y,fullPath:f}=r,b=t[0];if(a&&"string"==typeof b)return a.map((e=>p(e,t,n,r)));if(1===t.length){if(o&&"string"==typeof b){const e=m(o,b,n,r);return null!=e?e:o}return a&&"number"==typeof b?(g(a,b,n,r),a):(s(y,f,b,h),e)}const j=o||a||[];if(u&&2===t.length&&"number"==typeof t[1]){const e=j[b],n=t[1];return c(e)?j[b]=d(e,n):s(y,f,b,h,"Trying to remove an indexed item from an object that is not an array"),j}const v=t.slice(1);if(b in e){if(E=j[b],!c(E)&&!l(E)){if(!i)return s(y,f,b,h),j;j[b]={}}return j[b]=p(j[b],v,n,r),j}var E;if(i){const e="number"==typeof v[0]?[]:{};if(o)return j[b]=e,j[b]=p(j[b],v,n,r),j;if(a&&Array.isArray(j)){j.push(e);const t=j.length-1;return j[t]=p(j[t],v,n,r),j}}return s(y,f,b,h),j},m=(e,t,n,r)=>{const{remove:o,createNew:a,noError:i,insertAfter:l,insertBefore:c,fullData:d,fullPath:u}=r;if(void 0!==c||void 0!==l){const r=Object.entries(e);let o=1/0;return o="number"==typeof c?c:"number"==typeof l?l:r.findIndex((([e])=>e===(null!=c?c:l))),void 0!==l&&o++,r.splice(o,0,[t,n]),Object.fromEntries(r)}const p=t in e;o?p?delete e[t]:s(d,u,t,i):a||p?e[t]=n:s(d,u,t,i)},g=(e,t,n,r)=>{const{noError:o,fullData:a,fullPath:i,createNew:l,insert:c}=r;c&&e.splice(t,0,n),t in e?e[t]=n:l?e.push(n):s(a,i,t,o)},h=({className:t,name:n,value:r,setValue:o,handleKeyPress:a,styles:i,textAreaRef:s})=>{if("string"!=typeof r)return null;const l="\n"===r.slice(-1)?r+".":r;return e.jsxs("div",{style:{display:"grid"},children:[e.jsx("textarea",{id:`${n}_textarea`,ref:s,style:Object.assign({height:"auto",gridArea:"1 / 1 / 2 / 2",overflowY:"auto",whiteSpace:"pre-wrap"},i),rows:1,className:t,name:`${n}_textarea`,value:r,onChange:e=>o(e.target.value),autoFocus:!0,onFocus:e=>{r.length<40&&e.target.select()},onKeyDown:a}),e.jsx("span",{className:t,style:Object.assign({visibility:"hidden",height:"auto",gridArea:"1 / 1 / 2 / 2",color:"red",opacity:.9,whiteSpace:"pre-wrap",overflowY:"auto",border:"1px solid transparent"},i),children:l})]})},y=e=>null!==e&&"object"==typeof e,f=(e,t,n,r="")=>{if(!n&&!r)return!0;switch(e){case"collection":if(n){if(n(t,r))return!0;if(!b(r,t,n))return!1}if(!n&&r&&!b(r,t))return!1;break;case"value":if(n&&!n(t,r))return!1;if(!n&&r&&!j(t,r))return!1}return!0},b=(e="",t,n=j)=>{const r=t.value;return Object.entries(r).some((([o,a])=>{const i=[...t.path,o],s=Object.assign(Object.assign({},t),{key:o,path:i,level:t.level+1,value:a,size:i.length,parentData:r});return y(a)?b(e,s,n):n(s,e)}))},j=(e,t="")=>{const{value:n}=e;if(null===n&&"null".includes(t.toLowerCase()))return!0;switch(typeof n){case"string":return n.toLowerCase().includes(t.toLowerCase());case"number":return!!String(n).includes(t);case"boolean":return n?"true".includes(t.toLowerCase())||"1"===t:"false".includes(t.toLowerCase())||"0"===t;default:return!1}},v=({key:e,path:t},n="")=>!!j({value:e},n)||!!t.some((e=>j({value:e},n))),E=(e,t)=>(null!=t?t:"")+e.map((e=>""===e?String.fromCharCode(0):e)).join("."),x=e=>e.shiftKey?"Shift":e.metaKey?"Meta":e.ctrlKey?"Control":e.altKey?"Alt":void 0,D=(e,t,n)=>{const r=e.key,o=x(e);if(Array.isArray(t))return!!o&&t.includes(o);const{key:a,modifier:i}=t;return("stringLineBreak"!==n||"Enter"!==r||"Shift"!==o||"Enter"!==a||!(null==i?void 0:i.includes("Shift")))&&(r===a&&(i===o||Array.isArray(i)&&i.includes(o)))},C={key:"Enter"},w={confirm:C,cancel:{key:"Escape"},objectConfirm:Object.assign(Object.assign({},C),{modifier:["Meta","Shift","Control"]}),objectLineBreak:C,stringConfirm:C,stringLineBreak:Object.assign(Object.assign({},C),{modifier:["Shift"]}),numberConfirm:C,numberUp:{key:"ArrowUp"},numberDown:{key:"ArrowDown"},tabForward:{key:"Tab"},tabBack:{key:"Tab",modifier:"Shift"},booleanConfirm:C,booleanToggle:{key:" "},clipboardModifier:["Meta","Control"],collapseModifier:["Alt"]},k=(e,t,n="next",r)=>{const o=t.slice(0,t.length-1),i=t.slice(-1)[0];if(void 0===i)return null;const s=a(e,o),l=S(s);Array.isArray(s)||r(l,(({key:e,value:t})=>[e,t]));const c=l.findIndex((e=>e.key===i)),d=l[c+("next"===n?1:-1)];return d?y(d.value)?0===Object.keys(d.value).length?k(e,[...o,d.key],n,r):O(e,[...o,d.key],n,r):[...o,d.key]:0===o.length?null:k(e,o,n,r)},O=(e,t,n="next",r)=>{const o=a(e,t);if(!y(o))return t;const i=Array.isArray(o)?o.map(((e,t)=>t)):Object.keys(o);r(i,(e=>[e,o]));const s="next"===n?i[0]:i[i.length-1];return O(e,[...t,s],n,r)},S=e=>Array.isArray(e)?e.map(((e,t)=>({index:t,value:e,key:t}))):Object.entries(e).map((([e,t],n)=>({key:e,value:t,index:n}))),N=(e,t)=>{var n,r,o,a;const i=e.current,s=null!==(n=null==i?void 0:i.selectionStart)&&void 0!==n?n:1/0,l=null!==(r=null==i?void 0:i.selectionEnd)&&void 0!==r?r:1/0,c=(null===(o=null==i?void 0:i.textContent)||void 0===o?void 0:o.slice(0,s))+t+(null===(a=null==i?void 0:i.textContent)||void 0===a?void 0:a.slice(l));return i.value=c,null==i||i.setSelectionRange(s+1,s+1),c},T=e=>{if(e!==A){if(Array.isArray(e))return e.map((e=>T(e)));if(e&&"object"==typeof e)for(const t in e)e[t]=T(e[t]);return e}},A="__undefined__",R={displayName:"Default",fragments:{edit:"rgb(42, 161, 152)"},styles:{container:{backgroundColor:"#f6f6f6",fontFamily:"monospace"},collection:{},collectionInner:{},collectionElement:{},dropZone:{},property:"#292929",bracket:{color:"rgb(0, 43, 54)",fontWeight:"bold"},itemCount:{color:"rgba(0, 0, 0, 0.3)",fontStyle:"italic"},string:"rgb(203, 75, 22)",number:"rgb(38, 139, 210)",boolean:"green",null:{color:"rgb(220, 50, 47)",fontVariant:"small-caps",fontWeight:"bold"},input:["#292929"],inputHighlight:"#b3d8ff",error:{fontSize:"0.8em",color:"red",fontWeight:"bold"},iconCollection:"rgb(0, 43, 54)",iconEdit:"edit",iconDelete:"rgb(203, 75, 22)",iconAdd:"edit",iconCopy:"rgb(38, 139, 210)",iconOk:"green",iconCancel:"rgb(203, 75, 22)"}},P=t.createContext({getStyles:()=>({}),icons:{}}),K=({theme:t=R,icons:n={},docRoot:r,children:o})=>{const a=V(t,r);return e.jsx(P.Provider,{value:{getStyles:(e,t)=>"function"==typeof a[e]?a[e](t):a[e],icons:n},children:o})},I=()=>t.useContext(P),V=(e,t)=>{var n,r,o,a;const i={},s=(Array.isArray(e)?e:[e]).map((e=>_(e)?M({fragments:{},styles:e},i):M(e,i))),l=M(R,{});Object.keys(l).forEach((e=>{const t=e;s.forEach((e=>{e[t]&&(l[t]=Object.assign(Object.assign({},l[t]),e[t]))}))}));const c=Object.assign({},l);return Object.entries(i).forEach((([e,t])=>{const n=e;c[n]=e=>{const r=t(e)||{};return Object.assign(Object.assign({},l[n]),r)}})),"function"!=typeof(null==c?void 0:c.inputHighlight)&&(null===(n=null==c?void 0:c.inputHighlight)||void 0===n?void 0:n.backgroundColor)&&t.style.setProperty("--jer-highlight-color",null===(r=null==c?void 0:c.inputHighlight)||void 0===r?void 0:r.backgroundColor),"function"!=typeof(null==c?void 0:c.iconCopy)&&(null===(o=null==c?void 0:c.iconCopy)||void 0===o?void 0:o.color)&&t.style.setProperty("--jer-icon-copy-color",null===(a=null==c?void 0:c.iconCopy)||void 0===a?void 0:a.color),c},M=(e,t)=>{const{fragments:n,styles:r}=e,o={};return Object.entries(r).forEach((([e,r])=>{const a=(Array.isArray(r)?r:[r]).reduce(((r,o)=>{var a,i;if("function"==typeof o)return t[e]=o,Object.assign({},r);if("string"==typeof o){const t=null!==(a=null==n?void 0:n[o])&&void 0!==a?a:o;return"string"==typeof t?Object.assign(Object.assign({},r),{[null!==(i=F[e])&&void 0!==i?i:"color"]:t}):Object.assign(Object.assign({},r),t)}return Object.assign(Object.assign({},r),o)}),{});o[e]=a})),o},_=e=>!("styles"in e),F={container:"backgroundColor",collection:"backgroundColor",collectionInner:"backgroundColor",collectionElement:"backgroundColor",dropZone:"borderColor",inputHighlight:"backgroundColor"},L=t.createContext(null),z=({children:n,onEditEvent:r,onCollapse:o})=>{const[a,i]=t.useState(null),[s,l]=t.useState(null),[c,d]=t.useState(null),[u,p]=t.useState({path:null,pathString:null}),m=t.useRef(null),g=t.useRef("next"),h=t.useRef(null);return e.jsx(L.Provider,{value:{collapseState:a,setCollapseState:e=>{i(e),o&&null!==e&&(Array.isArray(e)?e.forEach((e=>o(e))):o(e)),null!==e&&setTimeout((()=>i(null)),2e3)},getMatchingCollapseState:e=>{if(Array.isArray(a)){for(const t of a)if(W(e,t))return t;return null}return W(e,a)?a:null},currentlyEditingElement:s,setCurrentlyEditingElement:(e,t)=>{const n="string"==typeof e||null===e?e:E(e,"key"===t?"key_":void 0);null!==s&&null!==n&&null!==m.current&&m.current(),l(n),r&&(Array.isArray(e)||null===e)&&r(e,"key"===t),m.current="function"==typeof t?t:null},areChildrenBeingEdited:e=>null!==s&&s.includes(e),previouslyEditedElement:h.current,setPreviouslyEditedElement:e=>{h.current=e},tabDirection:g.current,setTabDirection:e=>{g.current=e},previousValue:c,setPreviousValue:d,dragSource:u,setDragSource:p},children:n})},B=()=>{const e=t.useContext(L);if(!e)throw new Error("Missing Context Provider");return e},W=(e,t)=>{if(null===t)return!1;if(!t.includeChildren)return t.path.every(((t,n)=>e[n]===t))&&t.path.length===e.length;for(const[n,r]of t.path.entries())if(r!==e[n])return!1;return!0},G="**INVALID_FUNCTION**",Y=({nodeData:n,showStringQuotes:r=!0,stringTruncate:o=200,pathString:a,canEdit:i,setIsEditing:s,styles:l,translate:c,value:d,TextWrapper:u=({children:e})=>e})=>{const p=null!=d?d:n.value,[m,g]=t.useState(!1),h=r?'"':"",y=p.length>o,f=()=>{i?s(!0):g(!m)};return e.jsxs("div",{id:`${a}_display`,onDoubleClick:f,onClick:e=>{(e.getModifierState("Control")||e.getModifierState("Meta"))&&f()},className:"jer-value-string",style:l,children:[h,y?m?e.jsxs(e.Fragment,{children:[e.jsx(u,{children:e.jsxs("span",{children:[p,h]})}),e.jsxs("span",{className:"jer-string-expansion jer-show-less",onClick:()=>g(!1),children:[" ",c("SHOW_LESS",n)]})]}):e.jsxs(e.Fragment,{children:[e.jsxs(u,{children:[e.jsx("span",{children:p.slice(0,o-2).trimEnd()})," "]}),e.jsx("span",{className:"jer-string-expansion jer-ellipsis",onClick:()=>g(!0),children:"..."}),h]}):e.jsx(u,{children:`${p}${h}`})]})},$=({styles:n,pathString:r,value:o,setValue:a,handleEdit:i,handleKeyboard:s,keyboardCommon:l})=>{const c=t.useRef(null);return e.jsx(h,{className:"jer-input-text",textAreaRef:c,name:r,value:o,setValue:a,handleKeyPress:e=>{s(e,Object.assign({stringConfirm:i,stringLineBreak:()=>{const e=N(c,"\n");a(e)}},l))},styles:n})},U=t=>{var{isEditing:r,path:o,enumType:a}=t,i=n(t,["isEditing","path","enumType"]);const{getStyles:s}=I(),l=E(o),{value:c,setValue:d,nodeData:u,handleEdit:p,handleKeyboard:m,keyboardCommon:g}=i;return r&&a?e.jsxs("div",{className:"jer-select jer-select-enums",children:[e.jsx("select",{name:`${l}-value-select`,className:"jer-select-inner",onChange:e=>d(e.target.value),value:c,autoFocus:!0,onKeyDown:e=>{m(e,Object.assign({stringConfirm:p},g))},children:a.values.map((t=>e.jsx("option",{value:t,children:t},t)))}),e.jsx("span",{className:"focus"})]}):r?e.jsx($,Object.assign({styles:s("input",u),pathString:l},i,{setValue:i.setValue})):e.jsx(Y,Object.assign({pathString:l,styles:s("string",u)},i))},H=({value:t,setValue:n,isEditing:r,path:o,setIsEditing:a,handleEdit:i,nodeData:s,handleKeyboard:l,keyboardCommon:c})=>{const{getStyles:d}=I();return r?e.jsx("input",{className:"jer-input-number",type:"text",name:E(o),value:t,onChange:e=>n(e.target.value.replace(/[^0-9.-]/g,"")),autoFocus:!0,onFocus:e=>setTimeout((()=>e.target.select()),10),onKeyDown:e=>l(e,Object.assign({numberConfirm:i,numberUp:()=>n(Number(t)+1),numberDown:()=>n(Number(t)-1)},c)),style:Object.assign({width:String(t).length/1.5+2+"em"},d("input",s))}):e.jsx("span",{onDoubleClick:()=>a(!0),className:"jer-value-number",style:d("number",s),children:t})},Z=({value:t,setValue:n,isEditing:r,path:o,setIsEditing:a,handleEdit:i,nodeData:s,handleKeyboard:l,keyboardCommon:c})=>{const{getStyles:d}=I();return"boolean"!=typeof t?null:r?e.jsx("input",{className:"jer-input-boolean",type:"checkbox",name:E(o),checked:t,onChange:()=>n(!t),onKeyDown:e=>{" "===e.key&&e.preventDefault(),l(e,Object.assign({booleanConfirm:i,booleanToggle:()=>n(!t)},c))},autoFocus:!0}):e.jsx("span",{onDoubleClick:()=>a(!0),className:"jer-value-boolean",style:d("boolean",s),children:String(t)})},J=(e,n)=>{const r=t.useRef(void 0),o=t.useRef(n);t.useEffect((()=>{o.current=n}),[n]);const a=e=>{o.current(e)};t.useEffect((()=>{if(window.clearTimeout(r.current),e)return r.current=window.setTimeout((()=>{window.addEventListener("keydown",a)}),100),()=>{window.clearTimeout(r.current),window.removeEventListener("keydown",a)}}),[e])},X=({value:t,isEditing:n,setIsEditing:r,handleEdit:o,nodeData:a,handleKeyboard:i,keyboardCommon:s})=>{const{getStyles:l}=I();return J(n,(e=>i(e,Object.assign({confirm:o},s)))),e.jsx("div",{onDoubleClick:()=>r(!0),className:"jer-value-null",style:l("null",a),children:String(t)})},Q=({value:t})=>{let n="Error!";switch(typeof t){case"string":t===G&&(n="Function");break;case"undefined":n="Undefined";break;case"symbol":n="Symbol"}return e.jsx("span",{className:"jer-value-invalid",children:n})},q=({size:t,style:n,className:r})=>e.jsxs("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:t,height:t,className:r,style:n,children:[e.jsx("path",{d:"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4z"}),e.jsx("path",{d:"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z"})]}),ee=({size:t,style:n,className:r})=>e.jsxs("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:t,height:t,className:r,style:n,transform:"translate(0, 0.5)",children:[e.jsx("path",{d:"M7 17.013l4.413-.015 9.632-9.54c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-1.586-1.586c-.756-.756-2.075-.752-2.825-.003L7 12.583v4.43zM18.045 4.458l1.589 1.583-1.597 1.582-1.586-1.585 1.594-1.58zM9 13.417l6.03-5.973 1.586 1.586-6.029 5.971L9 15.006v-1.589z"}),e.jsx("path",{d:"M5 21h14c1.103 0 2-.897 2-2v-8.668l-2 2V19H8.158c-.026 0-.053.01-.079.01-.033 0-.066-.009-.1-.01H5V5h6.847l2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2z"})]}),te=({size:t,style:n,className:r})=>e.jsx("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:t,height:t,className:r,style:n,children:e.jsx("path",{d:"M6 19a2 2 0 002 2h8a2 2 0 002-2V7H6v12m2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12M15.5 4l-1-1h-5l-1 1H5v2h14V4h-3.5z"})}),ne=({size:t,style:n,className:r})=>e.jsxs("svg",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24",width:t,height:t,className:r,style:n,children:[e.jsx("path",{d:"M9 2 H15 A1 1 0 0 1 16 3 V5 A1 1 0 0 1 15 6 H9 A1 1 0 0 1 8 5 V3 A1 1 0 0 1 9 2 z"}),e.jsx("path",{d:"M8 4H6a2 2 0 00-2 2v14a2 2 0 002 2h12a2 2 0 002-2v-2M16 4h2a2 2 0 012 2v4M21 14H11"}),e.jsx("path",{d:"M15 10l-4 4 4 4"})]}),re=({size:t,style:n,className:r})=>e.jsxs("svg",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24",width:t,height:t,className:r,style:n,children:[e.jsx("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),e.jsx("path",{d:"M22 4L12 14.01l-3-3"})]}),oe=({size:t,style:n,className:r})=>e.jsx("svg",{baseProfile:"tiny",viewBox:"0 0 24 24",fill:"currentColor",width:t,height:t,className:r,style:n,children:e.jsx("path",{d:"M12 4c-4.411 0-8 3.589-8 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8zm-5 8c0-.832.224-1.604.584-2.295l6.711 6.711A4.943 4.943 0 0112 17c-2.757 0-5-2.243-5-5zm9.416 2.295L9.705 7.584A4.943 4.943 0 0112 7c2.757 0 5 2.243 5 5 0 .832-.224 1.604-.584 2.295z"})}),ae=({size:t,style:n,className:r})=>e.jsx("svg",{viewBox:"0 0 512 512",fill:"currentColor",width:t,height:t,className:r,style:n,children:e.jsx("path",{d:"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"})}),ie=({name:t,nodeData:n})=>{var r,o,a,i,s,l,c;const{getStyles:d,icons:u}=I(),p={size:"1.4em",className:"jer-icon"};switch(t){case"add":return null!==(r=null==u?void 0:u.add)&&void 0!==r?r:e.jsx(q,Object.assign({},p,{style:d("iconAdd",n)}));case"edit":return null!==(o=null==u?void 0:u.edit)&&void 0!==o?o:e.jsx(ee,Object.assign({},p,{style:d("iconEdit",n)}));case"delete":return null!==(a=null==u?void 0:u.delete)&&void 0!==a?a:e.jsx(te,Object.assign({},p,{style:d("iconDelete",n),size:"1.45em"}));case"copy":return null!==(i=null==u?void 0:u.copy)&&void 0!==i?i:e.jsx(ne,Object.assign({},p,{style:d("iconCopy",n),size:"1.2em"}));case"ok":return null!==(s=null==u?void 0:u.ok)&&void 0!==s?s:e.jsx(re,Object.assign({},p,{style:Object.assign({fontSize:"90%"},d("iconOk",n))}));case"cancel":return null!==(l=null==u?void 0:u.cancel)&&void 0!==l?l:e.jsx(oe,Object.assign({},p,{style:Object.assign({fontSize:"130%"},d("iconCancel",n))}));case"chevron":return null!==(c=null==u?void 0:u.chevron)&&void 0!==c?c:e.jsx(ae,{size:"1em",style:d("iconCollection",n)});default:return e.jsx(e.Fragment,{})}},se=({startEdit:n,handleDelete:r,handleAdd:o,enableClipboard:i,type:s,customButtons:l,nodeData:c,translate:d,keyboardControls:u,handleKeyboard:p,editConfirmRef:m,getNewKeyOptions:g,jsonStringify:h,onEditEvent:y,showIconTooltips:f})=>{const{getStyles:b}=I(),j=d("KEY_NEW",c),[v,E]=t.useState(j),[D,C]=t.useState(!1),{key:w,path:k,value:O}=c,S=Array.isArray(D),N=e=>{var t;if(y&&y(e?[...k,null]:null,e),!e)return void C(!1);const n=Object.keys(a(c.fullData,k)),r=g?null===(t=g(c))||void 0===t?void 0:t.filter((e=>!n.includes(e))):null;r&&E(""),C(null==r||r)};return e.jsxs("div",{className:"jer-edit-buttons",style:{opacity:D?1:void 0},onClick:e=>e.stopPropagation(),children:[i&&e.jsx("div",{onClick:e=>{var t;e.stopPropagation();let n,r,o="value",a="",s=null;if(i){const l=x(e);if(l&&u.clipboardModifier.includes(l)?(n=ce(k),a=n,o="path"):(n=O,a="object"==typeof n?h(O):String(n)),!navigator.clipboard)return void("function"==typeof i&&i({success:!1,value:n,stringValue:a,path:k,key:w,type:o,errorMessage:"Can't access clipboard API"}));null===(t=navigator.clipboard)||void 0===t||t.writeText(a).then((()=>r=!0)).catch((e=>{r=!1,s=e.message})).finally((()=>{"function"==typeof i&&i({success:r,errorMessage:s,value:n,stringValue:a,path:k,key:w,type:o})}))}},className:"jer-copy-pulse",title:f?d("TOOLTIP_COPY",c):"",children:e.jsx(ie,{name:"copy",nodeData:c})}),n&&e.jsx("div",{onClick:n,title:f?d("TOOLTIP_EDIT",c):"",children:e.jsx(ie,{name:"edit",nodeData:c})}),r&&e.jsx("div",{onClick:r,title:f?d("TOOLTIP_DELETE",c):"",children:e.jsx(ie,{name:"delete",nodeData:c})}),o&&e.jsx("div",{onClick:()=>{"object"===s?N(!0):o("")},title:f?d("TOOLTIP_ADD",c):"",children:e.jsx(ie,{name:"add",nodeData:c})}),null==l?void 0:l.map((({Element:t,onClick:n},r)=>e.jsx("div",{onClick:e=>n&&n(c,e),children:e.jsx(t,{nodeData:c})},r))),D&&o&&"object"===s&&e.jsxs(e.Fragment,{children:[S?e.jsxs("div",{className:"jer-select jer-select-keys",children:[e.jsxs("select",{name:"new-key-select",className:"jer-select-inner",onChange:e=>{o(e.target.value),N(!1)},defaultValue:"",autoFocus:!0,onKeyDown:e=>{p(e,{cancel:()=>N(!1)})},children:[e.jsx("option",{value:"",disabled:!0,children:D.length>0?d("KEY_SELECT",c):d("NO_KEY_OPTIONS",c)}),D.map((t=>e.jsx("option",{value:t,children:t},t)))]}),e.jsx("span",{className:"focus"})]}):e.jsx("input",{className:"jer-input-new-key",type:"text",name:"new-object-key",value:v,onChange:e=>E(e.target.value),autoFocus:!0,onFocus:e=>e.target.select(),onKeyDown:e=>{p(e,{stringConfirm:()=>{o&&(N(!1),o(v),E(j))},cancel:()=>{N(!1),E(j)}})},style:b("input",c)}),e.jsx(le,{onOk:()=>{S&&!v||(N(!1),o(v))},onCancel:()=>{N(!1)},nodeData:c,editConfirmRef:m,hideOk:S})]})]})},le=({onOk:t,onCancel:n,nodeData:r,editConfirmRef:o,hideOk:a=!1})=>e.jsxs("div",{className:"jer-confirm-buttons",children:[!a&&e.jsx("div",{onClick:t,ref:o,children:e.jsx(ie,{name:"ok",nodeData:r})}),e.jsx("div",{onClick:n,children:e.jsx(ie,{name:"cancel",nodeData:r})})]}),ce=e=>e.reduce(((e,t)=>"number"==typeof t?`${e}[${t}]`:""===e?t:`${e}.${t}`),""),de=["string","number","boolean","null","object","array"],ue=({props:e,collapsed:n})=>{const{data:r,nodeData:o,parentData:a,onEdit:i,onError:s,showErrorMessages:l,restrictEditFilter:c,restrictDeleteFilter:d,restrictAddFilter:u,restrictDragFilter:p,translate:m,errorMessageTimeout:g}=e,{currentlyEditingElement:h,setCurrentlyEditingElement:y}=B(),[f,b]=t.useState(null),j=Object.assign(Object.assign({},o),{collapsed:n}),{path:v,key:x,size:D}=j,C=E(v),w=!c(j),k=!d(j),O=!u(j),S=!p(j)&&k&&null===h,N=e=>{l&&(b(e),setTimeout((()=>b(null)),g)),console.warn("Error",e)},T=t.useCallback(((e,t)=>{N(e.message),s&&s({currentData:j.fullData,errorValue:t,currentValue:r,name:x,path:v,error:e})}),[s,l]),A=h===C,R=h===`key_${C}`,P="number"==typeof v.slice(-1)[0],K={isEditing:A,isEditingKey:R,isArray:P,canEditKey:null!==a&&w&&O&&k&&!P},I=""===x&&v.length>0?m("EMPTY_STRING",j):null;return{pathString:C,nodeData:j,path:v,name:x,size:D,canEdit:w,canDelete:k,canAdd:O,canDrag:S,error:f,showError:N,onError:T,setError:b,handleEditKey:e=>{if(y(null),x===e)return;if(!a)return;const t=v.slice(0,-1);if(Object.keys(a).includes(e))return void T({code:"KEY_EXISTS",message:m("ERROR_KEY_EXISTS",j)},e);const n=Object.fromEntries(Object.entries(a).map((([t,n])=>t===x?[e,n]:[t,n])));i(n,t).then((t=>{t&&T({code:"UPDATE_ERROR",message:t},e)}))},derivedValues:K,emptyStringKey:I}},pe=({canDrag:n,canDragOnto:r,path:o,nodeData:a,onMove:i,onError:s,translate:l})=>{const{getStyles:c}=I(),{dragSource:d,setDragSource:u}=B(),[p,m]=t.useState(!1),g=E(o),h=t.useMemo((()=>n?{onDragStart:e=>{e.stopPropagation(),u({path:o,pathString:g})},onDragEnd:e=>{e.stopPropagation(),u({path:null,pathString:null})}}:{}),[n,g]),y=t.useMemo((()=>e=>r?{onDragOver:e=>{e.stopPropagation(),e.preventDefault()},onDrop:t=>{t.stopPropagation(),b(e),u({path:null,pathString:null}),m(!1)},onDragEnter:t=>{var n;t.stopPropagation(),g.startsWith(null!==(n=d.pathString)&&void 0!==n?n:"")||m(e)},onDragExit:e=>{e.stopPropagation(),m(!1)}}:{}),[d,r,g]),f=t.useMemo((()=>r&&null!==d.pathString?e.jsx("div",Object.assign({className:"jer-drop-target-bottom",style:{height:"50%",position:"absolute",width:"100%",top:"50%",zIndex:o.length}},y("below"))):null),[d,r,o.length]),b=e=>{var t,n;const r=null===(t=d.path)||void 0===t?void 0:t.slice(-1)[0],c=null===(n=d.path)||void 0===n?void 0:n.slice(0,-1).join("."),u=o.slice(0,-1).join(""),{parentData:p}=a;"string"==typeof r&&p&&!Array.isArray(p)&&Object.keys(p).includes(r)&&r in p&&c!==u?s({code:"KEY_EXISTS",message:l("ERROR_KEY_EXISTS",a)},r):i(d.path,o,e).then((e=>{e&&s({code:"UPDATE_ERROR",message:e},a.value)}))};return{dragSourceProps:h,getDropTargetProps:y,BottomDropTarget:f,DropTargetPadding:({position:t,nodeData:n})=>p===t?e.jsx("div",{className:"jer-drag-n-drop-padding",style:c("dropZone",n)}):null,handleDrop:b}},me=(e,t,n,r)=>{var o,a,i;if(!t.current)return 0;const s=parseInt(null!==(o=getComputedStyle(n.current).getPropertyValue("line-height"))&&void 0!==o?o:"16px"),l=(null!==(i=null===(a=t.current)||void 0===a?void 0:a.offsetWidth)&&void 0!==i?i:0)/(.5*s),c=r(e).replace(/\\n/g,"\n").split("\n").map((e=>Math.ceil(e.length/l))).reduce(((e,t)=>e+t),0)*s;return Math.min(c+30,window.innerHeight-50)},ge=({isEditingKey:t,canEditKey:n,pathString:r,path:o,name:a,arrayIndexFromOne:i,handleKeyboard:s,handleEditKey:l,handleCancel:c,handleClick:d,keyValueArray:u,styles:p,getNextOrPrevious:m,emptyStringKey:g,nodeData:h,customNodeData:y,getStyles:f})=>{const{setCurrentlyEditingElement:b}=B(),j="number"==typeof a?String(a+(i?1:0)):a;if(!t){const t=Object.assign(Object.assign({},p),{minWidth:`${Math.min(j.length+1,5)}ch`,flexShrink:j.length>10?1:0});if((null==y?void 0:y.CustomKey)&&h&&f){const{CustomKey:r,customNodeProps:a}=y;return e.jsx(r,{nodeData:h,name:null!=g?g:j,path:o,canEditKey:n,handleEditKey:e=>{n&&l(e)},setIsEditingKey:()=>{n&&b(o,"key")},handleClick:d,styles:t,customNodeProps:a,getStyles:f})}return e.jsxs("span",{className:"jer-key-text",style:t,onDoubleClick:()=>n&&b(o,"key"),onClick:d,children:[g?e.jsx("span",{className:"jer-empty-string",children:g}):j,""!==j||g?e.jsx("span",{className:"jer-key-colon",children:":"}):null]})}return e.jsx("input",{className:"jer-input-text jer-key-edit",type:"text",name:r,defaultValue:j,autoFocus:!0,onFocus:e=>e.target.select(),onKeyDown:e=>s(e,{stringConfirm:()=>l(e.target.value),cancel:c,tabForward:()=>{if(l(e.target.value),u){const e=null==u?void 0:u[0][0];b(e?[...o,e]:m("next"))}else b(o)},tabBack:()=>{l(e.target.value),b(m("prev"))}}),style:{width:j.length/1.5+.5+"em"}})},he=n=>{const{data:r,parentData:o,onEdit:a,onDelete:i,onChange:s,onMove:l,enableClipboard:c,canDragOnto:d,restrictTypeSelection:u,searchFilter:p,searchText:m,showLabel:g,stringTruncate:h,showStringQuotes:y,arrayIndexFromOne:b,indent:j,translate:v,customNodeDefinitions:E,customNodeData:x,handleKeyboard:D,keyboardControls:C,sort:w,editConfirmRef:O,jsonStringify:S,showIconTooltips:N}=n,{getStyles:T}=I(),{setCurrentlyEditingElement:A,setCollapseState:R,previouslyEditedElement:P,setPreviouslyEditedElement:K,tabDirection:V,setTabDirection:M,previousValue:_,setPreviousValue:F}=B(),[L,z]=t.useState("function"==typeof r?G:r),{pathString:W,nodeData:Y,path:$,name:U,canEdit:H,canDelete:Z,canDrag:J,error:X,onError:Q,handleEditKey:q,emptyStringKey:ee,derivedValues:te}=ue({props:n}),{dragSourceProps:ne,getDropTargetProps:re,BottomDropTarget:oe,DropTargetPadding:ae}=pe({canDrag:J,canDragOnto:d,path:$,nodeData:Y,onMove:l,onError:Q,translate:v}),[ie,ce]=t.useState(ye(r,x)),me=t.useCallback((e=>{if(!s)return void z(e);const t=s({currentData:Y.fullData,newValue:e,currentValue:L,name:U,path:$});z(t)}),[s]);t.useEffect((()=>{z("function"==typeof r?G:r),ce(ye(r,x))}),[r,X]);const{CustomNode:he,customNodeProps:je,hideKey:ve,showEditTools:Ee=!0,showOnEdit:xe,showOnView:De,passOriginalNode:Ce}=x,we=[...de,...E.filter((({showInTypesSelector:e=!1,name:t})=>e&&!!t)).map((({name:e})=>e))],ke=t.useMemo((()=>{if("boolean"==typeof u)return u?[]:we;if(Array.isArray(u))return u;const e=u(Y);return"boolean"==typeof e?e?[]:we:e}),[Y,u]),[Oe,Se]=t.useState(((e,t)=>{var n;if("string"!=typeof e)return null;const r=t.filter((t=>t instanceof Object&&t.enum&&t.values.includes(e)&&t.matchPriority));return r.sort(((e,t)=>{var n,r;return(null!==(n=t.matchPriority)&&void 0!==n?n:0)-(null!==(r=e.matchPriority)&&void 0!==r?r:0)})),null!==(n=r[0])&&void 0!==n?n:null})(L,ke)),{isEditing:Ne}=te,Te=f("value",Y,p,m);if(Ne&&(!Te||!H)){const e=k(Y.fullData,$,V,w);A(e||P)}if(!Te)return null;const Ae=e=>{let t;if(A(null),F(null),void 0===e||(e=>e&&"object"==typeof e&&"type"in e&&"target"in e&&"preventDefault"in e&&"function"==typeof e.preventDefault)(e))switch(ie){case"object":t={[v("DEFAULT_NEW_KEY",Y)]:L};break;case"array":t=null!=L?L:[];break;case"number":{const e=Number(L);t=isNaN(e)?0:e;break}default:t=L}else t=e;a(t,$).then((e=>{e&&Q({code:"UPDATE_ERROR",message:e},t)}))},Re=()=>{A(null),null===_?(z(r),F(null)):a(_,$)},{isEditingKey:Pe,canEditKey:Ke}=te,Ie=!Ne&&X,Ve=Ne&&ke.length>1,Me=("invalid"!==ie||he)&&!X&&Ee,_e=g&&!ve,Fe=he&&(Ne&&xe||!Ne&&De),Le={value:L,parentData:o,setValue:me,isEditing:Ne,canEdit:H,setIsEditing:H?()=>A($):()=>{},handleEdit:Ae,handleCancel:Re,path:$,stringTruncate:h,showStringQuotes:y,nodeData:Y,enumType:Oe,translate:v,handleKeyboard:D,keyboardCommon:{cancel:Re,tabForward:()=>{M("next"),K(W);const e=k(Y.fullData,$,"next",w);e&&(Ae(),A(e))},tabBack:()=>{M("prev"),K(W);const e=k(Y.fullData,$,"prev",w);e&&(Ae(),A(e))}}},ze={canEditKey:Ke,isEditingKey:Pe,pathString:W,path:$,name:U,arrayIndexFromOne:b,handleKeyboard:D,handleEditKey:q,handleCancel:Re,styles:T("property",Y),getNextOrPrevious:e=>k(Y.fullData,$,e,w),emptyStringKey:ee,nodeData:Y,customNodeData:x,getStyles:T},Be=Fe?e.jsx(he,Object.assign({},n,{value:L,customNodeProps:je,setValue:me,handleEdit:Ae,handleCancel:Re,handleKeyPress:e=>D(e,{stringConfirm:Ae,cancel:Re}),isEditing:Ne,setIsEditing:()=>A($),getStyles:T,originalNode:Ce?fe(r,Le):void 0,originalNodeKey:Ce?e.jsx(ge,Object.assign({},ze,{customNodeData:void 0})):void 0,canEdit:H,keyboardCommon:Le.keyboardCommon,onError:Q})):fe(r,Le);return e.jsxs("div",Object.assign({className:"jer-component jer-value-component",style:{marginLeft:null!==o?j/2+"em":0,position:"relative"},draggable:J},ne,re("above"),{children:[oe,e.jsx(ae,{position:"above",nodeData:Y}),e.jsxs("div",{className:"jer-value-main-row",style:{flexWrap:U.length>10?"wrap":"nowrap"},children:[_e&&e.jsx(ge,Object.assign({},ze)),e.jsxs("div",{className:"jer-value-and-buttons",children:[e.jsx("div",{className:"jer-input-component",children:Be}),Ne?e.jsx(le,{onOk:Ae,onCancel:Re,nodeData:Y,editConfirmRef:O}):Me&&e.jsx(se,{startEdit:H?()=>{F(_),A($,Re)}:void 0,handleDelete:Z?()=>{i(L,$).then((e=>{e&&Q({code:"DELETE_ERROR",message:e},L)}))}:void 0,enableClipboard:c,translate:v,customButtons:n.customButtons,nodeData:Y,handleKeyboard:D,keyboardControls:C,editConfirmRef:O,jsonStringify:S,showIconTooltips:N}),Ve&&e.jsxs("div",{className:"jer-select jer-select-types",children:[e.jsx("select",{name:`${U}-type-select`,className:"jer-select-inner",onChange:e=>(e=>{const t=E.find((t=>t.name===e));if(t)return a(t.defaultValue,$),ce(e),Se(null),A(null),void R({path:$,collapsed:!1,includeChildren:!1});const n=ke.find((t=>t instanceof Object&&t.enum===e));if(n)return"string"==typeof L&&n.values.includes(L)||a(n.values[0],$).then((e=>{e&&(Q({code:"UPDATE_ERROR",message:e},r),A(null))})),void Se(n);const r=be(L,e,v("DEFAULT_NEW_KEY",Y),(null==x?void 0:x.CustomNode)?v("DEFAULT_STRING",Y):void 0);["string","number","boolean"].includes(e)||A(null),a(r,$).then((e=>{e?(Q({code:"UPDATE_ERROR",message:e},r),A(null)):Se(null)}))})(e.target.value),value:Oe?Oe.enum:ie,children:ke.map((t=>t instanceof Object&&"enum"in t?e.jsx("option",{value:t.enum,children:t.enum},t.enum):e.jsx("option",{value:t,children:t},t)))}),e.jsx("span",{className:"focus"})]}),Ie&&e.jsx("span",{className:"jer-error-slug",style:T("error",Y),children:X})]})]}),e.jsx(ae,{position:"below",nodeData:Y})]}))},ye=(e,t)=>(null==t?void 0:t.CustomNode)&&(null==t?void 0:t.name)&&t.showInTypesSelector?t.name:"string"==typeof e?"string":"number"==typeof e?"number":"boolean"==typeof e?"boolean":null===e?"null":"invalid",fe=(t,n)=>{const r=ye(t),{value:o}=n;switch(r){case"string":return e.jsx(U,Object.assign({},n,{value:o}));case"number":return e.jsx(H,Object.assign({},n,{value:o}));case"boolean":return e.jsx(Z,Object.assign({},n,{value:o}));case"null":return e.jsx(X,Object.assign({},n));default:return e.jsx(Q,Object.assign({},n))}},be=(e,t,n,r)=>{switch(t){case"string":return null!=r?r:String(e);case"number":{const t=Number(e);return isNaN(t)?0:t}case"boolean":return!!e;case"null":return null;case"object":return{[n]:e};case"array":return[e];default:return String(e)}},je=(e=[],t)=>{const r=e.filter((({condition:e})=>e(t)));if(0===r.length)return{};const o=r[0],{element:a,wrapperElement:i,customKey:s,customNodeProps:l,wrapperProps:c,hideKey:d=!1,showEditTools:u=!0,showOnEdit:p=!1,showOnView:m=!0,showCollectionWrapper:g=!0}=o,h=n(o,["element","wrapperElement","customKey","customNodeProps","wrapperProps","hideKey","showEditTools","showOnEdit","showOnView","showCollectionWrapper"]);return Object.assign({CustomNode:a,CustomWrapper:i,CustomKey:s,customNodeProps:l,wrapperProps:c,hideKey:d,showEditTools:u,showOnEdit:p,showOnView:m,showCollectionWrapper:g},h)},ve=n=>{const{getStyles:o}=I(),{collapseState:a,setCollapseState:i,getMatchingCollapseState:s,currentlyEditingElement:l,setCurrentlyEditingElement:c,areChildrenBeingEdited:d,previousValue:u,setPreviousValue:p}=B(),{mainContainerRef:m,data:g,nodeData:b,parentData:j,showCollectionCount:v,onEdit:E,onAdd:D,onDelete:C,canDragOnto:w,collapseFilter:O,collapseAnimationTime:S,onMove:T,enableClipboard:A,onEditEvent:R,showIconTooltips:P,searchFilter:K,searchText:V,indent:M,sort:_,showArrayIndices:F,arrayIndexFromOne:L,defaultValue:z,newKeyOptions:W,translate:G,customNodeDefinitions:Y,customNodeData:$,jsonParse:U,jsonStringify:H,TextEditor:Z,keyboardControls:J,handleKeyboard:X,insertAtTop:Q,onCollapse:q,editConfirmRef:ee,collapseClickZones:te}=n,[ne,re]=t.useState(H(g)),oe=O(b),{contentRef:ae,isAnimating:ce,maxHeight:de,collapsed:ye,animateCollapse:fe,cssTransitionValue:be}=((e,n,r,o,a)=>{const[i,s]=t.useState(r?0:void 0),[l,c]=t.useState(r),d=t.useRef(!1),u=t.useRef(null),p=t.useRef(0),m=t.useRef(0),g=n/1e3+"s",h=t.useCallback((t=>{var r,i;if(l!==t){switch(window.clearTimeout(m.current),d.current=!0,t){case!0:{const e=null!==(i=null===(r=u.current)||void 0===r?void 0:r.offsetHeight)&&void 0!==i?i:0;p.current=e,s(e),setTimeout((()=>{s(0)}),5);break}case!1:s(p.current||me(e,u,o,a))}c(!l),m.current=window.setTimeout((()=>{d.current=!1,t||s(void 0)}),n)}}),[n,l,e,o,a]);return{contentRef:u,isAnimating:d.current,animateCollapse:h,maxHeight:i,collapsed:l,cssTransitionValue:g}})(g,S,oe,m,H),{pathString:Ee,nodeData:xe,path:De,name:Ce,size:we,canEdit:ke,canDelete:Oe,canAdd:Se,canDrag:Ne,error:Te,setError:Ae,onError:Re,handleEditKey:Pe,emptyStringKey:Ke,derivedValues:Ie}=ue({props:n,collapsed:ye}),{dragSourceProps:Ve,getDropTargetProps:Me,BottomDropTarget:_e,DropTargetPadding:Fe}=pe({canDrag:Ne,canDragOnto:w,path:De,nodeData:xe,onMove:T,onError:Re,translate:G}),Le=t.useRef(!oe),{isEditing:ze,isEditingKey:Be,isArray:We,canEditKey:Ge}=Ie;t.useEffect((()=>{re(H(g))}),[g]),t.useEffect((()=>{const e=O(xe)&&!ze;Le.current=!e,fe(e)}),[O]),t.useEffect((()=>{if(null!==a){const e=s(De);e&&(Le.current=!0,fe(e.collapsed))}}),[a]);const Ye=t.useRef(null),$e=t.useCallback(((e,t)=>{if("function"!=typeof z)return z;const n=z(e,t);return void 0!==n?n:null}),[z]),Ue=t.useCallback((e=>W?"function"!=typeof W?W:W(e):null),[W]),{CustomNode:He,customNodeProps:Ze,CustomWrapper:Je,wrapperProps:Xe={},hideKey:Qe,showEditTools:qe=!0,showOnEdit:et,showOnView:tt,showCollectionWrapper:nt=!0}=$,rt=d(Ee);rt&&ye&&fe(!1);if(!(f("collection",xe,K,V)||0===xe.level)&&!rt)return null;const ot=Array.isArray(g)?"array":"object",at="array"===ot?{open:"[",close:"]"}:{open:"{",close:"}"},it=e=>{if("Tab"!==e.key||e.getModifierState("Shift"))X(e,{objectConfirm:lt,cancel:dt});else{e.preventDefault();const t=N(Ye,"\t");re(t)}},st=e=>{e.stopPropagation();const t=x(e);if(t&&J.collapseModifier.includes(t))return Le.current=!0,void i({collapsed:!ye,path:De,includeChildren:!0});l&&l.includes(Ee)||(Le.current=!0,i(null),q&&q({path:De,collapsed:!ye,includeChildren:!1}),fe(!ye))},lt=()=>{try{const e=U(ne);if(c(null),p(null),Ae(null),H(e)===H(g))return;E(e,De).then((t=>{t&&Re({code:"UPDATE_ERROR",message:t},e)}))}catch(e){Re({code:"INVALID_JSON",message:G("ERROR_INVALID_JSON",xe)},ne)}},ct=De.length>0?()=>{C(g,De).then((e=>{e&&Re({code:"DELETE_ERROR",message:e},g)}))}:void 0,dt=()=>{c(null),null===u?(Ae(null),re(H(g)),p(null)):E(u,De)},ut="when-closed"===v?ye:v,pt=!ze&&qe,mt=(F||!We)&&!Qe&&void 0!==Ce,gt=He&&(ze&&et||!ze&&tt),ht=Object.entries(g).map((([e,t])=>["array"===ot?Number(e):e,t]));"object"===ot&&_(ht,(e=>e));const yt=Le.current?ze?e.jsxs("div",{className:"jer-collection-text-edit",children:[Z?e.jsx(Z,{value:ne,onChange:re,onKeyDown:e=>X(e,{objectConfirm:lt,cancel:dt})}):e.jsx(h,{textAreaRef:Ye,className:"jer-collection-text-area",name:Ee,value:ne,setValue:re,handleKeyPress:it,styles:o("input",xe)}),e.jsx("div",{className:"jer-collection-input-button-row",children:e.jsx(le,{onOk:lt,onCancel:dt,nodeData:xe,editConfirmRef:ee})})]}):ht.map((([t,r],a)=>{const i={key:t,value:r,path:[...De,t],level:De.length+1,index:a,size:y(r)?Object.keys(r).length:null,parentData:g,fullData:xe.fullData},s=je(Y,i);return e.jsx("div",{className:"jer-collection-element",style:o("collectionElement",i),children:y(r)&&!(null==s?void 0:s.renderCollectionAsValue)?e.jsx(ve,Object.assign({},n,{data:r,parentData:g,nodeData:i,showCollectionCount:v,canDragOnto:ke,customNodeData:s}),t):e.jsx(he,Object.assign({},n,{data:r,parentData:g,nodeData:i,canDragOnto:ke,showLabel:"object"===ot||F,customNodeData:s}),t)},t)})):null,ft=!!nt&&(ye&&!rt);ft||(Le.current=!0);const bt=Object.assign(Object.assign({},n),{data:g,value:g,parentData:j,nodeData:xe,setValue:e=>r(void 0,void 0,void 0,(function*(){return yield E(e,De)})),handleEdit:lt,handleCancel:dt,handleKeyPress:it,isEditing:ze,setIsEditing:()=>c(De),getStyles:o,canDragOnto:ke,canEdit:ke,keyboardCommon:{},onError:Re}),jt=gt?e.jsx(He,Object.assign({customNodeProps:Ze},bt,{children:yt})):yt,vt=pt&&e.jsx(se,{startEdit:ke?()=>{Le.current=!0,p(null),c(De)}:void 0,handleAdd:Se?e=>{fe(!1);const t=$e(xe,e);if("array"===ot){const e=Q.array?0:g.length,n=Q.array?{insert:!0}:{};D(t,[...De,e],n).then((e=>{e&&Re({code:"ADD_ERROR",message:e},t)}))}else if(e in g)Re({code:"KEY_EXISTS",message:G("ERROR_KEY_EXISTS",xe)},e);else{const n=Q.object?{insertBefore:0}:{};D(t,[...De,e],n).then((e=>{e&&Re({code:"ADD_ERROR",message:e},t)}))}}:void 0,handleDelete:Oe?ct:void 0,enableClipboard:A,type:ot,nodeData:xe,translate:G,customButtons:n.customButtons,keyboardControls:J,handleKeyboard:X,getNewKeyOptions:Ue,editConfirmRef:ee,jsonStringify:H,onEditEvent:R,showIconTooltips:P}),Et={canEditKey:Ge,isEditingKey:Be,pathString:Ee,path:De,name:Ce,arrayIndexFromOne:L,handleKeyboard:X,handleEditKey:Pe,handleCancel:dt,keyValueArray:ht,styles:o("property",xe),getNextOrPrevious:e=>k(xe.fullData,De,e,_),handleClick:te.includes("property")?st:e=>e.stopPropagation(),emptyStringKey:Ke,nodeData:xe,customNodeData:$,getStyles:o},xt=e.jsxs("div",Object.assign({className:"jer-component jer-collection-component",style:Object.assign(Object.assign({marginLeft:(0===De.length?0:M/2)+"em"},o("collection",xe)),{position:"relative"}),draggable:Ne},Ve,Me("above"),{children:[e.jsx("div",{className:"jer-clickzone",style:{width:M/2+1+"em",zIndex:10+2*xe.level},onClick:te.includes("left")?st:void 0}),!ze&&_e,e.jsx(Fe,{position:"above",nodeData:xe}),nt?e.jsxs("div",{className:"jer-collection-header-row",style:{position:"relative"},onClick:te.includes("header")?st:void 0,children:[e.jsxs("div",{className:"jer-collection-name",children:[e.jsx("div",{className:"jer-collapse-icon jer-accordion-icon"+(ye?" jer-rotate-90":""),style:{zIndex:11+2*xe.level,transition:be},onClick:st,children:e.jsx(ie,{name:"chevron",rotate:ye,nodeData:xe})}),mt&&e.jsx(ge,Object.assign({},Et)),!ze&&e.jsx("span",{className:"jer-brackets jer-bracket-open",style:o("bracket",xe),children:at.open})]}),!ze&&ut&&e.jsx("div",{className:"jer-collection-item-count"+(ut?" jer-visible":" jer-hidden"),style:Object.assign(Object.assign({},o("itemCount",xe)),{transition:be}),children:1===we?G("ITEM_SINGLE",Object.assign(Object.assign({},xe),{size:1}),1):G("ITEMS_MULTIPLE",xe,we)}),e.jsx("div",{className:"jer-brackets"+(ft?" jer-visible":" jer-hidden"),style:Object.assign(Object.assign({},o("bracket",xe)),{transition:be}),children:at.close}),vt]}):Qe?e.jsx(e.Fragment,{}):e.jsxs("div",{className:"jer-collection-header-row",style:{position:"relative"},children:[e.jsx(ge,Object.assign({},Et)),vt]}),e.jsxs("div",{className:"jer-collection-inner",style:Object.assign(Object.assign({overflowY:ft||ce?"clip":"visible",maxHeight:rt?void 0:de},o("collectionInner",xe)),{transition:be}),ref:ae,children:[jt,e.jsx("div",{className:ze?"jer-collection-error-row":"jer-collection-error-row-edit",children:Te&&e.jsx("span",{className:"jer-error-slug",style:o("error",xe),children:Te})}),!ze&&nt&&e.jsx("div",{className:"jer-brackets jer-bracket-outside",style:Object.assign(Object.assign({},o("bracket",xe)),{marginLeft:(M<3?-1:M<6?-.5:0)+"em"}),children:at.close})]}),e.jsx(Fe,{position:"below",nodeData:xe})]}));return Je?e.jsx(Je,Object.assign({customNodeProps:Xe},bt,{children:xt})):xt},Ee={ITEM_SINGLE:"{{count}} item",ITEMS_MULTIPLE:"{{count}} items",KEY_NEW:"Enter new key",KEY_SELECT:"Select key",NO_KEY_OPTIONS:"No key options",ERROR_KEY_EXISTS:"Key already exists",ERROR_INVALID_JSON:"Invalid JSON",ERROR_UPDATE:"Update unsuccessful",ERROR_DELETE:"Delete unsuccessful",ERROR_ADD:"Adding node unsuccessful",DEFAULT_STRING:"New data!",DEFAULT_NEW_KEY:"key",SHOW_LESS:"(Show less)",EMPTY_STRING:"<empty string>",TOOLTIP_COPY:"Copy to clipboard",TOOLTIP_EDIT:"Edit",TOOLTIP_DELETE:"Delete",TOOLTIP_ADD:"Add"},xe=(e,t)=>(n,r,o)=>((e,t,n,r,o)=>{if(t[r]){const e=t[r](n);if(null!==e)return e}const a=r in e?e[r]:Ee[r];return void 0===o?a:null==a?void 0:a.replace("{{count}}",String(o))})(e,t,r,n,o);var De=[],Ce=[];!function(e,t){if(e&&"undefined"!=typeof document){var n,r=!0===t.prepend?"prepend":"append",o=!0===t.singleTag,a="string"==typeof t.container?document.querySelector(t.container):document.getElementsByTagName("head")[0];if(o){var i=De.indexOf(a);-1===i&&(i=De.push(a)-1,Ce[i]={}),n=Ce[i]&&Ce[i][r]?Ce[i][r]:Ce[i][r]=s()}else n=s();65279===e.charCodeAt(0)&&(e=e.substring(1)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(document.createTextNode(e))}function s(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),t.attributes)for(var n=Object.keys(t.attributes),o=0;o<n.length;o++)e.setAttribute(n[o],t.attributes[n[o]]);var i="prepend"===r?"afterbegin":"beforeend";return a.insertAdjacentElement(i,e),e}}(':root{--jer-select-border:#b6b6b6;--jer-select-focus:#777;--jer-select-arrow:#777;--jer-form-border:1px solid #ededf0;--jer-form-border-focus:1px solid #e2e2e2;--jer-highlight-color:#b3d8ff}.jer-visible{opacity:1}.jer-hidden{opacity:0}.jer-select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:#000;cursor:inherit;font-family:inherit;font-size:.8em;line-height:inherit;margin:0;outline:none;padding:0 1em 0 0;z-index:1}select::-ms-expand{display:none}.jer-select{align-items:center;background-color:#fff;background-image:linear-gradient(0deg,#f9f9f9,#fff 33%);border:1px solid var(--jer-select-border);border-radius:.25em;cursor:pointer;display:grid;grid-template-areas:"select";line-height:1.1;max-width:15ch;min-width:12ch;padding:.25em .5em;position:relative}.jer-select select,.jer-select:after{grid-area:select}.jer-select:not(.jer-select--multiple):after{background-color:var(--jer-select-arrow);clip-path:polygon(100% 0,0 0,50% 100%);content:"";height:.5em;justify-self:end;width:.8em}select:focus+.focus{border:1px solid var(--jer-select-focus);border-radius:inherit;bottom:-1px;left:-1px;position:absolute;right:-1px;top:-1px}.jer-select-inner{text-overflow:ellipsis;width:100%}.jer-editor-container{border-radius:.5em;font-size:16px;line-height:1;padding:1em 1em 1em 2em;position:relative;text-align:left}.jer-editor-container textarea{border:var(--jer-form-border);border-radius:.3em;color:var(--jer-input-color);outline:none}.jer-editor-container textarea:focus{border:var(--jer-form-border-focus)}.jer-editor-container input{border:var(--jer-form-border);border-radius:.3em;font-family:inherit;outline:none}.jer-editor-container input:focus{border:var(--jer-form-border-focus)}.jer-editor-container ::selection{background-color:var(--jer-highlight-color)}.jer-collection-header-row,.jer-value-main-row{align-items:center;display:flex;gap:.3em;min-height:1.7em}.jer-collection-header-row{display:flex;flex-wrap:wrap}.jer-bracket-outside{padding-left:.5em}.jer-collapse-icon{left:-1.2em;position:absolute;top:.35em}.jer-collection-inner{position:relative}.jer-collection-text-edit{align-items:flex-start;display:flex;flex-direction:column;gap:.3em;line-height:1.1em}.jer-collection-text-area{font-family:inherit;font-size:.85em;max-height:40em;overflow:hidden;padding:.2em .5em 0;resize:both}.jer-collection-input-button-row{display:flex;font-size:150%;justify-content:flex-end;margin-top:.4em;width:100%}.jer-collection-error-row{bottom:.5em;position:absolute}.jer-error-slug{margin-left:1em}.jer-value-component{position:relative}.jer-value-main-row{display:flex;gap:0}.jer-value-and-buttons{align-items:center;display:flex;justify-content:flex-start;padding-left:.5em}.jer-value-error-row{position:absolute}.jer-value-string{line-height:1.3em;overflow-wrap:anywhere;white-space:pre-wrap;word-break:break-word}.jer-string-expansion{cursor:pointer;filter:saturate(50%);opacity:.6}.jer-show-less{font-size:80%}.jer-hyperlink{text-decoration:underline}.jer-input-text{font-family:inherit;font-size:.9em;height:1.4em;line-height:1.2em;margin:0;min-width:6em;overflow:hidden;padding:.25em .5em .2em;resize:none}.jer-input-boolean{margin-left:.3em;margin-right:.3em;transform:scale(1.5)}.jer-key-text{line-height:1.1em;white-space:pre-wrap;word-break:break-word}.jer-key-edit{font-size:inherit;font-size:.9em;padding:0 .3em}.jer-value-invalid{font-style:italic;opacity:.5}.jer-input-number{font-size:90%;min-width:3em}.jer-confirm-buttons,.jer-edit-buttons{align-items:center;cursor:pointer;display:flex;height:1em}.jer-input-buttons{gap:.4em}.jer-edit-buttons{gap:.4em;margin-left:.5em;opacity:0}.jer-confirm-buttons{gap:.2em;margin-left:.4em}.jer-edit-buttons:hover{opacity:1;position:relative}.jer-collection-header-row:hover>.jer-edit-buttons,.jer-value-and-buttons:hover>.jer-edit-buttons,.jer-value-main-row:hover>.jer-edit-buttons{opacity:1}.jer-copy-pulse{position:relative;transition:.3s}.jer-copy-pulse:hover{opacity:.85;transform:scale(1.2);transition:.3s}.jer-copy-pulse:after{border-radius:50%;box-shadow:0 0 15px 5px var(--jer-icon-copy-color);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;transition:all .5s;width:100%}.jer-copy-pulse:active:after{border-radius:4em;box-shadow:0 0 0 0 var(--jer-icon-copy-color);left:0;opacity:1;position:absolute;top:0;transition:0s}.jer-copy-pulse:active{top:.07em}.jer-rotate-90{transform:rotate(-90deg)}.jer-icon:hover{opacity:.85;transform:scale(1.2);transition:.3s}.jer-empty-string{font-size:90%;font-style:italic}.jer-drag-n-drop-padding{border:1px dashed #e0e0e0;border-radius:.3em;height:.5em}.jer-clickzone{height:calc(100% - .8em);left:-1em;position:absolute;top:1.2em}',{});const we=(e,t)=>JSON.stringify(e,t,2),ke=({data:n,setData:o,rootName:a="root",onUpdate:i=()=>{},onEdit:s=i,onDelete:l=i,onAdd:c=i,onChange:d,onError:u,onEditEvent:p,showErrorMessages:m=!0,enableClipboard:g=!0,indent:h=2,collapse:f=!1,collapseAnimationTime:b=300,showCollectionCount:j=!0,restrictEdit:v=!1,restrictDelete:x=!1,restrictAdd:C=!1,restrictTypeSelection:k=!1,restrictDrag:O=!0,viewOnly:S,searchFilter:N,searchText:A,searchDebounceTime:R=350,keySort:P=!1,showArrayIndices:K=!0,arrayIndexFromOne:V=!1,showStringQuotes:M=!0,showIconTooltips:_=!1,defaultValue:F=null,newKeyOptions:L,minWidth:z=250,maxWidth:W="min(600px, 90vw)",rootFontSize:G,stringTruncate:Y=250,translations:$={},className:U,id:H,customText:Z={},customNodeDefinitions:J=[],customButtons:X=[],jsonParse:Q=JSON.parse,jsonStringify:q=we,TextEditor:ee,errorMessageTimeout:te=2500,keyboardControls:ne={},externalTriggers:re,insertAtTop:oe=!1,onCollapse:ae,collapseClickZones:ie=["header","left"]})=>{const{getStyles:se}=I(),{setCurrentlyEditingElement:le}=B(),ce=t.useMemo((()=>Se(f)),[f]),de=t.useMemo((()=>xe($,Z)),[$,Z]),[ue,pe]=t.useState(A),[me,ge]=(({setData:e,data:n})=>{const[r,o]=t.useState(e?void 0:n),a=t.useCallback((t=>{e?e(t):o(t)}),[e]);return t.useEffect((()=>{e||o(n)}),[n]),[e?n:r,a]})({setData:o,data:n}),ye=t.useRef(null);t.useEffect((()=>{le(null);const e=setTimeout((()=>pe(A)),R);return()=>clearTimeout(e)}),[A,R]);const fe={key:a,path:[],level:0,index:0,value:me,size:"object"==typeof me&&null!==me?Object.keys(me).length:1,parentData:null,fullData:me},be=(e,t)=>r(void 0,void 0,void 0,(function*(){const n=yield e(t);if(!0===n||void 0===n)return void ge(t.newData);const r=Te(n)?n:["error",n],[o,a]=r;if("error"===o)return ge(t.currentData),!1===a?de("ERROR_UPDATE",fe):String(a);ge(a)})),Ee=t.useMemo((()=>Se(v,S)),[v,S]),De=t.useMemo((()=>Se(x,S)),[x,S]),Ce=t.useMemo((()=>Se(C,S)),[C,S]),ke=t.useMemo((()=>Se(O,S)),[O,S]),Re=t.useMemo((()=>Ne(N)),[N]),Pe=t.useMemo((()=>(e=>{const t=Object.assign({},w);for(const n of Object.keys(w)){const r=n;if(e[r]){const o=e[r],a=["clipboardModifier","collapseModifier"].includes(n)?Array.isArray(o)?o:[o]:"string"==typeof o?{key:o}:o;t[r]=a,["stringConfirm","numberConfirm","booleanConfirm"].forEach((n=>{!e[n]&&e.confirm&&(t[n]=t.confirm)}))}}return t})(ne)),[ne]),Ke=t.useCallback(((e,t)=>((e,t,n)=>{const r=Object.entries(t);for(const[t,o]of r)if(D(n,e[t],t)){n.preventDefault(),o();break}})(Pe,t,e)),[Pe]),Ie=t.useMemo((()=>{const e=Ae(J,"stringifyReplacer");return t=>q(t,e)}),[J,q]),Ve=t.useMemo((()=>{const e=Ae(J,"parseReviver");return t=>{const n=Q(t,e);return T(n)}}),[J,Q]),Me=t.useRef(null);((e,n)=>{const{setCurrentlyEditingElement:r,currentlyEditingElement:o,setCollapseState:a}=B();t.useEffect((()=>{if(!e)return;const{collapse:t,edit:i}=e;t&&a(t);const s=!(null==i?void 0:i.path)||E(i.path)===o;switch(null==i?void 0:i.action){case"accept":s&&(n.current&&n.current.click(),r(null));break;case"cancel":s&&r(null);break;default:(null==i?void 0:i.path)&&r(i.path)}}),[e])})(re,Me);const _e=t.useCallback(((e,t)=>{!1!==P&&("function"!=typeof P?e.sort(((e,n)=>{const r=t(e)[0],o=t(n)[0];return r<o?-1:r>o?1:0})):e.sort(((e,n)=>P(t(e),t(n)))))}),[P]),Fe=je(J,fe),Le={mainContainerRef:ye,name:a,nodeData:fe,onEdit:(e,t)=>r(void 0,void 0,void 0,(function*(){const{currentData:n,newData:r,currentValue:o,newValue:a}=Oe(me,t,e,"update");if(o!==a)return yield be(s,{currentData:n,newData:r,currentValue:o,newValue:a,name:t.slice(-1)[0],path:t})})),onDelete:(e,t)=>r(void 0,void 0,void 0,(function*(){const{currentData:n,newData:r,currentValue:o,newValue:a}=Oe(me,t,e,"delete");return yield be(l,{currentData:n,newData:r,currentValue:o,newValue:a,name:t.slice(-1)[0],path:t})})),onAdd:(e,t,n)=>r(void 0,void 0,void 0,(function*(){const{currentData:r,newData:o,currentValue:a,newValue:i}=Oe(me,t,e,"add",n);return yield be(c,{currentData:r,newData:o,currentValue:a,newValue:i,name:t.slice(-1)[0],path:t})})),onChange:d,onError:u,onEditEvent:p,showErrorMessages:m,onMove:(e,t,n)=>r(void 0,void 0,void 0,(function*(){if(null===e)return;const{currentData:r,newData:o,currentValue:a}=Oe(me,e,"","delete"),i=e.slice(-1)[0],l=t.slice(0,-1),c=t.slice(-1)[0];let d="number"==typeof c?"above"===n?c:c+1:"number"==typeof i?`arr_${i}`:i;e.slice(0,-1).join(".")===t.slice(0,-1).join(".")&&"number"==typeof i&&"number"==typeof d&&i<d&&(d-=1);const u="number"==typeof d?{insert:!0}:"above"===n?{insertBefore:c}:{insertAfter:c},{newData:p,newValue:m}=Oe(o,[...l,d],a,"add",u);return yield be(s,{currentData:r,newData:p,currentValue:a,newValue:m,name:t.slice(-1)[0],path:t})})),showCollectionCount:j,collapseFilter:ce,collapseAnimationTime:b,restrictEditFilter:Ee,restrictDeleteFilter:De,restrictAddFilter:Ce,restrictTypeSelection:k,restrictDragFilter:ke,canDragOnto:!1,searchFilter:Re,searchText:ue,enableClipboard:g,keySort:P,sort:_e,showArrayIndices:K,arrayIndexFromOne:V,showStringQuotes:M,showIconTooltips:_,indent:h,defaultValue:F,newKeyOptions:L,stringTruncate:Y,translate:de,customNodeDefinitions:J,customNodeData:Fe,customButtons:X,parentData:null,jsonParse:Ve,jsonStringify:Ie,TextEditor:ee,errorMessageTimeout:te,handleKeyboard:Ke,keyboardControls:Pe,insertAtTop:{object:!0===oe||"object"===oe,array:!0===oe||"array"===oe},onCollapse:ae,editConfirmRef:Me,collapseClickZones:ie},ze=Object.assign(Object.assign({},se("container",fe)),{minWidth:z,maxWidth:W});return ze.fontSize=null!=G?G:ze.fontSize,e.jsx("div",{id:H,ref:ye,className:`jer-editor-container ${null!=U?U:""}`,style:ze,children:y(me)&&!Fe.renderCollectionAsValue?e.jsx(ve,Object.assign({data:me},Le)):e.jsx(he,Object.assign({data:me,showLabel:!0},Le))})},Oe=(e,t,n,r,o={})=>{if(0===t.length)return{currentData:e,newData:n,currentValue:e,newValue:n};const i=Object.assign({remove:"delete"===r},o),s="add"!==r?a(e,t):void 0;return{currentData:e,newData:u(e,t,n,i),currentValue:s,newValue:"delete"!==r?n:void 0}},Se=(e,t)=>t?()=>!0:"boolean"==typeof e?()=>e:"number"==typeof e?({level:t})=>t>=e:e,Ne=e=>{if(void 0!==e)return"value"===e?j:"key"===e?v:"all"===e?(e,t)=>j(e,t)||v(e,t):e},Te=e=>Array.isArray(e)&&2===e.length&&["error","value"].includes(e[0]),Ae=(e,t)=>{const n="stringifyReplacer"===t?[e=>void 0===e?A:e]:[];if(n.push(...e.map((e=>e[t])).filter((e=>!!e))),0!==n.length)return(e,t)=>{let r=t;for(const e of n)r=e(r);return r}},Re=t=>{var n;const{value:r,setIsEditing:o,getStyles:a,nodeData:i}=t,s=a("string",i);return e.jsx("div",{onDoubleClick:()=>o(!0),onClick:e=>{(e.getModifierState("Control")||e.getModifierState("Meta"))&&o(!0)},className:"jer-value-string jer-hyperlink",style:s,children:e.jsx("a",{href:r,target:"_blank",rel:"noreferrer",style:{color:null!==(n=s.color)&&void 0!==n?n:void 0},children:e.jsx(Y,Object.assign({},t,{pathString:E(i.path),styles:s,value:i.value}))})})},Pe={condition:({value:e})=>"string"==typeof e&&/^https?:\/\/.+\..+$/.test(e),element:Re,showOnView:!0,showOnEdit:!1};exports.IconAdd=q,exports.IconCancel=oe,exports.IconChevron=ae,exports.IconCopy=ne,exports.IconDelete=te,exports.IconEdit=ee,exports.IconOk=re,exports.JsonEditor=n=>{var r;const[o,a]=t.useState();return t.useEffect((()=>{const e=document.documentElement;a(e)}),[]),o?e.jsx(K,{theme:null!==(r=n.theme)&&void 0!==r?r:R,icons:n.icons,docRoot:o,children:e.jsx(z,{onEditEvent:n.onEditEvent,onCollapse:n.onCollapse,children:e.jsx(ke,Object.assign({},n))})}):null},exports.LinkCustomComponent=Re,exports.LinkCustomNodeDefinition=Pe,exports.StringDisplay=Y,exports.StringEdit=$,exports.assign=u,exports.candyWrapperTheme={displayName:"Candy Wrapper",fragments:{minty:{backgroundColor:"#F1FAEE"},pale:{color:"#A8DADC"},mid:{color:"#457B9D"},dark:{color:"#1D3557"},pop:{color:"#E63946"},darkBlue:{color:"#2B2D42"}},styles:{container:"minty",property:"pop",dropZone:"#eb121217",bracket:"dark",itemCount:"pale",string:"mid",number:["darkBlue",{fontSize:"85%"}],boolean:["mid",{fontStyle:"italic",fontWeight:"bold",fontSize:"80%"}],null:["#cccccc",{fontWeight:"bold"}],input:{border:"1px solid rgb(115, 194, 198)"},iconCollection:"#1D3557",iconEdit:"#457B9D",iconDelete:"#E63946",iconAdd:"#2B2D42",iconCopy:"#1D3557",iconCancel:"#E63946"}},exports.defaultTheme=R,exports.extract=a,exports.githubDarkTheme={displayName:"Github Dark",styles:{container:{backgroundColor:"#0d1117",color:"white"},dropZone:"rgba(165, 214, 255, 0.17)",property:"#E6EDF3",bracket:"#56d364",itemCount:"#8B949E",string:"#A5D6FF",number:"#D2A8FF",boolean:{color:"#FF7B72",fontSize:"90%",fontWeight:"bold"},null:"green",iconCollection:"#D2A8FF",iconEdit:"#D2A8FF",iconDelete:"rgb(203, 75, 22)",iconAdd:"rgb(203, 75, 22)",iconCopy:"#A5D6FF",iconOk:"#56d364",iconCancel:"rgb(203, 75, 22)"}},exports.githubLightTheme={displayName:"Github Light",styles:{container:"white",property:"#1F2328",bracket:"#00802e",itemCount:"#8B949E",string:"#0A3069",number:"#953800",boolean:{color:"#CF222E",fontSize:"90%",fontWeight:"bold"},null:"#FF7B72",iconCollection:"#8250DF",iconEdit:"#8250DF",iconDelete:"rgb(203, 75, 22)",iconAdd:"#8250DF",iconCopy:"#57606A"}},exports.isCollection=y,exports.matchNode=j,exports.matchNodeKey=v,exports.monoDarkTheme={displayName:"Black & White",fragments:{lightText:{color:"white"},midGrey:"#5c5c5c"},styles:{container:["lightText",{backgroundColor:"black"}],dropZone:"#e0e0e029",property:"lightText",bracket:"midGrey",itemCount:"#4a4a4a",string:"#a8a8a8",number:"#666666",boolean:{color:"#848484",fontStyle:"italic"},null:"#333333",iconCollection:"midGrey",iconEdit:"midGrey",iconDelete:"midGrey",iconAdd:"midGrey",iconCopy:"midGrey",iconOk:"midGrey",iconCancel:"midGrey"}},exports.monoLightTheme={fragments:{midGrey:"#a3a3a3"},displayName:"White & Black",styles:{container:"white",property:"black",bracket:"midGrey",itemCount:"#b5b5b5",string:"#575757",number:"#999999",boolean:{color:"#7b7b7b",fontStyle:"italic"},null:"#cccccc",iconCollection:"midGrey",iconEdit:"midGrey",iconDelete:"midGrey",iconAdd:"midGrey",iconCopy:"midGrey",iconOk:"midGrey",iconCancel:"midGrey"}},exports.psychedelicTheme={displayName:"Psychedelic",fragments:{pale:{color:"#A8DADC"},fluroYellow:"rgb(242, 228, 21)",fluroGreen:"rgb(68, 255, 62)",hotPink:"#f7379a"},styles:{container:{backgroundColor:"unset",background:"linear-gradient(90deg, hsla(333, 100%, 53%, 1) 0%, hsla(33, 94%, 57%, 1) 100%)",color:"black"},dropZone:"fluroYellow",property:"black",bracket:"fluroYellow",itemCount:["pale",{opacity:.7}],string:"white",number:["#33d9ff",{fontSize:"90%",fontWeight:"bold"}],boolean:["fluroGreen",{fontWeight:"bold",fontSize:"80%"}],null:["black",{fontWeight:"bold",opacity:.3,backgroundColor:"rgb(255, 255, 255, 0.5)",padding:"0 0.4em",borderRadius:"0.4em"}],iconCollection:"fluroYellow",iconEdit:["black"],iconDelete:["white",{opacity:.5}],iconAdd:["white",{opacity:.5}],iconCopy:"rgb(32, 84, 242)",iconOk:"fluroGreen",iconCancel:"hotPink"}},exports.standardDataTypes=de,exports.toPathString=E,exports.useKeyboardListener=J;
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react");const n=()=>{},r=e=>Array.isArray(e)?e:[e],o=e=>null!==e&&"object"==typeof e,a=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s=(e,t)=>{if("string"!=typeof e)return null;const n=t.filter(t=>t instanceof Object&&t.enum&&t.values.includes(e)&&t.matchPriority);return n.sort((e,t)=>(t.matchPriority??0)-(e.matchPriority??0)),n[0]??null},i=e=>{if(e!==l){if(e&&"object"==typeof e)for(const t in e){const n=e[t],r=i(n);r!==n&&(e[t]=r)}return e}},l="__undefined__",c=e=>e.split(/(\.|\[\d+\])/).filter(e=>"."!==e&&""!==e).map(e=>{const t=/\[(\d+)\]/.exec(e);return t?Number(t[1]):e}),u=e=>"string"==typeof e?e:"number"==typeof e?String(e):e.reduce((e,t)=>"number"==typeof t?`${e}[${t}]`:""===e?t:`${e}.${t}`,""),d=e=>1===e.length&&""===e[0]?"\0":e.map(e=>encodeURIComponent(String(e))).join("/"),p=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),m=(e,t)=>e.length>=t.length&&t.every((t,n)=>t===e[n]),h=(e,t,n,r,o)=>{if(!r)throw new Error(o??`Invalid property path: ${t}\nCouldn't access "${n}" in ${JSON.stringify(e)}`)},f=e=>Array.isArray(e),y=(e,t)=>e.filter((e,n)=>n!==t),g=(e,t,n,r={})=>{const{remove:o=!1,createNew:a=!0,noError:s=!1}=r,i=e,l=u(t),d={...r,remove:o,createNew:a,noError:s,fullData:i,fullPath:l},p=Array.isArray(t)?t:c(t);return f(e)&&o&&1===p.length?y(e,p[0]):v(e,p,n,d)},v=(e,t,n,r)=>{const o=a(e)?{...e}:null,s=f(e)?[...e]:null;if(0===t.length)return e;if(!o&&!s)throw new Error("Can't assign property -- invalid input object");const{createNew:i,remove:l,noError:c,fullData:u,fullPath:d}=r,p=t[0];if(s&&"string"==typeof p)return s.map(e=>v(e,t,n,r));if(1===t.length){if(o&&"string"==typeof p){return b(o,p,n,r)??o}return s&&"number"==typeof p?(j(s,p,n,r),s):(h(u,d,p,c),e)}const m=o||s||[];if(l&&2===t.length&&"number"==typeof t[1]){const e=m[p],n=t[1];return f(e)?m[p]=y(e,n):h(u,d,p,c,"Trying to remove an indexed item from an object that is not an array"),m}const g=t.slice(1);if(p in e){if(x=m[p],!f(x)&&!a(x)){if(!i)return h(u,d,p,c),m;m[p]={}}return m[p]=v(m[p],g,n,r),m}var x;if(i){const e="number"==typeof g[0]?[]:{};if(o)return m[p]=e,m[p]=v(m[p],g,n,r),m;if(s&&Array.isArray(m)){m.push(e);const t=m.length-1;return m[t]=v(m[t],g,n,r),m}}return h(u,d,p,c),m},b=(e,t,n,r)=>{const{remove:o,createNew:a,noError:s,insertAfter:i,insertBefore:l,fullData:c,fullPath:u}=r;if(void 0!==l||void 0!==i){const r=Object.entries(e);let o=1/0;return o="number"==typeof l?l:"number"==typeof i?i:r.findIndex(([e])=>e===(l??i)),void 0!==i&&o++,r.splice(o,0,[t,n]),Object.fromEntries(r)}const d=t in e;o?d?delete e[t]:h(c,u,t,s):a||d?e[t]=n:h(c,u,t,s)},j=(e,t,n,r)=>{const{noError:o,fullData:a,fullPath:s,createNew:i,insert:l}=r;l&&e.splice(t,0,n),t in e?e[t]=n:i?e.push(n):h(a,s,t,o)},x=(e,t,n)=>{const r=Array.isArray(t)?t:c(t);if(0===r.length)return e;const o=r[0];if(Array.isArray(e)&&"number"!=typeof o&&e.length>0)return e.map(e=>x(e,r,n));if("object"!=typeof e||null===e||!(o in e))return w(e,o,n);const a=e[o];return 1===r.length?a:x(a,r.slice(1),n)},w=(e,t,n)=>{if(void 0===n)throw new Error(`Unable to extract object property\nLooking for property: ${t}\nIn object: ${JSON.stringify(e)}`);return n},E=(e,t,n="",r)=>{if(0===t.length)return{key:n,path:[],level:0,index:0,value:e,size:o(e)?Object.keys(e).length:1,parentData:null,fullData:e};const a=t[t.length-1],s=x(e,t),i=x(e,t.slice(0,-1))??null;let l=0;if(Array.isArray(i))l="number"==typeof a?a:Number(a);else if(i&&"object"==typeof i){const e=Object.entries(i);r?.(e,e=>e),l=e.findIndex(([e])=>e===a)}return{key:a,path:t,level:t.length,index:l,value:s,size:o(s)?Object.keys(s).length:null,parentData:i,fullData:e}},C="undefined"!=typeof window?t.useLayoutEffect:t.useEffect,D=({className:n,name:r,value:o,setValue:a,onKeyDown:s,styles:i,textAreaRef:l})=>{const c=t.useRef(null);if(C(()=>{const e=c.current;c.current=null;const t=l?.current;if(!e||!t)return;const n=e.start+o.length-e.sourceLength,r=Math.max(0,Math.min(n,o.length));t.selectionStart!==r&&t.setSelectionRange(r,r)},[o,l]),"string"!=typeof o)return null;const u="\n"===o.slice(-1)?o+".":o;return e.jsxs("div",{style:{display:"grid"},children:[e.jsx("textarea",{id:`${r}_textarea`,ref:l,style:{height:"auto",gridArea:"1 / 1 / 2 / 2",overflowY:"auto",whiteSpace:"pre-wrap",...i},rows:1,className:n,name:`${r}_textarea`,value:o,onChange:e=>{const{value:t,selectionStart:n}=e.target;c.current=null!==n&&n<t.length?{start:n,sourceLength:t.length}:null,a(t)},autoFocus:!0,onFocus:e=>{o.length<40&&e.target.select()},onKeyDown:s}),e.jsx("span",{className:n,style:{visibility:"hidden",height:"auto",gridArea:"1 / 1 / 2 / 2",color:"red",opacity:.9,whiteSpace:"pre-wrap",overflowY:"auto",border:"1px solid transparent",...i},children:u})]})},S=e=>e.shiftKey?"Shift":e.metaKey?"Meta":e.ctrlKey?"Control":e.altKey?"Alt":void 0,k=(e,t,n)=>{if(!t)return!1;const r=e.key,o=S(e);if(Array.isArray(t))return!!o&&t.includes(o);const{key:a,modifier:s}=t;return("stringLineBreak"!==n||"Enter"!==r||"Shift"!==o||"Enter"!==a||!s?.includes("Shift"))&&(r===a&&(s===o||Array.isArray(s)&&s.includes(o)))},O={key:"Enter"},R={confirm:O,cancel:{key:"Escape"},objectConfirm:{...O,modifier:["Meta","Shift","Control"]},objectLineBreak:O,stringConfirm:O,stringLineBreak:{...O,modifier:["Shift"]},numberConfirm:O,numberUp:{key:"ArrowUp"},numberDown:{key:"ArrowDown"},tabForward:{key:"Tab"},tabBack:{key:"Tab",modifier:"Shift"},booleanConfirm:O,booleanToggle:{key:" "},clipboardModifier:["Meta","Control"],collapseModifier:["Alt"]},T=["stringConfirm","numberConfirm","booleanConfirm"],N=(e,t)=>{const n=e.current,r=n.selectionStart??1/0,o=n.selectionEnd??1/0,a=n.value.slice(0,r)+t+n.value.slice(o);return n.value=a,n.setSelectionRange(r+1,r+1),a},P=(e,t,n="next",r,a)=>{const s=t.slice(0,t.length-1),i=t.slice(-1)[0];if(void 0===i)return null;const l=x(e,s),c=I(l);Array.isArray(l)||r(c,({key:e,value:t})=>[e,t]);const u=c.findIndex(e=>e.key===i),d=c[u+("next"===n?1:-1)];if(!d)return 0===s.length?null:P(e,s,n,r,a);let p;if(o(d.value)){if(0===Object.keys(d.value).length)return P(e,[...s,d.key],n,r,a);p=A(e,[...s,d.key],n,r)}else p=[...s,d.key];return p?a(E(e,p,"",r))?p:P(e,p,n,r,a):null},A=(e,t,n="next",r)=>{const a=x(e,t);if(!o(a))return t;const s=Array.isArray(a)?a.map((e,t)=>t):Object.keys(a);r(s,e=>[e,a]);const i="next"===n?s[0]:s[s.length-1];return A(e,[...t,i],n,r)},I=e=>Array.isArray(e)?e.map((e,t)=>({value:e,key:t})):Object.entries(e).map(([e,t])=>({key:e,value:t})),K={fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2},L={displayName:"Default",icons:{add:{content:e.jsxs(e.Fragment,{children:[e.jsx("path",{d:"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4z"}),e.jsx("path",{d:"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z"})]})},edit:{content:e.jsxs(e.Fragment,{children:[e.jsx("path",{d:"M7 17.013l4.413-.015 9.632-9.54c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-1.586-1.586c-.756-.756-2.075-.752-2.825-.003L7 12.583v4.43zM18.045 4.458l1.589 1.583-1.597 1.582-1.586-1.585 1.594-1.58zM9 13.417l6.03-5.973 1.586 1.586-6.029 5.971L9 15.006v-1.589z"}),e.jsx("path",{d:"M5 21h14c1.103 0 2-.897 2-2v-8.668l-2 2V19H8.158c-.026 0-.053.01-.079.01-.033 0-.066-.009-.1-.01H5V5h6.847l2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2z"})]}),svgProps:{transform:"translate(0, 0.5)"}},delete:{content:e.jsx("path",{d:"M6 19a2 2 0 002 2h8a2 2 0 002-2V7H6v12m2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12M15.5 4l-1-1h-5l-1 1H5v2h14V4h-3.5z"}),scale:1.04},copy:{content:e.jsxs(e.Fragment,{children:[e.jsx("path",{d:"M9 2 H15 A1 1 0 0 1 16 3 V5 A1 1 0 0 1 15 6 H9 A1 1 0 0 1 8 5 V3 A1 1 0 0 1 9 2 z"}),e.jsx("path",{d:"M8 4H6a2 2 0 00-2 2v14a2 2 0 002 2h12a2 2 0 002-2v-2M16 4h2a2 2 0 012 2v4M21 14H11"}),e.jsx("path",{d:"M15 10l-4 4 4 4"})]}),svgProps:K,scale:.86},ok:{content:e.jsxs(e.Fragment,{children:[e.jsx("path",{d:"M22 11.08V12a10 10 0 11-5.93-9.14"}),e.jsx("path",{d:"M22 4L12 14.01l-3-3"})]}),svgProps:K,scale:.9},cancel:{content:e.jsx("path",{d:"M12 4c-4.411 0-8 3.589-8 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8zm-5 8c0-.832.224-1.604.584-2.295l6.711 6.711A4.943 4.943 0 0112 17c-2.757 0-5-2.243-5-5zm9.416 2.295L9.705 7.584A4.943 4.943 0 0112 7c2.757 0 5 2.243 5 5 0 .832-.224 1.604-.584 2.295z"}),svgProps:{baseProfile:"tiny"},scale:1.3},collection:{content:e.jsx("path",{d:"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"}),viewBox:"0 0 512 512",scale:.7}},styles:{container:{backgroundColor:"#f6f6f6",fontFamily:"monospace"},property:"#292929",bracket:{color:"#002b36",fontWeight:"bold"},itemCount:{color:"#0000004d",fontStyle:"italic"},string:"#cb4b16",number:"#268bd2",boolean:"green",null:{color:"#dc322f",fontVariant:"small-caps",fontWeight:"bold"},input:["#292929"],inputHighlight:"#b3d8ff",error:{fontSize:"0.8em",color:"red",fontWeight:"bold"},iconCollection:"#002b36",iconEdit:"#2aa198",iconDelete:"#cb4b16",iconAdd:"#2aa198",iconCopy:"#268bd2",iconOk:"green",iconCancel:"#cb4b16"}},M={container:"backgroundColor",collection:"backgroundColor",collectionElement:"backgroundColor",headerRow:"backgroundColor",valueRow:"backgroundColor",dropZone:"borderColor",inputHighlight:"backgroundColor"},_=e=>[L,...r(e)].map(e=>"styles"in e?e:{styles:e}),V=e=>{const t={};for(const{icons:n}of _(e))n&&Object.assign(t,n);return t},z={getStyles:()=>({}),icons:V(L),cssVars:{}},F=t.createContext(z),B=({theme:n=L,children:r})=>{const o=t.useMemo(()=>(e=>{var t;const n=_(e),r={},o={};for(const{fragments:e,styles:t}of n)for(const n in t){const a=n;for(const n of[].concat(t[a]))if("function"==typeof n)(o[a]??(o[a]=[])).push(n);else{const t="string"==typeof n?e?.[n]??n:n;r[a]={...r[a],..."string"==typeof t?{[M[a]??"color"]:t}:t}}}for(const e in o)r[t=e]??(r[t]={});const a={};for(const e in r){const t=e,n=r[t],s=o[t];a[t]=s?e=>s.reduce((t,n)=>({...t,...n(e)??{}}),n):n}return a})(n),[n]),a=t.useMemo(()=>V(n),[n]),s=t.useMemo(()=>(e=>{const{inputHighlight:t,iconCopy:n}=e,r={};return"function"!=typeof t&&t?.backgroundColor&&(r["--jer-highlight-color"]=t.backgroundColor),"function"!=typeof n&&n?.color&&(r["--jer-icon-copy-color"]=n.color),r})(o),[o]),i=t.useCallback((e,t)=>((e,t,n)=>{const r=e[t];return"function"==typeof r?r(n):r??{}})(o,e,t),[o]),l=t.useMemo(()=>({getStyles:i,icons:a,cssVars:s}),[i,a,s]);return e.jsx(F.Provider,{value:l,children:r})},Y=()=>t.useContext(F),U={edit:{start:"startEdit",submit:"submitEdit",cancel:"cancelEdit",commit:"commitEdit"},add:{start:"startAdd",submit:"submitAdd",cancel:"cancelAdd",commit:"commitAdd"},rename:{start:"startRename",submit:"submitRename",cancel:"cancelRename",commit:"commitRename"},delete:{commit:"delete"},move:{commit:"move"}},H=(e,t)=>U[e][t]??null,W=(e,t)=>null!==e&&null!==t&&e.op===t.op&&p(e.path,t.path),$={active:null,settling:{}},J=(e,t,n)=>{let r=$;const o=new Set;let a=null,s=null,i=!1,l=0;const c=e=>{r=e,o.forEach(e=>e())},u=(t,n,r)=>{e.current?.({...t,...r,event:n})},h=(n,o,i)=>{if(!e.current)return;let l;try{l=t.current?.(n)}catch{return c({...r,active:null}),a=null,void(s=null)}l&&u(l,o,i)},f=(e,t)=>{var n;a=t?.cancelOp??null,s=t?.commitOp??null,n=e,W(r.active,n)&&r.active?.phase===n?.phase||c({...r,active:n});const o=H(e.op,"start");o&&h(e.path,o)},y=(e,t,o,i,l,m,h,f,y)=>{const g=d(e);if(!h()){if("cancel"===i.status||"error"===i.status){"held"===r.active?.phase&&p(r.active.path,e)&&(c({...r,active:null}),a=null,s=null);const n=H(t,"cancel");return n&&u(f,n),"error"===i.status&&u(f,"updateError",{operation:t,error:i.error}),i}l()}if(r.settling[g]===o){switch((e=>{if(!(e in r.settling))return;const t={...r.settling};delete t[e],c({...r,settling:t})})(g),i.status){case"cancel":m();break;case"error":m(),u(f,"updateError",{operation:t,error:i.error});break;case"override":n.current?.applyValue(i.path,i.value),u(f,"updateSuccess",{operation:t,...y});break;case"commit":u(f,"updateSuccess",{operation:t,...y})}return i}};return{subscribe:e=>(o.add(e),()=>o.delete(e)),getSnapshot:()=>r,getServerSnapshot:()=>r,open:(e,t)=>{if("held"===r.active?.phase)return;const n={path:e,op:t?.op??"edit",phase:"editing",force:t?.force},o=r.active,i=null!==o&&!W(o,n);if(i&&s)return void s(()=>f(n,t));const l=a;if(a=null,s=null,l&&l(),i&&W(r.active,o)){const e=H(o.op,"cancel");e&&h(o.path,e)}f(n,t)},cancel:()=>{if(i)return;if("held"===r.active?.phase)return;const e=r.active;i=!0;try{const t=a;if(a=null,s=null,t&&t(),null!==e){null!==r.active&&c({...r,active:null});const t=H(e.op,"cancel");t&&h(e.path,t)}}finally{i=!1}},submit:e=>{const{op:t,path:o,instant:i,onCommit:p}=e,m=n.current;let f;try{f=m?.buildCommit(e)??null}catch{return W(r.active,{path:o,op:t})&&c({...r,active:null}),a=null,s=null,p?.(),Promise.resolve(void 0)}const g=f?.extra,v=d(o),b=++l;if(!i){const e=H(t,"submit");e&&h(o,e)}if(!f||f.isNoOp){W(r.active,{path:o,op:t})&&c({...r,active:null}),a=null,s=null;const e=H(t,"commit");return e&&(f?u(f.nodeData,e,g):h(o,e,g)),p?.(),Promise.resolve(void 0)}const{input:j,nodeData:x,apply:w,revert:E}=f,C=!!m?.runUpdate;let D=!1,S=!1;const k=()=>{if(D)return;D=!0,w(),a=null,s=null,W(r.active,{path:o,op:t})&&c({...r,active:null}),C&&((e,t)=>{c({...r,settling:{...r.settling,[e]:t}})})(v,b);const e=H(t,"commit");e&&u(x,e,g),p?.()},O={hold:()=>(S=!0,c({...r,active:{path:o,op:t,phase:"held",force:r.active?.force}}),()=>k())};if(!C)return k(),Promise.resolve(void 0);const R=m.runUpdate(j,O);let T;return S||(i?T=setTimeout(k,100):k()),R.then(e=>(clearTimeout(T),y(o,t,b,e,k,E,()=>D,x,g)))},areChildrenBeingEdited:e=>null!==r.active&&m(r.active.path,e)}},X=t.createContext(null),Q=({children:n,onEditEvent:r,buildNodeDataFromPathRef:o,commitRef:a})=>{const s=t.useRef(r);s.current=r;const i=t.useRef(null);return null===i.current&&(i.current=J(s,o,a)),e.jsx(X.Provider,{value:i.current,children:n})},Z=()=>{const e=t.useContext(X);if(!e)throw new Error("Missing Editing Context Provider");return e},G=e=>{const n=Z();return t.useSyncExternalStore(n.subscribe,()=>e(n.getSnapshot()),()=>e(n.getServerSnapshot()))},q=t.createContext(null),ee=({children:n,onCollapse:o,buildNodeDataFromPathRef:a})=>{const[s,i]=t.useState({commands:null,version:0}),l=t.useRef(o);l.current=o;const c=t.useCallback(e=>{if(null===e)return void i(e=>null===e.commands?e:{commands:null,version:e.version});const t=r(e),n=t.map(e=>({...e,path:[...e.path]}));i(e=>({commands:n,version:e.version+1}));const o=l.current;o&&t.forEach(e=>{const t=a.current?.(e.path);t&&o({...t,collapsed:e.collapsed,includeChildren:e.includeChildren})})},[a]),u=t.useMemo(()=>({commands:s.commands,version:s.version,setCollapseState:c}),[s.commands,s.version,c]);return e.jsx(q.Provider,{value:u,children:n})},te=()=>{const e=t.useContext(q);if(!e)throw new Error("Missing Collapse Context Provider");return e},ne=(e,t)=>{if(!t.includeChildren)return t.path.length===e.length&&t.path.every((t,n)=>e[n]===t);for(const[n,r]of t.path.entries())if(r!==e[n])return!1;return!0},re=t.createContext(null),oe=({children:n})=>{const[r,o]=t.useState({path:null}),a=t.useRef(!1),s=t.useMemo(()=>({dragSource:r,setDragSource:o,armed:a}),[r]);return e.jsx(re.Provider,{value:s,children:n})},ae=({children:t,onEditEvent:n,onCollapse:r,buildNodeDataFromPathRef:o,commitRef:a})=>e.jsx(Q,{onEditEvent:n,buildNodeDataFromPathRef:o,commitRef:a,children:e.jsx(ee,{onCollapse:r,buildNodeDataFromPathRef:o,children:e.jsx(oe,{children:t})})}),se=t.createContext(void 0),ie=({value:t,children:n})=>e.jsx(se.Provider,{value:t,children:n}),le=()=>{const e=t.useContext(se);if(void 0===e)throw new Error("Missing FilterStateProvider");return e},ce=e=>{const t=le();return null===t||t.visiblePaths.has(d(e))},ue=e=>{const t=le();return null===t?null:t.visibleChildCounts.get(d(e))??null},de="**INVALID_FUNCTION**",pe=({nodeData:n,showStringQuotes:r=!0,stringTruncateLength:o=200,pathString:a,canEdit:s,setIsEditing:i,styles:l,translate:c,value:u,TextWrapper:d=({children:e})=>e})=>{const p=u??n.value,[m,h]=t.useState(!1),f=r?'"':"",y=p.length>o,g=()=>{s?i(!0):h(!m)};return e.jsxs("div",{id:`${a}_display`,onDoubleClick:g,onClick:e=>{(e.getModifierState("Control")||e.getModifierState("Meta"))&&g()},className:"jer-value-string",style:l,children:[f,y?m?e.jsxs(e.Fragment,{children:[e.jsx(d,{children:e.jsxs("span",{children:[p,f]})}),e.jsxs("span",{className:"jer-string-expansion jer-show-less",onClick:()=>h(!1),children:[" ",c("SHOW_LESS",n)]})]}):e.jsxs(e.Fragment,{children:[e.jsxs(d,{children:[e.jsx("span",{children:p.slice(0,o-2).trimEnd()})," "]}),e.jsx("span",{className:"jer-string-expansion jer-ellipsis",onClick:()=>h(!0),children:"..."}),f]}):e.jsx(d,{children:`${p}${f}`})]})},me=({styles:n,pathString:r,value:o,setValue:a,handleEdit:s,handleKeyboard:i,keyboardCommon:l})=>{const c=t.useRef(null);return e.jsx(D,{className:"jer-input-text",textAreaRef:c,name:r,value:o,setValue:a,onKeyDown:e=>{i(e,{stringConfirm:s,stringLineBreak:()=>{const e=N(c,"\n");a(e)},...l})},styles:n})},he=({isEditing:t,path:n,enumType:r,...o})=>{const{getStyles:a}=Y(),s=d(n),{value:i,setValue:l,nodeData:c,handleEdit:u,handleKeyboard:p,keyboardCommon:m,Select:h}=o;return t&&r?e.jsx(h,{name:`${s}-value-select`,value:i,onChange:l,options:r.values,autoFocus:!0,onKeyDown:e=>p(e,{stringConfirm:u,...m})}):t?e.jsx(me,{styles:a("input",c),pathString:s,...o,setValue:o.setValue}):e.jsx(pe,{pathString:s,styles:a("string",c),...o})},fe=({value:t,setValue:n,isEditing:r,path:o,setIsEditing:a,handleEdit:s,nodeData:i,handleKeyboard:l,keyboardCommon:c})=>{const{getStyles:u}=Y();return r?e.jsx("input",{className:"jer-input-number",type:"text",name:d(o),value:t,onChange:e=>n(e.target.value.replace(/[^0-9.-]/g,"")),autoFocus:!0,onFocus:e=>setTimeout(()=>e.target.select(),10),onKeyDown:e=>l(e,{numberConfirm:s,numberUp:()=>n(Number(t)+1),numberDown:()=>n(Number(t)-1),...c}),style:{width:String(t).length/1.5+2+"em",...u("input",i)}}):e.jsx("span",{onDoubleClick:()=>a(!0),className:"jer-value-number",style:u("number",i),children:t})},ye=({value:t,setValue:n,isEditing:r,path:o,setIsEditing:a,handleEdit:s,nodeData:i,handleKeyboard:l,keyboardCommon:c})=>{const{getStyles:u}=Y();return"boolean"!=typeof t?null:r?e.jsx("input",{className:"jer-input-boolean",type:"checkbox",name:d(o),checked:t,onChange:()=>n(!t),onKeyDown:e=>{" "===e.key&&e.preventDefault(),l(e,{booleanConfirm:s,booleanToggle:()=>n(!t),...c})},autoFocus:!0}):e.jsx("span",{onDoubleClick:()=>a(!0),className:"jer-value-boolean",style:u("boolean",i),children:String(t)})},ge=(e,n)=>{const r=t.useRef(void 0),o=t.useRef(n);t.useEffect(()=>{o.current=n},[n]);const a=e=>{o.current(e)};t.useEffect(()=>{if(window.clearTimeout(r.current),e)return r.current=window.setTimeout(()=>{window.addEventListener("keydown",a)},100),()=>{window.clearTimeout(r.current),window.removeEventListener("keydown",a)}},[e])},ve=({value:t,isEditing:n,setIsEditing:r,handleEdit:o,nodeData:a,handleKeyboard:s,keyboardCommon:i})=>{const{getStyles:l}=Y();return ge(n,e=>s(e,{confirm:o,...i})),e.jsx("div",{onDoubleClick:()=>r(!0),className:"jer-value-null",style:l("null",a),children:String(t)})},be=({value:t})=>{let n="Error!";switch(typeof t){case"string":t===de&&(n="Function");break;case"undefined":n="Undefined";break;case"symbol":n="Symbol"}return e.jsx("span",{className:"jer-value-invalid",children:n})},je=({scale:t=1,viewBox:n="0 0 24 24",fill:r="currentColor",children:o,...a})=>{const s=1.4*t+"em";return e.jsx("svg",{viewBox:n,fill:r,width:s,height:s,...a,children:o})},xe=({name:t,nodeData:n})=>{const{getStyles:r,icons:o}=Y(),a=o[t],s=`icon${t[0].toUpperCase()}${t.slice(1)}`;return e.jsx(je,{viewBox:a.viewBox,...a.svgProps,scale:a.scale,className:"collection"===t?void 0:"jer-icon",style:r(s,n),children:a.content})},we=({startEdit:n,handleDelete:r,handleAdd:o,showClipboardButton:a,onCopy:s,type:i,customButtons:l,nodeData:c,translate:d,keyboardControls:m,handleKeyboard:h,editConfirmRef:f,getNewKeyOptions:y,jsonStringify:g,showIconTooltips:v,Select:b})=>{const{getStyles:j}=Y(),{open:w,cancel:E}=Z(),D=d("KEY_NEW",c),[k,O]=t.useState(D),[R,T]=t.useState(!1),{path:N,value:P}=c,A=G(e=>{const t=e.active;return null!==t&&"add"===t.op&&p(t.path,N)}),I=Array.isArray(R);C(()=>{if(!A)return T(!1),void O(D);const e=Object.keys(x(c.fullData,N)),t=y?y(c)?.filter(t=>!e.includes(t)):null;t&&O(""),T(t??!0)},[A]);const K=()=>{o&&(I&&!k||o("array"===i?"":k))};return e.jsxs("div",{className:"jer-edit-buttons",style:{opacity:A?1:void 0},onClick:e=>e.stopPropagation(),children:[a&&e.jsx("button",{type:"button",tabIndex:-1,onClick:e=>{e.stopPropagation();let t,n,r="value",o="",i=null;if(a){const a=S(e);if(a&&m.clipboardModifier.includes(a)?(t=u(N),o=t,r="path"):(t=P,o="object"==typeof t?g(P):String(t)),!navigator.clipboard)return void s?.({...c,success:!1,stringValue:o,type:r,error:{code:"CLIPBOARD_ERROR",message:"Can't access clipboard API"}});navigator.clipboard?.writeText(o).then(()=>n=!0).catch(e=>{n=!1,i=e.message}).finally(()=>{s?.({...c,success:n,stringValue:o,type:r,error:n?void 0:{code:"CLIPBOARD_ERROR",message:i??"Copy failed"}})})}},className:"jer-copy-pulse","aria-label":d("TOOLTIP_COPY",c),title:v?d("TOOLTIP_COPY",c):"",children:e.jsx(xe,{name:"copy",nodeData:c})}),n&&e.jsx("button",{type:"button",tabIndex:-1,onClick:n,"aria-label":d("TOOLTIP_EDIT",c),title:v?d("TOOLTIP_EDIT",c):"",children:e.jsx(xe,{name:"edit",nodeData:c})}),r&&e.jsx("button",{type:"button",tabIndex:-1,onClick:r,"aria-label":d("TOOLTIP_DELETE",c),title:v?d("TOOLTIP_DELETE",c):"",children:e.jsx(xe,{name:"delete",nodeData:c})}),o&&e.jsx("button",{type:"button",tabIndex:-1,onClick:()=>{"object"===i?w(N,{op:"add"}):o("")},"aria-label":d("TOOLTIP_ADD",c),title:v?d("TOOLTIP_ADD",c):"",children:e.jsx(xe,{name:"add",nodeData:c})}),l?.map(({Element:t,onClick:n},r)=>e.jsx("div",{onClick:e=>n&&n(c,e),children:e.jsx(t,{nodeData:c})},r)),A&&o&&"object"===i&&e.jsxs(e.Fragment,{children:[I?e.jsx(b,{name:"new-key-select",onChange:o,defaultValue:"",autoFocus:!0,onKeyDown:e=>h(e,{cancel:()=>E()}),placeholder:R.length>0?d("KEY_SELECT",c):d("NO_KEY_OPTIONS",c),options:R}):e.jsx("input",{className:"jer-input-new-key",type:"text",name:"new-object-key",value:k,onChange:e=>O(e.target.value),autoFocus:!0,onFocus:e=>e.target.select(),onKeyDown:e=>{h(e,{stringConfirm:()=>K(),cancel:()=>E()})},style:j("input",c)}),e.jsx(Ee,{onOk:()=>K(),onCancel:()=>E(),nodeData:c,translate:d,showIconTooltips:v,editConfirmRef:f,hideOk:I})]})]})},Ee=({onOk:t,onCancel:n,nodeData:r,translate:o,showIconTooltips:a,editConfirmRef:s,hideOk:i=!1})=>e.jsxs("div",{className:"jer-confirm-buttons",children:[!i&&e.jsx("button",{type:"button",tabIndex:-1,onClick:t,"aria-label":o("TOOLTIP_OK",r),title:a?o("TOOLTIP_OK",r):"",ref:s,children:e.jsx(xe,{name:"ok",nodeData:r})}),e.jsx("button",{type:"button",tabIndex:-1,onClick:n,"aria-label":o("TOOLTIP_CANCEL",r),title:a?o("TOOLTIP_CANCEL",r):"",children:e.jsx(xe,{name:"cancel",nodeData:r})})]}),Ce=["string","number","boolean","null"],De=["object","array"],Se=[...Ce,...De],ke=e=>{const{component:t,wrapperComponent:n,keyComponent:r,showKey:o=!0,showEditTools:a=!0,showOnEdit:s=!1,showOnView:i=!0,showCollectionWrapper:l=!0,...c}=e;return{CustomComponent:t,CustomWrapperComponent:n,CustomKeyComponent:r,showKey:o,showEditTools:a,showOnEdit:s,showOnView:i,showCollectionWrapper:l,...c}},Oe=(e=[],t)=>{const n=e.find(({condition:e})=>e(t));return n?ke(n):{}},Re=({props:e,collapsed:n})=>{const{nodeData:r,parentData:o,onError:a,getLatestData:s,showErrorMessages:i,allowEditFilter:l,allowDeleteFilter:c,allowAddFilter:u,allowDragFilter:m,translate:h,errorDisplayTime:f,sort:y,arrayIndexStart:g,handleKeyboard:v,customNodeData:b}=e,{submit:j}=Z(),[x,w]=t.useState(null),E={...r,collapsed:n,visibleSize:ue(r.path)},{path:C,key:D,size:S}=E,k=d(C),O=G(e=>{const t=e.active;return null!==t&&"edit"===t.op&&p(t.path,C)}),R=G(e=>{const t=e.active;return null!==t&&"rename"===t.op&&p(t.path,C)}),T=G(e=>k in e.settling),N=l(E),A=c(E),I=u(E),K=m(E)&&A,L=e=>{i&&(w(e),setTimeout(()=>w(null),f)),console.warn("Error",e)},M=t.useRef(E);M.current=E;const _=t.useCallback((e,t)=>{L(e.message),a&&a({...M.current,fullData:s(),error:e,errorValue:t})},[a,i,s,f]),V=le(),z=t.useCallback(e=>(null===V||V.visiblePaths.has(d(e.path)))&&l(e),[V,l]),F=e=>P(s(),C,e,y,z),B=(e,t)=>{o&&(D!==e&&Object.keys(o).includes(e)?_({code:"KEY_EXISTS",message:h("ERROR_KEY_EXISTS",E)},e):j({op:"rename",path:C,newKey:e,onCommit:t}).then(t=>{"error"===t?.status&&_(t.error,e)}))},Y="number"==typeof C.slice(-1)[0],U=null!==o&&N&&I&&A&&!Y,H={isEditing:O,isEditingKey:R,isPending:T,isArray:Y,canEditKey:U},W=""===D&&C.length>0?h("EMPTY_STRING",E):null;return{pathString:k,nodeData:E,path:C,name:D,size:S,canEdit:N,canDelete:A,canAdd:I,canDrag:K,error:x,showError:L,onError:_,setError:w,handleEditKey:B,derivedValues:H,emptyStringKey:W,getNextOrPreviousAtPath:F,buildKeyDisplayProps:({handleCancel:e,getStyles:t,keyValueArray:n,handleClick:r})=>({canEditKey:U,isEditingKey:R,pathString:k,path:C,name:D,arrayIndexStart:g,handleKeyboard:v,handleEditKey:B,handleCancel:e,styles:t("property",E),getNextOrPrevious:F,emptyStringKey:W,nodeData:E,customNodeData:b,getStyles:t,...void 0!==n?{keyValueArray:n}:{},...void 0!==r?{handleClick:r}:{}})}},Te=({canDrag:n,canDragOnto:r,path:o,nodeData:a,onError:s,translate:i})=>{const{getStyles:l}=Y(),{dragSource:c,setDragSource:u,armed:d}=(()=>{const e=t.useContext(re);if(!e)throw new Error("Missing DragSource Context Provider");return e})(),h=Z(),[f,y]=t.useState(!1),g=t.useMemo(()=>n?{onMouseDown:e=>{0===e.button&&null===h.getSnapshot().active&&(d.current=!0)},onMouseUp:()=>{d.current=!1},onDragStart:e=>{if(!d.current||null!==h.getSnapshot().active)return e.preventDefault(),void e.stopPropagation();d.current=!1,e.stopPropagation(),u({path:o})},onDragEnd:e=>{d.current=!1,e.stopPropagation(),u({path:null})}}:{},[n,o]),v=t.useMemo(()=>e=>r?{onDragOver:e=>{e.stopPropagation(),e.preventDefault()},onDrop:t=>{t.stopPropagation(),j(e),u({path:null}),y(!1)},onDragEnter:t=>{t.stopPropagation(),null!==c.path&&m(o,c.path)||y(e)},onDragExit:e=>{e.stopPropagation(),y(!1)}}:{},[c,r,o]),b=t.useMemo(()=>r&&null!==c.path?e.jsx("div",{className:"jer-drop-target-bottom",style:{height:"50%",position:"absolute",width:"100%",top:"50%",zIndex:o.length},...v("below")}):null,[c,r,o.length]),j=e=>{if(null===c.path)return;if(m(o,c.path))return;const t=c.path.slice(-1)[0],n=c.path.slice(0,-1),r=o.slice(0,-1),{parentData:l}=a;"string"==typeof t&&l&&!Array.isArray(l)&&Object.keys(l).includes(t)&&t in l&&!p(n,r)?s({code:"KEY_EXISTS",message:i("ERROR_KEY_EXISTS",a)},t):h.submit({op:"move",path:c.path,to:{path:o,position:e},instant:!0})};return{dragSourceProps:g,getDropTargetProps:v,BottomDropTarget:b,DropTargetPadding:({position:t,nodeData:n})=>f===t?e.jsx("div",{className:"jer-drag-n-drop-padding",style:l("dropZone",n)}):null,handleDrop:j}},Ne=(e,t,n,r)=>{if(!t.current)return 0;const o=parseInt(getComputedStyle(n.current).getPropertyValue("line-height"))||16,a=(t.current?.offsetWidth??0)/(.5*o),s=r(e).replace(/\\n/g,"\n").split("\n").map(e=>Math.ceil(e.length/a)).reduce((e,t)=>e+t,0)*o;return Math.min(s+30,window.innerHeight-50)},Pe=({isEditingKey:n,canEditKey:r,pathString:o,path:a,name:s,arrayIndexStart:i,handleKeyboard:l,handleEditKey:c,handleCancel:u,handleClick:d,keyValueArray:p,styles:m,getNextOrPrevious:h,emptyStringKey:f,nodeData:y,customNodeData:g,getStyles:v})=>{const{open:b,cancel:j}=Z(),x=t.useRef(null),w=e=>c(x.current?.value??String(s),e),E="number"==typeof s?String(s+i):s;if(!n){const t={...m,minWidth:`${Math.min(E.length+1,5)}ch`,flexShrink:E.length>10?1:0};if(g?.CustomKeyComponent&&y&&v){const{CustomKeyComponent:n,componentProps:o}=g;return e.jsx(n,{nodeData:y,name:f??E,path:a,canEditKey:r,handleEditKey:e=>{r&&c(e)},startEditingKey:()=>{r&&b(a,{op:"rename",commitOp:w})},handleClick:d,styles:t,componentProps:o,getStyles:v})}return e.jsxs("span",{className:"jer-key-text",style:t,onDoubleClick:()=>r&&b(a,{op:"rename",commitOp:w}),onClick:d,children:[f?e.jsx("span",{className:"jer-empty-string",children:f}):E,""!==E||f?e.jsx("span",{className:"jer-key-colon",children:":"}):null]})}return e.jsx("input",{ref:x,className:"jer-input-text jer-key-edit",type:"text",name:o,defaultValue:E,autoFocus:!0,onFocus:e=>e.target.select(),onKeyDown:e=>l(e,{stringConfirm:()=>c(e.target.value),cancel:u,tabForward:()=>{const t=e.target.value;c(t,()=>{if(p){const e=p?.[0][0],t=e?[...a,e]:h("next");t?b(t):j()}else b(a)})},tabBack:()=>{const t=e.target.value;c(t,()=>{const e=h("prev");e?b(e):j()})}}),style:{width:E.length/1.5+.5+"em"}})},Ae=new Set(["nodeData","customNodeData"]),Ie=(e,t)=>{if(n=e.nodeData,r=t.nodeData,n.key!==r.key||n.index!==r.index||n.level!==r.level||n.size!==r.size||!p(n.path,r.path))return!1;var n,r;const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!1;for(const n of o)if(!Ae.has(n)&&!Object.is(e[n],t[n]))return!1;return!0},Ke=t.memo(r=>{const{data:o,parentData:a,onChange:i,showClipboardButton:l,onCopy:c,canDragOnto:u,allowTypeSelection:d,showLabel:m,stringTruncateLength:h,showStringQuotes:f,indent:y,translate:g,customNodeDefinitions:v,customNodeData:b,Select:j,handleKeyboard:x,keyboardControls:w,editConfirmRef:E,jsonStringify:C,showIconTooltips:D,getLatestData:S}=r,{getStyles:k}=Y(),{open:O,cancel:R,submit:T,getSnapshot:N}=Z(),{setCollapseState:P}=te(),[A,I]=t.useState("function"==typeof o?de:o),{nodeData:K,path:L,name:M,canEdit:_,canDelete:V,canDrag:z,error:F,onError:B,setError:U,derivedValues:H,getNextOrPreviousAtPath:W,buildKeyDisplayProps:$}=Re({props:r}),{dragSourceProps:J,getDropTargetProps:X,BottomDropTarget:Q,DropTargetPadding:G}=Te({canDrag:z,canDragOnto:u,path:L,nodeData:K,onError:B,translate:g}),[q,ee]=t.useState(Me(o,b)),ne=t.useRef(A);ne.current=A;const re=t.useRef(K);re.current=K;const oe=t.useCallback(e=>{if(!i)return void I(e);const t=i({...re.current,value:ne.current,fullData:S(),newValue:e});I(t)},[i,S]),ae=()=>{I("function"==typeof o?de:o),ee(Me(o,b)),le(s(o,se))};t.useEffect(()=>{H.isEditing||ae()},[o]);const se=t.useMemo(()=>{const e=[...Se,...v.filter(({showInTypeSelector:e=!1,name:t})=>e&&!!t).map(({name:e})=>e)];if("boolean"==typeof d)return d?e:[];if(Array.isArray(d))return d;const t=d(K);return"boolean"==typeof t?t?e:[]:t},[K,d,v]),[ie,le]=t.useState(s(A,se)),{isEditing:ue,isPending:pe}=H,me=ce(L),he=t.useRef(n);if(!me)return null;const fe=ue&&q!==Me(o,b),ye=fe?v.find(e=>e.name===q&&Le(e)):void 0,ge=ye?ke(ye):b,{CustomComponent:ve,componentProps:be,showKey:je=!0,showEditTools:xe=!0,showOnEdit:Ce,showOnView:De,passOriginalNode:Oe}=ge,Ne=ve&&(void 0!==ye||!fe&&(ue&&Ce||!ue&&De)),Ae=e=>{P(null);const t=fe&&!ye?void 0:ge,n=t?.toStandardType?t.toStandardType(A):A,r=v.find(t=>t.name===e);if(r){if(Le(r)){let t=r.defaultValue;if(r.fromStandardType)try{t=r.fromStandardType(n,K,r.componentProps)}catch{}return I(t),ee(e),void le(null)}return T({op:"edit",path:L,value:r.defaultValue}).then(Ie(r.defaultValue)),void P({path:L,collapsed:!1,includeChildren:!1})}const o=se.find(t=>t instanceof Object&&t.enum===e);if(o)return"string"==typeof A&&o.values.includes(A)||I(o.values[0]),le(o),void ee(e);const a=ze(n,e,g("DEFAULT_NEW_KEY",K));if("object"===e||"array"===e||"null"===e)return T({op:"edit",path:L,value:a}).then(Ie(a)),void("null"!==e&&P({path:L,collapsed:!1,includeChildren:!1}));I(a),ee(e),le(null)},Ie=e=>t=>{if("error"===t?.status&&B(t.error,e),"error"===t?.status||"cancel"===t?.status){const e=N().active;"editing"===e?.phase&&p(e.path,L)||ae()}},Ke=(e,t)=>{const n=void 0!==e&&!(e=>e&&"object"==typeof e&&"type"in e&&"target"in e&&"preventDefault"in e&&"function"==typeof e.preventDefault)(e);let r;if(n)r=e;else if(Ne&&ge.fromStandardType)try{r=ge.fromStandardType(A,K,ge.componentProps)}catch(e){return void B({code:"UPDATE_ERROR",message:e instanceof Error?e.message:String(e)},A)}else r="number"===q?Ve(A):A;U(null),ye&&P({path:L,collapsed:!1,includeChildren:!1}),T({op:"edit",path:L,value:r,onCommit:t}).then(Ie(r))};he.current=Ke;const Fe=()=>{U(null),ae(),R()},{isEditingKey:Be}=H,Ye=!!F,Ue=ue&&se.length>1,He=("invalid"!==q||ve)&&!F&&xe,We=m&&je,$e=()=>O(L,{cancelOp:ae,commitOp:e=>he.current(void 0,e)}),Je=_?$e:n,Xe=e=>()=>{const t=W(e);t&&Ke(void 0,()=>O(t))},Qe={value:A,parentData:a,setValue:oe,isEditing:ue,canEdit:_,setIsEditing:Je,handleEdit:Ke,handleCancel:Fe,path:L,stringTruncateLength:h,showStringQuotes:f,nodeData:K,enumType:ie,translate:g,handleKeyboard:x,keyboardCommon:{cancel:Fe,tabForward:Xe("next"),tabBack:Xe("prev")},Select:j},Ze={...$({handleCancel:Fe,getStyles:k}),customNodeData:ge},Ge=Ne?e.jsx(ve,{...r,value:A,componentProps:be,setValue:oe,handleEdit:Ke,handleCancel:Fe,onKeyDown:e=>x(e,{stringConfirm:Ke,cancel:Fe}),isEditing:ue,isPending:pe,setIsEditing:Je,getStyles:k,originalNode:Oe?_e(o,q,Qe):void 0,originalNodeKey:Oe?e.jsx(Pe,{...Ze,customNodeData:void 0}):void 0,canEdit:_,keyboardCommon:Qe.keyboardCommon}):_e(o,q,Qe);return e.jsxs("div",{className:"jer-component jer-value-component",style:{marginLeft:null!==a?y/2+"em":0,position:"relative"},draggable:z&&!ue&&!Be,...J,...X("above"),children:[Q,e.jsx(G,{position:"above",nodeData:K}),e.jsxs("div",{className:"jer-value-main-row",style:{...k("valueRow",K),flexWrap:M.length>10?"wrap":"nowrap"},children:[We&&e.jsx(Pe,{...Ze}),e.jsxs("div",{className:"jer-value-and-buttons",children:[e.jsx("div",{className:"jer-input-component",children:Ge}),ue?e.jsx(Ee,{onOk:Ke,onCancel:Fe,nodeData:K,translate:g,showIconTooltips:D,editConfirmRef:E}):He&&e.jsx(we,{startEdit:_?$e:void 0,handleDelete:V?()=>{T({op:"delete",path:L,instant:!0}).then(e=>{"error"===e?.status&&B(e.error,A)})}:void 0,showClipboardButton:l,onCopy:c,translate:g,customButtons:r.customButtons,nodeData:K,handleKeyboard:x,keyboardControls:w,editConfirmRef:E,jsonStringify:C,showIconTooltips:D,Select:j}),Ue&&e.jsx(j,{name:`${M}-type-select`,value:ie?ie.enum:q,onChange:e=>Ae(e),options:se.map(e=>e instanceof Object&&"enum"in e?e.enum:e)}),Ye&&e.jsx("span",{className:"jer-error-slug",style:k("error",K),children:F})]})]}),e.jsx(G,{position:"below",nodeData:K})]})},Ie),Le=e=>!!e.editOnTypeSwitch&&!!e.component&&!!e.showOnEdit,Me=(e,t)=>t?.CustomComponent&&t?.name&&t.showInTypeSelector?t.name:"string"==typeof e?"string":"number"==typeof e?"number":"boolean"==typeof e?"boolean":null===e?"null":"invalid",_e=(t,n,r)=>{const o=Ce.includes(n)?n:"function"==typeof t?"invalid":Me(r.value),{value:a}=r;switch(o){case"string":return e.jsx(he,{...r,value:a});case"number":return e.jsx(fe,{...r,value:a});case"boolean":return e.jsx(ye,{...r,value:a});case"null":return e.jsx(ve,{...r});default:return e.jsx(be,{...r})}},Ve=e=>{if("symbol"==typeof e)return 0;const t=Number(e);return isNaN(t)?0:t},ze=(e,t,n)=>{switch(t){case"string":return null==e?"":String(e);case"number":return Ve(e);case"boolean":return!!e;case"null":return null;case"object":return{[n]:e};case"array":return[e];default:return String(e)}},Fe=t.memo(r=>{const{getStyles:a}=Y(),{open:s,cancel:i,submit:l,areChildrenBeingEdited:c}=Z(),{setCollapseState:u}=te(),{mainContainerRef:d,data:p,nodeData:h,parentData:f,showCollectionCount:y,canDragOnto:g,collapseFilter:v,collapseAnimationTime:b,showClipboardButton:j,onCopy:x,showIconTooltips:w,indent:E,sort:C,showArrayIndexes:k,defaultValue:O,newKeyOptions:R,translate:T,customNodeDefinitions:P,customNodeData:A,jsonParse:I,jsonStringify:K,TextEditor:L,Select:M,keyboardControls:_,handleKeyboard:V,insertAtTop:z,onCollapse:F,editConfirmRef:B,collapseClickZones:U,getLatestData:H}=r,[W,$]=t.useState(null),J=v(h),{contentRef:X,isAnimating:Q,maxHeight:q,collapsed:ee,animateCollapse:re,cssTransitionValue:oe}=((e,n,r,o,a)=>{const[s,i]=t.useState(r?0:void 0),[l,c]=t.useState(r),u=t.useRef(!1),d=t.useRef(null),p=t.useRef(0),m=t.useRef(0),h=n/1e3+"s",f=t.useCallback(t=>{if(l!==t){switch(window.clearTimeout(m.current),u.current=!0,t){case!0:{const e=d.current?.offsetHeight??0;p.current=e,i(e),setTimeout(()=>{i(0)},5);break}case!1:i(p.current||Ne(e,d,o,a))}c(!l),m.current=window.setTimeout(()=>{u.current=!1,t||i(void 0)},n)}},[n,l,e,o,a]);return{contentRef:d,isAnimating:u.current,animateCollapse:f,maxHeight:s,collapsed:l,cssTransitionValue:h}})(p,b,J,d,K),{pathString:ae,nodeData:se,path:ie,name:le,size:ue,canEdit:de,canDelete:pe,canAdd:me,canDrag:he,error:fe,setError:ye,onError:ge,derivedValues:ve,buildKeyDisplayProps:be}=Re({props:r,collapsed:ee}),{dragSourceProps:je,getDropTargetProps:Ce,BottomDropTarget:De,DropTargetPadding:Se}=Te({canDrag:he,canDragOnto:g,path:ie,nodeData:se,onError:ge,translate:T}),ke=t.useRef(!J),{isEditing:Ae,isEditingKey:Ie,isPending:Le,isArray:Me}=ve,_e=(e=>{const n=t.useRef(e),r=!Object.is(n.current,e);return t.useEffect(()=>{n.current=e}),r})(v);t.useEffect(()=>{const e=v(se)&&!Ae;ke.current=!e,re(e),_e&&u(null)},[v]),((e,n,r)=>{const{commands:o,version:a}=te(),s=t.useRef(0);t.useEffect(()=>{if(a===s.current)return;if(s.current=a,!o)return;let t;for(const n of o)ne(e,n)&&(t=n);t&&(t.collapsed||(n.current=!0),r(t.collapsed))},[a,o])})(ie,ke,re);const Ve=t.useRef(null),ze=t.useCallback(e=>$(t=>"function"==typeof e?e(t??K(p)):e),[p,K]),Be=t.useCallback(()=>$(null),[]),Ye=t.useMemo(()=>Ae?W??K(p):null,[Ae,W,p,K]),Ue=t.useCallback((e,t)=>{if("function"!=typeof O)return O;const n=O(e,t);return void 0!==n?n:null},[O]),He=t.useCallback(e=>R?"function"!=typeof R?R:R(e):null,[R]),{CustomComponent:We,componentProps:$e,CustomWrapperComponent:Je,wrapperProps:Xe={},showKey:Qe=!0,showEditTools:Ze=!0,showOnEdit:Ge,showOnView:qe,showCollectionWrapper:et=!0}=A,tt=G(e=>null!==e.active&&m(e.active.path,ie));tt&&ee&&re(!1);const nt=ce(ie)||0===se.level,rt=t.useRef(n);if(!nt&&!tt)return null;const{visibleSize:ot}=se,at=Array.isArray(p)?"array":"object",st="array"===at?{open:"[",close:"]"}:{open:"{",close:"}"},it=e=>{if("Tab"===e.key&&!e.getModifierState("Shift")){e.preventDefault();const t=N(Ve,"\t");return void $(t)}V(e,{objectConfirm:ct,cancel:dt})},lt=e=>{e.stopPropagation();const t=S(e);if(t&&_.collapseModifier.includes(t))return ke.current=!0,void u({collapsed:!ee,path:ie,includeChildren:!0});c(ie)||(ke.current=!0,F&&F({...se,fullData:H(),collapsed:!ee,includeChildren:!1}),re(!ee))},ct=e=>{const t=Ye??K(p);let n;try{n=I(t)}catch{return void ge({code:"INVALID_JSON",message:T("ERROR_INVALID_JSON",se)},t)}ye(null);const r="function"==typeof e?e:void 0;l({op:"edit",path:ie,value:n,onCommit:()=>{Be(),r?.()}}).then(e=>{"error"===e?.status&&ge(e.error,n)})};rt.current=ct;const ut=ie.length>0?()=>{l({op:"delete",path:ie,instant:!0}).then(e=>{"error"===e?.status&&ge(e.error,p)})}:void 0,dt=()=>{i(),ye(null),Be()},pt="when-collapsed"===y?ee:"when-collapsed-or-filtered"===y?ee||null!=ot:y,mt=!Ae&&Ze,ht=(k||!Me)&&Qe&&void 0!==le,ft=We&&(Ae&&Ge||!Ae&&qe),yt=Object.entries(p).map(([e,t])=>["array"===at?Number(e):e,t]);"object"===at&&C(yt,e=>e);const gt=ke.current?Ae?e.jsxs("div",{className:"jer-collection-text-edit"+(L?"-custom":""),children:[L?e.jsx(L,{value:Ye??"",onChange:$,onKeyDown:e=>V(e,{objectConfirm:ct,cancel:dt})}):e.jsx(D,{textAreaRef:Ve,className:"jer-collection-text-area",name:ae,value:Ye??"",setValue:ze,onKeyDown:it,styles:a("input",se)}),e.jsx("div",{className:"jer-collection-input-button-row",children:e.jsx(Ee,{onOk:ct,onCancel:dt,nodeData:se,translate:T,showIconTooltips:w,editConfirmRef:B})})]}):yt.map(([t,n],s)=>{const i={key:t,value:n,path:[...ie,t],level:ie.length+1,index:s,size:o(n)?Object.keys(n).length:null,parentData:p,fullData:se.fullData},l=Oe(P,i);return e.jsx("div",{className:"jer-collection-element",style:a("collectionElement",i),children:o(n)&&!l?.renderCollectionAsValue?e.jsx(Fe,{...r,data:n,parentData:p,nodeData:i,canDragOnto:de,customNodeData:l},t):e.jsx(Ke,{...r,data:n,parentData:p,nodeData:i,canDragOnto:de,showLabel:"object"===at||k,customNodeData:l},t)},t)}):null,vt=!!et&&(ee&&!tt);vt||(ke.current=!0);const bt=()=>({...r,data:p,value:p,parentData:f,nodeData:se,setValue:e=>l({op:"edit",path:ie,value:e}),handleEdit:ct,handleCancel:dt,onKeyDown:it,isEditing:Ae,isPending:Le,setIsEditing:de?()=>s(ie,{cancelOp:Be,commitOp:e=>rt.current(e)}):n,getStyles:a,canDragOnto:de,canEdit:de,keyboardCommon:{}}),jt=ft?e.jsx(We,{componentProps:$e,...bt(),children:gt}):gt,xt=mt&&e.jsx(we,{startEdit:de?()=>{ke.current=!0,s(ie,{cancelOp:Be,commitOp:e=>rt.current(e)})}:void 0,handleAdd:me?e=>{u(null),re(!1);const t=Ue(se,e);if("array"===at){const e=z.array?0:p.length,n=z.array?{insert:!0}:{};return void l({op:"add",path:ie,key:e,value:t,options:n,instant:!0}).then(e=>{"error"===e?.status&&ge(e.error,t)})}if(e in p)return ge({code:"KEY_EXISTS",message:T("ERROR_KEY_EXISTS",se)},e),void i();const n=z.object?{insertBefore:0}:{};l({op:"add",path:ie,key:e,value:t,options:n}).then(e=>{"error"===e?.status&&ge(e.error,t)})}:void 0,handleDelete:pe?ut:void 0,showClipboardButton:j,onCopy:x,type:at,nodeData:se,translate:T,customButtons:r.customButtons,keyboardControls:_,handleKeyboard:V,getNewKeyOptions:He,editConfirmRef:B,jsonStringify:K,showIconTooltips:w,Select:M}),wt=be({handleCancel:dt,getStyles:a,keyValueArray:yt,handleClick:U.includes("property")?lt:e=>e.stopPropagation()}),Et=e.jsxs("div",{className:"jer-component jer-collection-component",style:{marginLeft:(0===ie.length?0:E/2)+"em",...a("collection",se),position:"relative"},draggable:he&&!Ae&&!Ie&&!tt,...je,...Ce("above"),children:[e.jsx("div",{className:"jer-clickzone",style:{width:E/2+1+"em",zIndex:10+2*se.level},onClick:U.includes("left")?lt:void 0}),!Ae&&De,e.jsx(Se,{position:"above",nodeData:se}),et?e.jsxs("div",{className:"jer-collection-header-row",style:{...a("headerRow",se),position:"relative"},onClick:U.includes("header")?lt:void 0,children:[e.jsxs("div",{className:"jer-collection-name",children:[e.jsx("div",{className:"jer-collapse-icon jer-accordion-icon"+(ee?" jer-rotate-90":""),style:{zIndex:11+2*se.level,transition:oe},onClick:lt,children:e.jsx(xe,{name:"collection",nodeData:se})}),ht&&e.jsx(Pe,{...wt}),!Ae&&e.jsx("span",{className:"jer-brackets jer-bracket-open",style:a("bracket",se),children:st.open})]}),!1!==y&&!Ae&&e.jsx("div",{className:"jer-collection-item-count"+(pt?" jer-visible":" jer-hidden"),style:{...a("itemCount",se),transition:oe,transitionBehavior:"allow-discrete"},children:null!=ot&&ot!==ue?T("ITEMS_FILTERED",se,{visible:ot,total:ue}):1===ue?T("ITEM_SINGLE",{...se,size:1},1):T("ITEMS_MULTIPLE",se,ue)}),e.jsx("div",{className:"jer-brackets"+(vt?" jer-visible":" jer-hidden"),style:{...a("bracket",se),transition:oe},children:st.close}),xt]}):Qe?e.jsxs("div",{className:"jer-collection-header-row",style:{...a("headerRow",se),position:"relative"},children:[e.jsx(Pe,{...wt}),xt]}):e.jsx(e.Fragment,{}),e.jsxs("div",{className:"jer-collection-inner",style:{overflowY:vt||Q?"clip":"visible",maxHeight:tt?void 0:q,transition:oe},ref:X,children:[jt,e.jsx("div",{className:Ae?"jer-collection-error-row-edit":"jer-collection-error-row",children:fe&&e.jsx("span",{className:"jer-error-slug",style:a("error",se),children:fe})}),!Ae&&et&&e.jsx("div",{className:"jer-brackets jer-bracket-outside",style:a("bracket",se),children:st.close})]}),e.jsx(Se,{position:"below",nodeData:se})]});return Je?e.jsx(Je,{wrapperProps:Xe,...bt(),children:Et}):Et},Ie),Be=({options:t,value:n,defaultValue:r,onChange:o,placeholder:a,className:s,...i})=>{const l=void 0!==n?{value:n}:{defaultValue:r??""};return e.jsxs("div",{className:"jer-select",children:[e.jsxs("select",{className:s??"jer-select-inner",onChange:e=>o(e.target.value),...i,...l,children:[void 0!==a&&e.jsx("option",{value:"",disabled:!0,children:a}),t.map(t=>e.jsx("option",{value:t,children:t},t))]}),e.jsx("span",{className:"focus"})]})},Ye=(e,t="")=>{const{value:n}=e;if(null===n&&"null".includes(t.toLowerCase()))return!0;switch(typeof n){case"string":return n.toLowerCase().includes(t.toLowerCase());case"number":return!!String(n).includes(t);case"boolean":return n?"true".includes(t.toLowerCase())||"1"===t:"false".includes(t.toLowerCase())||"0"===t;default:return!1}},Ue=({key:e,path:t},n="")=>!!Ye({value:e},n)||!!t.some(e=>Ye({value:e},n)),He={ITEM_SINGLE:"{{count}} item",ITEMS_MULTIPLE:"{{count}} items",ITEMS_FILTERED:"{{visible}} of {{total}} items",KEY_NEW:"Enter new key",KEY_SELECT:"Select key",NO_KEY_OPTIONS:"No key options",ERROR_KEY_EXISTS:"Key already exists",ERROR_INVALID_JSON:"Invalid JSON",ERROR_UPDATE:"Update unsuccessful",ERROR_DELETE:"Delete unsuccessful",ERROR_ADD:"Adding node unsuccessful",ERROR_RENAME:"Rename unsuccessful",ERROR_MOVE:"Move unsuccessful",DEFAULT_NEW_KEY:"key",SHOW_LESS:"(Show less)",EMPTY_STRING:"<empty string>",TOOLTIP_COPY:"Copy to clipboard",TOOLTIP_EDIT:"Edit",TOOLTIP_DELETE:"Delete",TOOLTIP_ADD:"Add",TOOLTIP_OK:"OK",TOOLTIP_CANCEL:"Cancel"},We=(e,t)=>(n,r,o)=>((e,t,n,r,o)=>{if(t[r]){const e=t[r](n);if(null!==e)return e}let s=r in e?e[r]:He[r];if(void 0!==o){const e=a(o)?o:{count:o};for(const[t,n]of Object.entries(e))s=s?.replace(`{{${t}}}`,String(n))}return s})(e,t,r,n,o);var $e=[],Je=[];!function(e,t){if(e&&"undefined"!=typeof document){var n,r=!0===t.prepend?"prepend":"append",o=!0===t.singleTag,a="string"==typeof t.container?document.querySelector(t.container):document.getElementsByTagName("head")[0];if(o){var s=$e.indexOf(a);-1===s&&(s=$e.push(a)-1,Je[s]={}),n=Je[s]&&Je[s][r]?Je[s][r]:Je[s][r]=i()}else n=i();65279===e.charCodeAt(0)&&(e=e.substring(1)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(document.createTextNode(e))}function i(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),t.attributes)for(var n=Object.keys(t.attributes),o=0;o<n.length;o++)e.setAttribute(n[o],t.attributes[n[o]]);var s="prepend"===r?"afterbegin":"beforeend";return a.insertAdjacentElement(s,e),e}}(':host,:root{--jer-select-border:#b6b6b6;--jer-select-focus:#777;--jer-select-arrow:#777;--jer-form-border:1px solid #ededf0;--jer-form-border-focus:1px solid #e2e2e2;--jer-highlight-color:#b3d8ff;--jer-icon-copy-color:#268bd2}.jer-visible{opacity:1}.jer-hidden{opacity:0}.jer-select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:#000;cursor:inherit;font-family:inherit;font-size:.8em;line-height:inherit;margin:0;outline:none;padding:0 1em 0 0;z-index:1}select::-ms-expand{display:none}.jer-select{align-items:center;background-color:#fff;background-image:linear-gradient(0deg,#f9f9f9,#fff 33%);border:1px solid var(--jer-select-border);border-radius:.25em;cursor:pointer;display:grid;grid-template-areas:"select";line-height:1.1;max-width:15ch;min-width:12ch;padding:.25em .5em;position:relative}.jer-select select,.jer-select:after{grid-area:select}.jer-select:not(.jer-select--multiple):after{background-color:var(--jer-select-arrow);clip-path:polygon(100% 0,0 0,50% 100%);content:"";height:.5em;justify-self:end;width:.8em}select:focus+.focus{border:1px solid var(--jer-select-focus);border-radius:inherit;bottom:-1px;left:-1px;position:absolute;right:-1px;top:-1px}.jer-select-inner{text-overflow:ellipsis;width:100%}.jer-editor-container{border-radius:.5em;font-size:16px;line-height:1;padding:1em 1em 1em 2em;position:relative;text-align:left}.jer-editor-container textarea{border:var(--jer-form-border);border-radius:.3em;color:var(--jer-input-color);outline:none}.jer-editor-container textarea:focus{border:var(--jer-form-border-focus)}.jer-editor-container input{border:var(--jer-form-border);border-radius:.3em;font-family:inherit;outline:none}.jer-editor-container input:focus{border:var(--jer-form-border-focus)}.jer-editor-container ::selection{background-color:var(--jer-highlight-color)}.jer-collection-header-row,.jer-value-main-row{align-items:center;display:flex;gap:.3em;min-height:1.7em}.jer-collection-header-row{flex-wrap:wrap}.jer-value-main-row{gap:0}.jer-bracket-outside{padding-left:0}.jer-collection-item-count{display:none}.jer-collection-item-count.jer-visible{display:block}@starting-style{.jer-collection-item-count.jer-visible{opacity:0}}.jer-collapse-icon{left:-1.2em;position:absolute;top:50%;transform:translateY(-50%)}.jer-collapse-icon.jer-rotate-90{transform:translateY(-50%) rotate(-90deg)}.jer-collection-inner{position:relative}.jer-collection-text-edit,.jer-collection-text-edit-custom{align-items:flex-start;display:flex;flex-direction:column;gap:.3em;line-height:1.1em}.jer-collection-text-edit{width:fit-content}.jer-collection-text-area{box-sizing:content-box;font-family:inherit;font-size:.85em;line-height:1.25em;max-height:40em;overflow:hidden;padding:.2em .5em 0;resize:both}.jer-collection-input-button-row{display:flex;font-size:150%;justify-content:flex-end;margin-top:.4em;width:100%}.jer-collection-error-row-edit{bottom:.5em;position:absolute}.jer-error-slug{margin-left:1em}.jer-value-component{position:relative}.jer-value-and-buttons{align-items:center;display:flex;justify-content:flex-start;padding-left:.5em}.jer-value-error-row{position:absolute}.jer-value-string{line-height:1.3em;overflow-wrap:anywhere;white-space:pre-wrap;word-break:break-word}.jer-string-expansion{cursor:pointer;filter:saturate(50%);opacity:.6}.jer-show-less{font-size:80%}.jer-hyperlink{text-decoration:underline}.jer-input-text{box-sizing:content-box;font-family:inherit;font-size:.9em;height:1.4em;line-height:1.2em;margin:0;min-width:6em;overflow:hidden;padding:.25em .5em .2em;resize:none}.jer-input-boolean{margin-left:.3em;margin-right:.3em;transform:scale(1.5)}.jer-key-text{line-height:1.1em;white-space:pre-wrap;word-break:break-word}.jer-key-edit{font-size:inherit;font-size:.9em;padding:0 .3em}.jer-value-invalid{font-style:italic;opacity:.5}.jer-input-number{font-size:90%;min-width:3em}.jer-confirm-buttons,.jer-edit-buttons{align-items:center;cursor:pointer;display:flex;height:1em;margin-right:.2em}.jer-confirm-buttons>button,.jer-edit-buttons>button{appearance:none;background:none;border:none;color:inherit;font:inherit;margin:0;padding:0}.jer-input-buttons{gap:.4em}.jer-edit-buttons{gap:.4em;margin-left:.5em;opacity:0}.jer-confirm-buttons{gap:.2em;margin-left:.4em}.jer-edit-buttons:hover{opacity:1;position:relative}.jer-collection-header-row:hover>.jer-edit-buttons,.jer-value-and-buttons:hover>.jer-edit-buttons,.jer-value-main-row:hover>.jer-edit-buttons{opacity:1}.jer-copy-pulse{position:relative;transition:.3s}.jer-copy-pulse:hover{opacity:.85;transform:scale(1.2);transition:.3s}.jer-copy-pulse:after{border-radius:50%;box-shadow:0 0 15px 5px var(--jer-icon-copy-color);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;transition:all .5s;width:100%}.jer-copy-pulse:active:after{border-radius:4em;box-shadow:0 0 0 0 var(--jer-icon-copy-color);left:0;opacity:1;position:absolute;top:0;transition:0s}.jer-copy-pulse:active{top:.07em}.jer-icon:hover{opacity:.85;transform:scale(1.2);transition:.3s}.jer-empty-string{font-size:90%;font-style:italic}.jer-drag-n-drop-padding{border:1px dashed #b4b4b4;border-radius:.3em;height:.5em}.jer-clickzone{height:calc(100% - .8em);left:-1em;position:absolute;top:1.2em}',{});const Xe=(e,t)=>JSON.stringify(e,t,2),Qe={edit:"ERROR_UPDATE",add:"ERROR_ADD",delete:"ERROR_DELETE",rename:"ERROR_RENAME",move:"ERROR_MOVE"},Ze={edit:"UPDATE_ERROR",add:"ADD_ERROR",delete:"DELETE_ERROR",rename:"RENAME_ERROR",move:"MOVE_ERROR"},Ge=e=>{const n=t.useRef(e);e&&(n.current=e);const r=t.useRef((...e)=>n.current(...e));return e?r.current:void 0},qe=[],et=["header","left"],tt={},nt={},rt={},ot=[],at=({data:a,setData:s,buildNodeDataFromPathRef:l,commitRef:c,rootName:u="root",onUpdate:p=n,onChange:m,onError:h,onEditEvent:f,showErrorMessages:y=!0,showClipboardButton:g=!0,onCopy:v,indent:b=2,collapse:j=3,collapseAnimationTime:w=300,showCollectionCount:C="when-collapsed-or-filtered",allowEdit:D=!0,allowDelete:S=!0,allowAdd:O=!0,allowTypeSelection:N=!0,allowDrag:P=!1,searchFilter:A,searchText:I,searchDebounceTime:K=350,sortKeys:L=!1,showArrayIndexes:M=!0,arrayIndexStart:_=0,showStringQuotes:V=!0,showIconTooltips:z=!1,defaultValue:F=null,newKeyOptions:B,minWidth:U=250,maxWidth:H="min(600px, 90vw)",baseFontSize:W,stringTruncateLength:$=250,translations:J=tt,className:X,id:Q,customText:G=nt,customNodeDefinitions:q=qe,customButtons:ee=ot,jsonParse:ne=JSON.parse,jsonStringify:re=Xe,TextEditor:oe,Select:ae=Be,errorDisplayTime:se=2500,keyboardControls:le=rt,editorRef:ce,insertAtTop:ue=!1,onCollapse:de,collapseClickZones:pe=et})=>{const{getStyles:me,cssVars:he}=Y(),{open:fe,cancel:ye,getSnapshot:ge}=Z(),ve=t.useMemo(()=>lt(j),[j]),be=t.useMemo(()=>We(J,G),[J,G]),[je,xe]=t.useState(I),we=t.useRef(null);t.useEffect(()=>{ye();const e=setTimeout(()=>xe(I),K);return()=>clearTimeout(e)},[I,K]);const Ee=E(a,[],u),Ce=t.useRef(a);Ce.current=a;const De=t.useRef(s);De.current=s;const Se=t.useRef(be);Se.current=be;const ke=t.useRef(Ee);ke.current=Ee;const Re=t.useRef(p);Re.current=p;const Te=t.useRef(u);Te.current=u;const Ne=t.useRef(void 0),Pe=t.useCallback(()=>Ce.current,[]),Ae=Ge(m),Ie=Ge(h),Le=Ge(de),Me=Ge(f),_e=Ge(v),Ve=t.useCallback(e=>{Ce.current=e,De.current(e)},[]),ze=t.useCallback((e,t)=>{Ve(it(Ce.current,e,t,"update").newData)},[Ve]),Ue=t.useCallback(e=>{const t=Ce.current,n=Te.current,r=Ne.current,o=Ve,{op:a,path:s}=e;switch(a){case"edit":{const{newData:a,currentValue:i,newValue:l}=it(t,s,e.value,"update"),c=E(t,s,n,r);return{input:{...c,newData:a,event:"edit",newValue:l},nodeData:c,isNoOp:i===l,apply:()=>o(a),revert:()=>o(it(Ce.current,s,i,"update").newData)}}case"delete":{const{newData:e,currentValue:a}=it(t,s,"","delete"),i=E(t,s,n,r);return{input:{...i,newData:e,event:"delete"},nodeData:i,isNoOp:!1,apply:()=>o(e),revert:()=>o(it(Ce.current,s,a,"add",{insert:!0,insertBefore:i.index}).newData)}}case"add":{const a=[...s,e.key],{newData:i,newValue:l}=it(t,a,e.value,"add",e.options),c=E(i,a,n,r);return{input:{...c,value:void 0,size:null,parentData:x(t,s)??null,fullData:t,newData:i,event:"add",newValue:l},nodeData:c,isNoOp:!1,apply:()=>o(i),revert:()=>o(it(Ce.current,a,"","delete").newData)}}case"rename":{const a=s.slice(0,-1),i=s[s.length-1],{newKey:l}=e,c=x(t,a),u=Object.fromEntries(Object.entries(c).map(([e,t])=>e===i?[l,t]:[e,t])),{newData:d}=it(t,a,u,"update"),p=E(t,s,n,r);return{input:{...p,newData:d,event:"rename",newKey:l},nodeData:p,isNoOp:i===l,apply:()=>o(d),revert:()=>o(it(Ce.current,a,c,"update").newData),extra:{oldKey:i,newKey:l}}}case"move":{const a=s,{path:i,position:l}=e.to,c=t,{newData:u,currentValue:d}=it(t,a,"","delete"),p=a.slice(-1)[0],m=i.slice(0,-1),h=i.slice(-1)[0];let f="number"==typeof h?"above"===l?h:h+1:"number"==typeof p?`arr_${p}`:p;a.slice(0,-1).join(".")===i.slice(0,-1).join(".")&&"number"==typeof p&&"number"==typeof f&&p<f&&(f-=1);const y="number"==typeof f?{insert:!0}:"above"===l?{insertBefore:h}:{insertAfter:h},g=[...m,f],{newData:v}=it(u,g,d,"add",y),b=E(t,a,n,r);return{input:{...b,newData:v,event:"move",newPath:g},nodeData:b,isNoOp:!1,apply:()=>o(v),revert:()=>o(c)}}}},[Ve]),He=t.useCallback(async(e,t)=>{const n=Ze[e.event],r=()=>Se.current(Qe[e.event],ke.current);let o;try{o=await Re.current(e,t)}catch(e){return{status:"error",error:{code:n,message:e instanceof Error&&e.message?e.message:"string"==typeof e&&e?e:r()}}}if(!1===o)return{status:"error",error:{code:n,message:r()}};if(null===o)return{status:"cancel"};if(o&&"object"==typeof o){if(void 0!==o.error)return"string"==typeof o.error?{status:"error",error:{code:n,message:o.error}}:{status:"error",error:o.error};const t=void 0!==o.data,r=void 0!==o.value;if(t&&r&&console.warn("json-edit-react: onUpdate returned both { value } and { data }; { data } (whole-document) takes precedence and { value } is ignored."),t)return{status:"override",value:o.data,path:[]};if(r&&("edit"===e.event||"add"===e.event))return{status:"override",value:o.value,path:e.path}}return{status:"commit"}},[]),$e=t.useMemo(()=>({runUpdate:p===n?void 0:He,buildCommit:Ue,applyValue:ze}),[He,Ue,ze,p]);c.current=$e;const Je=t.useMemo(()=>lt(D),[D]),at=t.useMemo(()=>lt(S),[S]),st=t.useMemo(()=>lt(O),[O]),dt=t.useMemo(()=>lt(P),[P]),pt=t.useMemo(()=>ct(A),[A]),mt=t.useMemo(()=>((e,t,n)=>{if(!t&&!n)return null;const r=new Set,a=new Map,s=t??Ye,i=n??"",l=e=>{let t=s(e,i);if(o(e.value)){let n=0;const r=Array.isArray(e.value),s=Object.entries(e.value);for(const[a,i]of s){const s=r?Number(a):a,c={key:s,path:[...e.path,s],level:e.level+1,index:n,value:i,size:o(i)?Object.keys(i).length:null,parentData:e.value,fullData:e.fullData};l(c)&&(t=!0,n++)}a.set(d(e.path),n)}return t&&r.add(d(e.path)),t};return l(e),{visiblePaths:r,visibleChildCounts:a}})(Ee,pt,je),[a,je,pt,u]),ht=t.useMemo(()=>(e=>{const t={...R};for(const n of Object.keys(R)){const o=n,a=e[o];if(void 0===a)continue;const s="clipboardModifier"===n||"collapseModifier"===n;if(null===a){t[o]=s?[]:null;continue}const i=(()=>s?r(a):"string"==typeof a?{key:a}:a)();t[o]=i}return T.forEach(n=>{void 0===e[n]&&void 0!==e.confirm&&(t[n]=t.confirm)}),t})(le),[le]),ft=t.useCallback((e,t)=>((e,t,n)=>{for(const[r,o]of Object.entries(t))if(k(n,e[r],r)){n.preventDefault(),o();break}})(ht,t,e),[ht]),yt=t.useMemo(()=>{const e=ut(q,"stringifyReplacer");return t=>re(t,e)},[q,re]),gt=t.useMemo(()=>{const e=ut(q,"parseReviver");return t=>{const n=ne(t,e);return i(n)}},[q,ne]),vt=t.useRef(null),{setCollapseState:bt}=te(),jt=t.useCallback((e,t)=>{!1!==L&&("function"!=typeof L?e.sort((e,n)=>{const r=t(e)[0],o=t(n)[0];return r<o?-1:r>o?1:0}):e.sort((e,n)=>L(t(e),t(n))))},[L]);Ne.current=jt;const xt=t.useCallback(e=>E(Pe(),e,Te.current,Ne.current),[Pe]);l.current=xt,t.useImperativeHandle(ce,()=>{const e=Symbol("path-missing");return{collapse:e=>bt(e),startEdit:({path:t,overrideRestrictions:n=!1})=>x(Pe(),t,e)===e?"PATH_NOT_FOUND":n||Je(E(Pe(),t,u,jt))?(fe(t,{force:!0}),!0):"RESTRICTED",confirm:()=>{vt.current&&(vt.current.click(),"editing"!==ge().active?.phase&&ye())},cancel:()=>ye()}},[bt,fe,ye,ge,Je,Pe,u,jt]);const wt=Oe(q,Ee),Et=t.useMemo(()=>({object:!0===ue||"object"===ue,array:!0===ue||"array"===ue}),[ue]),Ct={mainContainerRef:we,name:u,nodeData:Ee,getLatestData:Pe,onChange:Ae,onError:Ie,onEditEvent:Me,showErrorMessages:y,showCollectionCount:C,collapseFilter:ve,collapseAnimationTime:w,allowEditFilter:Je,allowDeleteFilter:at,allowAddFilter:st,allowTypeSelection:N,allowDragFilter:dt,canDragOnto:!1,showClipboardButton:g,onCopy:_e,sortKeys:L,sort:jt,showArrayIndexes:M,arrayIndexStart:_,showStringQuotes:V,showIconTooltips:z,indent:b,defaultValue:F,newKeyOptions:B,stringTruncateLength:$,translate:be,customNodeDefinitions:q,customNodeData:wt,customButtons:ee,parentData:null,jsonParse:gt,jsonStringify:yt,TextEditor:oe,Select:ae,errorDisplayTime:se,handleKeyboard:ft,keyboardControls:ht,insertAtTop:Et,onCollapse:Le,editConfirmRef:vt,collapseClickZones:pe},Dt={...me("container",Ee),...he,minWidth:U,maxWidth:H};return Dt.fontSize=W??Dt.fontSize,e.jsx("div",{id:Q,ref:we,className:`jer-editor-container ${X??""}`,style:Dt,children:e.jsx(ie,{value:mt,children:o(a)&&!wt.renderCollectionAsValue?e.jsx(Fe,{data:a,...Ct}):e.jsx(Ke,{data:a,showLabel:!0,...Ct})})})};function st(n){const r=t.useRef(void 0),o=t.useRef(void 0),a=n;return e.jsx(B,{theme:a.theme??L,children:e.jsx(ae,{onEditEvent:a.onEditEvent,onCollapse:a.onCollapse,buildNodeDataFromPathRef:r,commitRef:o,children:e.jsx(at,{...a,buildNodeDataFromPathRef:r,commitRef:o})})})}const it=(e,t,n,r,o={})=>{if(0===t.length)return{currentData:e,newData:n,currentValue:e,newValue:n};const a={remove:"delete"===r,...o},s="add"!==r?x(e,t):void 0;return{currentData:e,newData:g(e,t,n,a),currentValue:s,newValue:"delete"!==r?n:void 0}},lt=e=>"boolean"==typeof e?()=>e:"number"==typeof e?({level:t})=>t>=e:e,ct=e=>{if(void 0!==e)return"value"===e?Ye:"key"===e?Ue:"all"===e?(e,t)=>Ye(e,t)||Ue(e,t):e},ut=(e,t)=>{const n="stringifyReplacer"===t?[e=>void 0===e?l:e]:[];if(n.push(...e.map(e=>e[t]).filter(e=>!!e)),0!==n.length)return(e,t)=>{let r=t;for(const e of n)r=e(r);return r}};exports.AutogrowTextArea=D,exports.IconSvg=je,exports.JsonEditor=st,exports.JsonViewer=function(r){const{editorRef:o,...a}=r,s=t.useRef(null);return t.useImperativeHandle(o,()=>({collapse:e=>s.current?.collapse(e)}),[]),e.jsx(st,{...a,editorRef:s,setData:n,allowEdit:!1,allowAdd:!1,allowDelete:!1,allowDrag:!1})},exports.StringDisplay=pe,exports.StringEdit=me,exports.assign=g,exports.collectionDataTypes=De,exports.defaultTheme=L,exports.extract=x,exports.isCollection=o,exports.matchNode=Ye,exports.matchNodeKey=Ue,exports.splitPropertyString=c,exports.standardDataTypes=Se,exports.toPathString=d,exports.useKeyboardListener=ge,exports.valueDataTypes=Ce;
|