efficient-easel 0.100.0 → 0.101.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/dist/chrome/index.js +24 -16
- package/dist/{chunk-QKVR3K73.js → chunk-2FZJWH24.js} +1 -1
- package/dist/chunk-546BBOPE.js +1 -0
- package/dist/{chunk-LGKQXSKO.js → chunk-EOJNJCMJ.js} +8 -8
- package/dist/{chunk-A5UK76FC.js → chunk-EWVJSRRY.js} +6 -6
- package/dist/chunk-FPOKPNO4.js +1 -0
- package/dist/chunk-H24N5TMZ.js +11 -0
- package/dist/chunk-IG3U5NWJ.js +1 -0
- package/dist/chunk-KTVH2ZRL.js +15 -0
- package/dist/{chunk-6EIVTKZZ.js → chunk-L5KW4HG5.js} +21 -20
- package/dist/{chunk-TRVZ7C23.js → chunk-QTLAVDJE.js} +1 -1
- package/dist/chunk-UH7IGZKF.js +1 -0
- package/dist/{chunk-V7GIIXFB.js → chunk-ZFDCDJNZ.js} +1 -1
- package/dist/{chunk-DICUMYMG.js → chunk-ZNS7727Y.js} +1 -1
- package/dist/copy/copy.css +83 -29
- package/dist/copy/index.d.ts +41 -7
- package/dist/copy/index.js +32 -31
- package/dist/drag/index.js +4 -4
- package/dist/fields/fields.css +185 -30
- package/dist/fields/index.d.ts +165 -20
- package/dist/fields/index.js +22 -37
- package/dist/gold/index.js +1 -1
- package/dist/icons/index.d.ts +4 -1
- package/dist/icons/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/markup/index.d.ts +18 -1
- package/dist/markup/index.js +1 -1
- package/dist/menu/index.js +1 -15
- package/dist/node-ops/index.js +1 -1
- package/dist/panel/index.d.ts +49 -38
- package/dist/panel/index.js +18 -18
- package/dist/panel/panel.css +99 -81
- package/dist/pick/index.d.ts +40 -2
- package/dist/pick/index.js +1 -1
- package/dist/pick/pick.css +183 -10
- package/dist/rail/index.js +1 -1
- package/dist/strings/catalogue.d.ts +3 -3
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.d.ts +3 -3
- package/dist/strings/index.js +1 -1
- package/dist/style-clipboard/index.js +1 -1
- package/dist/text-styles/index.js +13 -13
- package/dist/tree/index.js +1 -1
- package/dist/{words-CJjUKcV5.d.ts → words-BGrHZAJJ.d.ts} +13 -4
- package/dist/{words-CzoyDNHm.d.ts → words-D8kf071T.d.ts} +40 -2
- package/dist/{words-DBq7vfHy.d.ts → words-XH0TvZPg.d.ts} +8 -5
- package/package.json +1 -1
- package/dist/chunk-AZT7V4UM.js +0 -10
- package/dist/chunk-HDVD27VB.js +0 -1
- package/dist/chunk-JQM3V7XQ.js +0 -1
- package/dist/chunk-LA54QLP5.js +0 -1
- package/dist/chunk-MH5GUZFQ.js +0 -9
- package/dist/chunk-SAJUCHOX.js +0 -1
package/dist/fields/index.js
CHANGED
|
@@ -1,37 +1,22 @@
|
|
|
1
|
-
import{FieldSelect as e}from"../chunk-
|
|
2
|
-
return
|
|
3
|
-
/* @__PURE__ */
|
|
4
|
-
/* @__PURE__ */
|
|
5
|
-
|
|
6
|
-
/* @__PURE__ */
|
|
7
|
-
/* @__PURE__ */
|
|
8
|
-
/* @__PURE__ */
|
|
9
|
-
|
|
10
|
-
/* @__PURE__ */
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
/* @__PURE__ */
|
|
21
|
-
return
|
|
22
|
-
/* @__PURE__ */
|
|
23
|
-
/* @__PURE__ */k(r,{kind:"plain",label:B.duplicateItem({noun:A}),disabled:!G,onClick:()=>X(n),children:/* @__PURE__ */x("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[
|
|
24
|
-
/* @__PURE__ */k("rect",{x:"9",y:"9",width:"11",height:"11",rx:"2"}),
|
|
25
|
-
/* @__PURE__ */k("path",{d:"M5 15V6a2 2 0 0 1 2-2h9"})]})}),
|
|
26
|
-
/* @__PURE__ */k(r,{kind:"delete",label:B.deleteItem({noun:A}),disabled:!Z,onClick:()=>D(n),children:/* @__PURE__ */k("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",children:/* @__PURE__ */k("path",{d:"M4 7h16M10 11v6M14 11v6M6 7l1 12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-12M9 7V4h6v3"})})})]})})]},n)}),
|
|
27
|
-
/* @__PURE__ */k(l,{...T.seam({place:{...$,index:o.length}})})]}):null,S?null:/* @__PURE__ */k("button",{type:"button",className:"es-list-add",disabled:!G,onClick:()=>V(o.length),children:B.add({noun:A})})]})}var L=(e,n)=>"string"==typeof e.label&&e.label?e.label:n;function M({field:e,name:n,id:l,value:t,onChange:r,readOnly:i,context:a,renderers:o}){const[c,d]=y(!0),u=t&&"object"==typeof t?t:{};/* @__PURE__ */
|
|
28
|
-
return k(s,{id:`${l}-group`,title:L(e,n),open:c,onToggle:d,children:Object.entries(e.objectFields).map(([e,t])=>/* @__PURE__ */k(B,{field:t,name:`${n}.${e}`,id:`${l}-${e}`,value:u[e],onChange:n=>r({...u,[e]:n}),readOnly:i,context:a,renderers:o},e))})}function P({field:e,name:n,id:l,value:t,onChange:r,readOnly:i,context:a,renderers:o,openItem:s,onOpenItem:c}){const[d,u]=y(null),m=c?s??null:d,h=c??u,p=Array.isArray(t)?t:[],b=e.getItemSummary;/* @__PURE__ */
|
|
29
|
-
return k(S,{label:L(e,n),icon:e.icon,noun:"string"==typeof e.noun?e.noun:void 0,items:p,onChange:r,newItem:()=>I({...e.defaultItemProps??{}}),summary:b?(e,n)=>b(e,n):void 0,min:e.min,max:e.max,readOnly:i,open:m,onOpen:h,renderItem:(t,r,s)=>Object.entries(e.arrayFields).map(([e,c])=>/* @__PURE__ */k(B,{field:c,name:`${n}[${r}].${e}`,id:`${l}-${r}-${e}`,value:t?.[e],onChange:n=>s({...t,[e]:n}),readOnly:i,context:a,renderers:o},e))})}function B(n){const{field:l,name:t,id:r,value:a,onChange:o,readOnly:s,context:c,renderers:d}=n;if(!l||l.marker||!1===l.visible)return null;const u=d?.[l.type];if(u)return u({field:l,name:t,id:r,value:a,onChange:o,readOnly:s});switch(l.type){case"custom":{const e={...c,field:l,name:t,id:r,value:a,onChange:o,readOnly:s};return l.render(e)}case"text":case"textarea":/* @__PURE__ */
|
|
30
|
-
return k(i,{label:L(l,t),htmlFor:r,icon:l.icon,hint:l.hint,children:/* @__PURE__ */k(O,{id:r,value:"string"==typeof a?a:null==a?"":String(a),onChange:o,placeholder:l.placeholder,multiline:"textarea"===l.type,readOnly:s})});case"number":/* @__PURE__ */
|
|
31
|
-
return k(i,{label:L(l,t),htmlFor:r,icon:l.icon,hint:l.hint,children:/* @__PURE__ */k(m,{id:r,value:"number"==typeof a?a:void 0,onChange:o,min:l.min,max:l.max,step:l.step,placeholder:l.placeholder,readOnly:s})});case"select":{const n=`${r}-label`;/* @__PURE__ */
|
|
32
|
-
return k(i,{label:L(l,t),labelId:n,htmlFor:r,icon:l.icon,hint:l.hint,children:/* @__PURE__ */k(e,{id:r,value:a,options:l.options,onChange:o,readOnly:s,ariaLabelledBy:n})})}case"radio":/* @__PURE__ */
|
|
33
|
-
return k(i,{label:L(l,t),icon:l.icon,hint:l.hint,children:/* @__PURE__ */k(h,{ariaLabel:L(l,t),value:a,options:l.options.map(e=>({id:e.value,label:e.label,icon:e.icon,disabled:e.disabled||s})),onChange:e=>{s||o(e)}})});case"object":/* @__PURE__ */
|
|
34
|
-
return k(M,{...n,field:l});case"array":/* @__PURE__ */
|
|
35
|
-
return k(P,{...n,field:l});case"slot":return null}}var K=e=>a.includes(e);function A(e){let n=a[0];const l=[],t=/* @__PURE__ */new Set;for(const[r,i]of Object.entries(e))i&&(K(i.bucket)&&(n=i.bucket),i.marker||!1===i.visible||(l.push({name:r,field:i,bucket:n}),"slot"!==i.type&&t.add(n)));return{rows:l,buckets:a.filter(e=>t.has(e))}}function G(e){return new Map(A(e).rows.map(e=>[e.name,e.bucket]))}function Z({fields:e,values:n,onChange:l,readOnly:t=!1,context:r,tab:i,onTab:a,tabs:s=!0,tabIcons:c,renderers:u,idPrefix:m,ariaLabel:h,children:p}){const f=b("panel",d),g=v(),N=m??`es-insp${g.replace(/:/g,"")}`,O=A(e),[C,j]=y(void 0),w=i??C,I=w&&O.buckets.includes(w)?w:O.buckets[0],[F,$]=y(null),S=F&&F.panel===N&&O.rows.some(e=>e.name===F.name)?F:null,L=s&&O.buckets.length>1&&!S,M=`${N}-rows`,P=e=>`${N}-tab-${e.toLowerCase()}`;/* @__PURE__ */
|
|
36
|
-
return x("div",{className:"es-insp",children:[L?/* @__PURE__ */k("div",{className:"es-insp-tabs",children:/* @__PURE__ */k(o,{ariaLabel:h??f.settings,activeId:I,onSelect:e=>{const n=e;void 0===i&&j(n),a?.(n)},items:O.buckets.map(e=>({id:e,label:f.buckets[e],icon:c?.[e],htmlId:P(e),panelId:M}))})}):null,
|
|
37
|
-
/* @__PURE__ */x("div",{className:"es-insp-rows",id:M,role:L?"tabpanel":void 0,"aria-labelledby":L&&I?P(I):void 0,children:[O.rows.map(({name:e,field:i,bucket:a})=>/* @__PURE__ */k("div",{className:"es-insp-row","data-field":e,"data-bucket":a,hidden:!!(S?S.name!==e:L&&a!==I)||void 0,children:/* @__PURE__ */k(B,{field:i,name:e,id:`${N}-${e}`,value:n[e],onChange:n=>l(e,n),readOnly:t,context:r,renderers:u,openItem:S&&S.name===e?S.index:null,onOpenItem:n=>$(null===n?null:{panel:N,name:e,index:n})})},e)),S?null:p]})]})}export{O as FieldText,Z as Inspector,B as InspectorField,S as ListField,G as bucketsOf,I as copyItem,C as insertAt,L as labelOf,j as moveTo,A as planFields,w as removeAt};
|
|
1
|
+
import{FieldSelect as e}from"../chunk-EOJNJCMJ.js";export{FieldSelect,FieldSlider,optionFor}from"../chunk-EOJNJCMJ.js";import{TreeSeam as n}from"../chunk-ZFDCDJNZ.js";import{SettingsField as l,SETTINGS_BUCKETS as t,SettingsTabs as a,SettingsGroup as r}from"../chunk-ZNS7727Y.js";import{DEFAULT_TREE_WORDS as i}from"../chunk-3EDSDPIP.js";import{DEFAULT_PANEL_WORDS as o}from"../chunk-QTLAVDJE.js";export{useResolvedFields}from"../chunk-YRLPFZW3.js";import{EaselContextMenu as s}from"../chunk-KTVH2ZRL.js";import{FieldNumber as c}from"../chunk-EWVJSRRY.js";export{FieldNumber,clampNumber,parseTyped,useNumberEntry}from"../chunk-EWVJSRRY.js";import{SettingsSegmented as u}from"../chunk-P6O363EE.js";import{DEFAULT_FIELDS_WORDS as d}from"../chunk-FPOKPNO4.js";import{useWords as m}from"../chunk-MFIRYGHW.js";import"../chunk-BZ5ASXOL.js";import{useTreeDrag as p,gapToMoveIndex as h}from"../chunk-67GNT6PF.js";import{ChevronIcon as b,LockIcon as f,MoveUpIcon as v,MoveDownIcon as g,DuplicateIcon as y,TrashIcon as x}from"../chunk-L5KW4HG5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";import{useRef as k,useState as N,useLayoutEffect as O,useId as w}from"react";import{jsx as C,jsxs as j}from"react/jsx-runtime";function S({id:e,value:n,onChange:l,placeholder:t,multiline:a=!1,rows:r=3,readOnly:i=!1,ariaLabel:o,ariaLabelledBy:s}){const c=n??"";return a?/* @__PURE__ */C("textarea",{id:e,className:"es-fin es-fin--area",value:c,rows:r,placeholder:t,readOnly:i,"aria-label":o,"aria-labelledby":s,onChange:e=>l(e.target.value)}):/* @__PURE__ */C("input",{id:e,type:"text",className:"es-fin",value:c,placeholder:t,readOnly:i,"aria-label":o,"aria-labelledby":s,onChange:e=>l(e.target.value)})}function I(e,n,l){const t=e.slice();return t.splice(Math.max(0,Math.min(n,t.length)),0,l),t}function D(e,n,l){const t=e.slice(),[a]=t.splice(n,1);return t.splice(Math.max(0,Math.min(l,t.length)),0,a),t}function F(e,n){return e.filter((e,l)=>l!==n)}function $(e){return null===e||"object"!=typeof e?e:JSON.parse(JSON.stringify(e))}var L='input, textarea, select, button, [contenteditable]:not([contenteditable="false"]), [tabindex]',E={parentId:"list",slot:"items"};function P({label:e,icon:l,noun:t,items:a,onChange:r,newItem:o,summary:c,itemName:u,thumb:w,min:S=0,max:P,readOnly:R=!1,open:A,onOpen:M,renderItem:J,renderRow:T,canRemove:K,lockedReason:B,fixed:z=!1,removeOnRow:H=!0,canDuplicate:V,above:W,head:Y=!0}){const Z=m("fields",d).list,X=m("tree",i),q=t??Z.item,G=!R&&!z&&("number"!=typeof P||a.length<P),Q=a.length<=S,U=e=>!!K&&!K(a[e],e),_=e=>!R&&!z&&H&&!Q&&!U(e),ee=e=>G&&(!V||V(a[e],e)),ne=(e,n)=>u?u(e,n):Z.itemName({noun:q,n:n+1}),le=k([]),te=k(null),[ae,re]=N(null),ie=k(null),[oe,se]=N(null),[ce,ue]=N("");O(()=>{for(const e of le.current){if(!e)continue;null!==e.querySelector(L)||R?e.removeAttribute("tabindex"):e.tabIndex=0}}),O(()=>{const e=te.current;if(!e)return;te.current=null;const n=le.current[e.index]?.querySelectorAll(L)[e.nth]??le.current[e.index];if(n?.focus(),n&&null!==e.start&&"setSelectionRange"in n)try{n.setSelectionRange(e.start,e.end)}catch{}});const de=(e,n)=>{if(n<0||n>=a.length||n===e)return;const l=le.current[e],t=l?.ownerDocument.activeElement;if(l&&t&&l.contains(t)){const e=[...l.querySelectorAll(L)].indexOf(t),a=t;te.current={index:n,nth:e,start:"number"==typeof a.selectionStart?a.selectionStart:null,end:"number"==typeof a.selectionEnd?a.selectionEnd:null}}r(D(a,e,n));const i=function(e,n,l){return null===e?null:e===n?l:n<e&&l>=e?e-1:n>e&&l<=e?e+1:e}(A,e,n);i!==A&&M(i),ue(Z.moved({n:n+1,total:a.length}))},me=e=>{G&&(r(I(a,e,o())),T?(te.current={index:e,nth:0,start:null,end:null},null!==A&&A>=e&&M(A+1)):M(e))},pe=e=>{_(e)&&(r(F(a,e)),A===e?M(null):null!==A&&A>e&&M(A-1))},he=p({keyOf:e=>String(e),canDrop:(e,n)=>n.parentId===E.parentId&&n.slot===E.slot,onDrop:(e,n)=>{const l=h({...E,index:e},n);l!==e&&de(e,l)},onStep:(e,n)=>de(e,e+n),canStep:(e,n)=>e+n>=0&&e+n<a.length,readOnly:R}),be=e=>{const n=[];return e>0&&n.push({label:Z.moveUp,icon:/* @__PURE__ */C(v,{size:14}),shortcut:"⌥↑",onClick:()=>de(e,e-1)}),e<a.length-1&&n.push({label:Z.moveDown,icon:/* @__PURE__ */C(g,{size:14}),shortcut:"⌥↓",onClick:()=>de(e,e+1)}),ee(e)&&n.push({label:Z.duplicate,icon:/* @__PURE__ */C(y,{size:14}),onClick:()=>(e=>{ee(e)&&(r(I(a,e+1,$(a[e]))),null!==A&&A>e&&M(A+1))})(e)}),_(e)&&n.push({label:Z.delete,icon:/* @__PURE__ */C(x,{size:14}),danger:!0,onClick:()=>pe(e)}),n},fe=(e,n,l)=>{R||0===be(e).length||se({index:e,x:n,y:l})},ve=e=>n=>{const l=a.slice();l[e]=n,r(l)};/* @__PURE__ */
|
|
2
|
+
return j("div",{className:"es-list",children:[Y?/* @__PURE__ */j("div",{className:"es-list-head",children:[
|
|
3
|
+
/* @__PURE__ */j("span",{className:"es-list-label",children:[l?/* @__PURE__ */C("span",{className:"es-field-icon","aria-hidden":"true",children:l}):null,e]}),
|
|
4
|
+
/* @__PURE__ */C("span",{className:"es-list-count",children:a.length})]}):null,W?/* @__PURE__ */C("div",{className:"es-list-above",children:W}):null,a.length?/* @__PURE__ */j("div",{className:"es-list-rows",...he.rootProps(),children:[a.map((e,l)=>{const t=he.row({item:l,place:{...E,index:l}}),a=t.draggable&&ae!==l,r=!T&&A===l,i=!R&&!z&&H&&U(l),o=["es-list-row",T?"is-inline":"is-item",r?"is-open":"",a?"is-draggable":"",t.dragging?"is-dragging":"",t.drop?`is-drop-${t.drop}`:""].filter(Boolean).join(" ");/* @__PURE__ */
|
|
5
|
+
return j("div",{className:"es-list-entry",children:[l>0?/* @__PURE__ */C(n,{...he.seam({place:{...E,index:l}}),onAdd:G?()=>me(l):void 0,label:Z.addHere({noun:q})}):null,
|
|
6
|
+
/* @__PURE__ */j("div",{...t.rowProps,ref:e=>{le.current[l]=e},className:o,draggable:a||void 0,"aria-keyshortcuts":t.draggable?"Alt+ArrowUp Alt+ArrowDown":void 0,onPointerDown:e=>{const n=e.target.closest?.('input, textarea, select, [contenteditable]:not([contenteditable="false"])'),a=!!n&&n===n.ownerDocument.activeElement;e.currentTarget.draggable=t.draggable&&!a,ie.current=n&&!a?n:null,re(a?l:null)},onDragStart:e=>{const n=ie.current;ie.current=null,n&&n.ownerDocument.activeElement===n&&n.blur(),t.rowProps.onDragStart?.(e)},onContextMenu:e=>{R||(e.preventDefault(),e.stopPropagation(),fe(l,e.clientX,e.clientY))},onKeyDown:e=>{if("ContextMenu"===e.key||e.shiftKey&&"F10"===e.key){e.preventDefault();const n=e.currentTarget.ownerDocument,t=e=>e.preventDefault();n.addEventListener("contextmenu",t,{capture:!0,once:!0}),n.defaultView?.setTimeout(()=>n.removeEventListener("contextmenu",t,{capture:!0}),500);const a=e.currentTarget.getBoundingClientRect();return void fe(l,a.left+24,a.bottom)}t.rowProps.onKeyDown?.(e)},children:[a?/* @__PURE__ */C("span",{className:"es-list-hint","aria-hidden":"true",children:X.dragHint}):null,T?/* @__PURE__ */C("div",{className:"es-list-row-main",children:T(e,l,ve(l))}):/* @__PURE__ */j("button",{type:"button",className:"es-list-open","aria-expanded":r,onClick:()=>M(r?null:l),children:[w?/* @__PURE__ */C("span",{className:"es-list-thumb","aria-hidden":"true",children:w(e,l)}):null,
|
|
7
|
+
/* @__PURE__ */C("span",{className:"es-list-row-name",children:ne(e,l)}),/* @__PURE__ */C("span",c?{className:"es-list-row-summary",children:c(e,l)}:{className:"es-list-row-summary"}),
|
|
8
|
+
/* @__PURE__ */C(b,{size:14,className:"es-list-chev","aria-hidden":"true"})]}),R||z||!H?null:i?/* @__PURE__ */C("span",{className:"es-list-lock",role:"img","aria-label":B?B(e,l):Z.locked,title:B?B(e,l):Z.locked,children:/* @__PURE__ */C(f,{size:13})}):/* @__PURE__ */C("button",{type:"button",className:"es-list-x","aria-label":Z.deleteItem({noun:q}),title:Z.deleteItem({noun:q}),disabled:!_(l),onClick:()=>pe(l),children:"×"})]}),r?/* @__PURE__ */C("div",{className:"es-list-item",children:J(e,l,ve(l))}):null]},l)}),
|
|
9
|
+
/* @__PURE__ */C(n,{...he.seam({place:{...E,index:a.length}})})]}):null,R||z?null:/* @__PURE__ */C("button",{type:"button",className:"es-list-add",disabled:!G,onClick:()=>me(a.length),children:Z.add({noun:q})}),
|
|
10
|
+
/* @__PURE__ */C("span",{className:"es-list-said","aria-live":"polite",children:ce}),oe&&oe.index<a.length?/* @__PURE__ */C(s,{x:oe.x,y:oe.y,items:be(oe.index),onClose:()=>se(null)}):null]})}var R=(e,n)=>"string"==typeof e.label&&e.label?e.label:n;function A({field:e,name:n,id:l,value:t,onChange:a,readOnly:i,context:o,renderers:s}){const[c,u]=N(!0),d=t&&"object"==typeof t?t:{};/* @__PURE__ */
|
|
11
|
+
return C(r,{id:`${l}-group`,title:R(e,n),open:c,onToggle:u,children:Object.entries(e.objectFields).map(([e,t])=>/* @__PURE__ */C(J,{field:t,name:`${n}.${e}`,id:`${l}-${e}`,value:d[e],onChange:n=>a({...d,[e]:n}),readOnly:i,context:o,renderers:s},e))})}function M({field:e,name:n,id:l,value:t,onChange:a,readOnly:r,context:i,renderers:o,openItem:s,onOpenItem:c}){const[u,d]=N(null),m=c?s??null:u,p=c??d,h=Array.isArray(t)?t:[],b=e.getItemSummary;/* @__PURE__ */
|
|
12
|
+
return C(P,{label:R(e,n),icon:e.icon,noun:"string"==typeof e.noun?e.noun:void 0,items:h,onChange:a,newItem:()=>$({...e.defaultItemProps??{}}),summary:b?(e,n)=>b(e,n):void 0,min:e.min,max:e.max,readOnly:r,open:m,onOpen:p,renderItem:(t,a,s)=>Object.entries(e.arrayFields).map(([e,c])=>/* @__PURE__ */C(J,{field:c,name:`${n}[${a}].${e}`,id:`${l}-${a}-${e}`,value:t?.[e],onChange:n=>s({...t,[e]:n}),readOnly:r,context:i,renderers:o},e))})}function J(n){const{field:t,name:a,id:r,value:i,onChange:o,readOnly:s,context:d,renderers:m}=n;if(!t||t.marker||!1===t.visible)return null;const p=m?.[t.type];if(p)return p({field:t,name:a,id:r,value:i,onChange:o,readOnly:s});switch(t.type){case"custom":{const e={...d,field:t,name:a,id:r,value:i,onChange:o,readOnly:s};return t.render(e)}case"text":case"textarea":/* @__PURE__ */
|
|
13
|
+
return C(l,{label:R(t,a),htmlFor:r,icon:t.icon,hint:t.hint,children:/* @__PURE__ */C(S,{id:r,value:"string"==typeof i?i:null==i?"":String(i),onChange:o,placeholder:t.placeholder,multiline:"textarea"===t.type,readOnly:s})});case"number":/* @__PURE__ */
|
|
14
|
+
return C(l,{label:R(t,a),htmlFor:r,icon:t.icon,hint:t.hint,children:/* @__PURE__ */C(c,{id:r,value:"number"==typeof i?i:void 0,onChange:o,min:t.min,max:t.max,step:t.step,placeholder:t.placeholder,readOnly:s})});case"select":{const n=`${r}-label`;/* @__PURE__ */
|
|
15
|
+
return C(l,{label:R(t,a),labelId:n,htmlFor:r,icon:t.icon,hint:t.hint,children:/* @__PURE__ */C(e,{id:r,value:i,options:t.options,onChange:o,readOnly:s,ariaLabelledBy:n})})}case"radio":/* @__PURE__ */
|
|
16
|
+
return C(l,{label:R(t,a),icon:t.icon,hint:t.hint,children:/* @__PURE__ */C(u,{ariaLabel:R(t,a),value:i,options:t.options.map(e=>({id:e.value,label:e.label,icon:e.icon,disabled:e.disabled||s})),onChange:e=>{s||o(e)}})});case"object":/* @__PURE__ */
|
|
17
|
+
return C(A,{...n,field:t});case"array":/* @__PURE__ */
|
|
18
|
+
return C(M,{...n,field:t});case"slot":return null}}var T=e=>t.includes(e);function K(e){let n=t[0];const l=[],a=/* @__PURE__ */new Set;for(const[t,r]of Object.entries(e))r&&(T(r.bucket)&&(n=r.bucket),r.marker||!1===r.visible||(l.push({name:t,field:r,bucket:n}),"slot"!==r.type&&a.add(n)));return{rows:l,buckets:t.filter(e=>a.has(e))}}function B(e){return new Map(K(e).rows.map(e=>[e.name,e.bucket]))}function z({fields:e,values:n,onChange:l,readOnly:t=!1,context:r,tab:i,onTab:s,tabs:c=!0,tabIcons:u,renderers:d,idPrefix:p,ariaLabel:h,children:b}){const f=m("panel",o),v=w(),g=p??`es-insp${v.replace(/:/g,"")}`,y=K(e),[x,k]=N(void 0),O=i??x,S=O&&y.buckets.includes(O)?O:y.buckets[0],[I,D]=N(null),F=I&&I.panel===g&&y.rows.some(e=>e.name===I.name)?I:null,$=c&&y.buckets.length>1,L=`${g}-rows`,E=e=>`${g}-tab-${e.toLowerCase()}`;/* @__PURE__ */
|
|
19
|
+
return j("div",{className:"es-insp",children:[$?/* @__PURE__ */C("div",{className:"es-insp-tabs",children:/* @__PURE__ */C(a,{ariaLabel:h??f.settings,activeId:S,onSelect:e=>{const n=e;void 0===i&&k(n),s?.(n)},items:y.buckets.map(e=>({id:e,label:f.buckets[e],icon:u?.[e],htmlId:E(e),panelId:L}))})}):null,
|
|
20
|
+
/* @__PURE__ */j("div",{className:"es-insp-rows",id:L,role:$?"tabpanel":void 0,"aria-labelledby":$&&S?E(S):void 0,children:[y.rows.map(({name:e,field:a,bucket:i})=>/* @__PURE__ */C("div",{className:"es-insp-row","data-field":e,"data-bucket":i,hidden:!(!$||i===S)||void 0,children:/* @__PURE__ */C(J,{field:a,name:e,id:`${g}-${e}`,value:n[e],onChange:n=>l(e,n),readOnly:t,context:r,renderers:d,openItem:F&&F.name===e?F.index:null,onOpenItem:n=>D(null===n?null:{panel:g,name:e,index:n})})},e)),b]})]})}function H(e){return"select"===e.type?e.options:"groups"===e.type?e.groups.flatMap(e=>e.options):[]}function V({value:n,onChange:l,kinds:t,rules:a,filtersFor:r,label:i,readOnly:o}){const s=m("fields",d).link??d.link,[c,u]=N(null),[p,h]=N(null),b=c??a.kindOf(n),f=t.filter(e=>!e.hideWhenEmpty||H(e.target).length>0||e.value===b),v=f.find(e=>"text"===e.target.type),g=f.find(e=>e.value===b)??v??f[0];if(!g)return null;const y="text"!==g.target.type,x=y?a.targetOf(n):n,k=H(g.target),O=k.find(e=>e.value===x),w=e=>({value:e,label:s.unavailable({value:e})}),S="select"===g.target.type&&x&&r?r(x):null,I=S?a.readFilter(n):null,D=I?S?.find(e=>e.param===I.param):void 0,F=p&&p.against===n?p.text:n,$=!y&&""!==F.trim()&&!a.isSafe(F),L=e=>{if(!e)return l("");const n=k.find(n=>n.value===e);l(e,n?.label)},E=(e,n)=>n&&!e.some(e=>e.value===n)?[w(n),...e]:[...e];let P;if("text"===g.target.type)P=/* @__PURE__ */C("input",{type:"text",className:"es-fin","aria-label":s.address,"aria-invalid":$||void 0,placeholder:s.addressPlaceholder,value:F,readOnly:o,onChange:e=>(e=>{const t=e.trim();t?a.isSafe(e)?(h({text:e,against:t}),l(t)):h({text:e,against:n}):(h({text:e,against:""}),l(""))})(e.target.value)});else{const n="groups"===g.target.type?g.target.groups.flatMap(e=>e.options.map(n=>({value:n.value,label:n.label,group:e.label}))):g.target.options.map(e=>({value:e.value,label:e.label}));P=/* @__PURE__ */C(e,{ariaLabel:g.label,value:x,options:[{value:"",label:g.target.placeholder},...E(n,x)],searchable:n.length>10,readOnly:o,onChange:L})}/* @__PURE__ */
|
|
21
|
+
return j("div",{className:"es-flink",role:i?"group":void 0,"aria-label":i,children:[
|
|
22
|
+
/* @__PURE__ */C(e,{ariaLabel:s.linkType,value:g.value,options:f.map(e=>({value:e.value,label:e.label})),readOnly:o,onChange:e=>{u(e),h(null);const n=f.find(n=>n.value===e);if(!n||"text"===n.target.type)return;const t=H(n.target)[0];t?l(t.value,t.label):l("")}}),P,S&&/* @__PURE__ */C(e,{ariaLabel:s.filter,value:I?.param??"",options:[{value:"",label:s.noFilter},...I&&!D?[w(I.param)]:[],...S.map(e=>({value:e.param,label:e.label}))],readOnly:o,onChange:e=>{if(!e)return l(x,O?.label);const n=S?.find(n=>n.param===e),t=n?.values[0];t&&l(a.withFilter(x,{param:e,value:t.value}),t.label)}}),S&&I&&/* @__PURE__ */C(e,{ariaLabel:s.value,value:I.value,options:E((D?.values??[]).map(e=>({value:e.value,label:e.label})),I.value),searchable:(D?.values.length??0)>10,readOnly:o,onChange:e=>{if(!I)return;const n=D?.values.find(n=>n.value===e);l(a.withFilter(x,{param:I.param,value:e}),n?.label)}}),$&&/* @__PURE__ */C("p",{className:"es-flink-error",role:"alert",children:s.unsafe}),g.hint&&/* @__PURE__ */C("p",{className:"es-flink-hint",children:g.hint}),S&&/* @__PURE__ */C("p",{className:"es-flink-hint",children:s.filterHint})]})}export{S as FieldText,z as Inspector,J as InspectorField,V as LinkPicker,P as ListField,B as bucketsOf,$ as copyItem,I as insertAt,R as labelOf,D as moveTo,K as planFields,F as removeAt};
|
package/dist/gold/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{GoldLayer,GoldTextInput,goldSegments}from"../chunk-
|
|
1
|
+
export{GoldLayer,GoldTextInput,goldSegments}from"../chunk-2FZJWH24.js";import"../chunk-546BBOPE.js";var e={accent:"var(--gold, #c9a461)",quiet:"var(--es-muted, #6b7280)",caret:"var(--es-text, #111827)",placeholder:"var(--es-field-placeholder, #9ca3af)",delimiterOpacity:"0.35",delimiterRestingOpacity:"0.25",boldShadow:"0 0 0.4px currentColor",italicDecoration:"underline dotted",strikeDecoration:"line-through",pad:"0"},t={accent:"--es-gold-accent",quiet:"--es-gold-quiet",caret:"--es-gold-caret",placeholder:"--es-gold-placeholder",delimiterOpacity:"--es-gold-delim-opacity",delimiterRestingOpacity:"--es-gold-delim-resting-opacity",boldShadow:"--es-gold-bold-shadow",italicDecoration:"--es-gold-italic-decoration",strikeDecoration:"--es-gold-strike-decoration",pad:"--es-gold-pad"};export{t as goldCssVars,e as goldTokens};
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -170,6 +170,7 @@ declare const iconMeanings: {
|
|
|
170
170
|
readonly "align-justify": "JUSTIFY — text whose rows run edge to edge. Worn by the Justify button on the final text box's second toolbar row, beside Left, Center and Right, and by the Justify chip of the alignment strip. Three full-width rows on the same three heights the other alignment glyphs use. Decided 2026-10-06 (the design was made final that day).";
|
|
171
171
|
readonly "panel-left": "the LEFT SIDE PANEL itself — worn by the Hide panel button at the end of a left panel's head (`MediaPanelHead`, both editors' SidePanelHeads) and by the Show panel button in the strip a hidden left panel leaves. One control, so one drawing: hiding and showing the panel wear the same glyph. A frame with its left column ruled off. ⛔ NOT an ✕: an ✕ closes a dialog, and a panel head has none (owner, 2026-10-04).";
|
|
172
172
|
readonly "panel-right": "the RIGHT SIDE PANEL itself — the twin of `panel-left` for the settings panel: its head's Hide panel button and the strip a hidden right panel leaves. A frame with its right column ruled off.";
|
|
173
|
+
readonly braces: "INSERT A MERGE TAG — a word that fills in for each reader ({{first_name}}, a coupon code). Worn by the Insert button the campaign designer puts in the 9th cell of the final text box's first toolbar row (`CopyBox` `lastTool`), which opens its list of tags. Two curly braces, the shape a merge tag is written in. Decided 2026-10-07. ⛔ NOT `code` or a pair of angle brackets: nothing here is code, and the braces are the tag's own spelling.";
|
|
173
174
|
};
|
|
174
175
|
type IconName = keyof typeof iconMeanings;
|
|
175
176
|
/** Delete · keep · efficient-shop · components/UiIcon.tsx:99 */
|
|
@@ -500,5 +501,7 @@ declare function AlignJustifyIcon({ size, ...rest }: IconProps): react.JSX.Eleme
|
|
|
500
501
|
declare function PanelLeftIcon({ size, ...rest }: IconProps): react.JSX.Element;
|
|
501
502
|
/** the RIGHT SIDE PANEL itself — the twin of `panel-left` for the settings panel: its head's Hide panel button and the strip a hidden right panel leaves. A frame with its right column ruled off. · new · efficient-easel · card [MERGE] One Media Panel Head For Both Editors, 2026-10-06 — the drawing both editors already carried twice: efficient-storefront components/PanelToggleIcon.tsx and efficient-admin-portal src/components/email/CampaignTopBar.tsx `PanelToggleGlyph`. */
|
|
502
503
|
declare function PanelRightIcon({ size, ...rest }: IconProps): react.JSX.Element;
|
|
504
|
+
/** INSERT A MERGE TAG — a word that fills in for each reader ({{first_name}}, a coupon code). Worn by the Insert button the campaign designer puts in the 9th cell of the final text box's first toolbar row (`CopyBox` `lastTool`), which opens its list of tags. Two curly braces, the shape a merge tag is written in. Decided 2026-10-07. ⛔ NOT `code` or a pair of angle brackets: nothing here is code, and the braces are the tag's own spelling. · new · efficient-easel · card [CHANGE] Undo Button Becomes Clear Style, 2026-10-07 — Lewis's ruling on mockup v2 https://claude.ai/artifact/GiyeV3xazepzArKGVkFM8T, which draws Insert with this path; asked for by GG for the admin card [CHANGE] Email Insert Moves Into The Toolbar (icons come from easel). */
|
|
505
|
+
declare function BracesIcon({ size, ...rest }: IconProps): react.JSX.Element;
|
|
503
506
|
|
|
504
|
-
export { AccentIcon, AccountIcon, AddIcon, AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, AlignSeparateIcon, AnchorIcon, AnimationIcon, BackgroundIcon, BellIcon, BlackAndWhiteIcon, BlockBadgeIcon, BlockBannerIcon, BlockBoxIcon, BlockButtonIcon, BlockColumnIcon, BlockCouponIcon, BlockDividerIcon, BlockFooterIcon, BlockHeadingIcon, BlockIncludedListIcon, BlockLayeredImagesIcon, BlockProductIcon, BlockSectionIcon, BlockSocialIcon, BlockSpacerIcon, BlockTextIcon, BlockVideoIcon, BlogPostIcon, BoldIcon, BreadcrumbIcon, ButtonArrowIcon, ButtonIcon, CarIcon, CartIcon, CaseIcon, CaseLowerIcon, CaseNormalIcon, CaseUpperIcon, CategoryIcon, ChatIcon, CheckIcon, ChevronIcon, ClearMarksIcon, ClockIcon, CloseIcon, ColumnGapIcon, ColumnWidthsIcon, ColumnsIcon, ContrastIcon, CopyIcon, CopyStyleIcon, CopyToPageIcon, CornerIcon, DesktopIcon, DiagramIcon, DirectionDownIcon, DirectionIcon, DirectionLeftIcon, DirectionRightIcon, DirectionUpIcon, DollarIcon, DragIcon, DropIcon, DuplicateIcon, EmphasisIcon, ExternalIcon, EyeIcon, EyeOffIcon, FinishIcon, FullWidthIcon, GapIcon, GlobeIcon, GridIcon, GroundIcon, HashIcon, HeadquartersIcon, HeightIcon, HoverIcon, type IconName, type IconProps, ImageIcon, ItalicIcon, LayersIcon, LayoutIcon, LetterSpacingIcon, LineBetweenIcon, LineStyleIcon, LinkIcon, ListIcon, LocationIcon, LockIcon, LogoIcon, MediaIcon, MenuIcon, MetaIcon, MoveDownIcon, MoveUpIcon, NoteIcon, NudgeIcon, NumberedListIcon, OpacityIcon, OwnTextIcon, PaddingBottomIcon, PaddingLeftIcon, PaddingRightIcon, PaddingTopIcon, PaddingXIcon, PaddingYIcon, PageIcon, PanelLeftIcon, PanelRightIcon, ParagraphSpacingIcon, PasteIcon, PasteStyleIcon, PhoneIcon, PlacementIcon, PlayIcon, PlusMinusIcon, ProductFieldIcon, ProductSizeIcon, QuietIcon, RadiusIcon, RedoIcon, RenameIcon, RevertIcon, RotateIcon, ScrollPointIcon, SearchIcon, SendIcon, SettingsIcon, ShadowIcon, SitemapIcon, SortIcon, SpecTableIcon, SquareIcon, StateIcon, StickyIcon, StrikeIcon, StylesIcon, SubscriptIcon, SuperscriptIcon, TabletIcon, TabsIcon, TagIcon, TemplateIcon, TextColorIcon, TextLinesIcon, TextSizeIcon, TextSmallIcon, ThemeIcon, TitleIcon, TrashIcon, TriggerIcon, TypeIcon, UnderlineIcon, UndoIcon, VAlignIcon, WarningIcon, WeightIcon, WheelIcon, WidthIcon, WordsFromIcon, WrapIcon, iconMeanings };
|
|
507
|
+
export { AccentIcon, AccountIcon, AddIcon, AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, AlignSeparateIcon, AnchorIcon, AnimationIcon, BackgroundIcon, BellIcon, BlackAndWhiteIcon, BlockBadgeIcon, BlockBannerIcon, BlockBoxIcon, BlockButtonIcon, BlockColumnIcon, BlockCouponIcon, BlockDividerIcon, BlockFooterIcon, BlockHeadingIcon, BlockIncludedListIcon, BlockLayeredImagesIcon, BlockProductIcon, BlockSectionIcon, BlockSocialIcon, BlockSpacerIcon, BlockTextIcon, BlockVideoIcon, BlogPostIcon, BoldIcon, BracesIcon, BreadcrumbIcon, ButtonArrowIcon, ButtonIcon, CarIcon, CartIcon, CaseIcon, CaseLowerIcon, CaseNormalIcon, CaseUpperIcon, CategoryIcon, ChatIcon, CheckIcon, ChevronIcon, ClearMarksIcon, ClockIcon, CloseIcon, ColumnGapIcon, ColumnWidthsIcon, ColumnsIcon, ContrastIcon, CopyIcon, CopyStyleIcon, CopyToPageIcon, CornerIcon, DesktopIcon, DiagramIcon, DirectionDownIcon, DirectionIcon, DirectionLeftIcon, DirectionRightIcon, DirectionUpIcon, DollarIcon, DragIcon, DropIcon, DuplicateIcon, EmphasisIcon, ExternalIcon, EyeIcon, EyeOffIcon, FinishIcon, FullWidthIcon, GapIcon, GlobeIcon, GridIcon, GroundIcon, HashIcon, HeadquartersIcon, HeightIcon, HoverIcon, type IconName, type IconProps, ImageIcon, ItalicIcon, LayersIcon, LayoutIcon, LetterSpacingIcon, LineBetweenIcon, LineStyleIcon, LinkIcon, ListIcon, LocationIcon, LockIcon, LogoIcon, MediaIcon, MenuIcon, MetaIcon, MoveDownIcon, MoveUpIcon, NoteIcon, NudgeIcon, NumberedListIcon, OpacityIcon, OwnTextIcon, PaddingBottomIcon, PaddingLeftIcon, PaddingRightIcon, PaddingTopIcon, PaddingXIcon, PaddingYIcon, PageIcon, PanelLeftIcon, PanelRightIcon, ParagraphSpacingIcon, PasteIcon, PasteStyleIcon, PhoneIcon, PlacementIcon, PlayIcon, PlusMinusIcon, ProductFieldIcon, ProductSizeIcon, QuietIcon, RadiusIcon, RedoIcon, RenameIcon, RevertIcon, RotateIcon, ScrollPointIcon, SearchIcon, SendIcon, SettingsIcon, ShadowIcon, SitemapIcon, SortIcon, SpecTableIcon, SquareIcon, StateIcon, StickyIcon, StrikeIcon, StylesIcon, SubscriptIcon, SuperscriptIcon, TabletIcon, TabsIcon, TagIcon, TemplateIcon, TextColorIcon, TextLinesIcon, TextSizeIcon, TextSmallIcon, ThemeIcon, TitleIcon, TrashIcon, TriggerIcon, TypeIcon, UnderlineIcon, UndoIcon, VAlignIcon, WarningIcon, WeightIcon, WheelIcon, WidthIcon, WordsFromIcon, WrapIcon, iconMeanings };
|
package/dist/icons/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{AccentIcon,AccountIcon,AddIcon,AlignCenterIcon,AlignJustifyIcon,AlignLeftIcon,AlignRightIcon,AlignSeparateIcon,AnchorIcon,AnimationIcon,BackgroundIcon,BellIcon,BlackAndWhiteIcon,BlockBadgeIcon,BlockBannerIcon,BlockBoxIcon,BlockButtonIcon,BlockColumnIcon,BlockCouponIcon,BlockDividerIcon,BlockFooterIcon,BlockHeadingIcon,BlockIncludedListIcon,BlockLayeredImagesIcon,BlockProductIcon,BlockSectionIcon,BlockSocialIcon,BlockSpacerIcon,BlockTextIcon,BlockVideoIcon,BlogPostIcon,BoldIcon,BreadcrumbIcon,ButtonArrowIcon,ButtonIcon,CarIcon,CartIcon,CaseIcon,CaseLowerIcon,CaseNormalIcon,CaseUpperIcon,CategoryIcon,ChatIcon,CheckIcon,ChevronIcon,ClearMarksIcon,ClockIcon,CloseIcon,ColumnGapIcon,ColumnWidthsIcon,ColumnsIcon,ContrastIcon,CopyIcon,CopyStyleIcon,CopyToPageIcon,CornerIcon,DesktopIcon,DiagramIcon,DirectionDownIcon,DirectionIcon,DirectionLeftIcon,DirectionRightIcon,DirectionUpIcon,DollarIcon,DragIcon,DropIcon,DuplicateIcon,EmphasisIcon,ExternalIcon,EyeIcon,EyeOffIcon,FinishIcon,FullWidthIcon,GapIcon,GlobeIcon,GridIcon,GroundIcon,HashIcon,HeadquartersIcon,HeightIcon,HoverIcon,ImageIcon,ItalicIcon,LayersIcon,LayoutIcon,LetterSpacingIcon,LineBetweenIcon,LineStyleIcon,LinkIcon,ListIcon,LocationIcon,LockIcon,LogoIcon,MediaIcon,MenuIcon,MetaIcon,MoveDownIcon,MoveUpIcon,NoteIcon,NudgeIcon,NumberedListIcon,OpacityIcon,OwnTextIcon,PaddingBottomIcon,PaddingLeftIcon,PaddingRightIcon,PaddingTopIcon,PaddingXIcon,PaddingYIcon,PageIcon,PanelLeftIcon,PanelRightIcon,ParagraphSpacingIcon,PasteIcon,PasteStyleIcon,PhoneIcon,PlacementIcon,PlayIcon,PlusMinusIcon,ProductFieldIcon,ProductSizeIcon,QuietIcon,RadiusIcon,RedoIcon,RenameIcon,RevertIcon,RotateIcon,ScrollPointIcon,SearchIcon,SendIcon,SettingsIcon,ShadowIcon,SitemapIcon,SortIcon,SpecTableIcon,SquareIcon,StateIcon,StickyIcon,StrikeIcon,StylesIcon,SubscriptIcon,SuperscriptIcon,TabletIcon,TabsIcon,TagIcon,TemplateIcon,TextColorIcon,TextLinesIcon,TextSizeIcon,TextSmallIcon,ThemeIcon,TitleIcon,TrashIcon,TriggerIcon,TypeIcon,UnderlineIcon,UndoIcon,VAlignIcon,WarningIcon,WeightIcon,WheelIcon,WidthIcon,WordsFromIcon,WrapIcon,iconMeanings}from"../chunk-
|
|
1
|
+
export{AccentIcon,AccountIcon,AddIcon,AlignCenterIcon,AlignJustifyIcon,AlignLeftIcon,AlignRightIcon,AlignSeparateIcon,AnchorIcon,AnimationIcon,BackgroundIcon,BellIcon,BlackAndWhiteIcon,BlockBadgeIcon,BlockBannerIcon,BlockBoxIcon,BlockButtonIcon,BlockColumnIcon,BlockCouponIcon,BlockDividerIcon,BlockFooterIcon,BlockHeadingIcon,BlockIncludedListIcon,BlockLayeredImagesIcon,BlockProductIcon,BlockSectionIcon,BlockSocialIcon,BlockSpacerIcon,BlockTextIcon,BlockVideoIcon,BlogPostIcon,BoldIcon,BracesIcon,BreadcrumbIcon,ButtonArrowIcon,ButtonIcon,CarIcon,CartIcon,CaseIcon,CaseLowerIcon,CaseNormalIcon,CaseUpperIcon,CategoryIcon,ChatIcon,CheckIcon,ChevronIcon,ClearMarksIcon,ClockIcon,CloseIcon,ColumnGapIcon,ColumnWidthsIcon,ColumnsIcon,ContrastIcon,CopyIcon,CopyStyleIcon,CopyToPageIcon,CornerIcon,DesktopIcon,DiagramIcon,DirectionDownIcon,DirectionIcon,DirectionLeftIcon,DirectionRightIcon,DirectionUpIcon,DollarIcon,DragIcon,DropIcon,DuplicateIcon,EmphasisIcon,ExternalIcon,EyeIcon,EyeOffIcon,FinishIcon,FullWidthIcon,GapIcon,GlobeIcon,GridIcon,GroundIcon,HashIcon,HeadquartersIcon,HeightIcon,HoverIcon,ImageIcon,ItalicIcon,LayersIcon,LayoutIcon,LetterSpacingIcon,LineBetweenIcon,LineStyleIcon,LinkIcon,ListIcon,LocationIcon,LockIcon,LogoIcon,MediaIcon,MenuIcon,MetaIcon,MoveDownIcon,MoveUpIcon,NoteIcon,NudgeIcon,NumberedListIcon,OpacityIcon,OwnTextIcon,PaddingBottomIcon,PaddingLeftIcon,PaddingRightIcon,PaddingTopIcon,PaddingXIcon,PaddingYIcon,PageIcon,PanelLeftIcon,PanelRightIcon,ParagraphSpacingIcon,PasteIcon,PasteStyleIcon,PhoneIcon,PlacementIcon,PlayIcon,PlusMinusIcon,ProductFieldIcon,ProductSizeIcon,QuietIcon,RadiusIcon,RedoIcon,RenameIcon,RevertIcon,RotateIcon,ScrollPointIcon,SearchIcon,SendIcon,SettingsIcon,ShadowIcon,SitemapIcon,SortIcon,SpecTableIcon,SquareIcon,StateIcon,StickyIcon,StrikeIcon,StylesIcon,SubscriptIcon,SuperscriptIcon,TabletIcon,TabsIcon,TagIcon,TemplateIcon,TextColorIcon,TextLinesIcon,TextSizeIcon,TextSmallIcon,ThemeIcon,TitleIcon,TrashIcon,TriggerIcon,TypeIcon,UnderlineIcon,UndoIcon,VAlignIcon,WarningIcon,WeightIcon,WheelIcon,WidthIcon,WordsFromIcon,WrapIcon,iconMeanings}from"../chunk-L5KW4HG5.js";
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk-OWBO4WKA.js";export{SPACING_SCALE,shellCssVars,shellTokens}from"./chunk-2UX75JDP.js";export{EaselRail,EaselRailButton,railCssVars,railTokens}from"./chunk-WZ7TGAAT.js";import"./chunk-2OAZYSWJ.js";import"./chunk-BZ5ASXOL.js";export{AddIcon,LayersIcon,MediaIcon,PageIcon as PagesIcon,SitemapIcon,StylesIcon}from"./chunk-
|
|
1
|
+
import"./chunk-OWBO4WKA.js";export{SPACING_SCALE,shellCssVars,shellTokens}from"./chunk-2UX75JDP.js";export{EaselRail,EaselRailButton,railCssVars,railTokens}from"./chunk-WZ7TGAAT.js";import"./chunk-2OAZYSWJ.js";import"./chunk-BZ5ASXOL.js";export{AddIcon,LayersIcon,MediaIcon,PageIcon as PagesIcon,SitemapIcon,StylesIcon}from"./chunk-L5KW4HG5.js";
|
package/dist/markup/index.d.ts
CHANGED
|
@@ -543,6 +543,23 @@ declare function sameMarks(a: readonly MarkedLine[], b: readonly MarkedLine[]):
|
|
|
543
543
|
* literal underscore. And if even that would not read back, nothing changes.
|
|
544
544
|
*/
|
|
545
545
|
declare function clearMarks(text: string, start: number, end: number, rules?: readonly InlineRule[]): WrapResult;
|
|
546
|
+
/**
|
|
547
|
+
* The final toolbar's Clear style (owner ruling, 2026-10-07): take EVERY mark
|
|
548
|
+
* off the WORDS in `text[start:end]` but a link, keeping the words selected —
|
|
549
|
+
* the bar's (bold, italic, underline, strikethrough, colour, superscript,
|
|
550
|
+
* subscript) and the retired ones it no longer offers (Emphasis, Quiet, the
|
|
551
|
+
* legacy accent), so the words come back plain (GG, 2026-10-07). A link is
|
|
552
|
+
* content, not style; a line's bullet or number is a line, not a mark.
|
|
553
|
+
*
|
|
554
|
+
* A run the selection only partly covers is split, so the rest of it keeps
|
|
555
|
+
* its mark; a split the grammar cannot hold (the middle of `_word_`) takes the
|
|
556
|
+
* run off whole; and if even that would not read back, nothing changes.
|
|
557
|
+
*
|
|
558
|
+
* With nothing selected nothing changes: the button is disabled then, so a
|
|
559
|
+
* press can never wipe a whole paragraph. Unlike {@link clearMarks} (the 0.94
|
|
560
|
+
* bar's Clear marks), which with a caret takes off the runs it touches.
|
|
561
|
+
*/
|
|
562
|
+
declare function clearStyle(text: string, start: number, end: number, rules?: readonly InlineRule[]): WrapResult;
|
|
546
563
|
/**
|
|
547
564
|
* Press `style` on the WORDS in `text[start:end]`, whichever runs they sit in —
|
|
548
565
|
* what a view that hides the delimiters needs, where `applyMark` (which wraps
|
|
@@ -609,4 +626,4 @@ declare function setList(text: string, start: number, end: number, kind: 'bullet
|
|
|
609
626
|
* kind of list line, else null — what the list buttons draw as pressed. */
|
|
610
627
|
declare function listIn(text: string, start: number, end: number, rules?: readonly InlineRule[]): 'bullet' | 'number' | null;
|
|
611
628
|
|
|
612
|
-
export { CAMPAIGN_MARKUP, COPY_FIELD_TOOLS, type InlineKind, type InlineRule, type InlineToken, type LinkSpan, MARKUP_TOOLS, MARK_NAMES, MARK_PLACEHOLDERS, type MarkPlaceholders, type MarkSpan, type MarkStyle, type MarkedChar, type MarkedLine, type MarkupLine, type MarkupLink, type MarkupNode, type MarkupRun, type MarkupText, type MarkupTool, RETIRED_MARKS, STANDARD_MARKUP, STOREFRONT_MARKUP, type SpanKind, type WrapResult, applyColor, applyMark, clearMarks, colorIn, colorOver, findLink, isColorName, isColorValue, isSafeLinkHref, linkOver, listIn, markedAt, markedLines, marksIn, markupTools, parseMarkup, removeLink, sameMarks, serializeMarkup, setList, spanFor, stripInline, toggleMark, tokenizeInline, unlinkAt, writeLink, writeMarkedLines };
|
|
629
|
+
export { CAMPAIGN_MARKUP, COPY_FIELD_TOOLS, type InlineKind, type InlineRule, type InlineToken, type LinkSpan, MARKUP_TOOLS, MARK_NAMES, MARK_PLACEHOLDERS, type MarkPlaceholders, type MarkSpan, type MarkStyle, type MarkedChar, type MarkedLine, type MarkupLine, type MarkupLink, type MarkupNode, type MarkupRun, type MarkupText, type MarkupTool, RETIRED_MARKS, STANDARD_MARKUP, STOREFRONT_MARKUP, type SpanKind, type WrapResult, applyColor, applyMark, clearMarks, clearStyle, colorIn, colorOver, findLink, isColorName, isColorValue, isSafeLinkHref, linkOver, listIn, markedAt, markedLines, marksIn, markupTools, parseMarkup, removeLink, sameMarks, serializeMarkup, setList, spanFor, stripInline, toggleMark, tokenizeInline, unlinkAt, writeLink, writeMarkedLines };
|
package/dist/markup/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{CAMPAIGN_MARKUP,COPY_FIELD_TOOLS,MARKUP_TOOLS,MARK_NAMES,MARK_PLACEHOLDERS,RETIRED_MARKS,STANDARD_MARKUP,STOREFRONT_MARKUP,applyColor,applyMark,clearMarks,colorIn,colorOver,findLink,isColorName,isColorValue,isSafeLinkHref,linkOver,listIn,markedAt,markedLines,marksIn,markupTools,parseMarkup,removeLink,sameMarks,serializeMarkup,setList,spanFor,stripInline,toggleMark,tokenizeInline,unlinkAt,writeLink,writeMarkedLines}from"../chunk-
|
|
1
|
+
export{CAMPAIGN_MARKUP,COPY_FIELD_TOOLS,MARKUP_TOOLS,MARK_NAMES,MARK_PLACEHOLDERS,RETIRED_MARKS,STANDARD_MARKUP,STOREFRONT_MARKUP,applyColor,applyMark,clearMarks,clearStyle,colorIn,colorOver,findLink,isColorName,isColorValue,isSafeLinkHref,linkOver,listIn,markedAt,markedLines,marksIn,markupTools,parseMarkup,removeLink,sameMarks,serializeMarkup,setList,spanFor,stripInline,toggleMark,tokenizeInline,unlinkAt,writeLink,writeMarkedLines}from"../chunk-546BBOPE.js";
|
package/dist/menu/index.js
CHANGED
|
@@ -1,15 +1 @@
|
|
|
1
|
-
|
|
2
|
-
/* @__PURE__ */i(o,{children:[
|
|
3
|
-
/* @__PURE__ */a("div",{ref:f,"data-es-menu":"",role:"menu","aria-label":d.find(e=>e.header)?.label,className:C.menu,style:F({left:w.x,top:w.y,maxHeight:h||void 0}),children:d.map((e,n)=>"—"===e.label?
|
|
4
|
-
/* @__PURE__ */a("div",{role:"separator",className:C.divider},n):e.header?/* @__PURE__ */a("div",{className:C.header,children:e.label},n):e.children?.length?/* @__PURE__ */i("button",{type:"button",role:"menuitem","aria-haspopup":"menu","aria-expanded":g?.i===n,onMouseEnter:t=>M(e,n,t.currentTarget),onFocus:t=>M(e,n,t.currentTarget),onClick:t=>M(e,n,t.currentTarget),className:E(e),style:C.itemStyle,children:[
|
|
5
|
-
/* @__PURE__ */a(L,{of:e}),
|
|
6
|
-
/* @__PURE__ */a("span",{className:C.label,children:e.label}),
|
|
7
|
-
/* @__PURE__ */a(T,{of:e}),
|
|
8
|
-
/* @__PURE__ */a("span",{"aria-hidden":"true",className:C.chevron,children:"›"})]},n):/* @__PURE__ */a("button",{type:"button",role:"menuitem",onMouseEnter:()=>v(null),onClick:()=>{e.onClick(),m()},className:E(e),style:C.itemStyle,children:B(e)?/* @__PURE__ */i(o,{children:[
|
|
9
|
-
/* @__PURE__ */a(L,{of:e}),
|
|
10
|
-
/* @__PURE__ */a("span",{className:C.label,children:e.label}),
|
|
11
|
-
/* @__PURE__ */a(T,{of:e})]}):e.label},n))}),D?.children?.length&&g?/* @__PURE__ */a("div",{ref:y,"data-es-menu":"",role:"menu","aria-label":D.label,className:C.menuSub??C.menu,style:F({left:g.x,top:g.y}),children:D.children.map((e,n)=>/* @__PURE__ */i("button",{type:"button",role:"menuitemradio","aria-checked":Boolean(e.checked),onClick:()=>{e.onClick(),m()},className:E(e),style:C.itemStyle,children:[
|
|
12
|
-
/* @__PURE__ */a(S,{on:Boolean(e.checked)}),
|
|
13
|
-
/* @__PURE__ */a(L,{of:e}),
|
|
14
|
-
/* @__PURE__ */a("span",{className:C.labelSub??C.label,children:e.label}),
|
|
15
|
-
/* @__PURE__ */a(T,{of:e})]},n))}):null]}),p??document.body)}var u=/\b(transform|translate|rotate|scale|perspective|filter|backdrop-filter|contain)\b/;function d(e){const n=n=>e.getPropertyValue(n).trim(),t=(e,t)=>{const r=n(e);return""!==r&&!t.includes(r)};return!!t("transform",["none"])||(!!(t("translate",["none"])||t("rotate",["none"])||t("scale",["none"]))||(!!t("perspective",["none"])||(!!t("filter",["none"])||(!(!t("backdrop-filter",["none"])&&!t("-webkit-backdrop-filter",["none"]))||(!!/\b(layout|paint|strict|content)\b/.test(n("contain"))||(!!t("container-type",["normal"])||(!!t("content-visibility",["visible"])||u.test(n("will-change")))))))))}function m(e){const n=e?.ownerDocument,t=n?.defaultView;if(!(e&&n&&t&&e.isConnected))return null;for(let r=e;r&&r!==n.body&&r!==n.documentElement;r=r.parentElement)if(d(t.getComputedStyle(r)))return null;return e}export{c as ES_MENU_SKIN,s as EaselContextMenu,m as menuPortalTarget};
|
|
1
|
+
export{ES_MENU_SKIN,EaselContextMenu}from"../chunk-KTVH2ZRL.js";var e=/\b(transform|translate|rotate|scale|perspective|filter|backdrop-filter|contain)\b/;function t(t){const n=e=>t.getPropertyValue(e).trim(),r=(e,t)=>{const r=n(e);return""!==r&&!t.includes(r)};return!!r("transform",["none"])||(!!(r("translate",["none"])||r("rotate",["none"])||r("scale",["none"]))||(!!r("perspective",["none"])||(!!r("filter",["none"])||(!(!r("backdrop-filter",["none"])&&!r("-webkit-backdrop-filter",["none"]))||(!!/\b(layout|paint|strict|content)\b/.test(n("contain"))||(!!r("container-type",["normal"])||(!!r("content-visibility",["visible"])||e.test(n("will-change")))))))))}function n(e){const n=e?.ownerDocument,r=n?.defaultView;if(!(e&&n&&r&&e.isConnected))return null;for(let o=e;o&&o!==n.body&&o!==n.documentElement;o=o.parentElement)if(t(r.getComputedStyle(o)))return null;return e}export{n as menuPortalTarget};
|
package/dist/node-ops/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DEFAULT_NODE_MENU_WORDS as e}from"../chunk-WK3AFPXY.js";export{canStep,fromItemSelector,parentStep,planDuplicate,planMove,planPaste,planRemove,planSetProps,planStep,toItemSelector,useNodeOps}from"../chunk-D2BCHTQR.js";import{TrashIcon as n,EyeIcon as t,EyeOffIcon as o,RenameIcon as p,PasteIcon as l,CopyIcon as c,MoveDownIcon as s,MoveUpIcon as a,DuplicateIcon as i,AddIcon as r,LayersIcon as u}from"../chunk-
|
|
1
|
+
import{DEFAULT_NODE_MENU_WORDS as e}from"../chunk-WK3AFPXY.js";export{canStep,fromItemSelector,parentStep,planDuplicate,planMove,planPaste,planRemove,planSetProps,planStep,toItemSelector,useNodeOps}from"../chunk-D2BCHTQR.js";import{TrashIcon as n,EyeIcon as t,EyeOffIcon as o,RenameIcon as p,PasteIcon as l,CopyIcon as c,MoveDownIcon as s,MoveUpIcon as a,DuplicateIcon as i,AddIcon as r,LayersIcon as u}from"../chunk-L5KW4HG5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";import{jsx as h}from"react/jsx-runtime";function d(){let e=null;const n=/* @__PURE__ */new Set;return{get:()=>e,set(t){e=t;for(const e of[...n])e()},subscribe:e=>(n.add(e),()=>n.delete(e))}}var m={layer:{icon:/* @__PURE__ */h(u,{})},addInside:{icon:/* @__PURE__ */h(r,{})},duplicate:{icon:/* @__PURE__ */h(i,{})},moveUp:{icon:/* @__PURE__ */h(a,{})},moveDown:{icon:/* @__PURE__ */h(s,{})},copy:{icon:/* @__PURE__ */h(c,{}),shortcut:"⌘C"},cut:{icon:/* @__PURE__ */h(c,{}),shortcut:"⌘X"},paste:{icon:/* @__PURE__ */h(l,{}),shortcut:"⌘V"},rename:{icon:/* @__PURE__ */h(p,{})},hide:{icon:/* @__PURE__ */h(o,{})},show:{icon:/* @__PURE__ */h(t,{})},upLevel:{},delete:{icon:/* @__PURE__ */h(n,{}),danger:!0}};function v(n){const{actions:t,rows:o={},extras:p={},words:l=e}=n,c=e=>({...m[e],label:l[e],...o[e]}),s=(e,n,t)=>{const o=c(e),p={label:t??o.label??e,onClick:n};return o.icon&&(p.icon=o.icon),o.shortcut&&(p.shortcut=o.shortcut),o.danger&&(p.danger=!0),p},a=()=>{const e=c("layer"),t={label:e.label??l.layer,onClick:()=>{},children:n.layer.items};return e.icon&&(t.icon=e.icon),t},i=[],r=[],u=[],h=[],d=!!n.layer&&n.layer.items.length>1;if(d&&"pick"===(n.layer.group??"pick")&&i.push(a()),t.addInside&&r.push(s("addInside",t.addInside)),t.duplicate&&r.push(s("duplicate",t.duplicate)),t.moveUp&&r.push(s("moveUp",t.moveUp)),t.moveDown&&r.push(s("moveDown",t.moveDown)),t.copy&&r.push(s("copy",t.copy)),t.cut&&r.push(s("cut",t.cut)),t.paste){const e=c("paste").label??l.paste;r.push(s("paste",t.paste.run,l.pasteNamed({paste:e,label:t.paste.label})))}t.rename&&u.push(s("rename",t.rename)),t.hide&&u.push(t.hide.hidden?s("show",t.hide.run):s("hide",t.hide.run)),d&&"change"===n.layer.group&&u.push(a()),t.upLevel&&u.push(s("upLevel",t.upLevel)),t.delete&&h.push(s("delete",t.delete)),i.push(...p.pick??[]),r.push(...p.make??[]),u.push(...p.change??[]),h.push(...p.remove??[]);const v=[i,r,n.style??[],u,h].filter(e=>e.length>0),g=i.length+r.length+u.length+h.length===0,k=[{label:n.title,header:!0,onClick:()=>{}}];return g&&n.pinnedLine&&k.push({label:n.pinnedLine,header:!0,onClick:()=>{}}),v.forEach((e,t)=>{(t>0||g&&n.pinnedLine)&&k.push({label:"—",onClick:()=>{}}),k.push(...e)}),k}export{d as createNodeClipboard,v as nodeMenuItems};
|
package/dist/panel/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { W as WordFit } from '../wordFit-D4S36PvB.js';
|
|
4
|
-
import { P as PanelWords } from '../words-
|
|
4
|
+
import { P as PanelWords } from '../words-BGrHZAJJ.js';
|
|
5
5
|
export { a as SETTINGS_BUCKETS, S as SettingsBucket } from '../buckets-CuLM47h9.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -387,38 +387,42 @@ interface SettingsFieldProps {
|
|
|
387
387
|
className?: string;
|
|
388
388
|
}
|
|
389
389
|
/**
|
|
390
|
-
* `SettingsDefaultReset` — the end of a label line
|
|
391
|
-
*
|
|
390
|
+
* `SettingsDefaultReset` — the end of a label line: a ↺ button while the value
|
|
391
|
+
* is changed, an empty 22px slot while it follows its default (owner
|
|
392
|
+
* 2026-10-06; option E, final 2026-10-07).
|
|
392
393
|
*/
|
|
393
394
|
interface SettingsDefaultResetProps {
|
|
394
|
-
/** The field's visible label. The
|
|
395
|
+
/** The field's visible label. The ↺ button is named after it ("Reset Gap"). */
|
|
395
396
|
label: string;
|
|
396
397
|
/** Is the value changed from its default? The host's to say. */
|
|
397
398
|
changed: boolean;
|
|
398
399
|
/** Clear the value back to its default. The part writes nothing itself. */
|
|
399
400
|
onReset: () => void;
|
|
400
401
|
/**
|
|
401
|
-
* What the default IS, in the
|
|
402
|
-
*
|
|
403
|
-
*
|
|
402
|
+
* What the default IS, in the host's words — "24px from Site styles". The ↺
|
|
403
|
+
* says it: in its tooltip ("Reset Gap (back to 24px from Site styles)") and
|
|
404
|
+
* as its accessible description, while its NAME stays "Reset Gap" (GG
|
|
405
|
+
* 2026-10-07, E2). Read it live; a baked value goes stale. Nothing shows it
|
|
406
|
+
* while the setting is unchanged: the slot is empty then.
|
|
404
407
|
*/
|
|
405
408
|
detail?: string;
|
|
406
|
-
/** Read-only (a sent campaign):
|
|
409
|
+
/** Read-only (a sent campaign): ↺ is drawn, and cannot be pressed. */
|
|
407
410
|
disabled?: boolean;
|
|
408
411
|
/**
|
|
409
|
-
* Rare:
|
|
410
|
-
*
|
|
411
|
-
* their default can be a responsive `clamp()` no slider
|
|
412
|
-
* one press keeps the section's own built-in size.
|
|
413
|
-
*
|
|
414
|
-
* Left out,
|
|
412
|
+
* Rare: something to press while the setting is UNCHANGED, for a row a
|
|
413
|
+
* merchant cannot leave by hand. The website's type sizes are the case (GG
|
|
414
|
+
* 2026-10-06, Q3): their default can be a responsive `clamp()` no slider
|
|
415
|
+
* position stores, so one press keeps the section's own built-in size.
|
|
416
|
+
* `icon` is drawn in the 22px slot; `title` is its name and its tooltip.
|
|
417
|
+
* Left out, an unchanged row draws nothing — the usual case.
|
|
415
418
|
*/
|
|
416
419
|
defaultAction?: {
|
|
417
420
|
onPress: () => void;
|
|
418
421
|
title: string;
|
|
422
|
+
icon: ReactNode;
|
|
419
423
|
};
|
|
420
424
|
/** The host's words, from `useWords('panel', …)`. English when left out. */
|
|
421
|
-
words?: Partial<Pick<PanelWords, 'followsDefault' | 'reset' | 'resetName' | 'backToDefault'>>;
|
|
425
|
+
words?: Partial<Pick<PanelWords, 'followsDefault' | 'reset' | 'resetName' | 'backToDefault' | 'resetTitle'>>;
|
|
422
426
|
className?: string;
|
|
423
427
|
}
|
|
424
428
|
/**
|
|
@@ -939,29 +943,36 @@ declare function SettingsField({ label, labelId, icon, value, hint, changed, htm
|
|
|
939
943
|
declare function SettingsSwitch({ checked, onChange, disabled, id, ariaLabel, ariaLabelledBy, className, }: SettingsSwitchProps): react.JSX.Element;
|
|
940
944
|
|
|
941
945
|
/**
|
|
942
|
-
* The end of a setting's label line:
|
|
943
|
-
*
|
|
944
|
-
*
|
|
945
|
-
* Owner, 2026-10-06
|
|
946
|
-
* the website's "Inherits · Site" chip and
|
|
947
|
-
*
|
|
948
|
-
*
|
|
949
|
-
*
|
|
950
|
-
*
|
|
951
|
-
*
|
|
952
|
-
*
|
|
953
|
-
*
|
|
954
|
-
*
|
|
955
|
-
*
|
|
956
|
-
*
|
|
957
|
-
*
|
|
958
|
-
*
|
|
959
|
-
* `
|
|
960
|
-
*
|
|
961
|
-
*
|
|
962
|
-
*
|
|
963
|
-
*
|
|
964
|
-
*
|
|
946
|
+
* The end of a setting's label line: a ↺ button once the setting is changed,
|
|
947
|
+
* NOTHING while it is not. ONE part, both editors.
|
|
948
|
+
*
|
|
949
|
+
* Owner, 2026-10-06: the two editors said "follows its default / put it back"
|
|
950
|
+
* five ways (the website's "Inherits · Site" chip and blue reset dot, the
|
|
951
|
+
* email's "Default" mark, "Reset" link and "Reset to default" text), and it
|
|
952
|
+
* became one part. Option E, final 2026-10-07 (mockup
|
|
953
|
+
* https://claude.ai/artifact/KATfHhLK7wogfTD84Manox), gave it its look:
|
|
954
|
+
*
|
|
955
|
+
* changed the set's `revert` icon (↺, "Revert to inherited") in a 22px
|
|
956
|
+
* button, accent; its name "Reset <setting>", its tooltip that
|
|
957
|
+
* plus what it goes back to when the host says ("(back to 24px
|
|
958
|
+
* from Site styles)", also its description);
|
|
959
|
+
* unchanged nothing at all: the row's grey value already says it is the
|
|
960
|
+
* default. The 22px slot stays, empty and out of the tab order,
|
|
961
|
+
* so every row's end lines up.
|
|
962
|
+
*
|
|
963
|
+
* It rides `SettingsField`'s `action` slot; `SettingsField` leaves its name
|
|
964
|
+
* alone (only a switch is named after the field).
|
|
965
|
+
*
|
|
966
|
+
* FOCUS AFTER A PRESS. Reset turns the button into the empty slot, which cannot
|
|
967
|
+
* hold focus, so a keyboard user would fall back to the top of the page. The
|
|
968
|
+
* press hands focus to the row's own control (its slider, box or swatch) first.
|
|
969
|
+
* That is read off the event's own element, never a global, so the module stays
|
|
970
|
+
* a leaf.
|
|
971
|
+
*
|
|
972
|
+
* `defaultAction` is the one row with something to press while unchanged: the
|
|
973
|
+
* website's type sizes, whose default can be a responsive `clamp()` no slider
|
|
974
|
+
* stores, keep ONE press to the section's own built-in size (a feature is
|
|
975
|
+
* never cut to fit a look). It draws the host's icon in the same 22px slot.
|
|
965
976
|
*
|
|
966
977
|
* CONTROLLED and hook-free like the rest of the panel: `changed` is the host's,
|
|
967
978
|
* and a press only asks the host to clear. The words are handed in (`words`),
|
package/dist/panel/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export{SETTINGS_BUCKETS,SettingsField,SettingsGroup,SettingsTabs}from"../chunk-
|
|
2
|
-
return
|
|
3
|
-
return
|
|
4
|
-
return
|
|
5
|
-
return
|
|
6
|
-
return
|
|
7
|
-
/* @__PURE__ */
|
|
8
|
-
/* @__PURE__ */
|
|
9
|
-
/* @__PURE__ */
|
|
10
|
-
return
|
|
11
|
-
return
|
|
12
|
-
return
|
|
13
|
-
/* @__PURE__ */
|
|
14
|
-
return
|
|
15
|
-
return
|
|
16
|
-
/* @__PURE__ */
|
|
17
|
-
/* @__PURE__ */
|
|
18
|
-
/* @__PURE__ */
|
|
1
|
+
export{SETTINGS_BUCKETS,SettingsField,SettingsGroup,SettingsTabs}from"../chunk-ZNS7727Y.js";import{DEFAULT_PANEL_WORDS as e}from"../chunk-QTLAVDJE.js";export{SettingsSegmented,SettingsSwitch}from"../chunk-P6O363EE.js";import"../chunk-BZ5ASXOL.js";import{RevertIcon as a}from"../chunk-L5KW4HG5.js";import{jsx as l,jsxs as s}from"react/jsx-runtime";function i({title:e,level:a=3,id:s,className:i}){/* @__PURE__ */
|
|
2
|
+
return l(`h${a}`,{id:s,className:i?`es-group-head ${i}`:"es-group-head",children:e})}function n({title:e,level:a=4,id:s,className:i}){/* @__PURE__ */
|
|
3
|
+
return l(`h${a}`,{id:s,className:i?`es-group-sub ${i}`:"es-group-sub",children:e})}function t({label:s,changed:i,onReset:n,detail:t,disabled:r,defaultAction:d,words:o,className:u}){const p={...e,...o},m=["es-default-reset"];if(i&&m.push("is-changed"),u&&m.push(u),!i&&d)return m.push("is-pressable"),/* @__PURE__ */l("button",{type:"button",className:m.join(" "),"aria-label":d.title,title:d.title,disabled:r,onClick:d.onPress,children:d.icon});if(!i)/* @__PURE__ */
|
|
4
|
+
return l("span",{className:m.join(" "),"aria-hidden":"true"});const b=p.resetName({label:s});/* @__PURE__ */
|
|
5
|
+
return l("button",{type:"button",className:m.join(" "),"aria-label":b,"aria-description":t||void 0,title:t?p.resetTitle({label:s,detail:t}):b,disabled:r,onClick:e=>{n(),function(e){const a=e.currentTarget.closest(".es-field"),l=a?.querySelector(c(".es-field-ctl"))??a?.querySelector(c(".es-field-head"));l?.focus()}(e)},children:/* @__PURE__ */l(a,{size:15})})}var r=['input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled]):not(.es-default-reset)",'[tabindex]:not([tabindex="-1"])'].join(", "),c=e=>r.split(", ").map(a=>`${e} ${a}`).join(", ");function d({name:e,preview:a,offPage:i,status:n,onOpen:t,id:r,className:c}){const d=null!=a;/* @__PURE__ */
|
|
6
|
+
return s("button",{type:"button",id:r,className:c?`es-drill ${c}`:"es-drill",onClick:t,children:[
|
|
7
|
+
/* @__PURE__ */s("span",{className:"es-drill-text",children:[
|
|
8
|
+
/* @__PURE__ */l("span",{className:"es-drill-name",children:e}),d?/* @__PURE__ */l("span",{className:i?"es-drill-preview is-offpage":"es-drill-preview",children:a}):null]}),n?/* @__PURE__ */l("span",{className:"es-drill-status",children:n}):null,
|
|
9
|
+
/* @__PURE__ */l("span",{className:"es-drill-chev","aria-hidden":"true"})]})}function o({label:e,value:a,points:s,onChange:i,id:n,className:t}){/* @__PURE__ */
|
|
10
|
+
return l("div",{id:n,className:"es-placement"+(t?` ${t}`:""),role:"radiogroup","aria-label":e,children:s.map(e=>{const s=a===e.value,n=!0===e.disabled;/* @__PURE__ */
|
|
11
|
+
return l("button",{type:"button",role:"radio","aria-checked":s,"aria-label":e.label,"aria-disabled":n||void 0,disabled:n,title:e.title??e.label,className:`es-placement-cell${s?" is-active":""}${n?" is-off":""}`,onClick:()=>i(e.value),children:e.icon?/* @__PURE__ */l("span",{className:"es-placement-icon","aria-hidden":"true",children:e.icon}):/* @__PURE__ */l("span",{className:"es-placement-dot"})},e.value)})})}function u({label:e,value:a,corners:i,onChange:n,id:t,className:r}){/* @__PURE__ */
|
|
12
|
+
return s("div",{id:t,className:"es-corners"+(r?` ${r}`:""),role:"group","aria-label":e,children:[
|
|
13
|
+
/* @__PURE__ */l("span",{className:"es-corners-frame","aria-hidden":"true"}),i.map(e=>{const s=a.includes(e.value),i=!0===e.disabled;/* @__PURE__ */
|
|
14
|
+
return l("button",{type:"button","aria-pressed":s,"aria-label":e.label,"aria-disabled":i||void 0,disabled:i,title:e.title??e.label,className:`es-corners-cell es-corners-${e.value}${s?" is-on":""}${i?" is-off":""}`,onClick:()=>n(s?a.filter(a=>a!==e.value):[...a,e.value]),children:/* @__PURE__ */l("span",{className:"es-corners-mark","aria-hidden":"true"})},e.value)})]})}function p({label:e,onPress:a,disabled:i,note:n,done:t,doneLabel:r,icon:c,id:d,className:o}){const u=void 0===r?e:r,p=t?u:e,m=null!=n,b=m&&d?`${d}-note`:void 0;/* @__PURE__ */
|
|
15
|
+
return s("div",{className:o?`es-action-wrap ${o}`:"es-action-wrap",children:[
|
|
16
|
+
/* @__PURE__ */s("button",{type:"button",id:d,className:t?"es-action is-done":"es-action",disabled:i,"aria-describedby":b,onClick:a,children:[c?/* @__PURE__ */l("span",{className:"es-action-icon","aria-hidden":"true",children:c}):null,
|
|
17
|
+
/* @__PURE__ */l("span",{className:"es-action-label",children:p})]}),m?/* @__PURE__ */l("p",{id:b,className:"es-action-note",children:n}):null,
|
|
18
|
+
/* @__PURE__ */l("span",{className:"es-action-live",role:"status","aria-live":"polite",children:t?u:null})]})}export{p as SettingsAction,u as SettingsCorners,t as SettingsDefaultReset,d as SettingsDrill,i as SettingsGroupHead,n as SettingsGroupSub,o as SettingsPlacement};
|