@mohsinonxrm/pptb-commandbar-studio 0.8.0-beta.1 → 0.9.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +564 -0
- package/README.md +71 -48
- package/SECURITY.md +12 -7
- package/dist/assets/BulkPublishModal-DzDZJg0U.js +36 -0
- package/dist/assets/CommandEditorPanel-DsCP9yG4.js +1 -0
- package/dist/assets/CommandPalette-ID3kRJ9l.js +1 -0
- package/dist/assets/CompareView-DGsrcdoN.js +7 -0
- package/dist/assets/CrmParameterEditor-C22QGWff.js +1 -0
- package/dist/assets/EditorDrawer-CvCe9WeO.js +2 -0
- package/dist/assets/HideInsteadOfDeleteModal-3j9g-E9l.js +1 -0
- package/dist/assets/IconPickerModal-BLoDLbLR.js +1 -0
- package/dist/assets/ImportXmlModal-BD-L1QzJ.js +1 -0
- package/dist/assets/{MonacoEditor-uzfuRCpJ.js → MonacoEditor-BMKRZv-g.js} +1 -1
- package/dist/assets/NewButtonModal-COYXwEyk.js +1 -0
- package/dist/assets/NewGroupModal-boP_t1fI.js +1 -0
- package/dist/assets/NewTabModal-BI4afbC5.js +1 -0
- package/dist/assets/RuleEditorPanel-l8QnRFj6.js +1 -0
- package/dist/assets/ScriptView-BVyCmRvD.js +1 -0
- package/dist/assets/TabDisplayRulesPanel-gORq6MO7.js +1 -0
- package/dist/assets/TranslationsView-DubBATog.js +1 -0
- package/dist/assets/WebResourceBrowser-BATScmTw.js +1 -0
- package/dist/assets/XmlView-Bn4KlTw3.js +2 -0
- package/dist/assets/dnd-C1w9VFfC.js +5 -0
- package/dist/assets/fluent-icons-CQEhzzaC.js +1 -0
- package/dist/assets/fluent-ui-BEjALNLO.js +59 -0
- package/dist/assets/index-6so8O90C.js +136 -0
- package/dist/assets/index-D5GCH8nj.css +1 -0
- package/dist/assets/ruleKinds-BKTUiZ1-.js +1 -0
- package/dist/assets/useReplaceWebResourceConfirm-DND-V0vw.js +1 -0
- package/dist/assets/useStableKeys-BkDn7til.js +1 -0
- package/dist/assets/{xmlValidator-BkeotXuB.js → xmlValidator-PbODaIQV.js} +1 -1
- package/dist/index.html +15 -9
- package/index.html +10 -4
- package/package.json +1 -1
- package/dist/assets/BulkPublishModal-mJ41AWew.js +0 -36
- package/dist/assets/CommandEditorPanel-BiP1kPHY.js +0 -1
- package/dist/assets/CommandPalette-q51_0qRZ.js +0 -1
- package/dist/assets/ConflictDrawer-CdWv_PbN.js +0 -1
- package/dist/assets/DiffViewer-BQP5f73U.js +0 -7
- package/dist/assets/HideInsteadOfDeleteModal-C9r6ah5p.js +0 -1
- package/dist/assets/IconPickerModal-B81Tnf5i.js +0 -1
- package/dist/assets/ImportXmlModal-C0cMaS59.js +0 -1
- package/dist/assets/LocalizationEditor-DniDtrZV.js +0 -1
- package/dist/assets/NewButtonModal-BXpX1Ld5.js +0 -1
- package/dist/assets/NewGroupModal-Bh7lXq52.js +0 -1
- package/dist/assets/NewTabModal-Pntdk3in.js +0 -1
- package/dist/assets/RuleEditorPanel-BUGKgc0N.js +0 -1
- package/dist/assets/ScalingEditorPanel-p3-Yw3CO.js +0 -1
- package/dist/assets/TabDisplayRulesPanel-CSNshwaw.js +0 -1
- package/dist/assets/UrlComposerModal-WKSTwUcW.js +0 -1
- package/dist/assets/WebResourceBrowser-BK-gVU2g.js +0 -1
- package/dist/assets/XmlDrawer-CQJElnD1.js +0 -2
- package/dist/assets/dnd-Cq8OftAq.js +0 -5
- package/dist/assets/fluent-icons-BqJj6rDi.js +0 -1
- package/dist/assets/fluent-ui-QADO660t.js +0 -43
- package/dist/assets/index-D9lerlVA.css +0 -1
- package/dist/assets/index-Di2_5czx.js +0 -136
- package/dist/assets/ruleKinds-B9hACGaq.js +0 -1
- package/dist/assets/useReplaceWebResourceConfirm-BUWBVNSC.js +0 -1
- package/dist/assets/useStableKeys-p2OkzZWO.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as c,K as ze}from"./fluent-icons-CQEhzzaC.js";import{a as W}from"./monaco-BIO15LCS.js";import{ad as Ne,t as Fe,ae as Pe,af as We,ag as Ue,ah as _e,ai as Ye,b as ne,R as De,Y as Je,a as Ke,a6 as Ve}from"./index-6so8O90C.js";import{a as Qe}from"./xmlValidator-PbODaIQV.js";import{M as Ze}from"./MonacoEditor-BMKRZv-g.js";import{b as k,af as de,L as et,N as tt,B as Ie,h as _,t as E}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";import"./ruleKinds-BKTUiZ1-.js";import"./crmParameters-rgfZhhzN.js";const ge=["HomepageGrid","SubGrid","Form"],ue=[...ge,"Application"],pe=new Set(["Button","FlyoutAnchor","SplitButton","TextBox","ComboBox","CheckBox"]),me=new Set(["flyout","splitButton"]),he=/^Mscrm\.(HomepageGrid|SubGrid|Form)\.([^.]+)\./,ve="._children",ot=/<(EnableRule|DisplayRule)\b[^>]*?\sId="([^"]+)"/,fe=/\$LocLabels:([^"'\s<]+)/g,Le="cbs.import.Tab",nt="cbs.import.Group",je=(i,f)=>JSON.stringify(i)===JSON.stringify(f);function U(i){return i?Array.from(i.children):[]}function st(i){return Object.fromEntries(Array.from(i.attributes).map(f=>[f.name,f.value]))}function it(i,f,d){const m=i.documentElement;if(m.tagName==="RibbonDiffXml")return m;const h=Array.from(i.getElementsByTagName("RibbonDiffXml")),$=Array.from(i.querySelectorAll("Entities > Entity")).flatMap(l=>{const A=U(l),O=A.find(v=>v.tagName==="RibbonDiffXml"),T=A.find(v=>v.tagName==="Name")?.textContent?.trim()??"";return O?[{name:T,rdx:O}]:[]}),w=h.find(l=>l.parentElement===m);if($.length===0&&!w){if(h.length===1)return h[0];throw new Error(h.length===0?"No <RibbonDiffXml> element found.":`The XML has ${h.length} <RibbonDiffXml> elements and none belongs to a table or the application ribbon — paste just one.`)}const G=[...$.map(l=>l.name||"(unnamed table)"),...w?["the application ribbon"]:[]].join(", ");if(d){if(w)return w;throw new Error(`The XML has no application ribbon RibbonDiffXml (it has: ${G}). Open that table's ribbon to import its customizations.`)}const S=$.find(l=>l.name.toLowerCase()===f.toLowerCase());if(S)return S.rdx;throw new Error(`The XML has no RibbonDiffXml for ${f||"the loaded table"} (it has: ${G}). Load that table, or open the application ribbon for the application ribbon's customizations.`)}function rt(i){switch(i){case"HomePageGrid":return"HomepageGrid";case"Form":return"Form";case"SubGridStandard":case"SubGridAssociated":return"SubGrid";default:return}}function at(i){const f=i.languageCode??1033,d=i.entityLogicalName,m=new DOMParser().parseFromString(i.xml,"application/xml");if(m.querySelector("parsererror"))throw new Error("The XML is not well-formed.");const h=i.activeLocation==="Application",$=it(m,d,h),w=new XMLSerializer,G=w.serializeToString($),S=[],l=[],A=[],O=!!d&&new RegExp(`Mscrm\\.(HomepageGrid|SubGrid|Form)\\.${d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\.`,"i").test(G),T=h&&!($===m.documentElement&&O);$!==m.documentElement?A.push(`Imported the RibbonDiffXml of ${T?"the application ribbon":d} from the document.`):h&&!T&&A.push(`The XML's Locations name the ${d} table, so it was imported as that table's customizations, not the application ribbon's.`);const v=T?"Application":ge.includes(i.activeLocation)?i.activeLocation:"HomepageGrid",B=Ne(G,i.activeLocation,d),H=(e,t,o)=>{const s=new Map,n=new Map;for(const y of t)s.set(y.id,y),n.set(y.id,(n.get(y.id)??0)+1);for(const[y,x]of n)x>1&&A.push(`${o} ${y} is defined ${x} times in the XML — the last one was used.`);const u=Array.from(s.values()),a=[...e],p=[];let b=0;for(const y of u){const x=a.findIndex(D=>D.id===y.id);if(x>=0&&je(a[x],y)){b++;continue}S.push(`${o} ${y.id} ${x>=0?"updated":"added"}`),x>=0?a[x]=y:a.push(y),p.push(y.id)}return{out:a,changedIds:p,unchanged:b}},L=H(i.commands,B.commands,"Command"),z=H(i.enableRules,B.enableRules,"Enable rule"),N=H(i.displayRules,B.displayRules,"Display rule"),C=H(i.locLabels,B.locLabels,"Label"),X=C.out,q=L.unchanged+z.unchanged+N.unchanged+C.unchanged,M=(e,t)=>e&&Ye(e,X,f)||t,j=JSON.parse(JSON.stringify(i.ribbons));let I=!1,F=0;const r=new Set,g=e=>{if(T)return ue.slice().reverse();const t=he.exec(e),o=t&&t[2]!=="{!EntityLogicalName}"?t[1]:v;return[o,...ge.filter(s=>s!==o),"Application"]},R=(e,t)=>{T&&e!=="Application"?A.push(`${t} is on the table's ribbon (${e}), not the application ribbon: the change is published with the table.`):!T&&e==="Application"&&A.push(`${t} was found only on the application ribbon: the change is published to the application ribbon and affects every table.`)},ie=[],P=(e,t)=>{e&&e!==t&&ie.push(e)},Y=e=>{for(const t of g(e))for(const o of j[t].tabs){const s=o.groups.find(n=>n.id===e);if(s)return{location:t,tab:o,group:s}}},J=e=>{for(const t of g(e)){const o=j[t].tabs.find(s=>s.id===e);if(o)return{location:t,tab:o}}},K=e=>{for(const t of g(e)){const o=[];for(const s of j[t].tabs)for(const n of s.groups)for(const u of n.buttons)u.id===e&&o.push({group:n,button:u});if(o.length>0)return{location:t,found:o}}},V=(e,t)=>{const o=he.exec(t);let s="it isn't in the loaded ribbon";o&&o[2]!=="{!EntityLogicalName}"&&d&&o[2]!==d?s=`it belongs to the ${o[2]} table, but ${d} is loaded`:(o?.[2]==="{!EntityLogicalName}"||t.startsWith("Mscrm.Global"))&&(s="it belongs to the application ribbon, which isn't loaded with it"),l.push(`${e}: Location "${t}" not found — ${s}.`)},Ee=U($.querySelector(":scope > RuleDefinitions > TabDisplayRules")).map(e=>w.serializeToString(e)).join(""),re=e=>Ne(`<RibbonDiffXml><UI><Ribbon><Tabs>${e}</Tabs></Ribbon></UI><RuleDefinitions><TabDisplayRules>${Ee}</TabDisplayRules></RuleDefinitions></RibbonDiffXml>`,i.activeLocation,d,X).ribbon.tabs[0],Q=e=>w.serializeToString(e),ye=e=>re(`<Tab Id="${Le}"><Groups><Group Id="${nt}"><Controls>${Q(e)}</Controls></Group></Groups></Tab>`)?.groups[0]?.buttons.find(t=>t.id===e.getAttribute("Id")),xe=e=>{const t=e.source;t&&(e.label=M(t.labelToken,e.id),t.tooltipTitleToken&&(e.tooltipTitle=M(t.tooltipTitleToken,"")),t.tooltipBodyToken&&(e.tooltipBody=M(t.tooltipBodyToken,"")))},Z=e=>{for(const t of e.source?.xml?[e.source.xml]:Object.values(e.source?.attributes??{}))for(const[,o]of t.matchAll(fe))X.some(s=>s.id===o)||l.push(`${e.id}: references label ${o}, which neither the XML nor the loaded ribbon defines — add its <LocLabel>, or its text won't show unless another solution defines it (the pre-publish check warns).`)},$e=e=>({titleToken:e.getAttribute("Title")??void 0,attributes:st(e)}),Ae=(e,t)=>(_e(e,{origin:"unmanaged"}),e.hidden=!1,t!==void 0&&!e.source?.attributes.Sequence&&(e.sequence=t),xe(e),Z(e),e),ae=e=>l.push(`${e}: flyout / split buttons and their menus can't be imported yet (#27).`),Oe=(e,t)=>{const o=new Set(Array.from(e.querySelectorAll("Menu *")).map(n=>n.getAttribute("Id")).filter(n=>!!n)),s=[];for(const n of t?.buttons??[])o.has(n.id)||(me.has(n.kind)?ae(n.id):s.push(Ae(n)));return s},ee=(e,t)=>{const o=e.findIndex(s=>s.sequence>t.sequence);e.splice(o<0?e.length:o,0,t)},we=(e,t,o)=>{const s=K(e),n=ye(t);if(!s||!n)return!1;xe(n),Z(n),R(s.location,e);for(const{group:u,button:a}of s.found){if(n.kind!==a.kind)return l.push(`${e}: changing a <${t.tagName}> into another kind of control isn't supported.`),!0;if(me.has(a.kind))return ae(e),!0;const p=JSON.parse(JSON.stringify(a));Object.assign(a,{label:n.label,tooltipTitle:n.tooltipTitle,tooltipBody:n.tooltipBody,icon:n.icon,image16:n.image16,image32:n.image32,commandId:n.commandId,templateAlias:n.templateAlias||a.templateAlias,source:structuredClone(n.source)});const b=n.source?.attributes.Sequence?n.sequence:o;b!==void 0&&b!==a.sequence&&(a.origin==="unmanaged"?(u.buttons.splice(u.buttons.indexOf(a),1),a.sequence=b,ee(u.buttons,a)):l.push(`${e}: Sequence ${b} not applied — only your own buttons can be re-ordered.`)),Ue(p,a)||p.sequence!==a.sequence?(I=!0,S.push(`Updated ${a.label} (${e}) on ${s.location}`),n.templateAlias||A.push(`${e}: the override has no TemplateAlias — ${a.templateAlias} from the loaded control is kept.`)):(Object.assign(a,p),je(p.source?.attributes,n.source?.attributes)?F++:l.push(`${e}: the override only changes attributes CBS doesn't publish yet (label, tooltip, icon, command and template alias are).`))}return!0},Ce=(e,t,o,s)=>{const n=t.getAttribute("Id");if(!n)return l.push(`CustomAction ${e.getAttribute("Id")}: the control has no Id.`);const u=K(n);if(u){u.found.some(b=>b.group.id===o)||l.push(`${n}: already in group ${u.found[0].group.id} — updated there, not moved to ${o}.`),we(n,t,s)&&P(e.getAttribute("Id"),`${n}.Override.CustomAction`);return}const a=Y(o);if(!a)return V(`${n}`,e.getAttribute("Location")??"");const p=ye(t);if(!p)return l.push(`${n}: couldn't read the <${t.tagName}>.`);if(me.has(p.kind))return ae(n);ee(a.group.buttons,Ae(p,s)),R(a.location,n),P(e.getAttribute("Id"),`${n}.CustomAction`),I=!0,S.push(`Added ${p.label} (${n}) to ${a.group.id} on ${a.location}`)},Se=(e,t)=>{const o=re(`<Tab Id="${Le}"><Groups>${Q(e)}</Groups></Tab>`)?.groups[0];if(!o)return;const s=$e(e);return Z({id:o.id,source:s}),{...o,label:M(s.titleToken,o.id),source:s,sequence:e.getAttribute("Sequence")===null?t??o.sequence:o.sequence,buttons:Oe(e,o)}},Xe=(e,t,o,s)=>{const n=t.getAttribute("Id");if(!n)return l.push(`CustomAction ${e.getAttribute("Id")}: the group has no Id.`);if(Y(n)){l.push(`Group ${n} already exists — it was left as is (re-titling groups isn't supported).`);for(const b of U(t.querySelector(":scope > Controls")))pe.has(b.tagName)?Ce(e,b,n,void 0):Pe(We[b.tagName])&&l.push(`${b.getAttribute("Id")??"(no Id)"}: adding a <${b.tagName}> to an existing group isn't supported — Command Bar Studio shows it read-only.`);return}const a=J(o);if(!a)return V(`Group ${n}`,e.getAttribute("Location")??"");const p=Se(t,s);if(!p)return l.push(`Group ${n}: couldn't read the <Group>.`);ee(a.tab.groups,p),R(a.location,n),P(e.getAttribute("Id"),`${n}.CustomAction`),I=!0,S.push(`Added group ${p.label} (${n}) with ${p.buttons.length} control(s) to ${o} on ${a.location}`)},ke=(e,t,o)=>{const s=t.getAttribute("Id");if(!s)return l.push(`CustomAction ${e.getAttribute("Id")}: the tab has no Id.`);if(J(s))return l.push(`Tab ${s} already exists — it was left as is.`);const n=re(Q(t));if(!n)return l.push(`Tab ${s}: couldn't read the <Tab>.`);const u=n.tabDisplayRules.flatMap(D=>D.rules.map(Te=>Te.kind==="EntityRule"?rt(Te.context):void 0)),a=T?"Application":u.find(D=>!!D)??he.exec(s)?.[1]??v,b=Array.from(t.querySelectorAll(":scope > Groups > Group")).map(D=>Se(D,void 0)).filter(D=>!!D),y=$e(t);Z({id:s,source:y});const x={...n,label:M(y.titleToken,s),source:y,sequence:t.getAttribute("Sequence")===null?o??n.sequence:n.sequence,groups:b};ee(j[a].tabs,x),P(e.getAttribute("Id"),`${s}.CustomAction`),x.commandId&&(r.add(x.commandId),L.out.some(D=>D.id===x.commandId)||(L.out.push({id:x.commandId,enableRules:[],displayRules:[],actions:[]}),L.changedIds.push(x.commandId),A.push(`Tab ${s}: its Command ${x.commandId} has no CommandDefinition in the XML — an empty one was added.`))),I=!0,S.push(`Added tab ${x.label} (${s}) with ${b.length} group(s) to ${a}`),t.querySelector(":scope > Scaling > Scale")&&l.push(`Tab ${s}: its <Scale> steps weren't imported — CBS writes a default MaxSize for each group.`)},Ge=e=>{const t=e.getAttribute("Location")??"",o=K(t);if(o){const s=o.found.filter(n=>!n.button.hidden);for(const n of s)n.button.hidden=!0;s.length>0?(R(o.location,t),P(e.getAttribute("HideActionId"),`${t}.HideAction`),I=!0,S.push(`Hid ${s[0].button.label} (${t}) on ${o.location}`)):F++;return}if(Y(t)||J(t))return l.push(`Hiding ${t}: hiding whole groups or tabs isn't supported yet — hide their buttons.`);l.push(`Hiding ${t}: not found in the loaded ribbon (it may belong to another table, or already be hidden by your customizations).`)},Me=e=>{const t=e.getAttribute("Id")??"(no Id)",o=e.getAttribute("Location")??"",s=e.getAttribute("Sequence"),n=s===null?void 0:parseInt(s,10),u=U(e.querySelector(":scope > CommandUIDefinition"))[0];if(!u)return l.push(`CustomAction ${t}: no <CommandUIDefinition> content.`);const a=u.tagName;if(o.endsWith(ve)){const p=o.slice(0,-ve.length);return p.endsWith(".Controls")&&pe.has(a)?Ce(e,u,p.slice(0,-9),n):p.endsWith(".Groups")&&a==="Group"?Xe(e,u,p.slice(0,-7),n):p==="Mscrm.Tabs"&&a==="Tab"?ke(e,u,n):p.endsWith(".Scaling")&&(a==="MaxSize"||a==="Scale")?l.push(`CustomAction ${t}: <${a}> scaling isn't imported — CBS writes a default MaxSize for each new group.`):l.push(`CustomAction ${t}: a <${a}> at "${o}" isn't supported.`)}if(pe.has(a)&&u.getAttribute("Id")===o){if(we(o,u,n)){P(t,`${o}.Override.CustomAction`);return}return V(`Override ${t}`,o)}return K(o)||Y(o)||J(o)?l.push(`CustomAction ${t}: replacing ${o} with a <${a}> isn't supported — only overriding a control with the same Id is.`):V(`CustomAction ${t}`,o)},Be=U($.querySelector(":scope > CustomActions"));for(const e of Be)e.tagName==="CustomAction"?Me(e):e.tagName==="HideCustomAction"?Ge(e):l.push(`<${e.tagName}> in CustomActions isn't supported.`);const te=new Set;for(const e of ue)for(const t of j[e].tabs)for(const o of t.groups)for(const s of o.buttons)for(const n of Fe(s))te.add(n);for(const e of r)te.add(e);const le=new Set,ce=new Set;for(const e of L.out)if(te.has(e.id)){e.enableRules.forEach(t=>le.add(t)),e.displayRules.forEach(t=>ce.add(t));for(const t of e.rawRuleRefs??[]){const o=ot.exec(t.xml);o&&(o[1]==="EnableRule"?le:ce).add(o[2])}}const oe=(e,t,o,s)=>{for(const n of e)t.has(n)||l.push(`${o} ${n} was imported but ${s}, so it won't be published.`)};oe(L.changedIds,te,"Command","no button on the loaded ribbon uses it"),oe(z.changedIds,le,"Enable rule","no command a button uses references it"),oe(N.changedIds,ce,"Display rule","no command a button uses references it");const Re=new Set(Array.from(Q($).matchAll(fe),e=>e[1]));for(const e of ue)for(const t of j[e].tabs)for(const o of t.groups)for(const s of o.buttons)for(const n of Object.values(s.source?.attributes??{}))for(const u of n.matchAll(fe))Re.add(u[1]);oe(C.changedIds,Re,"Label","nothing references it");const qe=Array.from($.querySelectorAll(":scope > RuleDefinitions > TabDisplayRules > TabDisplayRule"));for(const e of qe){const t=e.getAttribute("TabCommand")??"";r.has(t)||l.push(`TabDisplayRule for ${t}: only the display rules of tabs this import adds are imported.`);const o=U(e).filter(s=>s.tagName!=="EntityRule"&&s.tagName!=="PageRule");o.length>0&&l.push(`TabDisplayRule for ${t}: ${o.map(s=>`<${s.tagName}>`).join(", ")} not imported — only EntityRule and PageRule are supported.`)}ie.length>0&&A.push(`Ids normalised: CBS publishes CustomAction / HideCustomAction ids as {control}.CustomAction, {control}.Override.CustomAction and {control}.HideAction, so ${ie.join(", ")} will be written under those ids.`),q+F>0&&S.push(`${q+F} control(s) / definition(s) were already up to date`);const He=I||L.changedIds.length+z.changedIds.length+N.changedIds.length+C.changedIds.length>0;return{ribbons:I?j:i.ribbons,commands:L.out,enableRules:z.out,displayRules:N.out,locLabels:X,applied:S,notApplied:l,notes:A,changed:He}}function lt(i,f){const d=Ke.getState(),m=at({xml:i,ribbons:d.ribbons,commands:d.commands,enableRules:d.enableRules,displayRules:d.displayRules,locLabels:d.locLabels,entityLogicalName:De.getState().activeEntity?.logicalName??d.ribbons.HomepageGrid.entityLogicalName,activeLocation:Ve.getState().location,languageCode:d.baseLanguageCode});return f&&m.changed&&d.applyImport(m,`${m.applied.length} change(s)`),m}const ct=ze({content:{display:"grid",gridTemplateColumns:"1.4fr 1fr",gap:E.spacingHorizontalL,height:"min(560px, calc(100vh - 240px))",minHeight:"320px",overflowY:"hidden","@media (max-width: 760px)":{gridTemplateColumns:"1fr",gridTemplateRows:"minmax(240px, 1.4fr) 1fr",overflowY:"auto"}},editorColumn:{display:"flex",flexDirection:"column",gap:E.spacingVerticalXS,minHeight:0,minWidth:0},editor:{flex:1,minHeight:"200px",border:`1px solid ${E.colorNeutralStroke2}`,borderRadius:E.borderRadiusMedium,overflow:"hidden"},muted:{color:E.colorNeutralForeground3},results:{display:"flex",flexDirection:"column",gap:E.spacingVerticalM,minHeight:0,minWidth:0,overflowY:"auto",paddingRight:E.spacingHorizontalXS},section:{display:"flex",flexDirection:"column",gap:E.spacingVerticalXS},list:{listStyleType:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:E.spacingVerticalXS},row:{display:"flex",alignItems:"flex-start",gap:E.spacingHorizontalS,minWidth:0},rowBadge:{flexShrink:0,marginTop:"2px"},rowText:{minWidth:0,overflowWrap:"anywhere"},problemButton:{textAlign:"start",justifyContent:"flex-start",minWidth:0,height:"auto",padding:0,fontWeight:E.fontWeightRegular}});function be(i){return/^Added\b|\badded$/.test(i)?"Add":/^Updated\b|\bupdated$/.test(i)?"Update":/^Hid\b/.test(i)?"Hide":null}const dt={Add:"success",Update:"brand",Hide:"informative"};function ut(i,f,d){const m=i.map(h=>{const $=h.lineHint?Number(/\d+/.exec(h.lineHint)?.[0]):void 0;return{severity:h.severity==="warning"?"warning":"error",text:h.message,line:Number.isFinite($)?$:void 0}});d&&m.push({severity:"error",text:d});for(const h of f?.notApplied??[])m.push({severity:"warning",text:h});return m}const se=(i,f)=>`${i} ${f}${i===1?"":"s"}`,At=()=>{const i=ct(),f=ne(r=>r.importXmlOpen),d=ne(r=>r.importXmlSeed),m=ne(r=>r.importXmlNote),h=ne(r=>r.closeImportXml),$=De(r=>r.activeEntity?.displayName??r.activeEntity?.logicalName),[w,G]=W.useState(""),[S,l]=W.useState([]),[A,O]=W.useState(null),[T,v]=W.useState(""),B=W.useRef(null);W.useEffect(()=>{f&&(G(d),l([]),O(null),v(""))},[f,d]);const H=r=>{G(r),A?.imported||(O(null),l([]),v(""))},L=r=>{const g=Qe(w);if(l(g),v(""),g.some(R=>R.severity!=="warning")){O(null);return}try{O({result:lt(w,r),imported:r})}catch(R){O(null),v(R instanceof Error?R.message:String(R))}},z=r=>{const g=B.current;g&&(g.revealLineInCenter(r),g.setPosition({lineNumber:r,column:1}),g.focus())},N=A?.imported===!0,C=A?.result,X=C?.applied??[],q=ut(S,C,T),M=q.some(r=>r.severity==="error"),j=!!C||S.length>0||!!T,I=C&&!N?X.filter(r=>be(r)).length:0,F=N?C.changed?`Imported ${se(X.filter(r=>be(r)).length,"change")}`:"Nothing to import: the session already has all of it":j?`Preview · ${se(I,"change")}, ${se(q.length,"problem")}`:"Preview";return c.jsxs(Je,{open:f,onOpenChange:r=>!r&&h(),title:"Import RibbonDiffXml",size:"large",contentClassName:i.content,actions:N?c.jsx(_,{appearance:"primary",onClick:h,children:"Close"}):c.jsxs(c.Fragment,{children:[c.jsx(_,{onClick:h,children:"Cancel"}),c.jsx(_,{onClick:()=>L(!1),disabled:!w.trim(),children:j?"Preview again":"Preview"}),c.jsx(_,{appearance:"primary",onClick:()=>L(!0),disabled:!w.trim()||M,children:I>0?`Import ${se(I,"change")}`:"Import"})]}),children:[c.jsxs("div",{className:i.editorColumn,children:[c.jsx(k,{weight:"semibold",id:"import-xml-label",children:"Paste RibbonDiffXml"}),c.jsxs(de,{className:i.muted,children:["From Ribbon Workbench or a solution's customizations.xml. Only"," ",$??"this table","'s part is used."]}),c.jsx("div",{className:i.editor,role:"group","aria-labelledby":"import-xml-label",children:c.jsx(Ze,{language:"xml",value:w,onChange:H,readOnly:N,height:"100%",onMount:r=>{B.current=r},options:{wordWrap:"on",lineNumbers:"on",padding:{top:8}}})})]}),c.jsxs("section",{className:i.results,"aria-label":"Preview",children:[c.jsx(k,{weight:"semibold",role:"status",children:F}),!j&&c.jsxs(c.Fragment,{children:[m&&!w&&c.jsx(et,{intent:"info",children:c.jsx(tt,{children:m})}),c.jsx(k,{className:i.muted,children:"Preview shows what the import changes, and any problems, before anything changes. Commands, rules and labels are added or replaced by ID; buttons, groups and tabs are added to the ribbon; overrides and hides change the existing controls. The import is one change: Undo takes it all back."})]}),q.length>0&&c.jsxs("div",{className:i.section,children:[c.jsx(k,{weight:"semibold",children:"Problems"}),c.jsx("ul",{className:i.list,"aria-label":"Problems",children:q.map((r,g)=>c.jsxs("li",{className:i.row,children:[c.jsx(Ie,{className:i.rowBadge,size:"medium",appearance:"tint",color:r.severity==="error"?"danger":"warning",children:r.severity==="error"?"Error":"Warning"}),r.line?c.jsx(_,{appearance:"transparent",className:i.problemButton,onClick:()=>z(r.line),children:c.jsxs("span",{className:i.rowText,children:["Line ",r.line,": ",r.text]})}):c.jsx(k,{className:i.rowText,children:r.text})]},g))}),!M&&!N&&I>0&&C.notApplied.length>0&&c.jsx(de,{className:i.muted,children:"Warnings don't stop the import: they say what won't be imported or published."})]}),X.length>0&&c.jsxs("div",{className:i.section,children:[c.jsx(k,{weight:"semibold",children:N?"Imported":"Changes"}),c.jsx("ul",{className:i.list,"aria-label":"Changes",children:X.map((r,g)=>{const R=be(r);return c.jsxs("li",{className:i.row,children:[R&&c.jsx(Ie,{className:i.rowBadge,size:"medium",appearance:"tint",color:dt[R],children:R}),c.jsx(k,{className:i.rowText,children:r})]},g)})})]}),C&&C.notes.length>0&&c.jsxs("div",{className:i.section,children:[c.jsx(k,{weight:"semibold",children:"Good to know"}),c.jsx("ul",{className:i.list,children:C.notes.map((r,g)=>c.jsx("li",{children:c.jsx(k,{className:i.rowText,children:r})},g))})]}),N&&C.changed&&c.jsx(de,{className:i.muted,children:"Review the changes on the canvas, then publish. Undo takes the whole import back."})]})]})};export{At as ImportXmlModal,At as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./monaco-BIO15LCS.js","./monaco-DdLsZAcA.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as l,R as f,_ as h}from"./monaco-BIO15LCS.js";import{
|
|
2
|
+
import{a as l,R as f,_ as h}from"./monaco-BIO15LCS.js";import{L as t}from"./fluent-icons-CQEhzzaC.js";import{b as u}from"./index-6so8O90C.js";import{ag as x}from"./fluent-ui-BEjALNLO.js";const _=f.lazy(()=>h(()=>import("./monaco-BIO15LCS.js").then(o=>o.i),__vite__mapDeps([0,1]),import.meta.url)),v=({language:o,value:r,onChange:a,readOnly:s=!1,height:i="100%",options:m={},onMount:n})=>{const d=u(e=>e.themeMode)==="dark"?"vs-dark":"vs",c={readOnly:s,minimap:{enabled:!1},wordWrap:o==="xml"?"on":"off",scrollBeyondLastLine:!1,automaticLayout:!0,...m},p=e=>{a&&e!==void 0&&a(e)};return t.jsx(l.Suspense,{fallback:t.jsx(x,{size:"medium",label:"Loading editor…"}),children:t.jsx(_,{height:i,language:o,value:r,theme:d,options:c,onChange:p,onMount:n})})};export{v as M};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as e}from"./fluent-icons-CQEhzzaC.js";import{a as B}from"./monaco-BIO15LCS.js";import{b as v,a as i,a6 as m,R as p,Y as K,s as T,a7 as Y,G as _}from"./index-6so8O90C.js";import{F as C,X as q,Y as z,h as I}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";const H=()=>{const n=v(t=>t.newButtonGroupId),r=v(t=>t.closeNewButton),j=i(t=>t.createButton),w=i(t=>t.upsertCommand),y=i(t=>t.batch),N=m(t=>t.selectButtonInContext),R=p(t=>t.publisherPrefix),E=p(t=>t.activeSolution),s=m(t=>t.location),L=m(t=>t.tabId),F=p(t=>t.activeEntity),P=n!==null,[c,b]=B.useState("New Button"),[f,h]=B.useState("button"),k=()=>{if(!n||!s)return;const t=E?.publisherPrefix?.trim()||R?.trim()||"new",a=F?.logicalName??"global",l=i.getState().ribbons,A=i.getState().commands,x=new Set(A.map(o=>o.id));for(const o of Object.values(l))for(const d of o.tabs)for(const G of d.groups)for(const O of T(G))x.add(O.id);const{id:g,commandId:S}=Y(t,a,s,c,x),u=l[s].tabs.find(o=>o.groups.some(d=>d.id===n))?.id??L;if(!l[s].tabs.some(o=>o.id===u)){_.getState().logError("canvas",`Could not add the button: group ${n} was not found.`),r();return}y(()=>{j({location:s,tabId:u,groupId:n,button:{id:g,label:c,kind:f,templateAlias:"o1",commandId:S,hidden:!1,oob:!1,custom:!0,managed:!1}}),w({id:S,enableRules:[],displayRules:[],actions:[]})}),N(s,u,n,g),b("New Button"),h("button"),r()};return e.jsxs(K,{open:P,onOpenChange:t=>!t&&r(),size:"small",title:"New button",actions:e.jsxs(e.Fragment,{children:[e.jsx(I,{appearance:"secondary",onClick:r,children:"Cancel"}),e.jsx(I,{appearance:"primary",onClick:k,disabled:!c.trim(),children:"Create button"})]}),children:[e.jsx(C,{label:"Label",required:!0,hint:"A command is created with it; edit it in the command editor.",children:e.jsx(q,{value:c,onChange:(t,a)=>b(a.value),"data-autofocus":!0})}),e.jsx(C,{label:"Kind",children:e.jsxs(z,{value:f,onChange:(t,a)=>h(a.value),children:[e.jsx("option",{value:"button",children:"Button"}),e.jsx("option",{value:"flyout",children:"Flyout"}),e.jsx("option",{value:"splitButton",children:"Split button"})]})})]})};export{H as NewButtonModal,H as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as a}from"./fluent-icons-CQEhzzaC.js";import{a as u}from"./monaco-BIO15LCS.js";import{b as m,a as g,a6 as d,Y as j,a8 as T}from"./index-6so8O90C.js";import{F as h,X as f,Y as C,h as b}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";const s="Mscrm.Templates.Flexible2",I=()=>{const x=m(e=>e.newGroupOpen),t=m(e=>e.closeNewGroup),w=g(e=>e.createGroup),n=d(e=>e.location),l=d(e=>e.tabId),[o,c]=u.useState("New Group"),[p,i]=u.useState(s),G=()=>{!n||!l||(w({location:n,tabId:l,group:{label:o,template:p,buttons:[]}}),c("New Group"),i(s),t())};return a.jsxs(j,{open:x,onOpenChange:e=>!e&&t(),size:"small",title:"New group",actions:a.jsxs(a.Fragment,{children:[a.jsx(b,{appearance:"secondary",onClick:t,children:"Cancel"}),a.jsx(b,{appearance:"primary",onClick:G,disabled:!o.trim(),children:"Create group"})]}),children:[a.jsx(h,{label:"Label",required:!0,children:a.jsx(f,{value:o,onChange:(e,r)=>c(r.value),"data-autofocus":!0})}),a.jsx(h,{label:"Group template",hint:"How the group's buttons shrink when the classic ribbon is narrow. Unified Interface ignores it.",children:a.jsx(C,{value:p,onChange:(e,r)=>i(r.value),children:T.map(e=>a.jsxs("option",{value:e,children:[e.replace(/^Mscrm\.Templates\./,""),e===s?" (recommended)":""]},e))})})]})};export{I as NewGroupModal,I as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as a,K as k}from"./fluent-icons-CQEhzzaC.js";import{a as f,R as D}from"./monaco-BIO15LCS.js";import{a6 as L,a as l,R as T,b as x,a9 as M,aa as O,ab as _,Y as F,I as z,ac as U}from"./index-6so8O90C.js";import{F as y,X as w,I as $,h as v,t as H}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";const N={HomepageGrid:"home grid",Form:"form",SubGrid:"sub-grid",Application:""},B=k({body:{display:"flex",flexDirection:"column",gap:H.spacingHorizontalM}}),Y=()=>{const S=B(),[o,b]=f.useState("New Tab"),[d,u]=f.useState(""),s=L(e=>e.location),j=l(e=>e.createTab),i=l(e=>e.ribbons),p=l(e=>e.baseline),m=l(e=>e.layers),C=T(e=>e.activeEntity);T(e=>e.publisherPrefix);const A=x(e=>e.newTabOpen),r=x(e=>e.closeNewTab),h=D.useMemo(()=>M({baseline:p,layers:m},i),[p,m,i]),R=s==="Application"?"global":C?.logicalName??i[s].entityLogicalName,g=O(R,`${s}.${o}`,"Tab",h),t=d.trim(),n=t?_(t)??(/[^a-zA-Z0-9._]/.test(t)?"Use letters, digits, dots and underscores only":h.has(t)?"This ID is already used":null):null,I=t||g,E=()=>{n||(j(s,{id:I,label:o,tabDisplayRules:[],groups:[]}),b("New Tab"),u(""),r())};return a.jsx(F,{open:A,onOpenChange:e=>!e&&r(),size:"small",title:s==="Application"?"New tab":`New tab on the ${N[s]}`,actions:a.jsxs(a.Fragment,{children:[a.jsx(v,{appearance:"secondary",onClick:r,children:"Cancel"}),a.jsx(v,{appearance:"primary",disabled:!o.trim()||!!n,onClick:E,children:"Create tab"})]}),children:a.jsxs("div",{className:S.body,children:[a.jsx(y,{label:"Tab label",required:!0,hint:s==="Application"?"A tab shows only where a tab rule allows it: add one in Tab rules before publishing.":`It gets a tab rule for this table's ${N[s]}; change it in Tab rules.`,children:a.jsx(w,{value:o,onChange:(e,c)=>b(c.value),placeholder:"My Tab","data-autofocus":!0})}),a.jsx(y,{label:"Tab ID",hint:"Leave blank to generate one from the label.",validationState:n?"error":"none",validationMessage:n??void 0,children:a.jsx(w,{value:d,onChange:(e,c)=>u(c.value),placeholder:g})}),a.jsx(z,{label:"ID it gets",value:I}),a.jsx($,{size:"small",info:U,children:"How Unified Interface shows a new tab"})]})})};export{Y as NewTabModal,Y as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as a,K as W,i as le,ad as K,dg as te,s as re,A as se,df as ie}from"./fluent-icons-CQEhzzaC.js";import{a as L,R as oe}from"./monaco-BIO15LCS.js";import{b as F,a as M}from"./index-6so8O90C.js";import{R as ce,i as ue,a as V}from"./ruleKinds-BKTUiZ1-.js";import{Z as de,a8 as pe,I as z,af as w,h as D,t as o,b as _,B as he,T as me,F as b,b2 as P,X as j,C as ge,c as xe,Y as ye,P as q,k as Y,l as Q,ar as ve,M as be,s as Re,v as fe,w as Ce,x as H}from"./fluent-ui-BEjALNLO.js";import{C as je}from"./CrmParameterEditor-C22QGWff.js";import{u as Se}from"./useStableKeys-BkDn7til.js";import{D as Te,c as Ne,S as $e,v as Oe,f as Ee,C as ke,g as we}from"./dnd-C1w9VFfC.js";import"./crmParameters-rgfZhhzN.js";const Ie=W({root:{display:"flex",flexDirection:"column",gap:o.spacingVerticalXS},searchRow:{display:"flex",alignItems:"center",gap:o.spacingHorizontalS,marginBottom:o.spacingVerticalXS},search:{flex:1,minWidth:0},group:{display:"flex",flexDirection:"column",gap:o.spacingVerticalXXS},groupLabel:{color:o.colorNeutralForeground3,fontWeight:o.fontWeightSemibold,paddingTop:o.spacingVerticalXS},kindButton:{justifyContent:"flex-start",textAlign:"left"}});function Pe(e){switch(e){case"CommandClientTypeRule":return{kind:e,type:"Modern"};case"CrmClientTypeRule":return{kind:e,type:"Web"};case"FormStateRule":return{kind:e,state:"Existing"};case"FormTypeRule":return{kind:e,type:"Main"};case"SelectionCountRule":return{kind:e,minimum:1};case"EntityRule":return{kind:e};case"CustomRule":return{kind:e,library:"$webresource:",functionName:""};case"ValueRule":return{kind:e,field:"",value:""};case"SkuRule":return{kind:e,sku:"Online"};case"OrRule":return{kind:e,groups:[[{kind:"FormStateRule",state:"Existing"}],[{kind:"FormStateRule",state:"Create"}]]};case"FeatureControlRule":return{kind:e,featureControlBit:"",expectedValue:!0};case"OrganizationSettingRule":return{kind:e,setting:"IsSharepointEnabled"};case"EntityPrivilegeRule":return{kind:e,privilegeType:"Read",privilegeDepth:"Basic"};case"EntityPropertyRule":return{kind:e,propertyName:"IsCustomizable",propertyValue:!0};case"RecordPrivilegeRule":return{kind:e,privilegeType:"Read"};case"RelationshipTypeRule":return{kind:e,appliesTo:"SelectedEntity"};case"MiscellaneousPrivilegeRule":return{kind:e,privilegeName:"ExportToExcel"};case"FormEntityContextRule":return{kind:e,entityName:""};case"PageRule":return{kind:e,address:""};case"CrmOfflineAccessStateRule":return{kind:e,state:"Online"};case"CrmOutlookClientTypeRule":return{kind:e,type:"CrmForOutlook"};case"CrmOutlookClientVersionRule":return{kind:e,major:15,minor:0,build:0,revision:0};case"DeviceTypeRule":return{kind:e,type:"Web"};case"OptionSetRule":return{kind:e,optionSet:"",stateCode:"",objectTypeCode:""};case"OutlookItemTrackingRule":return{kind:e,trackedInCrm:!0};case"OutlookRenderTypeRule":return{kind:e,type:"Web"};case"OutlookVersionRule":return{kind:e,version:"2010"};case"HideForTabletExperienceRule":return{kind:e};case"ReferencingAttributeRequiredRule":return{kind:e};default:return{kind:e}}}const Z=({onSelect:e,container:t,insideOr:u=!1})=>{const c=Ie(),[g,f]=L.useState(""),i=de({axis:"vertical"}),x=ce.map(h=>({...h,kinds:h.kinds.filter(m=>{if(t&&!ue(m,t,u)||u&&m==="OrRule")return!1;const O=V[m]??m;return!g||O.toLowerCase().includes(g.toLowerCase())||m.toLowerCase().includes(g.toLowerCase())})})).filter(h=>h.kinds.length>0);return a.jsxs("div",{className:c.root,children:[a.jsxs("div",{className:c.searchRow,children:[a.jsx(pe,{className:c.search,placeholder:"Search steps","aria-label":"Search steps",value:g,onChange:(h,m)=>f(m.value)}),a.jsx(z,{info:"Show on grid or quick action comes from Microsoft's rules (Mscrm.ShowOnGrid, Mscrm.ShowOnQuickAction): add them to the command by ID instead.",children:a.jsx("span",{className:c.groupLabel,children:"Not here?"})})]}),a.jsxs("div",{role:"group","aria-label":"Kinds of step",...i,children:[x.map(h=>a.jsxs("div",{className:c.group,children:[a.jsx(w,{className:c.groupLabel,children:h.label}),h.kinds.map(m=>a.jsx(D,{appearance:"subtle",className:c.kindButton,onClick:()=>e(Pe(m)),children:V[m]??m},m))]},h.label)),x.length===0&&a.jsx(w,{children:"No kind of step matches."})]})]})},J=W({step:{display:"flex",flexDirection:"column",minWidth:0,gap:o.spacingVerticalXS,padding:o.spacingVerticalS,border:`1px solid ${o.colorNeutralStroke2}`,borderRadius:o.borderRadiusMedium,backgroundColor:o.colorNeutralBackground2},header:{display:"flex",alignItems:"center",gap:o.spacingHorizontalXS},title:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:o.spacingHorizontalXS},kindBadge:{flexShrink:0},fields:{display:"flex",flexDirection:"column",gap:o.spacingVerticalXS,minWidth:0},row:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:o.spacingHorizontalS,alignItems:"end",minWidth:0,"& > *":{minWidth:0,gridTemplateColumns:"minmax(0, 1fr)"},"& select":{minWidth:0}},number:{maxWidth:"140px"},muted:{color:o.colorNeutralForeground3},nested:{display:"flex",flexDirection:"column",gap:o.spacingVerticalXS,paddingLeft:o.spacingHorizontalM,borderLeft:`2px solid ${o.colorBrandStroke2}`},nestedToolbar:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:o.spacingHorizontalXS},pickerSurface:{minWidth:"300px",maxHeight:"50vh",overflowY:"auto",padding:o.spacingVerticalS}}),G=e=>e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/^Is /,"").toLowerCase().replace(/^./,t=>t.toUpperCase()),k=[["PrimaryEntity","Primary table (the form or grid)"],["SelectedEntity","Selected records"]],Ae=[["Form","Form"],["HomePageGrid","Home page grid"],["SubGridStandard","Sub-grid"],["SubGridAssociated","Associated grid"]],De=[["Create","New record"],["Existing","Existing record"],["ReadOnly","Read-only"],["Disabled","Disabled"],["BulkEdit","Bulk edit"]],Fe=[["Main","Main"],["Preview","Preview"],["AppointmentBook","Appointment book"],["Dashboard","Dashboard"],["Quick","Quick view"],["QuickCreate","Quick create"],["Card","Card"],["MainInteractionCentric","Main (interactive experience)"]],Me=[["None","None"],["Phone","Phone"],["Tablet","Tablet"],["Web","Web"],["Outlook","Outlook"],["InteractionCentric","Interactive experience"]],U=[["Create","Create"],["Read","Read"],["Write","Write"],["Delete","Delete"],["Assign","Assign"],["Share","Share"],["Append","Append"],["AppendTo","Append to"]],X=[["None","None"],["Basic","User (Basic)"],["Local","Business unit (Local)"],["Deep","Parent: child business units (Deep)"],["Global","Organization (Global)"]],_e=["DuplicateDetectionEnabled","GridFiltersEnabled","HasStateCode","IsConnectionsEnabled","MailMergeEnabled","WorksWithQueue","HasActivities","IsActivity","HasNotes","IsCustomizable","IsActivityParty","HasEmailAddresses","IsChildEntity","IsImportable","IsEnabledForCharts","IsBusinessProcessEnabled","HasFeedback","IsBPFEntity"],Le=["IsSharepointEnabled","IsSOPIntegrationEnabled","IsFiscalCalendarDefined","IsReadFormModeDefined","IsBPFEntityCustomizationFeatureEnabled"],Ve=["ExportToExcel","MailMerge","GoOffline","OfflineSynchronize","PublishReports"];function p({label:e,info:t,value:u,choices:c,anyLabel:g,disabled:f,onChange:i}){return a.jsx(b,{label:t?{children:(x,h)=>a.jsx(z,{...h,info:t,children:e})}:e,children:a.jsxs(ye,{value:u??"",disabled:f,onChange:(x,h)=>i(h.value||void 0),children:[g!==void 0&&a.jsx("option",{value:"",children:g}),c.map(([x,h])=>a.jsx("option",{value:x,children:h},x))]})})}function A({label:e,value:t,required:u,min:c=0,onChange:g}){const f=J();return a.jsx(b,{label:e,children:a.jsx(ve,{className:f.number,min:c,value:t??null,onChange:(i,x)=>{const h=x.displayValue?.trim(),m=x.value!==void 0&&x.value!==null?x.value:h?parseInt(h,10):void 0;if(m===void 0)return u?void 0:g(void 0);Number.isInteger(m)&&m>=c&&g(m)}})})}const ee=({step:e,onChange:t,onRemove:u,container:c,number:g,menu:f})=>{const i=J(),[x,h]=oe.useState(null),m=e.kind!=="OrRule"&&e.kind!=="RawRule",O=m?e.invertResult:void 0,E=m?e.default:void 0,y=V[e.kind]??e.kind,l=n=>{t({...e,...n})},T=(n,s)=>a.jsx(b,{label:"Table",hint:"Its logical name; empty for any.",children:a.jsx(j,{value:n??"",onChange:(C,v)=>s(v.value||void 0)})}),I=()=>{switch(e.kind){case"CommandClientTypeRule":return a.jsx(p,{label:"Client",value:e.type,choices:[["Modern","Modern (Unified Interface: web, tablets and phones)"],["Refresh","Refresh (legacy updated web client)"],["Legacy","Legacy (classic ribbon + Outlook list views)"]],onChange:n=>l({type:n})});case"CrmClientTypeRule":return a.jsx(p,{label:"Client",value:e.type,choices:[["Web","Web"],["Outlook","Outlook"]],onChange:n=>l({type:n})});case"FormStateRule":return a.jsx(p,{label:"State",value:e.state,choices:De,onChange:n=>l({state:n})});case"FormTypeRule":return a.jsx(p,{label:"Form type",value:e.type,choices:Fe,onChange:n=>l({type:n})});case"SelectionCountRule":return a.jsxs("div",{className:i.row,children:[a.jsx(A,{label:"At least",value:e.minimum,onChange:n=>l({minimum:n})}),a.jsx(A,{label:"At most",value:e.maximum,onChange:n=>l({maximum:n})}),a.jsx(p,{label:"Applies to",value:e.appliesTo,choices:k,anyLabel:"Any",onChange:n=>l({appliesTo:n})})]});case"EntityRule":return a.jsxs("div",{className:i.row,children:[T(e.entityName,n=>l({entityName:n})),a.jsx(p,{label:"Applies to",value:e.appliesTo,choices:k,anyLabel:"Any",onChange:n=>l({appliesTo:n})}),a.jsx(p,{label:"Where",value:e.context,choices:Ae,anyLabel:"Anywhere",onChange:n=>l({context:n})})]});case"FormEntityContextRule":return a.jsx(b,{label:"The form's table",hint:"Its logical name.",children:a.jsx(j,{value:e.entityName,onChange:(n,s)=>l({entityName:s.value})})});case"CustomRule":return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:i.row,children:[a.jsx(b,{label:"Library",hint:"A JavaScript web resource ($webresource:…).",children:a.jsx(j,{value:e.library,onChange:(n,s)=>l({library:s.value}),placeholder:"$webresource:publisher_/scripts/file.js"})}),a.jsx(b,{label:"Function",hint:"The function's full name, including its namespace.",children:a.jsx(j,{value:e.functionName,onChange:(n,s)=>l({functionName:s.value})})})]}),a.jsx(b,{label:"Parameters, in order",children:a.jsx(je,{params:e.params??[],onChange:n=>l({params:n.length?n:void 0})})}),a.jsx(w,{className:i.muted,children:"In Unified Interface the function can return a Promise of true or false; one that hasn't settled after 10 seconds counts as false."})]});case"CrmOfflineAccessStateRule":return a.jsx(p,{label:"State",value:e.state,choices:[["Online","Online"],["Offline","Offline"]],onChange:n=>l({state:n})});case"CrmOutlookClientTypeRule":return a.jsx(p,{label:"Outlook client",value:e.type,choices:[["CrmForOutlook","Outlook"],["CrmForOutlookOfflineAccess","Outlook with offline access"]],onChange:n=>l({type:n})});case"CrmOutlookClientVersionRule":return a.jsxs("div",{className:i.row,children:[a.jsx(A,{label:"Major",value:e.major,required:!0,onChange:n=>n!==void 0&&l({major:n})}),a.jsx(A,{label:"Minor",value:e.minor,onChange:n=>l({minor:n})}),a.jsx(A,{label:"Build",value:e.build,onChange:n=>l({build:n})}),a.jsx(A,{label:"Revision",value:e.revision,onChange:n=>l({revision:n})})]});case"DeviceTypeRule":return a.jsx(p,{label:"Device",value:e.type,choices:Me,onChange:n=>l({type:n})});case"EntityPrivilegeRule":return a.jsxs("div",{className:i.row,children:[T(e.entityName,n=>l({entityName:n})),a.jsx(p,{label:"Applies to",value:e.appliesTo,choices:k,anyLabel:"Any",onChange:n=>l({appliesTo:n})}),a.jsx(p,{label:"Privilege",value:e.privilegeType,choices:U,onChange:n=>l({privilegeType:n})}),a.jsx(p,{label:"Depth",value:e.privilegeDepth,choices:X,onChange:n=>l({privilegeDepth:n})})]});case"EntityPropertyRule":return a.jsxs("div",{className:i.row,children:[T(e.entityName,n=>l({entityName:n})),a.jsx(p,{label:"Applies to",value:e.appliesTo,choices:k,anyLabel:"Any",onChange:n=>l({appliesTo:n})}),a.jsx(p,{label:"Property",value:e.propertyName,choices:_e.map(n=>[n,G(n)]),onChange:n=>l({propertyName:n})}),a.jsx(P,{label:"The property is true",checked:e.propertyValue,onChange:(n,s)=>l({propertyValue:s.checked===!0})})]});case"ValueRule":return a.jsxs("div",{className:i.row,children:[a.jsx(b,{label:"Column",hint:"Its logical name.",children:a.jsx(j,{value:e.field,onChange:(n,s)=>l({field:s.value})})}),a.jsx(b,{label:"Equals",children:a.jsx(j,{value:e.value,onChange:(n,s)=>l({value:s.value})})})]});case"OrRule":{const n=C=>t({...e,groups:C.filter(v=>v.length>0)}),s=(C,v)=>a.jsxs(q,{open:x===C,onOpenChange:($,R)=>h(R.open?C:null),positioning:"below-start",children:[a.jsx(Y,{children:a.jsx(D,{icon:a.jsx(K,{}),appearance:"secondary",size:"small",children:v})}),a.jsx(Q,{className:i.pickerSurface,children:a.jsx(Z,{container:c,insideOr:!0,onSelect:$=>{n(C==="new"?[...e.groups,[$]]:e.groups.map((R,N)=>N===C?[...R,$]:R)),h(null)}})})]});return a.jsxs("div",{className:i.nested,children:[e.groups.map((C,v)=>a.jsxs("div",{className:i.nested,children:[a.jsxs(_,{size:200,weight:"semibold",children:[v===0?"Either":"Or",C.length>1?" (all of)":""]}),C.map(($,R)=>a.jsx(ee,{step:$,container:c,onChange:N=>n(e.groups.map((r,d)=>d===v?r.map((S,ne)=>ne===R?N:S):r)),onRemove:()=>n(e.groups.map((N,r)=>r===v?N.filter((d,S)=>S!==R):N))},`${v}-${R}-${$.kind}`)),a.jsx("div",{className:i.nestedToolbar,children:s(v,"And…")})]},v)),a.jsxs("div",{className:i.nestedToolbar,children:[s("new","Add an Or branch"),a.jsx(w,{className:i.muted,children:"An Or needs at least two branches."})]})]})}case"FeatureControlRule":return a.jsxs("div",{className:i.row,children:[a.jsx(b,{label:"Feature control bit",children:a.jsx(j,{value:e.featureControlBit,onChange:(n,s)=>l({featureControlBit:s.value})})}),a.jsx(P,{label:"The bit is set",checked:e.expectedValue,onChange:(n,s)=>l({expectedValue:s.checked===!0})})]});case"RawRule":return a.jsxs(a.Fragment,{children:[a.jsx(w,{className:i.muted,children:"Command Bar Studio doesn't edit this rule; it is kept exactly as loaded."}),a.jsx("pre",{style:{margin:0,whiteSpace:"pre-wrap",fontSize:"11px"},children:e.xml})]});case"SkuRule":return a.jsx(p,{label:"Deployment",value:e.sku,choices:[["Online","Online"],["OnPremise","On-premises"],["Spla","Hosted (SPLA)"]],onChange:n=>l({sku:n})});case"OrganizationSettingRule":return a.jsx(p,{label:"Setting is on",value:e.setting,choices:Le.map(n=>[n,G(n)]),onChange:n=>l({setting:n})});case"MiscellaneousPrivilegeRule":return a.jsxs("div",{className:i.row,children:[a.jsx(b,{label:"Privilege",children:a.jsx(ge,{freeform:!0,value:e.privilegeName,placeholder:"ExportToExcel",onChange:n=>l({privilegeName:n.target.value}),onOptionSelect:(n,s)=>s.optionValue&&l({privilegeName:s.optionValue}),children:Ve.map(n=>a.jsx(xe,{value:n,children:n},n))})}),a.jsx(p,{label:"Depth",value:e.privilegeDepth,choices:X,anyLabel:"Any",onChange:n=>l({privilegeDepth:n})})]});case"OptionSetRule":return a.jsxs("div",{className:i.row,children:[a.jsx(b,{label:"Choice column",children:a.jsx(j,{value:e.optionSet,onChange:(n,s)=>l({optionSet:s.value})})}),a.jsx(b,{label:"State code",children:a.jsx(j,{value:e.stateCode,onChange:(n,s)=>l({stateCode:s.value})})}),a.jsx(b,{label:"Table type code",children:a.jsx(j,{value:e.objectTypeCode,onChange:(n,s)=>l({objectTypeCode:s.value})})})]});case"OutlookItemTrackingRule":return a.jsxs("div",{className:i.row,children:[a.jsx(P,{label:"The item is tracked",checked:e.trackedInCrm,onChange:(n,s)=>l({trackedInCrm:s.checked===!0})}),a.jsx(p,{label:"Applies to",value:e.appliesTo??"PrimaryEntity",choices:k.slice(0,1),onChange:n=>l({appliesTo:n})})]});case"OutlookRenderTypeRule":return a.jsx(p,{label:"Shown in",value:e.type,choices:[["Web","Web"],["Outlook","Outlook"]],onChange:n=>l({type:n})});case"OutlookVersionRule":return a.jsx(p,{label:"Outlook version",value:e.version,choices:[["2003","2003"],["2007","2007"],["2010","2010"]],onChange:n=>l({version:n})});case"PageRule":return a.jsx(b,{label:"Page address contains",children:a.jsx(j,{value:e.address,onChange:(n,s)=>l({address:s.value}),placeholder:"main.aspx"})});case"RecordPrivilegeRule":return a.jsxs("div",{className:i.row,children:[a.jsx(p,{label:"Privilege",value:e.privilegeType,choices:U,onChange:n=>l({privilegeType:n})}),a.jsx(p,{label:"Applies to",value:e.appliesTo,choices:k.slice(0,1),anyLabel:"The selected record",onChange:n=>l({appliesTo:n})})]});case"RelationshipTypeRule":return a.jsxs("div",{className:i.row,children:[a.jsx(p,{label:"Applies to",value:e.appliesTo,choices:k.slice(1),disabled:!0,onChange:()=>{}}),a.jsx(p,{label:"Relationship",value:e.relationshipType,choices:[["OneToMany","One-to-many"],["ManyToMany","Many-to-many"],["NoRelationship","No relationship"]],anyLabel:"Any",onChange:n=>l({relationshipType:n})}),a.jsx(P,{label:"Custom relationships too",checked:e.allowCustomRelationship===!0,onChange:(n,s)=>l({allowCustomRelationship:s.checked===!0})}),a.jsx(P,{label:"System relationships too",checked:e.allowSystemRelationship===!0,onChange:(n,s)=>l({allowSystemRelationship:s.checked===!0})})]});default:return a.jsx(w,{className:i.muted,children:"Nothing to set for this step."})}};return a.jsxs("div",{className:i.step,children:[a.jsxs("div",{className:i.header,children:[a.jsxs("div",{className:i.title,children:[g!==void 0&&a.jsxs(_,{weight:"semibold",children:[g,"."]}),a.jsx(he,{appearance:"outline",size:"medium",className:i.kindBadge,children:y})]}),f,a.jsx(me,{content:`Remove ${y} step`,relationship:"label",children:a.jsx(D,{appearance:"subtle",icon:a.jsx(le,{}),size:"small",onClick:u})})]}),a.jsxs("div",{className:i.fields,children:[I(),m&&a.jsxs("div",{className:i.row,children:[a.jsx(p,{label:"If it can't be evaluated",info:"What the step counts as when it can't be evaluated.",value:E===void 0?void 0:String(E),choices:[["true","Passes"],["false","Fails"]],anyLabel:"Not set",onChange:n=>l({default:n===void 0?void 0:n==="true"})}),a.jsx(b,{hint:"The step passes when its condition is false.",children:a.jsx(P,{label:"Invert result",checked:O===!0,onChange:(n,s)=>l({invertResult:s.checked===!0?!0:void 0})})})]})]})]})};function Be(e){return e.length===0?"No steps defined — a rule needs at least one before it can be published.":e.map(B).join(" AND ")}function B(e){const t="invertResult"in e&&e.invertResult?"NOT ":"";switch(e.kind){case"SelectionCountRule":{const u=e.minimum!==void 0?`at least ${e.minimum}`:null,c=e.maximum!==void 0?`at most ${e.maximum}`:null,g=[u,c].filter(Boolean).join(" and "),f=e.appliesTo?` (${e.appliesTo})`:"";return`${t}Selection count is ${g}${f}`}case"EntityRule":{const u=e.entityName??"any entity",c=e.context?` in ${e.context} context`:"",g=e.appliesTo?` (${e.appliesTo})`:"";return`${t}Entity is "${u}"${c}${g}`}case"FormStateRule":return`${t}Form state is "${e.state}"`;case"CommandClientTypeRule":return`${t}Client type is "${e.type}" (${We(e.type)})`;case"CrmClientTypeRule":return`${t}CRM client type is "${e.type}"`;case"CustomRule":return`${t}Custom rule: ${e.functionName}() from ${e.library}`;case"OrRule":return`(${e.groups.map(c=>c.length===1?B(c[0]):`(${c.map(B).join(" AND ")})`).join(" OR ")})`;case"FeatureControlRule":return`${t}Feature "${e.featureControlBit}" is ${e.expectedValue?"on":"off"}`;case"RawRule":return`${e.tagName} (kept as XML)`;case"MiscellaneousPrivilegeRule":{const u=e.privilegeDepth?` at ${e.privilegeDepth} depth`:"";return`${t}User has "${e.privilegeName}" privilege${u}`}case"EntityPrivilegeRule":{const u=e.entityName?` on "${e.entityName}"`:"",c=e.appliesTo?` (${e.appliesTo})`:"";return`${t}User has ${e.privilegeType} privilege${u} at ${e.privilegeDepth} depth${c}`}case"EntityPropertyRule":{const u=e.entityName?` for "${e.entityName}"`:"";return`${t}Entity property "${e.propertyName}" is ${e.propertyValue}${u}`}case"FormTypeRule":return`${t}Form type is "${e.type}"`;case"FormEntityContextRule":return`${t}Form entity context is "${e.entityName}"`;case"ValueRule":return`${t}Field "${e.field}" equals "${e.value}"`;case"SkuRule":return`${t}SKU is "${e.sku}"`;case"HideForTabletExperienceRule":return`${t}Hide for tablet experience`;case"OrganizationSettingRule":return`${t}Organization setting "${e.setting}" is enabled`;case"PageRule":return`${t}Page address matches "${e.address}"`;case"RecordPrivilegeRule":{const u=e.appliesTo?` (${e.appliesTo})`:"";return`${t}User has ${e.privilegeType} privilege on current record${u}`}case"RelationshipTypeRule":{const u=e.relationshipType??"any";return`${t}Relationship type is "${u}" (${e.appliesTo})`}case"ReferencingAttributeRequiredRule":return`${t}Referencing attribute is required`;case"OutlookItemTrackingRule":return`${t}Outlook item is ${e.trackedInCrm?"":"not "}tracked in CRM`;case"OutlookRenderTypeRule":return`${t}Outlook render type is "${e.type}"`;case"OutlookVersionRule":return`${t}Outlook version is "${e.version}"`;case"CrmOfflineAccessStateRule":return`${t}CRM offline state is "${e.state}"`;case"CrmOutlookClientTypeRule":return`${t}CRM Outlook client type is "${e.type}"`;case"CrmOutlookClientVersionRule":return`${t}CRM Outlook client version is ${e.major}.${e.minor??0}+`;case"DeviceTypeRule":return`${t}Device type is "${e.type}"`;case"OptionSetRule":return`${t}Option set "${e.optionSet}" state code is "${e.stateCode}"`;default:return"Unknown rule step"}}function We(e){switch(e){case"Modern":return"Unified Interface";case"Refresh":return"legacy updated web client";case"Legacy":return"Classic ribbon / Outlook list views";default:return e}}const ae=W({body:{display:"flex",flexDirection:"column",gap:o.spacingVerticalM,minWidth:0},stepsList:{display:"flex",flexDirection:"column",gap:o.spacingVerticalS,listStyle:"none",padding:0,margin:0},muted:{color:o.colorNeutralForeground3},summary:{padding:o.spacingVerticalS,backgroundColor:o.colorNeutralBackground3,borderRadius:o.borderRadiusMedium,color:o.colorNeutralForeground2,fontSize:o.fontSizeBase200},pickerPopover:{maxHeight:"60vh",overflowY:"auto",minWidth:"320px",padding:o.spacingVerticalM},sortableInner:{display:"flex",alignItems:"flex-start",gap:o.spacingHorizontalXS,minWidth:0},dragHandle:{marginTop:o.spacingVerticalXS,cursor:"grab",touchAction:"none"},stepBody:{flex:1,minWidth:0}}),ze=[],ea=()=>{const e=ae(),t=F(r=>r.ruleEditorOpen),u=F(r=>r.ruleEditorId),c=F(r=>r.ruleEditorKind),g=F(r=>r.closeRuleEditor),f=M(r=>r.enableRules),i=M(r=>r.displayRules),x=M(r=>r.upsertEnableRule),h=M(r=>r.upsertDisplayRule),[m,O]=L.useState(!1),E=c==="enable",y=E?f.find(r=>r.id===u):i.find(r=>r.id===u);L.useEffect(()=>{t&&u&&!y&&g()},[t,u,y,g]);const l=Se(`${c}:${y?.id??""}`,y?.steps??ze),T=l.keys;if(!y)return null;const I=r=>{E?x({...y,steps:r}):h({...y,steps:r})},n=(r,d)=>{const S=[...y.steps];S[r]=d,l.update(),I(S)},s=r=>{l.remove(r),I(y.steps.filter((d,S)=>S!==r))},C=r=>{l.add(),I([...y.steps,r]),O(!1)},v=(r,d)=>{r===d||r<0||d<0||d>=y.steps.length||(l.move(r,d),I(we(y.steps,r,d)))},$=r=>{r.over&&v(T.indexOf(String(r.active.id)),T.indexOf(String(r.over.id)))},R=y.steps.length,N=E?"enable":"display";return a.jsxs("div",{className:e.body,children:[E?a.jsx(z,{info:"Enable rules take fewer kinds of step than display rules; Add step only offers the ones they take.",children:"Passes when every step below is true."}):a.jsx(_,{children:"Passes when every step below is true."}),R>0?a.jsx(Te,{collisionDetection:Ne,onDragEnd:$,children:a.jsx($e,{items:T,strategy:Oe,children:a.jsx("ol",{className:e.stepsList,"aria-label":"Rule steps",children:y.steps.map((r,d)=>a.jsx(He,{id:T[d],draggable:R>1,children:a.jsx(ee,{step:r,number:d+1,menu:R>1&&a.jsxs(be,{children:[a.jsx(Re,{disableButtonEnhancement:!0,children:a.jsx(D,{appearance:"subtle",size:"small",icon:a.jsx(te,{}),"aria-label":`More for step ${d+1}`})}),a.jsx(fe,{children:a.jsxs(Ce,{children:[a.jsx(H,{icon:a.jsx(re,{}),disabled:d===0,onClick:()=>v(d,d-1),children:"Move up"}),a.jsx(H,{icon:a.jsx(se,{}),disabled:d===R-1,onClick:()=>v(d,d+1),children:"Move down"})]})})]}),onChange:S=>n(d,S),onRemove:()=>s(d),container:N})},T[d]))})})}):a.jsx(_,{className:e.muted,children:"No steps yet. A rule needs at least one step: add one before you publish, or remove the rule from its commands."}),a.jsx("div",{children:a.jsxs(q,{open:m,onOpenChange:(r,d)=>O(d.open),positioning:"below-start",children:[a.jsx(Y,{children:a.jsx(D,{icon:a.jsx(K,{}),onClick:()=>O(!0),children:"Add step"})}),a.jsx(Q,{className:e.pickerPopover,children:a.jsx(Z,{onSelect:C,container:N})})]})}),R>0&&a.jsxs(a.Fragment,{children:[a.jsx(w,{className:e.muted,children:"In words"}),a.jsx("div",{className:e.summary,role:"note","aria-label":"Rule summary",children:Be(y.steps)})]})]})};function He({id:e,draggable:t,children:u}){const c=ae(),{attributes:g,listeners:f,setNodeRef:i,setActivatorNodeRef:x,transform:h,transition:m}=Ee({id:e,disabled:!t});return a.jsx("li",{ref:i,style:{transform:ke.Transform.toString(h),transition:m},children:a.jsxs("div",{className:c.sortableInner,children:[t&&a.jsx(D,{ref:x,appearance:"subtle",size:"small",className:c.dragHandle,icon:a.jsx(ie,{}),...g,...f,"aria-label":"Drag to reorder step"}),a.jsx("div",{className:c.stepBody,children:u})]})})}export{ea as RuleEditorPanel,ea as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as e,K as B}from"./fluent-icons-CQEhzzaC.js";import{a as r}from"./monaco-BIO15LCS.js";import{aJ as N,aK as W,as as M,aw as R,F as k}from"./index-6so8O90C.js";import{M as L}from"./MonacoEditor-BMKRZv-g.js";import{L as d,N as u,ag as D,h as T,t as l}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";const H=B({root:{flex:1,display:"flex",flexDirection:"column",gap:l.spacingVerticalS,minHeight:"300px"},editor:{flex:1,minHeight:"240px",border:`1px solid ${l.colorNeutralStroke2}`,borderRadius:l.borderRadiusMedium,overflow:"hidden"},save:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:l.spacingHorizontalS}}),O=s=>s?new TextDecoder().decode(Uint8Array.from(atob(s),n=>n.charCodeAt(0))):"",U=s=>{const n=new TextEncoder().encode(s);let o="";for(let i=0;i<n.length;i+=1)o+=String.fromCharCode(n[i]);return btoa(o)},V={html:1,css:2,js:3,xml:4,png:5,jpg:6,gif:7,xsl:9,ico:10,svg:11,resx:12},z=s=>V[s.split(".").pop()?.toLowerCase()??""]??3;function P({name:s,editable:n}){const o=H(),[i,S]=r.useState(!0),[f,p]=r.useState(!1),[g,w]=r.useState(!1),[x,c]=r.useState(null),[m,h]=r.useState(null),[y,v]=r.useState(""),[b,j]=r.useState(!1);r.useEffect(()=>{let a=!0;return(async()=>{try{const t=await N(s);if(!a)return;if(!t){w(!0);return}const E=await W(t.id);a&&v(O(E))}catch(t){a&&c(t instanceof Error?t.message:"Couldn't load the script.")}finally{a&&S(!1)}})(),()=>{a=!1}},[s]);const C=async()=>{const a=k();p(!0),c(null),h(null);try{const t=await R(s,U(y),z(s),{displayName:s.split("/").pop(),guard:a});h([t.solutionWarning,t.publishWarning].filter(Boolean).join(" ")||null),j(!1)}catch(t){c(t instanceof Error?t.message:"Couldn't save the script.")}finally{p(!1)}};return e.jsxs("div",{className:o.root,children:[g&&e.jsx(d,{intent:"warning",children:e.jsxs(u,{children:["There's no web resource named ",s," in this environment. Check the action's library."]})}),x&&e.jsx(d,{intent:"error",children:e.jsx(u,{children:x})}),m&&e.jsx(d,{intent:"warning",children:e.jsx(u,{children:m})}),i?e.jsx(D,{size:"small",label:"Loading the script…"}):!g&&e.jsxs(e.Fragment,{children:[n&&e.jsxs("div",{className:o.save,children:[e.jsx(M,{prefix:"Saves to"}),e.jsx(T,{appearance:"primary",disabled:!b||f,onClick:()=>{C()},children:f?"Saving…":"Save script"})]}),e.jsx("div",{className:o.editor,children:e.jsx(L,{language:"javascript",value:y,readOnly:!n,onChange:a=>{v(a),j(!0)},options:{wordWrap:"on"}})})]})]})}export{P as ScriptView,P as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as e,ac as F,ad as w,K as O}from"./fluent-icons-CQEhzzaC.js";import{R as C}from"./monaco-BIO15LCS.js";import{b as V,a as p,aj as z,aL as $}from"./index-6so8O90C.js";import{u as I}from"./useStableKeys-BkDn7til.js";import{b as j,L as K,N as U,T as W,h as v,F as b,Y as f,X as A,M as X,s as Y,v as q,w as J,x as M,af as Q,t as o}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";function Z(d){return(d??[]).flatMap(r=>r.rules)}const ee=[],P=()=>({kind:"EntityRule",appliesTo:"PrimaryEntity",context:"HomePageGrid"}),se=()=>({kind:"PageRule",address:""}),ae=O({body:{display:"flex",flexDirection:"column",gap:o.spacingVerticalM},muted:{color:o.colorNeutralForeground3},steps:{listStyleType:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:o.spacingVerticalS},step:{display:"flex",flexDirection:"column",gap:o.spacingVerticalS,padding:o.spacingVerticalM,border:`1px solid ${o.colorNeutralStroke2}`,borderRadius:o.borderRadiusMedium},stepHeader:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:o.spacingHorizontalS},fields:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:o.spacingHorizontalS,minWidth:0}}),re=({location:d,tabId:r})=>{const c=ae(),S=V(s=>s.editorBack),T=p(s=>s.ribbons[d]),D=p(s=>s.setTabDisplayRules),E=p(s=>s.locLabels),B=p(s=>s.baseLanguageCode),L=z(),n=T.tabs.find(s=>s.id===r),m=d==="Application",N=p(s=>!s.baseline[d]?.tabs.some(a=>a.id===r)),R=p(s=>$(s,d)),l=!!n&&!N&&R!==void 0&&!R.includes(r),u=C.useMemo(()=>Z(n?.tabDisplayRules),[n?.tabDisplayRules]),x=I(`tabRules:${d}:${r}`,n?u:ee),k=!n;if(C.useEffect(()=>{k&&S()},[k,S]),!n)return null;const g=s=>D(d,r,s.length>0?[{tabCommand:n.commandId??"",rules:s}]:[]),h=(s,a)=>{g(u.map((t,i)=>i===s?a:t)),x.update()},y=s=>{g([...u,s]),x.add()},G=s=>{g(u.filter((a,t)=>t!==s)),x.remove(s)},H=s=>[...new Set([T.entityLogicalName,s.entityName].filter(a=>!!a))],_=L(n.label,E,B,n.source?.titleToken)||n.id;return e.jsxs("div",{className:c.body,children:[e.jsxs(j,{children:["Tabs are hidden unless their display rule matches. ",e.jsx("strong",{children:_})," shows where ",e.jsx("strong",{children:"any"})," step below matches."]}),l&&e.jsx(K,{intent:"info",children:e.jsx(U,{children:"Another solution adds this tab, so its display rule can't be changed here."})}),u.length>0?e.jsx("ol",{className:c.steps,"aria-label":"Display rule steps",children:u.map((s,a)=>e.jsxs("li",{className:c.step,children:[e.jsxs("div",{className:c.stepHeader,children:[e.jsxs(j,{weight:"semibold",children:[a+1,". ",s.kind==="PageRule"?"Page":"Table"]}),!l&&e.jsx(W,{content:"Remove step",relationship:"label",children:e.jsx(v,{appearance:"subtle",size:"small",icon:e.jsx(F,{}),onClick:()=>G(a)})})]}),s.kind==="EntityRule"&&e.jsxs("div",{className:c.fields,children:[e.jsx(b,{label:"Applies to",children:e.jsxs(f,{value:s.appliesTo??"",disabled:l,onChange:(t,i)=>h(a,{...s,appliesTo:i.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"Primary entity"}),e.jsx("option",{value:"SelectedEntity",children:"Selected entity"})]})}),e.jsx(b,{label:"Context",children:e.jsxs(f,{value:s.context??"",disabled:l,onChange:(t,i)=>h(a,{...s,context:i.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"Form",children:"Form"}),e.jsx("option",{value:"HomePageGrid",children:"Home Page Grid"}),e.jsx("option",{value:"SubGridStandard",children:"SubGrid Standard"}),e.jsx("option",{value:"SubGridAssociated",children:"SubGrid Associated"})]})}),m?e.jsx(b,{label:"Table",hint:"Leave empty for any table.",children:e.jsx(A,{value:s.entityName??"",disabled:l,onChange:(t,i)=>h(a,{...s,entityName:i.value||void 0})})}):e.jsx(b,{label:"Table",children:e.jsxs(f,{value:s.entityName??"",disabled:l,onChange:(t,i)=>h(a,{...s,entityName:i.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),H(s).map(t=>e.jsx("option",{value:t,children:t},t))]})})]}),s.kind==="PageRule"&&e.jsx(b,{label:"Address pattern",validationState:s.address.trim()?"none":"error",validationMessage:s.address.trim()?void 0:"Enter the page address.",children:e.jsx(A,{value:s.address,disabled:l,onChange:(t,i)=>h(a,{...s,address:i.value}),placeholder:"https://…"})})]},x.keys[a]))}):e.jsx(j,{className:c.muted,children:l?"This tab has no display rule of its own.":N&&!m?"No steps: when you publish, this new tab gets the default rule for its location (this table, where the tab is).":"No steps: this tab will be hidden."}),!l&&(m?e.jsx("div",{children:e.jsxs(X,{children:[e.jsx(Y,{disableButtonEnhancement:!0,children:e.jsx(v,{icon:e.jsx(w,{}),children:"Add step"})}),e.jsx(q,{children:e.jsxs(J,{children:[e.jsx(M,{onClick:()=>y(P()),children:"Table"}),e.jsx(M,{onClick:()=>y(se()),children:"Page"})]})})]})}):e.jsx("div",{children:e.jsx(v,{icon:e.jsx(w,{}),onClick:()=>y(P()),children:"Add step"})})),e.jsx(Q,{className:c.muted,children:m?"Application ribbon tabs take table and page steps.":"A table's tabs take table steps only."})]})};export{re as TabDisplayRulesPanel,re as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as n,ac as ne,dq as se,ad as oe,K as ie}from"./fluent-icons-CQEhzzaC.js";import{a as S,R as le}from"./monaco-BIO15LCS.js";import{b as re,a as j,s as de,aP as A,aQ as ce,aR as ue,aS as ge}from"./index-6so8O90C.js";import{L as K,N as U,b as _,af as G,T as W,h as O,F as q,av as pe,X as be,C as he,c as me,t as u}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";const z={1033:"English (United States)",1031:"German",1034:"Spanish (traditional)",1036:"French",1040:"Italian",1041:"Japanese",1042:"Korean",1043:"Dutch",1044:"Norwegian",1045:"Polish",1046:"Portuguese (Brazil)",1049:"Russian",1053:"Swedish",1054:"Thai",1055:"Turkish",1057:"Indonesian",1058:"Ukrainian",1066:"Vietnamese",2052:"Chinese (Simplified)",3082:"Spanish (Spain)"},p=m=>z[m]??`Language ${m}`,fe="",k=[{field:"label",name:"Label"},{field:"tooltipTitle",name:"Tooltip title"},{field:"tooltipBody",name:"Tooltip body",multiline:!0}],xe=ie({body:{display:"flex",flexDirection:"column",gap:u.spacingVerticalM},muted:{color:u.colorNeutralForeground3},add:{display:"flex",alignItems:"flex-end",gap:u.spacingHorizontalS},addField:{flex:"0 1 320px",minWidth:0},language:{display:"flex",flexDirection:"column",gap:u.spacingVerticalS,padding:u.spacingVerticalM,border:`1px solid ${u.colorNeutralStroke2}`,borderRadius:u.borderRadiusMedium},languageHeader:{display:"flex",alignItems:"center",gap:u.spacingHorizontalS},languageName:{flex:1,minWidth:0},fields:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:u.spacingHorizontalM,alignItems:"start"}}),Se=({buttonId:m})=>{const d=xe(),M=re(e=>e.editorBack),D=j(e=>e.ribbons),y=j(e=>e.locLabels),s=j(e=>e.baseLanguageCode),J=j(e=>e.upsertLocLabel),Q=j(e=>e.setButtonProp),b=S.useMemo(()=>{for(const[e,t]of Object.entries(D))for(const a of t.tabs)for(const l of a.groups)for(const o of de(l))if(o.id===m)return{button:o,location:e,tabId:a.id,groupId:l.id}},[D,m]),[X,F]=S.useState([]),[T,P]=S.useState(""),[Y,Z]=S.useState(!1),V=!b;if(le.useEffect(()=>{V&&M()},[V,M]),!b)return null;const{button:i}=b,h=i.source,L={label:A(h?.labelToken,ge(i.id),i.label,y,s),tooltipTitle:A(h?.tooltipTitleToken,ue(i.id),i.tooltipTitle,y,s),tooltipBody:A(h?.tooltipBodyToken,ce(i.id),i.tooltipBody,y,s)},H={label:h?.labelToken,tooltipTitle:h?.tooltipTitleToken,tooltipBody:h?.tooltipBodyToken},f=k.filter(({field:e})=>L[e]===null&&H[e]).map(({field:e})=>H[e].slice(11)).filter((e,t,a)=>a.indexOf(e)===t),v=i.origin!==void 0&&i.origin!=="unmanaged",x=e=>y.find(t=>t.id===L[e]),C=e=>i[e]??"",N=(e,t)=>t===s?C(e):x(e)?.titles.find(a=>a.languageCode===t)?.description??"",I=[s,...new Set([...k.flatMap(({field:e})=>(x(e)?.titles??[]).map(t=>t.languageCode)),...X].filter(e=>e!==s))].sort((e,t)=>e===s?-1:t===s?1:e-t),B=(e,t,a,l)=>{const o=L[e];if(!o)return;const g=x(e),c=new Map((g?.titles??[]).filter(r=>r.languageCode!==s).map(r=>[r.languageCode,r.description]));t!==null&&t!==s&&(a?c.set(t,a):c.delete(t)),!(!g&&c.size===0)&&J({id:o,titles:[...l?[{languageCode:s,description:l}]:[],...[...c].map(([r,R])=>({languageCode:r,description:R}))]})},w=(e,t,a)=>{if(t!==s)return B(e,t,a,C(e));e==="label"&&(Z(!a),!a)||(Q(b.location,b.tabId,b.groupId,i.id,{[e]:e==="label"?a:a||void 0}),x(e)&&B(e,null,"",a))},ee=e=>{for(const{field:t}of k)x(t)?.titles.some(a=>a.languageCode===e)&&B(t,e,"",C(t));F(t=>t.filter(a=>a!==e))},$=e=>{const t=Number(/\d+/.exec(e)?.[0])||Number(Object.entries(z).find(([,a])=>a===e)?.[0]);!t||I.includes(t)||(F(a=>[...a,t]),P(""))},te=(e,t,a)=>{const l=document.getElementById(a),o=N(e,t),g=l?.selectionStart??o.length,c=l?.selectionEnd??o.length;w(e,t,o.slice(0,g)+fe+o.slice(c))},ae=Object.keys(z).map(Number).filter(e=>!I.includes(e));return n.jsxs("div",{className:d.body,children:[v?n.jsx(K,{intent:"info",children:n.jsx(U,{children:"This button isn't yours, so its text is read-only. Customise it in Properties to give it text of its own, then translate it."})}):n.jsxs(_,{children:[p(s)," is the organization's base language: its text is the button's own. Other languages are published with it."]}),f.length>0&&n.jsx(K,{intent:"info",children:n.jsxs(U,{children:[f.join(", ")," ",f.length===1?"is a label":"are labels"," of another solution, shared with the controls that use"," ",f.length===1?"it":"them",", so"," ",f.length===1?"it isn't":"they aren't"," edited here. Change the text in Properties to give this button a label of its own."]})}),I.map(e=>n.jsxs("section",{className:d.language,"aria-label":`${p(e)} (${e})`,children:[n.jsxs("div",{className:d.languageHeader,children:[n.jsxs(_,{weight:"semibold",className:d.languageName,children:[p(e)," ",n.jsxs(G,{className:d.muted,children:[e,e===s?" · base language":""]})]}),e!==s&&!v&&n.jsx(W,{content:`Remove ${p(e)}`,relationship:"label",children:n.jsx(O,{appearance:"subtle",size:"small",icon:n.jsx(ne,{}),onClick:()=>ee(e)})})]}),n.jsx("div",{className:d.fields,children:k.map(({field:t,name:a,multiline:l})=>{const o=`tr-${e}-${t}`,g=v||!L[t],c=`${a} (${p(e)})`,r=t==="label"&&e===s&&Y;return n.jsx(q,{label:a,validationState:r?"error":"none",validationMessage:r?"A button needs a label.":void 0,children:l?n.jsx(pe,{id:o,"aria-label":c,value:N(t,e),readOnly:g,resize:"vertical",onChange:(R,E)=>w(t,e,E.value)}):n.jsx(be,{id:o,"aria-label":c,value:r?"":N(t,e),readOnly:g,onChange:(R,E)=>w(t,e,E.value),contentAfter:g?void 0:n.jsx(W,{content:"Insert a line break",relationship:"label",children:n.jsx(O,{appearance:"transparent",size:"small",icon:n.jsx(se,{}),onClick:()=>te(t,e,o)})})})},t)})})]},e)),!v&&n.jsxs("div",{className:d.add,children:[n.jsx(q,{label:"Add a language",className:d.addField,children:n.jsx(he,{freeform:!0,placeholder:"Language or LCID",value:T,onChange:e=>P(e.target.value),onOptionSelect:(e,t)=>t.optionValue&&$(t.optionValue),onKeyDown:e=>e.key==="Enter"&&$(T),children:ae.map(e=>n.jsx(me,{value:String(e),text:`${p(e)} (${e})`,children:`${p(e)} (${e})`},e))})}),n.jsx(O,{icon:n.jsx(oe,{}),disabled:!T.trim(),onClick:()=>$(T),children:"Add"})]}),n.jsx(G,{className:d.muted,children:"The line break button puts Dataverse's line break (two zero-width spaces) where a long label should wrap."})]})};export{Se as TranslationsView,Se as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{L as s,m as de,bw as me,K as he,bI as B,a5 as j,V as w}from"./fluent-icons-CQEhzzaC.js";import{b as M,R as xe,an as _,Y as ge,ay as pe,az as fe,aA as X,aB as be,as as je,aw as we,ax as ve,G as Se,aC as A,F as ye}from"./index-6so8O90C.js";import{a as t}from"./monaco-BIO15LCS.js";import{u as Ce}from"./useReplaceWebResourceConfirm-DND-V0vw.js";import{a5 as Re,a8 as Ee,Y as We,b2 as Ne,L as P,N as Y,ag as Ie,b as $,ac as De,h as D,a6 as K,ae as Be,a4 as V,t as h}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";const Z=he({content:{display:"flex",flexDirection:"column",gap:h.spacingVerticalS,height:"min(560px, calc(100vh - 220px))",minHeight:"240px",overflowY:"hidden"},toolbar:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:h.spacingHorizontalS,flexShrink:0},search:{flex:1,minWidth:"200px"},box:{flex:1,minHeight:0,overflowX:"auto",overflowY:"hidden"},row:{cursor:"pointer"},muted:{color:h.colorNeutralForeground3},state:{padding:h.spacingVerticalL,textAlign:"center"},reference:{flexShrink:0,overflowWrap:"anywhere",fontFamily:h.fontFamilyMonospace}}),He={js:s.jsx(w,{}),ts:s.jsx(w,{}),css:s.jsx(w,{}),html:s.jsx(w,{}),svg:s.jsx(j,{}),png:s.jsx(j,{}),gif:s.jsx(j,{}),jpg:s.jsx(j,{}),xml:s.jsx(B,{}),resx:s.jsx(B,{})};function v(n){return n.split(".").pop()?.toLowerCase()??""}const ke=[{label:"All types",value:"all"},{label:".js",value:"js"},{label:".html",value:"html"},{label:".svg",value:"svg"},{label:".png",value:"png"},{label:".css",value:"css"},{label:".xml",value:"xml"},{label:".resx",value:"resx"}],Le=[K({columnId:"name",renderHeaderCell:()=>"Name",renderCell:n=>s.jsx(V,{truncate:!0,media:He[v(n.name)]??s.jsx(B,{}),description:n.description||void 0,children:n.name})}),K({columnId:"modified",renderHeaderCell:()=>"Modified",renderCell:n=>s.jsx(V,{truncate:!0,children:n.modifiedOn?new Date(n.modifiedOn).toLocaleDateString():"—"})})],Oe={name:{minWidth:240,idealWidth:720},modified:{minWidth:96,idealWidth:120}},q=52,Fe=34,J=t.createContext({choose:()=>{}});function Ge({item:n,style:o}){const x=Z(),{choose:c}=t.useContext(J);return s.jsx(X,{style:o,className:x.row,"data-web-resource":n.name,onDoubleClick:()=>c(n),onKeyDown:i=>{i.key==="Enter"&&(i.preventDefault(),c(n))},children:({renderCell:i})=>s.jsx(Be,{children:i(n)})})}const Te=({item:n},o)=>s.jsx(Ge,{item:n,style:o}),Ye=({onSelect:n})=>{const o=Z(),x=Ce(),c=M(e=>e.webResourceBrowserOpen),i=M(e=>e.closeWebResourceBrowser),Q=xe(e=>e.publisherPrefix),H=t.useRef(null),[S,k]=t.useState([]),[L,g]=t.useState(!1),[O,F]=t.useState(!1),[y,d]=t.useState(null),[C,R]=t.useState(null),[E,ee]=t.useState(""),[p,se]=t.useState("all"),[W,ae]=t.useState(!0),[f,G]=t.useState(null),N=t.useRef(null),[te,T]=t.useState(0),ne=f!==null;t.useLayoutEffect(()=>{T(N.current?.clientHeight??0)},[c,L,y,C,ne]),t.useEffect(()=>{const e=N.current;if(!e||typeof ResizeObserver>"u")return;const a=new ResizeObserver(([r])=>T(Math.floor(r.contentRect.height)));return a.observe(e),()=>a.disconnect()},[c]);const re=Re({tabBehavior:"unlimited",ignoreDefaultKeydown:{Enter:!0}}),I=t.useMemo(()=>{const e=E.toLowerCase();return S.filter(a=>{const r=v(a.name),l=e===""||a.name.toLowerCase().includes(e)||(a.description??"").toLowerCase().includes(e),u=p==="all"||r===p,b=!W||a.isCustom;return l&&u&&b})},[S,E,p,W]),m=I.find(e=>e.id===f)??null;t.useEffect(()=>{c&&(G(null),g(!0),d(null),R(null),_().then(e=>k(e)).catch(e=>d(e instanceof Error?e.message:String(e))).finally(()=>g(!1)))},[c]);const oe=async()=>{g(!0),d(null);try{k(await _())}catch(e){d(e instanceof Error?e.message:String(e))}finally{g(!1)}},le=e=>new Promise((a,r)=>{const l=new FileReader;l.onerror=()=>r(l.error??new Error("Unable to read file")),l.onload=()=>{const u=String(l.result??"");a(u.includes(",")?u.split(",")[1]??"":u)},l.readAsDataURL(e)}),ce=e=>{const a=v(e.name);return`${Q||"new"}_/${a==="js"||a==="css"||a==="html"||a==="xml"?"scripts":a==="svg"||a==="png"?"icons":"webresources"}/${e.name}`},ie=async e=>{const a=ye();F(!0),R(null);try{const r=await le(e),l=v(e.name),u={html:1,css:2,js:3,xml:4,png:5,jpg:6,gif:7,xsl:9,ico:10,svg:11,resx:12}[l]??4,b=await we(ce(e),r,u,{displayName:e.name,guard:a,onExisting:x.onExisting});await oe(),R([b.solutionWarning,b.publishWarning].filter(Boolean).join(" ")||null)}catch(r){if(r instanceof ve)return;const l=r instanceof Error?r.message:String(r);d(l),Se.getState().logError("webresource",`Upload of ${e.name} failed: ${l}`)}finally{F(!1)}},z=()=>{A.clear(),i()},U=e=>{A.invoke(e),n?.(e),i()},ue=Math.max(q,te-Fe);return s.jsxs(s.Fragment,{children:[x.dialog,s.jsxs(ge,{open:c,onOpenChange:e=>!e&&z(),title:"Choose a web resource",size:"large",contentClassName:o.content,startActions:s.jsxs(s.Fragment,{children:[s.jsx(D,{icon:s.jsx(me,{}),disabled:O,onClick:()=>H.current?.click(),children:O?"Uploading…":"Upload…"}),s.jsx(je,{prefix:"Uploads to"})]}),actions:s.jsxs(s.Fragment,{children:[s.jsx(D,{appearance:"secondary",onClick:z,children:"Cancel"}),s.jsx(D,{appearance:"primary",disabled:!m,onClick:()=>m&&U(m),children:"Select"})]}),children:[s.jsx("input",{ref:H,type:"file",accept:".js,.html,.svg,.png,.css,.xml,.resx,.jpg,.gif,.ico,.xsl",style:{display:"none"},onChange:e=>{const a=e.target.files?.[0];e.currentTarget.value="",a&&ie(a)}}),s.jsxs("div",{className:o.toolbar,children:[s.jsx(Ee,{"aria-label":"Search the web resources by name",placeholder:"Search by name…",value:E,onChange:(e,a)=>ee(a.value),className:o.search}),s.jsx(We,{"aria-label":"Type",value:p,onChange:(e,a)=>se(a.value),children:ke.map(e=>s.jsx("option",{value:e.value,children:e.label},e.value))}),s.jsx(Ne,{label:"Custom only",checked:W,onChange:(e,a)=>ae(a.checked===!0)})]}),y&&s.jsx(P,{intent:"error",children:s.jsx(Y,{children:y})}),C&&s.jsx(P,{intent:"warning",children:s.jsx(Y,{children:C})}),s.jsx("div",{ref:N,className:o.box,...re,children:L?s.jsx(Ie,{className:o.state,size:"small",label:"Loading web resources…"}):I.length===0?s.jsx($,{as:"p",className:de(o.state,o.muted),children:S.length===0?"No web resources in this environment.":"No web resources match."}):s.jsx(J.Provider,{value:{choose:U},children:s.jsxs(pe,{items:I,columns:Le,columnSizingOptions:Oe,resizableColumns:!0,getRowId:e=>e.id,focusMode:"composite",selectionMode:"single",subtleSelection:!0,"aria-label":"Web resources",selectedItems:f?new Set([f]):new Set,onSelectionChange:(e,a)=>{const r=[...a.selectedItems][0];G(r??null)},children:[s.jsx(fe,{children:s.jsx(X,{children:({renderHeaderCell:e})=>s.jsx(De,{children:e()})})}),s.jsx(be,{itemSize:q,height:ue,listProps:{width:"100%"},children:Te})]})})}),m&&s.jsxs($,{size:200,className:o.reference,children:[s.jsx("span",{className:o.muted,children:"Reference: "}),"$webresource:",m.name]})]})]})};export{Ye as WebResourceBrowser,Ye as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{L as n,aa as P,by as O,dp as B,bw as V,K as U}from"./fluent-icons-CQEhzzaC.js";import{a as s}from"./monaco-BIO15LCS.js";import{a as b,b as E,an as _,g as H,am as K,Z as G,aM as W}from"./index-6so8O90C.js";import{M as z}from"./MonacoEditor-BMKRZv-g.js";import{af as Q,ah as Y,ai as Z,n as q,p as y,L as J,N as ee,t as R}from"./fluent-ui-BEjALNLO.js";import"./dnd-C1w9VFfC.js";const te=["Add","AddCircle","Alert","AppFolder","Archive","ArrowClockwise","ArrowCounterclockwise","ArrowDown","ArrowExport","ArrowImport","ArrowLeft","ArrowRight","ArrowSync","ArrowUp","Attach","Beaker","Bookmark","Bug","Building","Calculator","CalendarLtr","CalendarMonth","Call","Camera","Cart","Chart","Checkmark","CheckmarkCircle","Circle","ClipboardTask","Clock","Cloud","Code","CodeBlock","Comment","ContactCard","Copy","CreditCard","Crown","Cube","CursorClick","DataBarVertical","Delete","Diamond","Document","DocumentCopy","DocumentEdit","DocumentText","Download","Edit","Emoji","ErrorCircle","Eye","EyeOff","Filter","Flag","Flow","FolderOpen","Globe","Grid","Group","Heart","Home","Image","Info","Key","Library","Link","List","Location","Lock","Mail","Map","MegaphoneLoud","Money","MoreCircle","MoreHorizontal","Note","NoteEdit","NumberCircle1","Open","Organization","Pause","People","PeopleCommunity","Person","PersonAdd","PersonSearch","Phone","Play","Plug","Print","Question","Refresh","Rename","Save","Search","Send","Settings","Share","Shield","ShoppingBag","Sparkle","Star","StarEmphasis","Stop","Table","Tag","TaskList","TextBulletList","TextDescription","ThumbLike","Timer","ToggleLeft","ToggleRight","Tool","Translate","Umbrella","Unlock","Upload","Video","Warning","Wrench"];function A(a,C){const h=[];return h.push(a.languages.registerCompletionItemProvider("xml",{triggerCharacters:[":","$"],provideCompletionItems(m,e){const r=m.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!r.includes("$LocLabels:"))return{suggestions:[]};const d=r.lastIndexOf("$LocLabels:")+11,i=r.slice(d),u={startLineNumber:e.lineNumber,startColumn:e.column-i.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:b.getState().locLabels.map(c=>({label:c.id,kind:a.languages.CompletionItemKind.Reference,insertText:c.id,range:u,detail:"LocLabel reference"}))}}})),h.push(a.languages.registerCompletionItemProvider("xml",{triggerCharacters:[":","$"],provideCompletionItems(m,e){const r=m.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!r.includes("$webresource:"))return{suggestions:[]};const d=r.lastIndexOf("$webresource:")+13,i=r.slice(d),u={startLineNumber:e.lineNumber,startColumn:e.column-i.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:C().map(c=>({label:c,kind:a.languages.CompletionItemKind.File,insertText:c,range:u,detail:"Web resource"}))}}})),h.push(a.languages.registerCompletionItemProvider("xml",{triggerCharacters:['"'],provideCompletionItems(m,e){const r=m.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!/Command\s*=\s*"[^"]*$/.test(r))return{suggestions:[]};const i=r.match(/Command\s*=\s*"([^"]*)$/)?.[1]??"",u={startLineNumber:e.lineNumber,startColumn:e.column-i.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:b.getState().commands.map(c=>({label:c.id,kind:a.languages.CompletionItemKind.Function,insertText:c.id,range:u,detail:"CommandDefinition"}))}}})),h.push(a.languages.registerCompletionItemProvider("xml",{triggerCharacters:['"'],provideCompletionItems(m,e){const r=m.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!/ModernImage\s*=\s*"[^"]*$/.test(r))return{suggestions:[]};const i=r.match(/ModernImage\s*=\s*"([^"]*)$/)?.[1]??"",u={startLineNumber:e.lineNumber,startColumn:e.column-i.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:te.map(l=>({label:l,kind:a.languages.CompletionItemKind.Color,insertText:l,range:u,detail:"Fluent icon (ModernImage)",documentation:`Renders the ${l}_20_Regular Fluent icon`}))}}})),h}function w(a){a.forEach(C=>C.dispose())}const ne=U({root:{flex:1,display:"flex",flexDirection:"column",gap:R.spacingVerticalS,minHeight:"320px"},muted:{color:R.colorNeutralForeground3},editor:{flex:1,minHeight:"240px",border:`1px solid ${R.colorNeutralStroke2}`,borderRadius:R.borderRadiusMedium,overflow:"hidden"}}),re=["HomepageGrid","SubGrid","Form","Application"],me=({location:a})=>{const C=ne(),h=E(t=>t.closeEditor),m=E(t=>t.openImportXml),e=b(t=>t.ribbons),r=b(t=>t.baseline),d=b(t=>t.commands),i=b(t=>t.displayRules),u=b(t=>t.enableRules),p=b(t=>t.locLabels),[l,c]=s.useState(a),[S,g]=s.useState(null),[$,T]=s.useState(!1),f=s.useRef(0);s.useEffect(()=>{f.current++,g(null)},[l]);const[k,v]=s.useState([]),M=s.useRef(null),I=s.useRef(null),x=s.useRef([]);s.useEffect(()=>{_().then(t=>v(t.map(o=>o.name))).catch(()=>v([]))},[]),s.useEffect(()=>()=>{w(x.current),x.current=[]},[]);const D=s.useCallback((t,o)=>{M.current=t,I.current=o,w(x.current),x.current=A(o,()=>k)},[k]);s.useEffect(()=>{I.current&&(w(x.current),x.current=A(I.current,()=>k))},[k]);const j=()=>{M.current?.getAction("editor.action.formatDocument")?.run()},N=s.useCallback(t=>{try{return`<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
${H({location:t,current:e[t],baseline:r[t],commands:d,displayRules:i,enableRules:u,locLabels:p,entityLogicalName:e[t].entityLogicalName})}`}catch(o){return`<!-- Error generating XML: ${String(o)} -->`}},[e,r,d,i,u,p])(l);s.useEffect(()=>{f.current++,g(null)},[N]);const F=async()=>{const t=f.current,o=await G(N);t===f.current&&g(o.ok?{intent:"success",text:"Copied the XML to the clipboard."}:{intent:"error",text:`Couldn't copy (${o.error}). Click in the XML, press Ctrl+A, then Ctrl+C.`})},X=async()=>{const t=f.current,o=`RibbonDiffXml_${l}.xml`;T(!0),g(null);try{const L=await W(o,N,[{name:"XML",extensions:["xml"]}]);if(t!==f.current)return;L.ok&&L.path?g({intent:"success",text:`Saved to ${L.path}.`}):L.ok?g({intent:"success",text:`Started downloading ${o}. If no file appears, use Copy.`}):L.canceled?g(null):g({intent:"error",text:`Couldn't save the file (${L.error}). Use Copy instead.`})}finally{T(!1)}};return n.jsxs("div",{className:C.root,children:[n.jsx(Q,{className:C.muted,children:"Your changes to this location, as RibbonDiffXml. Publish merges them into your solution's layer; its View XML shows the merged result."}),n.jsx(Y,{size:"small",selectedValue:l,onTabSelect:(t,o)=>c(o.value),children:re.map(t=>n.jsx(Z,{value:t,children:K[t].label},t))}),n.jsxs(q,{size:"small","aria-label":"XML actions",children:[n.jsx(y,{icon:n.jsx(P,{}),onClick:()=>{F()},children:"Copy"}),n.jsx(y,{icon:n.jsx(O,{}),disabled:$,onClick:()=>{X()},children:"Download"}),n.jsx(y,{icon:n.jsx(B,{}),onClick:j,children:"Format"}),n.jsx(y,{icon:n.jsx(V,{}),onClick:()=>{h(),m(N)},children:"Import this XML"})]}),S&&n.jsx(J,{intent:S.intent,role:"status",children:n.jsx(ee,{children:S.text})}),n.jsx("div",{className:C.editor,children:n.jsx(z,{language:"xml",value:N,readOnly:!0,height:"100%",onMount:D})})]})};export{me as XmlView,me as default};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{a as l,R as I}from"./monaco-BIO15LCS.js";import{r as Ne}from"./fluent-ui-BEjALNLO.js";function Nn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return l.useMemo(()=>r=>{t.forEach(o=>o(r))},t)}const rt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function we(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function wt(e){return"nodeType"in e}function z(e){var t,n;return e?we(e)?e:wt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function xt(e){const{Document:t}=z(e);return e instanceof t}function Fe(e){return we(e)?!1:e instanceof z(e).HTMLElement}function qt(e){return e instanceof z(e).SVGElement}function xe(e){return e?we(e)?e.document:wt(e)?xt(e)?e:Fe(e)||qt(e)?e.ownerDocument:document:document:document}const V=rt?l.useLayoutEffect:l.useEffect;function ot(e){const t=l.useRef(e);return V(()=>{t.current=e}),l.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function Tn(){const e=l.useRef(null),t=l.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=l.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Pe(e,t){t===void 0&&(t=[e]);const n=l.useRef(e);return V(()=>{n.current!==e&&(n.current=e)},t),n}function $e(e,t){const n=l.useRef();return l.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function _e(e){const t=ot(e),n=l.useRef(null),r=l.useCallback(o=>{o!==n.current&&t?.(o,n.current),n.current=o},[]);return[n,r]}function Qe(e){const t=l.useRef();return l.useEffect(()=>{t.current=e},[e]),t.current}let ft={};function Xe(e,t){return l.useMemo(()=>{if(t)return t;const n=ft[e]==null?0:ft[e]+1;return ft[e]=n,e+"-"+n},[e,t])}function Gt(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((i,s)=>{const a=Object.entries(s);for(const[c,u]of a){const f=i[c];f!=null&&(i[c]=f+e*u)}return i},{...t})}}const ye=Gt(1),ze=Gt(-1);function Ln(e){return"clientX"in e&&"clientY"in e}function it(e){if(!e)return!1;const{KeyboardEvent:t}=z(e.target);return t&&e instanceof t}function kn(e){if(!e)return!1;const{TouchEvent:t}=z(e.target);return t&&e instanceof t}function Ze(e){if(kn(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Ln(e)?{x:e.clientX,y:e.clientY}:null}const fe=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[fe.Translate.toString(e),fe.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),Pt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Pn(e){return e.matches(Pt)?e:e.querySelector(Pt)}const zn={display:"none"};function Bn(e){let{id:t,value:n}=e;return I.createElement("div",{id:t,style:zn},n)}function Fn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return I.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function $n(){const[e,t]=l.useState("");return{announce:l.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const Jt=l.createContext(null);function Xn(e){const t=l.useContext(Jt);l.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function jn(){const[e]=l.useState(()=>new Set),t=l.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[l.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const Yn={draggable:`
|
|
2
|
+
To pick up a draggable item, press the space bar.
|
|
3
|
+
While dragging, use the arrow keys to move the item.
|
|
4
|
+
Press space again to drop the item in its new position, or press escape to cancel.
|
|
5
|
+
`},Kn={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Un(e){let{announcements:t=Kn,container:n,hiddenTextDescribedById:r,screenReaderInstructions:o=Yn}=e;const{announce:i,announcement:s}=$n(),a=Xe("DndLiveRegion"),[c,u]=l.useState(!1);if(l.useEffect(()=>{u(!0)},[]),Xn(l.useMemo(()=>({onDragStart(d){let{active:h}=d;i(t.onDragStart({active:h}))},onDragMove(d){let{active:h,over:g}=d;t.onDragMove&&i(t.onDragMove({active:h,over:g}))},onDragOver(d){let{active:h,over:g}=d;i(t.onDragOver({active:h,over:g}))},onDragEnd(d){let{active:h,over:g}=d;i(t.onDragEnd({active:h,over:g}))},onDragCancel(d){let{active:h,over:g}=d;i(t.onDragCancel({active:h,over:g}))}}),[i,t])),!c)return null;const f=I.createElement(I.Fragment,null,I.createElement(Bn,{id:r,value:o.draggable}),I.createElement(Fn,{id:a,announcement:s}));return n?Ne.createPortal(f,n):f}var T;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(T||(T={}));function et(){}function Co(e,t){return l.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Do(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return l.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const q=Object.freeze({x:0,y:0});function Ct(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Wn(e,t){const n=Ze(e);if(!n)return"0 0";const r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+"% "+r.y+"%"}function Dt(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function Hn(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function pt(e){let{left:t,top:n,height:r,width:o}=e;return[{x:t,y:n},{x:t+o,y:n},{x:t,y:n+r},{x:t+o,y:n+r}]}function _t(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function zt(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}const Ro=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=zt(t,t.left,t.top),i=[];for(const s of r){const{id:a}=s,c=n.get(a);if(c){const u=Ct(zt(c),o);i.push({id:a,data:{droppableContainer:s,value:u}})}}return i.sort(Dt)},Vn=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=pt(t),i=[];for(const s of r){const{id:a}=s,c=n.get(a);if(c){const u=pt(c),f=o.reduce((h,g,x)=>h+Ct(u[x],g),0),d=Number((f/4).toFixed(4));i.push({id:a,data:{droppableContainer:s,value:d}})}}return i.sort(Dt)};function qn(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),i=Math.min(t.top+t.height,e.top+e.height),s=o-r,a=i-n;if(r<o&&n<i){const c=t.width*t.height,u=e.width*e.height,f=s*a,d=f/(c+u-f);return Number(d.toFixed(4))}return 0}const Gn=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=[];for(const i of r){const{id:s}=i,a=n.get(s);if(a){const c=qn(a,t);c>0&&o.push({id:s,data:{droppableContainer:i,value:c}})}}return o.sort(Hn)};function Jn(e,t){const{top:n,left:r,bottom:o,right:i}=t;return n<=e.y&&e.y<=o&&r<=e.x&&e.x<=i}const So=e=>{let{droppableContainers:t,droppableRects:n,pointerCoordinates:r}=e;if(!r)return[];const o=[];for(const i of t){const{id:s}=i,a=n.get(s);if(a&&Jn(r,a)){const u=pt(a).reduce((d,h)=>d+Ct(r,h),0),f=Number((u/4).toFixed(4));o.push({id:s,data:{droppableContainer:i,value:f}})}}return o.sort(Dt)};function _n(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Qt(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:q}function Qn(e){return function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];return o.reduce((s,a)=>({...s,top:s.top+e*a.y,bottom:s.bottom+e*a.y,left:s.left+e*a.x,right:s.right+e*a.x}),{...n})}}const Zn=Qn(1);function Zt(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function er(e,t,n){const r=Zt(t);if(!r)return e;const{scaleX:o,scaleY:i,x:s,y:a}=r,c=e.left-s-(1-o)*parseFloat(n),u=e.top-a-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),f=o?e.width/o:e.width,d=i?e.height/i:e.height;return{width:f,height:d,top:u,right:c+f,bottom:u+d,left:c}}const tr={ignoreTransform:!1};function Ce(e,t){t===void 0&&(t=tr);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:f}=z(e).getComputedStyle(e);u&&(n=er(n,u,f))}const{top:r,left:o,width:i,height:s,bottom:a,right:c}=n;return{top:r,left:o,width:i,height:s,bottom:a,right:c}}function Bt(e){return Ce(e,{ignoreTransform:!0})}function nr(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function rr(e,t){return t===void 0&&(t=z(e).getComputedStyle(e)),t.position==="fixed"}function or(e,t){t===void 0&&(t=z(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(o=>{const i=t[o];return typeof i=="string"?n.test(i):!1})}function st(e,t){const n=[];function r(o){if(t!=null&&n.length>=t||!o)return n;if(xt(o)&&o.scrollingElement!=null&&!n.includes(o.scrollingElement))return n.push(o.scrollingElement),n;if(!Fe(o)||qt(o)||n.includes(o))return n;const i=z(e).getComputedStyle(o);return o!==e&&or(o,i)&&n.push(o),rr(o,i)?n:r(o.parentNode)}return e?r(e):n}function en(e){const[t]=st(e,1);return t??null}function ht(e){return!rt||!e?null:we(e)?e:wt(e)?xt(e)||e===xe(e).scrollingElement?window:Fe(e)?e:null:null}function tn(e){return we(e)?e.scrollX:e.scrollLeft}function nn(e){return we(e)?e.scrollY:e.scrollTop}function bt(e){return{x:tn(e),y:nn(e)}}var L;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(L||(L={}));function rn(e){return!rt||!e?!1:e===document.scrollingElement}function on(e){const t={x:0,y:0},n=rn(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},o=e.scrollTop<=t.y,i=e.scrollLeft<=t.x,s=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:o,isLeft:i,isBottom:s,isRight:a,maxScroll:r,minScroll:t}}const ir={x:.2,y:.2};function sr(e,t,n,r,o){let{top:i,left:s,right:a,bottom:c}=n;r===void 0&&(r=10),o===void 0&&(o=ir);const{isTop:u,isBottom:f,isLeft:d,isRight:h}=on(e),g={x:0,y:0},x={x:0,y:0},v={height:t.height*o.y,width:t.width*o.x};return!u&&i<=t.top+v.height?(g.y=L.Backward,x.y=r*Math.abs((t.top+v.height-i)/v.height)):!f&&c>=t.bottom-v.height&&(g.y=L.Forward,x.y=r*Math.abs((t.bottom-v.height-c)/v.height)),!h&&a>=t.right-v.width?(g.x=L.Forward,x.x=r*Math.abs((t.right-v.width-a)/v.width)):!d&&s<=t.left+v.width&&(g.x=L.Backward,x.x=r*Math.abs((t.left+v.width-s)/v.width)),{direction:g,speed:x}}function ar(e){if(e===document.scrollingElement){const{innerWidth:i,innerHeight:s}=window;return{top:0,left:0,right:i,bottom:s,width:i,height:s}}const{top:t,left:n,right:r,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:o,width:e.clientWidth,height:e.clientHeight}}function sn(e){return e.reduce((t,n)=>ye(t,bt(n)),q)}function cr(e){return e.reduce((t,n)=>t+tn(n),0)}function lr(e){return e.reduce((t,n)=>t+nn(n),0)}function an(e,t){if(t===void 0&&(t=Ce),!e)return;const{top:n,left:r,bottom:o,right:i}=t(e);en(e)&&(o<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const ur=[["x",["left","right"],cr],["y",["top","bottom"],lr]];class Rt{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=st(n),o=sn(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[i,s,a]of ur)for(const c of s)Object.defineProperty(this,c,{get:()=>{const u=a(r),f=o[i]-u;return this.rect[c]+f},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Te{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var o;(o=this.target)==null||o.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function dr(e){const{EventTarget:t}=z(e);return e instanceof t?e:xe(e)}function gt(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var U;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(U||(U={}));function Ft(e){e.preventDefault()}function fr(e){e.stopPropagation()}var D;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(D||(D={}));const cn={start:[D.Space,D.Enter],cancel:[D.Esc],end:[D.Space,D.Enter,D.Tab]},hr=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case D.Right:return{...n,x:n.x+25};case D.Left:return{...n,x:n.x-25};case D.Down:return{...n,y:n.y+25};case D.Up:return{...n,y:n.y-25}}};class ln{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new Te(xe(n)),this.windowListeners=new Te(z(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(U.Resize,this.handleCancel),this.windowListeners.add(U.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(U.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&an(r),n(q)}handleKeyDown(t){if(it(t)){const{active:n,context:r,options:o}=this.props,{keyboardCodes:i=cn,coordinateGetter:s=hr,scrollBehavior:a="smooth"}=o,{code:c}=t;if(i.end.includes(c)){this.handleEnd(t);return}if(i.cancel.includes(c)){this.handleCancel(t);return}const{collisionRect:u}=r.current,f=u?{x:u.left,y:u.top}:q;this.referenceCoordinates||(this.referenceCoordinates=f);const d=s(t,{active:n,context:r.current,currentCoordinates:f});if(d){const h=ze(d,f),g={x:0,y:0},{scrollableAncestors:x}=r.current;for(const v of x){const p=t.code,{isTop:m,isRight:y,isLeft:b,isBottom:R,maxScroll:S,minScroll:E}=on(v),w=ar(v),C={x:Math.min(p===D.Right?w.right-w.width/2:w.right,Math.max(p===D.Right?w.left:w.left+w.width/2,d.x)),y:Math.min(p===D.Down?w.bottom-w.height/2:w.bottom,Math.max(p===D.Down?w.top:w.top+w.height/2,d.y))},O=p===D.Right&&!y||p===D.Left&&!b,N=p===D.Down&&!R||p===D.Up&&!m;if(O&&C.x!==d.x){const M=v.scrollLeft+h.x,W=p===D.Right&&M<=S.x||p===D.Left&&M>=E.x;if(W&&!h.y){v.scrollTo({left:M,behavior:a});return}W?g.x=v.scrollLeft-M:g.x=p===D.Right?v.scrollLeft-S.x:v.scrollLeft-E.x,g.x&&v.scrollBy({left:-g.x,behavior:a});break}else if(N&&C.y!==d.y){const M=v.scrollTop+h.y,W=p===D.Down&&M<=S.y||p===D.Up&&M>=E.y;if(W&&!h.x){v.scrollTo({top:M,behavior:a});return}W?g.y=v.scrollTop-M:g.y=p===D.Down?v.scrollTop-S.y:v.scrollTop-E.y,g.y&&v.scrollBy({top:-g.y,behavior:a});break}}this.handleMove(t,ye(ze(d,this.referenceCoordinates),g))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}ln.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=cn,onActivation:o}=t,{active:i}=n;const{code:s}=e.nativeEvent;if(r.start.includes(s)){const a=i.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),o?.({event:e.nativeEvent}),!0)}return!1}}];function $t(e){return!!(e&&"distance"in e)}function Xt(e){return!!(e&&"delay"in e)}class St{constructor(t,n,r){var o;r===void 0&&(r=dr(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:i}=t,{target:s}=i;this.props=t,this.events=n,this.document=xe(s),this.documentListeners=new Te(this.document),this.listeners=new Te(r),this.windowListeners=new Te(z(s)),this.initialCoordinates=(o=Ze(i))!=null?o:q,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(U.Resize,this.handleCancel),this.windowListeners.add(U.DragStart,Ft),this.windowListeners.add(U.VisibilityChange,this.handleCancel),this.windowListeners.add(U.ContextMenu,Ft),this.documentListeners.add(U.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Xt(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if($t(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:o}=this.props;o(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(U.Click,fr,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(U.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:o,props:i}=this,{onMove:s,options:{activationConstraint:a}}=i;if(!o)return;const c=(n=Ze(t))!=null?n:q,u=ze(o,c);if(!r&&a){if($t(a)){if(a.tolerance!=null&>(u,a.tolerance))return this.handleCancel();if(gt(u,a.distance))return this.handleStart()}if(Xt(a)&>(u,a.tolerance))return this.handleCancel();this.handlePending(a,u);return}t.cancelable&&t.preventDefault(),s(c)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===D.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const gr={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class un extends St{constructor(t){const{event:n}=t,r=xe(n.target);super(t,gr,r)}}un.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const vr={move:{name:"mousemove"},end:{name:"mouseup"}};var mt;(function(e){e[e.RightClick=2]="RightClick"})(mt||(mt={}));class pr extends St{constructor(t){super(t,vr,xe(t.event.target))}}pr.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===mt.RightClick?!1:(r?.({event:n}),!0)}}];const vt={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class br extends St{constructor(t){super(t,vt)}static setup(){return window.addEventListener(vt.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(vt.move.name,t)};function t(){}}}br.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:o}=n;return o.length>1?!1:(r?.({event:n}),!0)}}];var Le;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(Le||(Le={}));var tt;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(tt||(tt={}));function mr(e){let{acceleration:t,activator:n=Le.Pointer,canScroll:r,draggingRect:o,enabled:i,interval:s=5,order:a=tt.TreeOrder,pointerCoordinates:c,scrollableAncestors:u,scrollableAncestorRects:f,delta:d,threshold:h}=e;const g=wr({delta:d,disabled:!i}),[x,v]=Tn(),p=l.useRef({x:0,y:0}),m=l.useRef({x:0,y:0}),y=l.useMemo(()=>{switch(n){case Le.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case Le.DraggableRect:return o}},[n,o,c]),b=l.useRef(null),R=l.useCallback(()=>{const E=b.current;if(!E)return;const w=p.current.x*m.current.x,C=p.current.y*m.current.y;E.scrollBy(w,C)},[]),S=l.useMemo(()=>a===tt.TreeOrder?[...u].reverse():u,[a,u]);l.useEffect(()=>{if(!i||!u.length||!y){v();return}for(const E of S){if(r?.(E)===!1)continue;const w=u.indexOf(E),C=f[w];if(!C)continue;const{direction:O,speed:N}=sr(E,C,y,t,h);for(const M of["x","y"])g[M][O[M]]||(N[M]=0,O[M]=0);if(N.x>0||N.y>0){v(),b.current=E,x(R,s),p.current=N,m.current=O;return}}p.current={x:0,y:0},m.current={x:0,y:0},v()},[t,R,r,v,i,s,JSON.stringify(y),JSON.stringify(g),x,u,S,f,JSON.stringify(h)])}const yr={x:{[L.Backward]:!1,[L.Forward]:!1},y:{[L.Backward]:!1,[L.Forward]:!1}};function wr(e){let{delta:t,disabled:n}=e;const r=Qe(t);return $e(o=>{if(n||!r||!o)return yr;const i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[L.Backward]:o.x[L.Backward]||i.x===-1,[L.Forward]:o.x[L.Forward]||i.x===1},y:{[L.Backward]:o.y[L.Backward]||i.y===-1,[L.Forward]:o.y[L.Forward]||i.y===1}}},[n,t,r])}function xr(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return $e(o=>{var i;return t==null?null:(i=r??o)!=null?i:null},[r,t])}function Cr(e,t){return l.useMemo(()=>e.reduce((n,r)=>{const{sensor:o}=r,i=o.activators.map(s=>({eventName:s.eventName,handler:t(s.handler,r)}));return[...n,...i]},[]),[e,t])}var Be;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Be||(Be={}));var yt;(function(e){e.Optimized="optimized"})(yt||(yt={}));const jt=new Map;function Dr(e,t){let{dragging:n,dependencies:r,config:o}=t;const[i,s]=l.useState(null),{frequency:a,measure:c,strategy:u}=o,f=l.useRef(e),d=p(),h=Pe(d),g=l.useCallback(function(m){m===void 0&&(m=[]),!h.current&&s(y=>y===null?m:y.concat(m.filter(b=>!y.includes(b))))},[h]),x=l.useRef(null),v=$e(m=>{if(d&&!n)return jt;if(!m||m===jt||f.current!==e||i!=null){const y=new Map;for(let b of e){if(!b)continue;if(i&&i.length>0&&!i.includes(b.id)&&b.rect.current){y.set(b.id,b.rect.current);continue}const R=b.node.current,S=R?new Rt(c(R),R):null;b.rect.current=S,S&&y.set(b.id,S)}return y}return m},[e,i,n,d,c]);return l.useEffect(()=>{f.current=e},[e]),l.useEffect(()=>{d||g()},[n,d]),l.useEffect(()=>{i&&i.length>0&&s(null)},[JSON.stringify(i)]),l.useEffect(()=>{d||typeof a!="number"||x.current!==null||(x.current=setTimeout(()=>{g(),x.current=null},a))},[a,d,g,...r]),{droppableRects:v,measureDroppableContainers:g,measuringScheduled:i!=null};function p(){switch(u){case Be.Always:return!1;case Be.BeforeDragging:return n;default:return!n}}}function Et(e,t){return $e(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function Rr(e,t){return Et(e,t)}function Sr(e){let{callback:t,disabled:n}=e;const r=ot(t),o=l.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return l.useEffect(()=>()=>o?.disconnect(),[o]),o}function at(e){let{callback:t,disabled:n}=e;const r=ot(t),o=l.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return l.useEffect(()=>()=>o?.disconnect(),[o]),o}function Er(e){return new Rt(Ce(e),e)}function Yt(e,t,n){t===void 0&&(t=Er);const[r,o]=l.useState(null);function i(){o(c=>{if(!e)return null;if(e.isConnected===!1){var u;return(u=c??n)!=null?u:null}const f=t(e);return JSON.stringify(c)===JSON.stringify(f)?c:f})}const s=Sr({callback(c){if(e)for(const u of c){const{type:f,target:d}=u;if(f==="childList"&&d instanceof HTMLElement&&d.contains(e)){i();break}}}}),a=at({callback:i});return V(()=>{i(),e?(a?.observe(e),s?.observe(document.body,{childList:!0,subtree:!0})):(a?.disconnect(),s?.disconnect())},[e]),r}function Ar(e){const t=Et(e);return Qt(e,t)}const Kt=[];function Mr(e){const t=l.useRef(e),n=$e(r=>e?r&&r!==Kt&&e&&t.current&&e.parentNode===t.current.parentNode?r:st(e):Kt,[e]);return l.useEffect(()=>{t.current=e},[e]),n}function Or(e){const[t,n]=l.useState(null),r=l.useRef(e),o=l.useCallback(i=>{const s=ht(i.target);s&&n(a=>a?(a.set(s,bt(s)),new Map(a)):null)},[]);return l.useEffect(()=>{const i=r.current;if(e!==i){s(i);const a=e.map(c=>{const u=ht(c);return u?(u.addEventListener("scroll",o,{passive:!0}),[u,bt(u)]):null}).filter(c=>c!=null);n(a.length?new Map(a):null),r.current=e}return()=>{s(e),s(i)};function s(a){a.forEach(c=>{const u=ht(c);u?.removeEventListener("scroll",o)})}},[o,e]),l.useMemo(()=>e.length?t?Array.from(t.values()).reduce((i,s)=>ye(i,s),q):sn(e):q,[e,t])}function Ut(e,t){t===void 0&&(t=[]);const n=l.useRef(null);return l.useEffect(()=>{n.current=null},t),l.useEffect(()=>{const r=e!==q;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?ze(e,n.current):q}function Ir(e){l.useEffect(()=>{if(!rt)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n?.()}},e.map(t=>{let{sensor:n}=t;return n}))}function Nr(e,t){return l.useMemo(()=>e.reduce((n,r)=>{let{eventName:o,handler:i}=r;return n[o]=s=>{i(s,t)},n},{}),[e,t])}function dn(e){return l.useMemo(()=>e?nr(e):null,[e])}const Wt=[];function Tr(e,t){t===void 0&&(t=Ce);const[n]=e,r=dn(n?z(n):null),[o,i]=l.useState(Wt);function s(){i(()=>e.length?e.map(c=>rn(c)?r:new Rt(t(c),c)):Wt)}const a=at({callback:s});return V(()=>{a?.disconnect(),s(),e.forEach(c=>a?.observe(c))},[e]),o}function fn(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Fe(t)?t:e}function Lr(e){let{measure:t}=e;const[n,r]=l.useState(null),o=l.useCallback(u=>{for(const{target:f}of u)if(Fe(f)){r(d=>{const h=t(f);return d?{...d,width:h.width,height:h.height}:h});break}},[t]),i=at({callback:o}),s=l.useCallback(u=>{const f=fn(u);i?.disconnect(),f&&i?.observe(f),r(f?t(f):null)},[t,i]),[a,c]=_e(s);return l.useMemo(()=>({nodeRef:a,rect:n,setRef:c}),[n,a,c])}const kr=[{sensor:un,options:{}},{sensor:ln,options:{}}],Pr={current:{}},Je={draggable:{measure:Bt},droppable:{measure:Bt,strategy:Be.WhileDragging,frequency:yt.Optimized},dragOverlay:{measure:Ce}};class ke extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const zr={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new ke,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:et},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Je,measureDroppableContainers:et,windowRect:null,measuringScheduled:!1},hn={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:et,draggableNodes:new Map,over:null,measureDroppableContainers:et},je=l.createContext(hn),gn=l.createContext(zr);function Br(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new ke}}}function Fr(e,t){switch(t.type){case T.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case T.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case T.DragEnd:case T.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case T.RegisterDroppable:{const{element:n}=t,{id:r}=n,o=new ke(e.droppable.containers);return o.set(r,n),{...e,droppable:{...e.droppable,containers:o}}}case T.SetDroppableDisabled:{const{id:n,key:r,disabled:o}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const s=new ke(e.droppable.containers);return s.set(n,{...i,disabled:o}),{...e,droppable:{...e.droppable,containers:s}}}case T.UnregisterDroppable:{const{id:n,key:r}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const i=new ke(e.droppable.containers);return i.delete(n),{...e,droppable:{...e.droppable,containers:i}}}default:return e}}function $r(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:o}=l.useContext(je),i=Qe(r),s=Qe(n?.id);return l.useEffect(()=>{if(!t&&!r&&i&&s!=null){if(!it(i)||document.activeElement===i.target)return;const a=o.get(s);if(!a)return;const{activatorNode:c,node:u}=a;if(!c.current&&!u.current)return;requestAnimationFrame(()=>{for(const f of[c.current,u.current]){if(!f)continue;const d=Pn(f);if(d){d.focus();break}}})}},[r,t,o,s,i]),null}function vn(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((o,i)=>i({transform:o,...r}),n):n}function Xr(e){return l.useMemo(()=>({draggable:{...Je.draggable,...e?.draggable},droppable:{...Je.droppable,...e?.droppable},dragOverlay:{...Je.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function jr(e){let{activeNode:t,measure:n,initialRect:r,config:o=!0}=e;const i=l.useRef(!1),{x:s,y:a}=typeof o=="boolean"?{x:o,y:o}:o;V(()=>{if(!s&&!a||!t){i.current=!1;return}if(i.current||!r)return;const u=t?.node.current;if(!u||u.isConnected===!1)return;const f=n(u),d=Qt(f,r);if(s||(d.x=0),a||(d.y=0),i.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const h=en(u);h&&h.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const ct=l.createContext({...q,scaleX:1,scaleY:1});var ue;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(ue||(ue={}));const Eo=l.memo(function(t){var n,r,o,i;let{id:s,accessibility:a,autoScroll:c=!0,children:u,sensors:f=kr,collisionDetection:d=Gn,measuring:h,modifiers:g,...x}=t;const v=l.useReducer(Fr,void 0,Br),[p,m]=v,[y,b]=jn(),[R,S]=l.useState(ue.Uninitialized),E=R===ue.Initialized,{draggable:{active:w,nodes:C,translate:O},droppable:{containers:N}}=p,M=w!=null?C.get(w):null,W=l.useRef({initial:null,translated:null}),H=l.useMemo(()=>{var P;return w!=null?{id:w,data:(P=M?.data)!=null?P:Pr,rect:W}:null},[w,M]),G=l.useRef(null),[De,Ye]=l.useState(null),[F,Ke]=l.useState(null),Z=Pe(x,Object.values(x)),Re=Xe("DndDescribedBy",s),Ue=l.useMemo(()=>N.getEnabled(),[N]),B=Xr(h),{droppableRects:ee,measureDroppableContainers:de,measuringScheduled:Se}=Dr(Ue,{dragging:E,dependencies:[O.x,O.y],config:B.droppable}),Y=xr(C,w),We=l.useMemo(()=>F?Ze(F):null,[F]),oe=In(),te=Rr(Y,B.draggable.measure);jr({activeNode:w!=null?C.get(w):null,config:oe.layoutShiftCompensation,initialRect:te,measure:B.draggable.measure});const A=Yt(Y,B.draggable.measure,te),Ee=Yt(Y?Y.parentElement:null),J=l.useRef({activatorEvent:null,active:null,activeNode:Y,collisionRect:null,collisions:null,droppableRects:ee,draggableNodes:C,draggingNode:null,draggingNodeRect:null,droppableContainers:N,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),he=N.getNodeFor((n=J.current.over)==null?void 0:n.id),ne=Lr({measure:B.dragOverlay.measure}),ge=(r=ne.nodeRef.current)!=null?r:Y,ve=E?(o=ne.rect)!=null?o:A:null,At=!!(ne.nodeRef.current&&ne.rect),Mt=Ar(At?null:A),lt=dn(ge?z(ge):null),ie=Mr(E?he??Y:null),He=Tr(ie),Ve=vn(g,{transform:{x:O.x-Mt.x,y:O.y-Mt.y,scaleX:1,scaleY:1},activatorEvent:F,active:H,activeNodeRect:A,containerNodeRect:Ee,draggingNodeRect:ve,over:J.current.over,overlayNodeRect:ne.rect,scrollableAncestors:ie,scrollableAncestorRects:He,windowRect:lt}),Ot=We?ye(We,O):null,It=Or(ie),Dn=Ut(It),Rn=Ut(It,[A]),pe=ye(Ve,Dn),be=ve?Zn(ve,Ve):null,Ae=H&&be?d({active:H,collisionRect:be,droppableRects:ee,droppableContainers:Ue,pointerCoordinates:Ot}):null,Nt=_t(Ae,"id"),[se,Tt]=l.useState(null),Sn=At?Ve:ye(Ve,Rn),En=_n(Sn,(i=se?.rect)!=null?i:null,A),ut=l.useRef(null),Lt=l.useCallback((P,$)=>{let{sensor:X,options:ae}=$;if(G.current==null)return;const K=C.get(G.current);if(!K)return;const j=P.nativeEvent,_=new X({active:G.current,activeNode:K,event:j,options:ae,context:J,onAbort(k){if(!C.get(k))return;const{onDragAbort:Q}=Z.current,re={id:k};Q?.(re),y({type:"onDragAbort",event:re})},onPending(k,ce,Q,re){if(!C.get(k))return;const{onDragPending:Oe}=Z.current,le={id:k,constraint:ce,initialCoordinates:Q,offset:re};Oe?.(le),y({type:"onDragPending",event:le})},onStart(k){const ce=G.current;if(ce==null)return;const Q=C.get(ce);if(!Q)return;const{onDragStart:re}=Z.current,Me={activatorEvent:j,active:{id:ce,data:Q.data,rect:W}};Ne.unstable_batchedUpdates(()=>{re?.(Me),S(ue.Initializing),m({type:T.DragStart,initialCoordinates:k,active:ce}),y({type:"onDragStart",event:Me}),Ye(ut.current),Ke(j)})},onMove(k){m({type:T.DragMove,coordinates:k})},onEnd:me(T.DragEnd),onCancel:me(T.DragCancel)});ut.current=_;function me(k){return async function(){const{active:Q,collisions:re,over:Me,scrollAdjustedTranslate:Oe}=J.current;let le=null;if(Q&&Oe){const{cancelDrop:Ie}=Z.current;le={activatorEvent:j,active:Q,collisions:re,delta:Oe,over:Me},k===T.DragEnd&&typeof Ie=="function"&&await Promise.resolve(Ie(le))&&(k=T.DragCancel)}G.current=null,Ne.unstable_batchedUpdates(()=>{m({type:k}),S(ue.Uninitialized),Tt(null),Ye(null),Ke(null),ut.current=null;const Ie=k===T.DragEnd?"onDragEnd":"onDragCancel";if(le){const dt=Z.current[Ie];dt?.(le),y({type:Ie,event:le})}})}}},[C]),An=l.useCallback((P,$)=>(X,ae)=>{const K=X.nativeEvent,j=C.get(ae);if(G.current!==null||!j||K.dndKit||K.defaultPrevented)return;const _={active:j};P(X,$.options,_)===!0&&(K.dndKit={capturedBy:$.sensor},G.current=ae,Lt(X,$))},[C,Lt]),kt=Cr(f,An);Ir(f),V(()=>{A&&R===ue.Initializing&&S(ue.Initialized)},[A,R]),l.useEffect(()=>{const{onDragMove:P}=Z.current,{active:$,activatorEvent:X,collisions:ae,over:K}=J.current;if(!$||!X)return;const j={active:$,activatorEvent:X,collisions:ae,delta:{x:pe.x,y:pe.y},over:K};Ne.unstable_batchedUpdates(()=>{P?.(j),y({type:"onDragMove",event:j})})},[pe.x,pe.y]),l.useEffect(()=>{const{active:P,activatorEvent:$,collisions:X,droppableContainers:ae,scrollAdjustedTranslate:K}=J.current;if(!P||G.current==null||!$||!K)return;const{onDragOver:j}=Z.current,_=ae.get(Nt),me=_&&_.rect.current?{id:_.id,rect:_.rect.current,data:_.data,disabled:_.disabled}:null,k={active:P,activatorEvent:$,collisions:X,delta:{x:K.x,y:K.y},over:me};Ne.unstable_batchedUpdates(()=>{Tt(me),j?.(k),y({type:"onDragOver",event:k})})},[Nt]),V(()=>{J.current={activatorEvent:F,active:H,activeNode:Y,collisionRect:be,collisions:Ae,droppableRects:ee,draggableNodes:C,draggingNode:ge,draggingNodeRect:ve,droppableContainers:N,over:se,scrollableAncestors:ie,scrollAdjustedTranslate:pe},W.current={initial:ve,translated:be}},[H,Y,Ae,be,C,ge,ve,ee,N,se,ie,pe]),mr({...oe,delta:O,draggingRect:be,pointerCoordinates:Ot,scrollableAncestors:ie,scrollableAncestorRects:He});const Mn=l.useMemo(()=>({active:H,activeNode:Y,activeNodeRect:A,activatorEvent:F,collisions:Ae,containerNodeRect:Ee,dragOverlay:ne,draggableNodes:C,droppableContainers:N,droppableRects:ee,over:se,measureDroppableContainers:de,scrollableAncestors:ie,scrollableAncestorRects:He,measuringConfiguration:B,measuringScheduled:Se,windowRect:lt}),[H,Y,A,F,Ae,Ee,ne,C,N,ee,se,de,ie,He,B,Se,lt]),On=l.useMemo(()=>({activatorEvent:F,activators:kt,active:H,activeNodeRect:A,ariaDescribedById:{draggable:Re},dispatch:m,draggableNodes:C,over:se,measureDroppableContainers:de}),[F,kt,H,A,m,Re,C,se,de]);return I.createElement(Jt.Provider,{value:b},I.createElement(je.Provider,{value:On},I.createElement(gn.Provider,{value:Mn},I.createElement(ct.Provider,{value:En},u)),I.createElement($r,{disabled:a?.restoreFocus===!1})),I.createElement(Un,{...a,hiddenTextDescribedById:Re}));function In(){const P=De?.autoScrollEnabled===!1,$=typeof c=="object"?c.enabled===!1:c===!1,X=E&&!P&&!$;return typeof c=="object"?{...c,enabled:X}:{enabled:X}}}),Yr=l.createContext(null),Ht="button",Kr="Draggable";function Ur(e){let{id:t,data:n,disabled:r=!1,attributes:o}=e;const i=Xe(Kr),{activators:s,activatorEvent:a,active:c,activeNodeRect:u,ariaDescribedById:f,draggableNodes:d,over:h}=l.useContext(je),{role:g=Ht,roleDescription:x="draggable",tabIndex:v=0}=o??{},p=c?.id===t,m=l.useContext(p?ct:Yr),[y,b]=_e(),[R,S]=_e(),E=Nr(s,t),w=Pe(n);V(()=>(d.set(t,{id:t,key:i,node:y,activatorNode:R,data:w}),()=>{const O=d.get(t);O&&O.key===i&&d.delete(t)}),[d,t]);const C=l.useMemo(()=>({role:g,tabIndex:v,"aria-disabled":r,"aria-pressed":p&&g===Ht?!0:void 0,"aria-roledescription":x,"aria-describedby":f.draggable}),[r,g,v,p,x,f.draggable]);return{active:c,activatorEvent:a,activeNodeRect:u,attributes:C,isDragging:p,listeners:r?void 0:E,node:y,over:h,setNodeRef:b,setActivatorNodeRef:S,transform:m}}function pn(){return l.useContext(gn)}const Wr="Droppable",Hr={timeout:25};function Vr(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:o}=e;const i=Xe(Wr),{active:s,dispatch:a,over:c,measureDroppableContainers:u}=l.useContext(je),f=l.useRef({disabled:n}),d=l.useRef(!1),h=l.useRef(null),g=l.useRef(null),{disabled:x,updateMeasurementsFor:v,timeout:p}={...Hr,...o},m=Pe(v??r),y=l.useCallback(()=>{if(!d.current){d.current=!0;return}g.current!=null&&clearTimeout(g.current),g.current=setTimeout(()=>{u(Array.isArray(m.current)?m.current:[m.current]),g.current=null},p)},[p]),b=at({callback:y,disabled:x||!s}),R=l.useCallback((C,O)=>{b&&(O&&(b.unobserve(O),d.current=!1),C&&b.observe(C))},[b]),[S,E]=_e(R),w=Pe(t);return l.useEffect(()=>{!b||!S.current||(b.disconnect(),d.current=!1,b.observe(S.current))},[S,b]),l.useEffect(()=>(a({type:T.RegisterDroppable,element:{id:r,key:i,disabled:n,node:S,rect:h,data:w}}),()=>a({type:T.UnregisterDroppable,key:i,id:r})),[r]),l.useEffect(()=>{n!==f.current.disabled&&(a({type:T.SetDroppableDisabled,id:r,key:i,disabled:n}),f.current.disabled=n)},[r,i,n,a]),{active:s,rect:h,isOver:c?.id===r,node:S,over:c,setNodeRef:E}}function qr(e){let{animation:t,children:n}=e;const[r,o]=l.useState(null),[i,s]=l.useState(null),a=Qe(n);return!n&&!r&&a&&o(a),V(()=>{if(!i)return;const c=r?.key,u=r?.props.id;if(c==null||u==null){o(null);return}Promise.resolve(t(u,i)).then(()=>{o(null)})},[t,r,i]),I.createElement(I.Fragment,null,n,r?l.cloneElement(r,{ref:s}):null)}const Gr={x:0,y:0,scaleX:1,scaleY:1};function Jr(e){let{children:t}=e;return I.createElement(je.Provider,{value:hn},I.createElement(ct.Provider,{value:Gr},t))}const _r={position:"fixed",touchAction:"none"},Qr=e=>it(e)?"transform 250ms ease":void 0,Zr=l.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:o,children:i,className:s,rect:a,style:c,transform:u,transition:f=Qr}=e;if(!a)return null;const d=o?u:{...u,scaleX:1,scaleY:1},h={..._r,width:a.width,height:a.height,top:a.top,left:a.left,transform:fe.Transform.toString(d),transformOrigin:o&&r?Wn(r,a):void 0,transition:typeof f=="function"?f(r):f,...c};return I.createElement(n,{className:s,style:h,ref:t},i)}),eo=e=>t=>{let{active:n,dragOverlay:r}=t;const o={},{styles:i,className:s}=e;if(i!=null&&i.active)for(const[a,c]of Object.entries(i.active))c!==void 0&&(o[a]=n.node.style.getPropertyValue(a),n.node.style.setProperty(a,c));if(i!=null&&i.dragOverlay)for(const[a,c]of Object.entries(i.dragOverlay))c!==void 0&&r.node.style.setProperty(a,c);return s!=null&&s.active&&n.node.classList.add(s.active),s!=null&&s.dragOverlay&&r.node.classList.add(s.dragOverlay),function(){for(const[c,u]of Object.entries(o))n.node.style.setProperty(c,u);s!=null&&s.active&&n.node.classList.remove(s.active)}},to=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:fe.Transform.toString(t)},{transform:fe.Transform.toString(n)}]},no={duration:250,easing:"ease",keyframes:to,sideEffects:eo({styles:{active:{opacity:"0"}}})};function ro(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:o}=e;return ot((i,s)=>{if(t===null)return;const a=n.get(i);if(!a)return;const c=a.node.current;if(!c)return;const u=fn(s);if(!u)return;const{transform:f}=z(s).getComputedStyle(s),d=Zt(f);if(!d)return;const h=typeof t=="function"?t:oo(t);return an(c,o.draggable.measure),h({active:{id:i,data:a.data,node:c,rect:o.draggable.measure(c)},draggableNodes:n,dragOverlay:{node:s,rect:o.dragOverlay.measure(u)},droppableContainers:r,measuringConfiguration:o,transform:d})})}function oo(e){const{duration:t,easing:n,sideEffects:r,keyframes:o}={...no,...e};return i=>{let{active:s,dragOverlay:a,transform:c,...u}=i;if(!t)return;const f={x:a.rect.left-s.rect.left,y:a.rect.top-s.rect.top},d={scaleX:c.scaleX!==1?s.rect.width*c.scaleX/a.rect.width:1,scaleY:c.scaleY!==1?s.rect.height*c.scaleY/a.rect.height:1},h={x:c.x-f.x,y:c.y-f.y,...d},g=o({...u,active:s,dragOverlay:a,transform:{initial:c,final:h}}),[x]=g,v=g[g.length-1];if(JSON.stringify(x)===JSON.stringify(v))return;const p=r?.({active:s,dragOverlay:a,...u}),m=a.node.animate(g,{duration:t,easing:n,fill:"forwards"});return new Promise(y=>{m.onfinish=()=>{p?.(),y()}})}}let Vt=0;function io(e){return l.useMemo(()=>{if(e!=null)return Vt++,Vt},[e])}const Ao=I.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:o,transition:i,modifiers:s,wrapperElement:a="div",className:c,zIndex:u=999}=e;const{activatorEvent:f,active:d,activeNodeRect:h,containerNodeRect:g,draggableNodes:x,droppableContainers:v,dragOverlay:p,over:m,measuringConfiguration:y,scrollableAncestors:b,scrollableAncestorRects:R,windowRect:S}=pn(),E=l.useContext(ct),w=io(d?.id),C=vn(s,{activatorEvent:f,active:d,activeNodeRect:h,containerNodeRect:g,draggingNodeRect:p.rect,over:m,overlayNodeRect:p.rect,scrollableAncestors:b,scrollableAncestorRects:R,transform:E,windowRect:S}),O=Et(h),N=ro({config:r,draggableNodes:x,droppableContainers:v,measuringConfiguration:y}),M=O?p.setRef:void 0;return I.createElement(Jr,null,I.createElement(qr,{animation:N},d&&w?I.createElement(Zr,{key:w,id:d.id,ref:M,as:a,activatorEvent:f,adjustScale:t,className:c,transition:i,rect:O,style:{zIndex:u,...o},transform:C},n):null))});function bn(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function so(e,t){return e.reduce((n,r,o)=>{const i=t.get(r);return i&&(n[o]=i),n},Array(e.length))}function qe(e){return e!==null&&e>=0}function ao(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function co(e){return typeof e=="boolean"?{draggable:e,droppable:e}:e}const mn=e=>{let{rects:t,activeIndex:n,overIndex:r,index:o}=e;const i=bn(t,r,n),s=t[o],a=i[o];return!a||!s?null:{x:a.left-s.left,y:a.top-s.top,scaleX:a.width/s.width,scaleY:a.height/s.height}},Ge={scaleX:1,scaleY:1},Mo=e=>{var t;let{activeIndex:n,activeNodeRect:r,index:o,rects:i,overIndex:s}=e;const a=(t=i[n])!=null?t:r;if(!a)return null;if(o===n){const u=i[s];return u?{x:0,y:n<s?u.top+u.height-(a.top+a.height):u.top-a.top,...Ge}:null}const c=lo(i,o,n);return o>n&&o<=s?{x:0,y:-a.height-c,...Ge}:o<n&&o>=s?{x:0,y:a.height+c,...Ge}:{x:0,y:0,...Ge}};function lo(e,t,n){const r=e[t],o=e[t-1],i=e[t+1];return r?n<t?o?r.top-(o.top+o.height):i?i.top-(r.top+r.height):0:i?i.top-(r.top+r.height):o?r.top-(o.top+o.height):0:0}const yn="Sortable",wn=I.createContext({activeIndex:-1,containerId:yn,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:mn,disabled:{draggable:!1,droppable:!1}});function Oo(e){let{children:t,id:n,items:r,strategy:o=mn,disabled:i=!1}=e;const{active:s,dragOverlay:a,droppableRects:c,over:u,measureDroppableContainers:f}=pn(),d=Xe(yn,n),h=a.rect!==null,g=l.useMemo(()=>r.map(E=>typeof E=="object"&&"id"in E?E.id:E),[r]),x=s!=null,v=s?g.indexOf(s.id):-1,p=u?g.indexOf(u.id):-1,m=l.useRef(g),y=!ao(g,m.current),b=p!==-1&&v===-1||y,R=co(i);V(()=>{y&&x&&f(g)},[y,g,x,f]),l.useEffect(()=>{m.current=g},[g]);const S=l.useMemo(()=>({activeIndex:v,containerId:d,disabled:R,disableTransforms:b,items:g,overIndex:p,useDragOverlay:h,sortedRects:so(g,c),strategy:o}),[v,d,R.draggable,R.droppable,b,g,p,c,h,o]);return I.createElement(wn.Provider,{value:S},t)}const uo=e=>{let{id:t,items:n,activeIndex:r,overIndex:o}=e;return bn(n,r,o).indexOf(t)},fo=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:o,items:i,newIndex:s,previousItems:a,previousContainerId:c,transition:u}=e;return!u||!r||a!==i&&o===s?!1:n?!0:s!==o&&t===c},ho={duration:200,easing:"ease"},xn="transform",go=fe.Transition.toString({property:xn,duration:0,easing:"linear"}),vo={roleDescription:"sortable"};function po(e){let{disabled:t,index:n,node:r,rect:o}=e;const[i,s]=l.useState(null),a=l.useRef(n);return V(()=>{if(!t&&n!==a.current&&r.current){const c=o.current;if(c){const u=Ce(r.current,{ignoreTransform:!0}),f={x:c.left-u.left,y:c.top-u.top,scaleX:c.width/u.width,scaleY:c.height/u.height};(f.x||f.y)&&s(f)}}n!==a.current&&(a.current=n)},[t,n,r,o]),l.useEffect(()=>{i&&s(null)},[i]),i}function Io(e){let{animateLayoutChanges:t=fo,attributes:n,disabled:r,data:o,getNewIndex:i=uo,id:s,strategy:a,resizeObserverConfig:c,transition:u=ho}=e;const{items:f,containerId:d,activeIndex:h,disabled:g,disableTransforms:x,sortedRects:v,overIndex:p,useDragOverlay:m,strategy:y}=l.useContext(wn),b=bo(r,g),R=f.indexOf(s),S=l.useMemo(()=>({sortable:{containerId:d,index:R,items:f},...o}),[d,o,R,f]),E=l.useMemo(()=>f.slice(f.indexOf(s)),[f,s]),{rect:w,node:C,isOver:O,setNodeRef:N}=Vr({id:s,data:S,disabled:b.droppable,resizeObserverConfig:{updateMeasurementsFor:E,...c}}),{active:M,activatorEvent:W,activeNodeRect:H,attributes:G,setNodeRef:De,listeners:Ye,isDragging:F,over:Ke,setActivatorNodeRef:Z,transform:Re}=Ur({id:s,data:S,attributes:{...vo,...n},disabled:b.draggable}),Ue=Nn(N,De),B=!!M,ee=B&&!x&&qe(h)&&qe(p),de=!m&&F,Se=de&&ee?Re:null,We=ee?Se??(a??y)({rects:v,activeNodeRect:H,activeIndex:h,overIndex:p,index:R}):null,oe=qe(h)&&qe(p)?i({id:s,items:f,activeIndex:h,overIndex:p}):R,te=M?.id,A=l.useRef({activeId:te,items:f,newIndex:oe,containerId:d}),Ee=f!==A.current.items,J=t({active:M,containerId:d,isDragging:F,isSorting:B,id:s,index:R,items:f,newIndex:A.current.newIndex,previousItems:A.current.items,previousContainerId:A.current.containerId,transition:u,wasDragging:A.current.activeId!=null}),he=po({disabled:!J,index:R,node:C,rect:w});return l.useEffect(()=>{B&&A.current.newIndex!==oe&&(A.current.newIndex=oe),d!==A.current.containerId&&(A.current.containerId=d),f!==A.current.items&&(A.current.items=f)},[B,oe,d,f]),l.useEffect(()=>{if(te===A.current.activeId)return;if(te!=null&&A.current.activeId==null){A.current.activeId=te;return}const ge=setTimeout(()=>{A.current.activeId=te},50);return()=>clearTimeout(ge)},[te]),{active:M,activeIndex:h,attributes:G,data:S,rect:w,index:R,newIndex:oe,items:f,isOver:O,isSorting:B,isDragging:F,listeners:Ye,node:C,overIndex:p,over:Ke,setNodeRef:Ue,setActivatorNodeRef:Z,setDroppableNodeRef:N,setDraggableNodeRef:De,transform:he??We,transition:ne()};function ne(){if(he||Ee&&A.current.newIndex===R)return go;if(!(de&&!it(W)||!u)&&(B||J))return fe.Transition.toString({...u,property:xn})}}function bo(e,t){var n,r;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(n=e?.draggable)!=null?n:t.draggable,droppable:(r=e?.droppable)!=null?r:t.droppable}}function nt(e){if(!e)return!1;const t=e.data.current;return!!(t&&"sortable"in t&&typeof t.sortable=="object"&&"containerId"in t.sortable&&"items"in t.sortable&&"index"in t.sortable)}const mo=[D.Down,D.Right,D.Up,D.Left],No=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:o,droppableContainers:i,over:s,scrollableAncestors:a}}=t;if(mo.includes(e.code)){if(e.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(d=>{if(!d||d!=null&&d.disabled)return;const h=o.get(d.id);if(h)switch(e.code){case D.Down:r.top<h.top&&c.push(d);break;case D.Up:r.top>h.top&&c.push(d);break;case D.Left:r.left>h.left&&c.push(d);break;case D.Right:r.left<h.left&&c.push(d);break}});const u=Vn({collisionRect:r,droppableRects:o,droppableContainers:c});let f=_t(u,"id");if(f===s?.id&&u.length>1&&(f=u[1].id),f!=null){const d=i.get(n.id),h=i.get(f),g=h?o.get(h.id):null,x=h?.node.current;if(x&&g&&d&&h){const p=st(x).some((E,w)=>a[w]!==E),m=Cn(d,h),y=yo(d,h),b=p||!m?{x:0,y:0}:{x:y?r.width-g.width:0,y:y?r.height-g.height:0},R={x:g.left,y:g.top};return b.x&&b.y?R:ze(R,b)}}}};function Cn(e,t){return!nt(e)||!nt(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function yo(e,t){return!nt(e)||!nt(t)||!Cn(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}export{fe as C,Eo as D,ln as K,un as P,Oo as S,Do as a,Co as b,Ro as c,Ao as d,Vr as e,Io as f,bn as g,So as p,No as s,Ur as u,Mo as v};
|