@mohsinonxrm/pptb-commandbar-studio 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{BulkPublishModal-_JCQ9G-Z.js → BulkPublishModal-DlglMah4.js} +1 -1
- package/dist/assets/{CommandEditorPanel-BfdeUs_f.js → CommandEditorPanel-4pYnil3i.js} +1 -1
- package/dist/assets/{CommandPalette-D2Kh5NZ1.js → CommandPalette-iYxzI2G_.js} +1 -1
- package/dist/assets/{ConflictDrawer-BLiuWHeb.js → ConflictDrawer-DBPRRkoa.js} +1 -1
- package/dist/assets/{DiffViewer-BVDCd534.js → DiffViewer-DFBJPZKA.js} +1 -1
- package/dist/assets/{IconPickerModal-BAiIRU4A.js → IconPickerModal-Bg0Zc8UZ.js} +1 -1
- package/dist/assets/{ImportXmlModal-D-Ns-mYi.js → ImportXmlModal-BccMoaDv.js} +1 -1
- package/dist/assets/{LocalizationEditor-C-TZ2Vqd.js → LocalizationEditor-DVZy2uLy.js} +1 -1
- package/dist/assets/{MonacoEditor-5dvTziHE.js → MonacoEditor-DFYisBG6.js} +1 -1
- package/dist/assets/{NewButtonModal-DOTUaBiJ.js → NewButtonModal-D5Hz1yx4.js} +1 -1
- package/dist/assets/{NewGroupModal-CXy9X9y5.js → NewGroupModal-BgTVG-VJ.js} +1 -1
- package/dist/assets/{NewTabModal-DiGzXYTp.js → NewTabModal-7-ZPcPi-.js} +1 -1
- package/dist/assets/{RuleEditorPanel-DT_uPW8s.js → RuleEditorPanel-BwQzOQBe.js} +1 -1
- package/dist/assets/{ScalingEditorPanel-BFnC7t_K.js → ScalingEditorPanel-B221zNLL.js} +1 -1
- package/dist/assets/{TabDisplayRulesPanel-CdKjedy-.js → TabDisplayRulesPanel-drKzEO_E.js} +1 -1
- package/dist/assets/{UrlComposerModal-DFtXdVW3.js → UrlComposerModal-Bnifp4oB.js} +1 -1
- package/dist/assets/{WebResourceBrowser-FvaNo4rt.js → WebResourceBrowser-qtcNTNge.js} +1 -1
- package/dist/assets/{XmlDrawer-BXAxH3A8.js → XmlDrawer-CN941TbU.js} +1 -1
- package/dist/assets/editor.worker-CdQrwHl8.js +26 -0
- package/dist/assets/index-DjHxPFpB.js +6 -0
- package/dist/index.html +1 -1
- package/dist/stats.html +1 -1
- package/npm-shrinkwrap.json +3 -2
- package/package.json +20 -2
- package/dist/assets/index-G361fmC5.js +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cw as e,cx as F,aw as B,a as L}from"./fluent-icons-DiKr_qRE.js";import{r as $,b as ie}from"./monaco-BLZnQb2P.js";import{i as I,u as S}from"./index-G361fmC5.js";import{Q as C,a1 as s,I as m,a as O,B as G,C as w,F as a,S as p,P as H,z as Q,y as U,x as te,l as re,m as ae,k as se,u as oe,w as ue,j as M}from"./fluent-ui-kUA2U4Gr.js";import{D as ce,c as de,S as pe,v as he,b as me,g as ye,C as xe}from"./dnd-DHB99ZH7.js";const _={CommandClientTypeRule:"Client type (Modern/Refresh/Legacy)",CrmClientTypeRule:"CRM client type (Web/Outlook)",CrmOfflineAccessStateRule:"Offline access state",CrmOutlookClientTypeRule:"Outlook client type",CrmOutlookClientVersionRule:"Outlook client version",CustomRule:"Custom rule (JavaScript)",DeviceTypeRule:"Device type",EntityPrivilegeRule:"Entity privilege",EntityPropertyRule:"Entity property",EntityRule:"Entity",FormEntityContextRule:"Form entity context",FormStateRule:"Form state",FormTypeRule:"Form type",HideForTabletExperienceRule:"Hide for tablet experience",MiscellaneousPrivilegeRule:"Miscellaneous privilege",OptionSetRule:"Option set value",OrganizationSettingRule:"Organization setting",OrRule:"Any of (OR)",OutlookItemTrackingRule:"Outlook item tracking",OutlookRenderTypeRule:"Outlook render type",OutlookVersionRule:"Outlook version",PageRule:"Page (URL match)",RecordPrivilegeRule:"Record privilege",ReferencingAttributeRequiredRule:"Referencing attribute required",RelationshipTypeRule:"Relationship type",SelectionCountRule:"Selection count",ShowOnQuickActionRule:"Show on quick action",ShowOnGridAndQuickActionRule:"Show on grid and quick action",ShowOnGridRule:"Show on grid",SkuRule:"SKU (Online/OnPremise)",ValueRule:"Field value"},ve=[{label:"Client / Presentation",kinds:["CommandClientTypeRule","CrmClientTypeRule","CrmOutlookClientVersionRule"]},{label:"Form state",kinds:["FormStateRule","FormTypeRule","FormEntityContextRule"]},{label:"Entity",kinds:["EntityRule","EntityPrivilegeRule","EntityPropertyRule"]},{label:"Selection",kinds:["SelectionCountRule","ValueRule","RecordPrivilegeRule"]},{label:"Misc",kinds:["MiscellaneousPrivilegeRule","OrganizationSettingRule","PageRule","SkuRule","HideForTabletExperienceRule","RelationshipTypeRule","ReferencingAttributeRequiredRule"]},{label:"Outlook",kinds:["CrmOfflineAccessStateRule","CrmOutlookClientTypeRule","OutlookItemTrackingRule","OutlookRenderTypeRule","OutlookVersionRule"]},{label:"Quick actions",kinds:["ShowOnQuickActionRule","ShowOnGridAndQuickActionRule","ShowOnGridRule"]},{label:"Composite",kinds:["OrRule"]},{label:"Custom",kinds:["CustomRule"]}],Re=F({root:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS},search:{marginBottom:s.spacingVerticalXS},group:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXXS},groupLabel:{color:s.colorNeutralForeground3,paddingTop:s.spacingVerticalXS},kindButton:{justifyContent:"flex-start",textAlign:"left"}}),ge=["EntityPrivilegeRule","EntityPropertyRule","DeviceTypeRule","OptionSetRule","CrmOutlookClientVersionRule"],je=["ShowOnQuickActionRule","ShowOnGridAndQuickActionRule","ShowOnGridRule"];function be(l){switch(l){case"CommandClientTypeRule":return{kind:l,type:"Refresh",default:!0};case"CrmClientTypeRule":return{kind:l,type:"Web"};case"FormStateRule":return{kind:l,state:"Existing"};case"FormTypeRule":return{kind:l,type:"Main"};case"SelectionCountRule":return{kind:l,minimum:1};case"EntityRule":return{kind:l};case"CustomRule":return{kind:l,library:"$webresource:",functionName:"",default:!0};case"ValueRule":return{kind:l,field:"",value:""};case"SkuRule":return{kind:l,sku:"Online"};case"OrRule":return{kind:l,rules:[{kind:"FormStateRule",state:"Existing"},{kind:"SelectionCountRule",minimum:1}]};case"OrganizationSettingRule":return{kind:l,setting:"IsSharepointEnabled"};case"EntityPrivilegeRule":return{kind:l,privilegeType:"Read",privilegeDepth:"Basic"};case"EntityPropertyRule":return{kind:l,propertyName:"IsCustomizable",propertyValue:!0};case"RecordPrivilegeRule":return{kind:l,privilegeType:"Read"};case"RelationshipTypeRule":return{kind:l,appliesTo:"SelectedEntity"};case"MiscellaneousPrivilegeRule":return{kind:l,privilegeName:"ExportToExcel"};case"FormEntityContextRule":return{kind:l,entityName:""};case"PageRule":return{kind:l,address:""};case"CrmOfflineAccessStateRule":return{kind:l,state:"Online"};case"CrmOutlookClientTypeRule":return{kind:l,type:"CrmForOutlook"};case"CrmOutlookClientVersionRule":return{kind:l,major:15,minor:0,build:0,revision:0};case"DeviceTypeRule":return{kind:l,type:"Web"};case"OptionSetRule":return{kind:l,optionSet:"",stateCode:"",objectTypeCode:""};case"OutlookItemTrackingRule":return{kind:l,trackedInCrm:!0};case"OutlookRenderTypeRule":return{kind:l,type:"Web"};case"OutlookVersionRule":return{kind:l,version:"2010"};case"HideForTabletExperienceRule":return{kind:l};case"ReferencingAttributeRequiredRule":return{kind:l};case"ShowOnQuickActionRule":return{kind:l};case"ShowOnGridAndQuickActionRule":return{kind:l};case"ShowOnGridRule":return{kind:l};default:return{kind:l}}}const W=({onSelect:l,disableEnableOnlyKinds:o=!1})=>{const c=Re(),[v,d]=$.useState(""),j=ve.map(R=>({...R,kinds:R.kinds.filter(y=>{if(o&&ge.includes(y)||je.includes(y))return!1;const g=_[y]??y;return!v||g.toLowerCase().includes(v.toLowerCase())||y.toLowerCase().includes(v.toLowerCase())})})).filter(R=>R.kinds.length>0);return e.jsxs("div",{className:c.root,children:[e.jsx(C,{size:100,style:{color:s.colorNeutralForeground3},children:"Quick action rules are OOB references and should be bound by ID (for example, Mscrm.ShowOnQuickAction), not created as custom step kinds."}),e.jsx(m,{className:c.search,placeholder:"Search rule kinds…",value:v,onChange:(R,y)=>d(y.value)}),j.map(R=>e.jsxs("div",{className:c.group,children:[e.jsx(C,{size:100,weight:"semibold",className:c.groupLabel,children:R.label}),R.kinds.map(y=>e.jsx(O,{appearance:"subtle",className:c.kindButton,onClick:()=>l(be(y)),children:_[y]??y},y))]},R.label))]})},fe=F({step:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS,padding:s.spacingVerticalS,border:`1px solid ${s.colorNeutralStroke2}`,borderRadius:s.borderRadiusMedium,backgroundColor:s.colorNeutralBackground2},header:{display:"flex",alignItems:"center",justifyContent:"space-between"},kindBadge:{flexShrink:0},fields:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS},row:{display:"flex",gap:s.spacingHorizontalS,alignItems:"flex-end",flexWrap:"wrap"},nested:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS,paddingLeft:s.spacingHorizontalM,borderLeft:`2px solid ${s.colorBrandStroke2}`},nestedToolbar:{display:"flex",alignItems:"center",gap:s.spacingHorizontalXS},pickerSurface:{minWidth:"300px",maxHeight:"50vh",overflowY:"auto",padding:s.spacingVerticalS}}),V=["Create","Read","Write","Delete","Assign","Share","Append","AppendTo"],z=["None","Basic","Local","Deep","Global"],Ce=["DuplicateDetectionEnabled","GridFiltersEnabled","HasStateCode","IsConnectionsEnabled","MailMergeEnabled","WorksWithQueue","HasActivities","IsActivity","HasNotes","IsCustomizable","IsActivityParty","HasEmailAddresses","IsChildEntity","IsImportable","IsEnabledForCharts","IsBusinessProcessEnabled","HasFeedback","IsBPFEntity"],Se=["ExportToExcel","MailMerge","GoOffline","OfflineSynchronize","PublishReports"],q=({step:l,onChange:o,onRemove:c,disableEnableOnlyKinds:v=!1})=>{const d=fe(),[j,R]=ie.useState(!1),y="invertResult"in l?l.invertResult:!1,g="default"in l,k=g?l.default:void 0,b="invertResult"in l,r=i=>{o({...l,...i})},E=i=>{if(!i.trim())return;const n=parseInt(i,10);return Number.isNaN(n)?void 0:n},A=()=>{switch(l.kind){case"CommandClientTypeRule":return e.jsx(a,{label:"Type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"Refresh",children:"Refresh (Unified Interface / modern web)"}),e.jsx("option",{value:"Modern",children:"Modern (Dynamics 365 for tablets)"}),e.jsx("option",{value:"Legacy",children:"Legacy (classic ribbon + Outlook list views)"})]})});case"CrmClientTypeRule":return e.jsx(a,{label:"Type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"Web",children:"Web"}),e.jsx("option",{value:"Outlook",children:"Outlook"})]})});case"FormStateRule":return e.jsx(a,{label:"State",children:e.jsx(p,{value:l.state,onChange:(i,n)=>r({state:n.value}),children:["Create","Existing","ReadOnly","Disabled","BulkEdit"].map(i=>e.jsx("option",{value:i,children:i},i))})});case"FormTypeRule":return e.jsx(a,{label:"Type",children:e.jsx(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:["Main","Preview","AppointmentBook","Dashboard","Quick","QuickCreate","Card","MainInteractionCentric"].map(i=>e.jsx("option",{value:i,children:i},i))})});case"SelectionCountRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Minimum",children:e.jsx(m,{value:String(l.minimum??""),onChange:(i,n)=>r({minimum:n.value?parseInt(n.value):void 0}),style:{width:"80px"}})}),e.jsx(a,{label:"Maximum",children:e.jsx(m,{type:"number",value:String(l.maximum??""),onChange:(i,n)=>r({maximum:n.value?parseInt(n.value):void 0}),style:{width:"80px"}})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})})]});case"EntityRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Entity name",children:e.jsx(m,{value:l.entityName??"",onChange:(i,n)=>r({entityName:n.value||void 0})})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})}),e.jsx(a,{label:"Context",children:e.jsxs(p,{value:l.context??"",onChange:(i,n)=>r({context:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"Form",children:"Form"}),e.jsx("option",{value:"HomePageGrid",children:"HomePageGrid"}),e.jsx("option",{value:"SubGridStandard",children:"SubGridStandard"}),e.jsx("option",{value:"SubGridAssociated",children:"SubGridAssociated"})]})})]});case"FormEntityContextRule":return e.jsx(a,{label:"Entity name",children:e.jsx(m,{value:l.entityName,onChange:(i,n)=>r({entityName:n.value})})});case"CustomRule":return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Library ($webresource:)",children:e.jsx(m,{value:l.library,onChange:(i,n)=>r({library:n.value}),placeholder:"$webresource:..."})}),e.jsx(a,{label:"Function name",children:e.jsx(m,{value:l.functionName,onChange:(i,n)=>r({functionName:n.value})})})]}),e.jsx(C,{size:100,style:{color:s.colorNeutralForeground3},children:"Async support: on Unified Interface, custom rules can return Promise<boolean>; unresolved promises default to false after 10 seconds."})]});case"CrmOfflineAccessStateRule":return e.jsx(a,{label:"State",children:e.jsxs(p,{value:l.state,onChange:(i,n)=>r({state:n.value}),children:[e.jsx("option",{value:"Online",children:"Online"}),e.jsx("option",{value:"Offline",children:"Offline"})]})});case"CrmOutlookClientTypeRule":return e.jsx(a,{label:"Type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"CrmForOutlook",children:"CrmForOutlook"}),e.jsx("option",{value:"CrmForOutlookOfflineAccess",children:"CrmForOutlookOfflineAccess"})]})});case"CrmOutlookClientVersionRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Major",children:e.jsx(m,{type:"number",value:String(l.major),onChange:(i,n)=>r({major:E(n.value)??l.major}),style:{width:"84px"}})}),e.jsx(a,{label:"Minor",children:e.jsx(m,{type:"number",value:String(l.minor??""),onChange:(i,n)=>r({minor:E(n.value)}),style:{width:"84px"}})}),e.jsx(a,{label:"Build",children:e.jsx(m,{type:"number",value:String(l.build??""),onChange:(i,n)=>r({build:E(n.value)}),style:{width:"84px"}})}),e.jsx(a,{label:"Revision",children:e.jsx(m,{type:"number",value:String(l.revision??""),onChange:(i,n)=>r({revision:E(n.value)}),style:{width:"84px"}})})]});case"DeviceTypeRule":return e.jsx(a,{label:"Device type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"None",children:"None"}),e.jsx("option",{value:"Phone",children:"Phone"}),e.jsx("option",{value:"Tablet",children:"Tablet"}),e.jsx("option",{value:"Web",children:"Web"}),e.jsx("option",{value:"Outlook",children:"Outlook"}),e.jsx("option",{value:"InteractionCentric",children:"InteractionCentric"})]})});case"EntityPrivilegeRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Entity (optional)",children:e.jsx(m,{value:l.entityName??"",onChange:(i,n)=>r({entityName:n.value||void 0})})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})}),e.jsx(a,{label:"Privilege",children:e.jsx(p,{value:l.privilegeType,onChange:(i,n)=>r({privilegeType:n.value}),children:V.map(i=>e.jsx("option",{value:i,children:i},i))})}),e.jsx(a,{label:"Depth",children:e.jsx(p,{value:l.privilegeDepth,onChange:(i,n)=>r({privilegeDepth:n.value}),children:z.map(i=>e.jsx("option",{value:i,children:i},i))})})]});case"EntityPropertyRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Entity (optional)",children:e.jsx(m,{value:l.entityName??"",onChange:(i,n)=>r({entityName:n.value||void 0})})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})}),e.jsx(a,{label:"Property",children:e.jsx(p,{value:l.propertyName,onChange:(i,n)=>r({propertyName:n.value}),children:Ce.map(i=>e.jsx("option",{value:i,children:i},i))})}),e.jsx(w,{label:"Property value",checked:l.propertyValue,onChange:(i,n)=>r({propertyValue:n.checked===!0})})]});case"ValueRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Field",children:e.jsx(m,{value:l.field,onChange:(i,n)=>r({field:n.value})})}),e.jsx(a,{label:"Value",children:e.jsx(m,{value:l.value,onChange:(i,n)=>r({value:n.value})})})]});case"OrRule":return e.jsxs("div",{className:d.nested,children:[l.rules.map((i,n)=>e.jsx(q,{step:i,onChange:T=>{const x=[...l.rules];x[n]=T,o({...l,rules:x})},onRemove:()=>{const T=l.rules.filter((x,u)=>u!==n);o({...l,rules:T})},disableEnableOnlyKinds:v},`${n}-${i.kind}`)),e.jsxs("div",{className:d.nestedToolbar,children:[e.jsxs(H,{open:j,onOpenChange:(i,n)=>R(n.open),children:[e.jsx(Q,{children:e.jsx(O,{icon:e.jsx(L,{}),appearance:"secondary",size:"small",children:"Add nested step"})}),e.jsx(U,{className:d.pickerSurface,children:e.jsx(W,{disableEnableOnlyKinds:v,onSelect:i=>{o({...l,rules:[...l.rules,i]}),R(!1)}})})]}),e.jsx(C,{size:100,style:{color:s.colorNeutralForeground3},children:"OrRule should contain at least two nested steps."})]})]});case"SkuRule":return e.jsx(a,{label:"SKU",children:e.jsxs(p,{value:l.sku,onChange:(i,n)=>r({sku:n.value}),children:[e.jsx("option",{value:"Online",children:"Online"}),e.jsx("option",{value:"OnPremise",children:"OnPremise"}),e.jsx("option",{value:"Spla",children:"Spla"})]})});case"OrganizationSettingRule":return e.jsx(a,{label:"Setting",children:e.jsx(p,{value:l.setting,onChange:(i,n)=>r({setting:n.value}),children:["IsSharepointEnabled","IsSOPIntegrationEnabled","IsFiscalCalendarDefined","IsReadFormModeDefined","IsBPFEntityCustomizationFeatureEnabled"].map(i=>e.jsx("option",{value:i,children:i},i))})});case"MiscellaneousPrivilegeRule":return e.jsxs("div",{className:d.row,children:[e.jsxs(a,{label:"Privilege name",children:[e.jsx(m,{value:l.privilegeName,onChange:(i,n)=>r({privilegeName:n.value}),placeholder:"ExportToExcel",list:"misc-privilege-suggestions"}),e.jsx("datalist",{id:"misc-privilege-suggestions",children:Se.map(i=>e.jsx("option",{value:i},i))})]}),e.jsx(a,{label:"Depth (optional)",children:e.jsxs(p,{value:l.privilegeDepth??"",onChange:(i,n)=>r({privilegeDepth:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),z.map(i=>e.jsx("option",{value:i,children:i},i))]})})]});case"OptionSetRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Option set",children:e.jsx(m,{value:l.optionSet,onChange:(i,n)=>r({optionSet:n.value})})}),e.jsx(a,{label:"State code",children:e.jsx(m,{value:l.stateCode,onChange:(i,n)=>r({stateCode:n.value})})}),e.jsx(a,{label:"Object type code",children:e.jsx(m,{value:l.objectTypeCode,onChange:(i,n)=>r({objectTypeCode:n.value})})})]});case"OutlookItemTrackingRule":return e.jsxs("div",{className:d.row,children:[e.jsx(w,{label:"Tracked in CRM",checked:l.trackedInCrm,onChange:(i,n)=>r({trackedInCrm:n.checked===!0})}),e.jsx(a,{label:"Applies To",children:e.jsx(p,{value:l.appliesTo??"PrimaryEntity",onChange:(i,n)=>r({appliesTo:n.value}),children:e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"})})})]});case"OutlookRenderTypeRule":return e.jsx(a,{label:"Render type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"Web",children:"Web"}),e.jsx("option",{value:"Outlook",children:"Outlook"})]})});case"OutlookVersionRule":return e.jsx(a,{label:"Outlook version",children:e.jsxs(p,{value:l.version,onChange:(i,n)=>r({version:n.value}),children:[e.jsx("option",{value:"2003",children:"2003"}),e.jsx("option",{value:"2007",children:"2007"}),e.jsx("option",{value:"2010",children:"2010"})]})});case"PageRule":return e.jsx(a,{label:"Address pattern",children:e.jsx(m,{value:l.address,onChange:(i,n)=>r({address:n.value}),placeholder:"main.aspx"})});case"RecordPrivilegeRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Privilege",children:e.jsx(p,{value:l.privilegeType,onChange:(i,n)=>r({privilegeType:n.value}),children:V.map(i=>e.jsx("option",{value:i,children:i},i))})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Default"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"})]})})]});case"RelationshipTypeRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Applies To",children:e.jsx(p,{value:l.appliesTo,disabled:!0,children:e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})})}),e.jsx(a,{label:"Relationship type",children:e.jsxs(p,{value:l.relationshipType??"",onChange:(i,n)=>r({relationshipType:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"OneToMany",children:"OneToMany"}),e.jsx("option",{value:"ManyToMany",children:"ManyToMany"}),e.jsx("option",{value:"NoRelationship",children:"NoRelationship"})]})}),e.jsx(w,{label:"Allow custom relationship",checked:l.allowCustomRelationship===!0,onChange:(i,n)=>r({allowCustomRelationship:n.checked===!0})}),e.jsx(w,{label:"Allow system relationship",checked:l.allowSystemRelationship===!0,onChange:(i,n)=>r({allowSystemRelationship:n.checked===!0})})]});default:return e.jsxs(C,{size:200,italic:!0,style:{color:s.colorNeutralForeground3},children:[l.kind," — no additional parameters"]})}};return e.jsxs("div",{className:d.step,role:"listitem",children:[e.jsxs("div",{className:d.header,children:[e.jsx(G,{appearance:"outline",size:"small",className:d.kindBadge,children:_[l.kind]??l.kind}),e.jsx(O,{appearance:"subtle",icon:e.jsx(B,{}),size:"small",onClick:c,"aria-label":`Remove ${l.kind} step`})]}),e.jsxs("div",{className:d.fields,children:[A(),e.jsxs("div",{className:d.row,children:[e.jsx(w,{label:"Default value",checked:g?k??!0:!0,disabled:!g,title:g?"Default value returned if the rule cannot be evaluated.":"This rule kind does not support a Default attribute in Ribbon XML.",onChange:(i,n)=>{g&&r({default:n.checked})}}),e.jsx(w,{label:"Invert result",checked:b?y??!1:!1,disabled:!b,title:b?"Reverse the evaluated result.":"This rule kind does not support InvertResult in Ribbon XML.",onChange:(i,n)=>{b&&r({invertResult:n.checked})}})]})]})]})};function Oe(l){return l.length===0?"No steps defined — rule always passes.":l.map(X).join(" AND ")}function X(l){const o="invertResult"in l&&l.invertResult?"NOT ":"";switch(l.kind){case"SelectionCountRule":{const c=l.minimum!==void 0?`at least ${l.minimum}`:null,v=l.maximum!==void 0?`at most ${l.maximum}`:null,d=[c,v].filter(Boolean).join(" and "),j=l.appliesTo?` (${l.appliesTo})`:"";return`${o}Selection count is ${d}${j}`}case"EntityRule":{const c=l.entityName??"any entity",v=l.context?` in ${l.context} context`:"",d=l.appliesTo?` (${l.appliesTo})`:"";return`${o}Entity is "${c}"${v}${d}`}case"FormStateRule":return`${o}Form state is "${l.state}"`;case"CommandClientTypeRule":return`${o}Client type is "${l.type}" (${ke(l.type)})`;case"CrmClientTypeRule":return`${o}CRM client type is "${l.type}"`;case"CustomRule":return`${o}Custom rule: ${l.functionName}() from ${l.library}`;case"OrRule":return`(${l.rules.map(X).join(" OR ")})`;case"MiscellaneousPrivilegeRule":{const c=l.privilegeDepth?` at ${l.privilegeDepth} depth`:"";return`${o}User has "${l.privilegeName}" privilege${c}`}case"EntityPrivilegeRule":{const c=l.entityName?` on "${l.entityName}"`:"",v=l.appliesTo?` (${l.appliesTo})`:"";return`${o}User has ${l.privilegeType} privilege${c} at ${l.privilegeDepth} depth${v}`}case"EntityPropertyRule":{const c=l.entityName?` for "${l.entityName}"`:"";return`${o}Entity property "${l.propertyName}" is ${l.propertyValue}${c}`}case"FormTypeRule":return`${o}Form type is "${l.type}"`;case"FormEntityContextRule":return`${o}Form entity context is "${l.entityName}"`;case"ValueRule":return`${o}Field "${l.field}" equals "${l.value}"`;case"SkuRule":return`${o}SKU is "${l.sku}"`;case"HideForTabletExperienceRule":return`${o}Hide for tablet experience`;case"OrganizationSettingRule":return`${o}Organization setting "${l.setting}" is enabled`;case"PageRule":return`${o}Page address matches "${l.address}"`;case"RecordPrivilegeRule":{const c=l.appliesTo?` (${l.appliesTo})`:"";return`${o}User has ${l.privilegeType} privilege on current record${c}`}case"RelationshipTypeRule":{const c=l.relationshipType??"any";return`${o}Relationship type is "${c}" (${l.appliesTo})`}case"ReferencingAttributeRequiredRule":return`${o}Referencing attribute is required`;case"OutlookItemTrackingRule":return`${o}Outlook item is ${l.trackedInCrm?"":"not "}tracked in CRM`;case"OutlookRenderTypeRule":return`${o}Outlook render type is "${l.type}"`;case"OutlookVersionRule":return`${o}Outlook version is "${l.version}"`;case"CrmOfflineAccessStateRule":return`${o}CRM offline state is "${l.state}"`;case"CrmOutlookClientTypeRule":return`${o}CRM Outlook client type is "${l.type}"`;case"CrmOutlookClientVersionRule":return`${o}CRM Outlook client version is ${l.major}.${l.minor??0}+`;case"DeviceTypeRule":return`${o}Device type is "${l.type}"`;case"OptionSetRule":return`${o}Option set "${l.optionSet}" state code is "${l.stateCode}"`;case"ShowOnQuickActionRule":return"Show on quick action (references Mscrm.ShowOnQuickAction)";case"ShowOnGridAndQuickActionRule":return"Show on grid and quick action (references Mscrm.ShowOnGridAndQuickAction)";case"ShowOnGridRule":return"Show on grid (references Mscrm.ShowOnGrid)";default:return"Unknown rule step"}}function ke(l){switch(l){case"Modern":return"Dynamics 365 tablets";case"Refresh":return"Unified Interface / modern web";case"Legacy":return"Classic ribbon / Outlook list views";default:return l}}const Ee=F({drawer:{width:"560px",maxWidth:"90vw"},body:{display:"flex",flexDirection:"column",gap:s.spacingVerticalS,padding:s.spacingVerticalM,overflowY:"auto"},header:{display:"flex",alignItems:"center",gap:s.spacingHorizontalS},stepsList:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS,listStyle:"none",padding:0,margin:0},summary:{padding:s.spacingVerticalS,backgroundColor:s.colorNeutralBackground3,borderRadius:s.borderRadiusMedium,fontStyle:"italic",color:s.colorNeutralForeground2,fontSize:s.fontSizeBase200},addRow:{display:"flex",gap:s.spacingHorizontalS},pickerPopover:{maxHeight:"60vh",overflowY:"auto",minWidth:"320px",padding:s.spacingVerticalM},usedBy:{color:s.colorNeutralForeground3,fontSize:s.fontSizeBase200},ruleIdRow:{display:"flex",alignItems:"flex-end",gap:s.spacingHorizontalS},ruleIdInput:{fontFamily:s.fontFamilyMonospace},error:{color:s.colorPaletteRedForeground1,fontSize:s.fontSizeBase100},sortableItem:{listStyle:"none"},sortableInner:{display:"flex",alignItems:"flex-start",gap:s.spacingHorizontalS},dragHandle:{marginTop:s.spacingVerticalS,cursor:"grab"}}),Ae=()=>{const l=Ee(),o=I(t=>t.ruleEditorOpen),c=I(t=>t.ruleEditorId),v=I(t=>t.ruleEditorKind),d=I(t=>t.closeRuleEditor),j=I(t=>t.openRuleEditor),R=S(t=>t.enableRules),y=S(t=>t.displayRules),g=S(t=>t.commands),k=S(t=>t.upsertEnableRule),b=S(t=>t.upsertDisplayRule),r=S(t=>t.renameEnableRuleId),E=S(t=>t.renameDisplayRuleId),[A,i]=$.useState(!1),[n,T]=$.useState(""),x=v==="enable",u=x?R.find(t=>t.id===c):y.find(t=>t.id===c);$.useEffect(()=>{u&&T(u.id)},[u]);const N=$.useMemo(()=>u?.steps.map((t,h)=>`step-${h}`)??[],[u]),K=g.filter(t=>x?t.enableRules.includes(c??""):t.displayRules.includes(c??"")).length,Y=(t,h)=>{if(!u)return;const f=[...u.steps];f[t]=h,x?k({...u,steps:f}):b({...u,steps:f})},J=t=>{if(!u)return;const h=u.steps.filter((f,P)=>P!==t);x?k({...u,steps:h}):b({...u,steps:h})},Z=t=>{if(!u)return;const h=[...u.steps,t];x?k({...u,steps:h}):b({...u,steps:h}),i(!1)},ee=t=>{if(!u||!t.over||t.active.id===t.over.id)return;const h=N.indexOf(String(t.active.id)),f=N.indexOf(String(t.over.id));if(h<0||f<0)return;const P=me(u.steps,h,f);x?k({...u,steps:P}):b({...u,steps:P})};if(!u)return null;const le=Oe(u.steps),ne=(x?R:y).some(t=>t.id===n.trim()&&t.id!==u.id),D=n.trim()?/\s/.test(n)?"Rule ID cannot contain whitespace.":ne?"A rule with this ID already exists.":"":"Rule ID is required.";return e.jsxs(te,{position:"end",open:o,onOpenChange:()=>d(),className:l.drawer,children:[e.jsx(re,{children:e.jsx(ae,{action:e.jsx(O,{appearance:"subtle",icon:e.jsx(B,{}),onClick:d,"aria-label":"Close rule editor"}),children:e.jsxs("div",{className:l.header,children:[e.jsx(G,{appearance:"filled",color:x?"success":"informative",size:"small",children:x?"Enable":"Display"}),e.jsx(C,{size:400,weight:"semibold",style:{fontFamily:s.fontFamilyMonospace},children:u.id})]})})}),e.jsxs(se,{className:l.body,children:[e.jsxs(C,{className:l.usedBy,children:["Used by ",K," command(s)"]}),e.jsxs("div",{className:l.ruleIdRow,children:[e.jsx(m,{className:l.ruleIdInput,value:n,onChange:(t,h)=>T(h.value),"aria-label":"Rule ID"}),e.jsx(O,{appearance:"secondary",size:"small",disabled:!n.trim()||!!D||n===u.id,onClick:()=>{const t=n.trim();(x?r(u.id,t):E(u.id,t))&&j(t,x?"enable":"display")},children:"Apply ID change"})]}),D&&e.jsx(C,{className:l.error,children:D}),x&&e.jsx(oe,{intent:"warning",children:e.jsx(ue,{children:"Enable rules have a restricted set of allowed step types. Display-only rule kinds are disabled."})}),e.jsx(M,{children:"Steps (ALL must pass)"}),e.jsx(ce,{collisionDetection:de,onDragEnd:ee,children:e.jsx(pe,{items:N,strategy:he,children:e.jsxs("ol",{className:l.stepsList,role:"list","aria-label":"Rule steps",children:[u.steps.map((t,h)=>e.jsx(Te,{id:N[h],styles:l,children:e.jsx(q,{step:t,onChange:f=>Y(h,f),onRemove:()=>J(h),disableEnableOnlyKinds:x})},N[h])),u.steps.length===0&&e.jsx(C,{italic:!0,style:{color:s.colorNeutralForeground3},children:"No steps yet — all buttons with this rule will be visible/enabled by default."})]})})}),e.jsxs(H,{open:A,onOpenChange:(t,h)=>i(h.open),children:[e.jsx(Q,{children:e.jsx(O,{icon:e.jsx(L,{}),appearance:"secondary",onClick:()=>i(!0),children:"Add step"})}),e.jsx(U,{className:l.pickerPopover,children:e.jsx(W,{onSelect:Z,disableEnableOnlyKinds:x})})]}),e.jsx(M,{children:"Plain-English summary"}),e.jsx("div",{className:l.summary,role:"note","aria-label":"Rule summary",children:le})]})]})};function Te({id:l,children:o,styles:c}){const{attributes:v,listeners:d,setNodeRef:j,setActivatorNodeRef:R,transform:y,transition:g}=ye({id:l});return e.jsx("li",{ref:j,className:c.sortableItem,style:{transform:xe.Transform.toString(y),transition:g},children:e.jsxs("div",{className:c.sortableInner,children:[e.jsx(O,{ref:R,appearance:"subtle",size:"small",className:c.dragHandle,...v,...d,"aria-label":"Drag to reorder step",children:"Drag"}),e.jsx("div",{style:{flex:1},children:o})]})})}export{Ae as RuleEditorPanel,Ae as default};
|
|
1
|
+
import{cw as e,cx as F,aw as B,a as L}from"./fluent-icons-DiKr_qRE.js";import{r as $,b as ie}from"./monaco-BLZnQb2P.js";import{i as I,u as S}from"./index-DjHxPFpB.js";import{Q as C,a1 as s,I as m,a as O,B as G,C as w,F as a,S as p,P as H,z as Q,y as U,x as te,l as re,m as ae,k as se,u as oe,w as ue,j as M}from"./fluent-ui-kUA2U4Gr.js";import{D as ce,c as de,S as pe,v as he,b as me,g as ye,C as xe}from"./dnd-DHB99ZH7.js";const _={CommandClientTypeRule:"Client type (Modern/Refresh/Legacy)",CrmClientTypeRule:"CRM client type (Web/Outlook)",CrmOfflineAccessStateRule:"Offline access state",CrmOutlookClientTypeRule:"Outlook client type",CrmOutlookClientVersionRule:"Outlook client version",CustomRule:"Custom rule (JavaScript)",DeviceTypeRule:"Device type",EntityPrivilegeRule:"Entity privilege",EntityPropertyRule:"Entity property",EntityRule:"Entity",FormEntityContextRule:"Form entity context",FormStateRule:"Form state",FormTypeRule:"Form type",HideForTabletExperienceRule:"Hide for tablet experience",MiscellaneousPrivilegeRule:"Miscellaneous privilege",OptionSetRule:"Option set value",OrganizationSettingRule:"Organization setting",OrRule:"Any of (OR)",OutlookItemTrackingRule:"Outlook item tracking",OutlookRenderTypeRule:"Outlook render type",OutlookVersionRule:"Outlook version",PageRule:"Page (URL match)",RecordPrivilegeRule:"Record privilege",ReferencingAttributeRequiredRule:"Referencing attribute required",RelationshipTypeRule:"Relationship type",SelectionCountRule:"Selection count",ShowOnQuickActionRule:"Show on quick action",ShowOnGridAndQuickActionRule:"Show on grid and quick action",ShowOnGridRule:"Show on grid",SkuRule:"SKU (Online/OnPremise)",ValueRule:"Field value"},ve=[{label:"Client / Presentation",kinds:["CommandClientTypeRule","CrmClientTypeRule","CrmOutlookClientVersionRule"]},{label:"Form state",kinds:["FormStateRule","FormTypeRule","FormEntityContextRule"]},{label:"Entity",kinds:["EntityRule","EntityPrivilegeRule","EntityPropertyRule"]},{label:"Selection",kinds:["SelectionCountRule","ValueRule","RecordPrivilegeRule"]},{label:"Misc",kinds:["MiscellaneousPrivilegeRule","OrganizationSettingRule","PageRule","SkuRule","HideForTabletExperienceRule","RelationshipTypeRule","ReferencingAttributeRequiredRule"]},{label:"Outlook",kinds:["CrmOfflineAccessStateRule","CrmOutlookClientTypeRule","OutlookItemTrackingRule","OutlookRenderTypeRule","OutlookVersionRule"]},{label:"Quick actions",kinds:["ShowOnQuickActionRule","ShowOnGridAndQuickActionRule","ShowOnGridRule"]},{label:"Composite",kinds:["OrRule"]},{label:"Custom",kinds:["CustomRule"]}],Re=F({root:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS},search:{marginBottom:s.spacingVerticalXS},group:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXXS},groupLabel:{color:s.colorNeutralForeground3,paddingTop:s.spacingVerticalXS},kindButton:{justifyContent:"flex-start",textAlign:"left"}}),ge=["EntityPrivilegeRule","EntityPropertyRule","DeviceTypeRule","OptionSetRule","CrmOutlookClientVersionRule"],je=["ShowOnQuickActionRule","ShowOnGridAndQuickActionRule","ShowOnGridRule"];function be(l){switch(l){case"CommandClientTypeRule":return{kind:l,type:"Refresh",default:!0};case"CrmClientTypeRule":return{kind:l,type:"Web"};case"FormStateRule":return{kind:l,state:"Existing"};case"FormTypeRule":return{kind:l,type:"Main"};case"SelectionCountRule":return{kind:l,minimum:1};case"EntityRule":return{kind:l};case"CustomRule":return{kind:l,library:"$webresource:",functionName:"",default:!0};case"ValueRule":return{kind:l,field:"",value:""};case"SkuRule":return{kind:l,sku:"Online"};case"OrRule":return{kind:l,rules:[{kind:"FormStateRule",state:"Existing"},{kind:"SelectionCountRule",minimum:1}]};case"OrganizationSettingRule":return{kind:l,setting:"IsSharepointEnabled"};case"EntityPrivilegeRule":return{kind:l,privilegeType:"Read",privilegeDepth:"Basic"};case"EntityPropertyRule":return{kind:l,propertyName:"IsCustomizable",propertyValue:!0};case"RecordPrivilegeRule":return{kind:l,privilegeType:"Read"};case"RelationshipTypeRule":return{kind:l,appliesTo:"SelectedEntity"};case"MiscellaneousPrivilegeRule":return{kind:l,privilegeName:"ExportToExcel"};case"FormEntityContextRule":return{kind:l,entityName:""};case"PageRule":return{kind:l,address:""};case"CrmOfflineAccessStateRule":return{kind:l,state:"Online"};case"CrmOutlookClientTypeRule":return{kind:l,type:"CrmForOutlook"};case"CrmOutlookClientVersionRule":return{kind:l,major:15,minor:0,build:0,revision:0};case"DeviceTypeRule":return{kind:l,type:"Web"};case"OptionSetRule":return{kind:l,optionSet:"",stateCode:"",objectTypeCode:""};case"OutlookItemTrackingRule":return{kind:l,trackedInCrm:!0};case"OutlookRenderTypeRule":return{kind:l,type:"Web"};case"OutlookVersionRule":return{kind:l,version:"2010"};case"HideForTabletExperienceRule":return{kind:l};case"ReferencingAttributeRequiredRule":return{kind:l};case"ShowOnQuickActionRule":return{kind:l};case"ShowOnGridAndQuickActionRule":return{kind:l};case"ShowOnGridRule":return{kind:l};default:return{kind:l}}}const W=({onSelect:l,disableEnableOnlyKinds:o=!1})=>{const c=Re(),[v,d]=$.useState(""),j=ve.map(R=>({...R,kinds:R.kinds.filter(y=>{if(o&&ge.includes(y)||je.includes(y))return!1;const g=_[y]??y;return!v||g.toLowerCase().includes(v.toLowerCase())||y.toLowerCase().includes(v.toLowerCase())})})).filter(R=>R.kinds.length>0);return e.jsxs("div",{className:c.root,children:[e.jsx(C,{size:100,style:{color:s.colorNeutralForeground3},children:"Quick action rules are OOB references and should be bound by ID (for example, Mscrm.ShowOnQuickAction), not created as custom step kinds."}),e.jsx(m,{className:c.search,placeholder:"Search rule kinds…",value:v,onChange:(R,y)=>d(y.value)}),j.map(R=>e.jsxs("div",{className:c.group,children:[e.jsx(C,{size:100,weight:"semibold",className:c.groupLabel,children:R.label}),R.kinds.map(y=>e.jsx(O,{appearance:"subtle",className:c.kindButton,onClick:()=>l(be(y)),children:_[y]??y},y))]},R.label))]})},fe=F({step:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS,padding:s.spacingVerticalS,border:`1px solid ${s.colorNeutralStroke2}`,borderRadius:s.borderRadiusMedium,backgroundColor:s.colorNeutralBackground2},header:{display:"flex",alignItems:"center",justifyContent:"space-between"},kindBadge:{flexShrink:0},fields:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS},row:{display:"flex",gap:s.spacingHorizontalS,alignItems:"flex-end",flexWrap:"wrap"},nested:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS,paddingLeft:s.spacingHorizontalM,borderLeft:`2px solid ${s.colorBrandStroke2}`},nestedToolbar:{display:"flex",alignItems:"center",gap:s.spacingHorizontalXS},pickerSurface:{minWidth:"300px",maxHeight:"50vh",overflowY:"auto",padding:s.spacingVerticalS}}),V=["Create","Read","Write","Delete","Assign","Share","Append","AppendTo"],z=["None","Basic","Local","Deep","Global"],Ce=["DuplicateDetectionEnabled","GridFiltersEnabled","HasStateCode","IsConnectionsEnabled","MailMergeEnabled","WorksWithQueue","HasActivities","IsActivity","HasNotes","IsCustomizable","IsActivityParty","HasEmailAddresses","IsChildEntity","IsImportable","IsEnabledForCharts","IsBusinessProcessEnabled","HasFeedback","IsBPFEntity"],Se=["ExportToExcel","MailMerge","GoOffline","OfflineSynchronize","PublishReports"],q=({step:l,onChange:o,onRemove:c,disableEnableOnlyKinds:v=!1})=>{const d=fe(),[j,R]=ie.useState(!1),y="invertResult"in l?l.invertResult:!1,g="default"in l,k=g?l.default:void 0,b="invertResult"in l,r=i=>{o({...l,...i})},E=i=>{if(!i.trim())return;const n=parseInt(i,10);return Number.isNaN(n)?void 0:n},A=()=>{switch(l.kind){case"CommandClientTypeRule":return e.jsx(a,{label:"Type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"Refresh",children:"Refresh (Unified Interface / modern web)"}),e.jsx("option",{value:"Modern",children:"Modern (Dynamics 365 for tablets)"}),e.jsx("option",{value:"Legacy",children:"Legacy (classic ribbon + Outlook list views)"})]})});case"CrmClientTypeRule":return e.jsx(a,{label:"Type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"Web",children:"Web"}),e.jsx("option",{value:"Outlook",children:"Outlook"})]})});case"FormStateRule":return e.jsx(a,{label:"State",children:e.jsx(p,{value:l.state,onChange:(i,n)=>r({state:n.value}),children:["Create","Existing","ReadOnly","Disabled","BulkEdit"].map(i=>e.jsx("option",{value:i,children:i},i))})});case"FormTypeRule":return e.jsx(a,{label:"Type",children:e.jsx(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:["Main","Preview","AppointmentBook","Dashboard","Quick","QuickCreate","Card","MainInteractionCentric"].map(i=>e.jsx("option",{value:i,children:i},i))})});case"SelectionCountRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Minimum",children:e.jsx(m,{value:String(l.minimum??""),onChange:(i,n)=>r({minimum:n.value?parseInt(n.value):void 0}),style:{width:"80px"}})}),e.jsx(a,{label:"Maximum",children:e.jsx(m,{type:"number",value:String(l.maximum??""),onChange:(i,n)=>r({maximum:n.value?parseInt(n.value):void 0}),style:{width:"80px"}})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})})]});case"EntityRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Entity name",children:e.jsx(m,{value:l.entityName??"",onChange:(i,n)=>r({entityName:n.value||void 0})})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})}),e.jsx(a,{label:"Context",children:e.jsxs(p,{value:l.context??"",onChange:(i,n)=>r({context:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"Form",children:"Form"}),e.jsx("option",{value:"HomePageGrid",children:"HomePageGrid"}),e.jsx("option",{value:"SubGridStandard",children:"SubGridStandard"}),e.jsx("option",{value:"SubGridAssociated",children:"SubGridAssociated"})]})})]});case"FormEntityContextRule":return e.jsx(a,{label:"Entity name",children:e.jsx(m,{value:l.entityName,onChange:(i,n)=>r({entityName:n.value})})});case"CustomRule":return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Library ($webresource:)",children:e.jsx(m,{value:l.library,onChange:(i,n)=>r({library:n.value}),placeholder:"$webresource:..."})}),e.jsx(a,{label:"Function name",children:e.jsx(m,{value:l.functionName,onChange:(i,n)=>r({functionName:n.value})})})]}),e.jsx(C,{size:100,style:{color:s.colorNeutralForeground3},children:"Async support: on Unified Interface, custom rules can return Promise<boolean>; unresolved promises default to false after 10 seconds."})]});case"CrmOfflineAccessStateRule":return e.jsx(a,{label:"State",children:e.jsxs(p,{value:l.state,onChange:(i,n)=>r({state:n.value}),children:[e.jsx("option",{value:"Online",children:"Online"}),e.jsx("option",{value:"Offline",children:"Offline"})]})});case"CrmOutlookClientTypeRule":return e.jsx(a,{label:"Type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"CrmForOutlook",children:"CrmForOutlook"}),e.jsx("option",{value:"CrmForOutlookOfflineAccess",children:"CrmForOutlookOfflineAccess"})]})});case"CrmOutlookClientVersionRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Major",children:e.jsx(m,{type:"number",value:String(l.major),onChange:(i,n)=>r({major:E(n.value)??l.major}),style:{width:"84px"}})}),e.jsx(a,{label:"Minor",children:e.jsx(m,{type:"number",value:String(l.minor??""),onChange:(i,n)=>r({minor:E(n.value)}),style:{width:"84px"}})}),e.jsx(a,{label:"Build",children:e.jsx(m,{type:"number",value:String(l.build??""),onChange:(i,n)=>r({build:E(n.value)}),style:{width:"84px"}})}),e.jsx(a,{label:"Revision",children:e.jsx(m,{type:"number",value:String(l.revision??""),onChange:(i,n)=>r({revision:E(n.value)}),style:{width:"84px"}})})]});case"DeviceTypeRule":return e.jsx(a,{label:"Device type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"None",children:"None"}),e.jsx("option",{value:"Phone",children:"Phone"}),e.jsx("option",{value:"Tablet",children:"Tablet"}),e.jsx("option",{value:"Web",children:"Web"}),e.jsx("option",{value:"Outlook",children:"Outlook"}),e.jsx("option",{value:"InteractionCentric",children:"InteractionCentric"})]})});case"EntityPrivilegeRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Entity (optional)",children:e.jsx(m,{value:l.entityName??"",onChange:(i,n)=>r({entityName:n.value||void 0})})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})}),e.jsx(a,{label:"Privilege",children:e.jsx(p,{value:l.privilegeType,onChange:(i,n)=>r({privilegeType:n.value}),children:V.map(i=>e.jsx("option",{value:i,children:i},i))})}),e.jsx(a,{label:"Depth",children:e.jsx(p,{value:l.privilegeDepth,onChange:(i,n)=>r({privilegeDepth:n.value}),children:z.map(i=>e.jsx("option",{value:i,children:i},i))})})]});case"EntityPropertyRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Entity (optional)",children:e.jsx(m,{value:l.entityName??"",onChange:(i,n)=>r({entityName:n.value||void 0})})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"}),e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})]})}),e.jsx(a,{label:"Property",children:e.jsx(p,{value:l.propertyName,onChange:(i,n)=>r({propertyName:n.value}),children:Ce.map(i=>e.jsx("option",{value:i,children:i},i))})}),e.jsx(w,{label:"Property value",checked:l.propertyValue,onChange:(i,n)=>r({propertyValue:n.checked===!0})})]});case"ValueRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Field",children:e.jsx(m,{value:l.field,onChange:(i,n)=>r({field:n.value})})}),e.jsx(a,{label:"Value",children:e.jsx(m,{value:l.value,onChange:(i,n)=>r({value:n.value})})})]});case"OrRule":return e.jsxs("div",{className:d.nested,children:[l.rules.map((i,n)=>e.jsx(q,{step:i,onChange:T=>{const x=[...l.rules];x[n]=T,o({...l,rules:x})},onRemove:()=>{const T=l.rules.filter((x,u)=>u!==n);o({...l,rules:T})},disableEnableOnlyKinds:v},`${n}-${i.kind}`)),e.jsxs("div",{className:d.nestedToolbar,children:[e.jsxs(H,{open:j,onOpenChange:(i,n)=>R(n.open),children:[e.jsx(Q,{children:e.jsx(O,{icon:e.jsx(L,{}),appearance:"secondary",size:"small",children:"Add nested step"})}),e.jsx(U,{className:d.pickerSurface,children:e.jsx(W,{disableEnableOnlyKinds:v,onSelect:i=>{o({...l,rules:[...l.rules,i]}),R(!1)}})})]}),e.jsx(C,{size:100,style:{color:s.colorNeutralForeground3},children:"OrRule should contain at least two nested steps."})]})]});case"SkuRule":return e.jsx(a,{label:"SKU",children:e.jsxs(p,{value:l.sku,onChange:(i,n)=>r({sku:n.value}),children:[e.jsx("option",{value:"Online",children:"Online"}),e.jsx("option",{value:"OnPremise",children:"OnPremise"}),e.jsx("option",{value:"Spla",children:"Spla"})]})});case"OrganizationSettingRule":return e.jsx(a,{label:"Setting",children:e.jsx(p,{value:l.setting,onChange:(i,n)=>r({setting:n.value}),children:["IsSharepointEnabled","IsSOPIntegrationEnabled","IsFiscalCalendarDefined","IsReadFormModeDefined","IsBPFEntityCustomizationFeatureEnabled"].map(i=>e.jsx("option",{value:i,children:i},i))})});case"MiscellaneousPrivilegeRule":return e.jsxs("div",{className:d.row,children:[e.jsxs(a,{label:"Privilege name",children:[e.jsx(m,{value:l.privilegeName,onChange:(i,n)=>r({privilegeName:n.value}),placeholder:"ExportToExcel",list:"misc-privilege-suggestions"}),e.jsx("datalist",{id:"misc-privilege-suggestions",children:Se.map(i=>e.jsx("option",{value:i},i))})]}),e.jsx(a,{label:"Depth (optional)",children:e.jsxs(p,{value:l.privilegeDepth??"",onChange:(i,n)=>r({privilegeDepth:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),z.map(i=>e.jsx("option",{value:i,children:i},i))]})})]});case"OptionSetRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Option set",children:e.jsx(m,{value:l.optionSet,onChange:(i,n)=>r({optionSet:n.value})})}),e.jsx(a,{label:"State code",children:e.jsx(m,{value:l.stateCode,onChange:(i,n)=>r({stateCode:n.value})})}),e.jsx(a,{label:"Object type code",children:e.jsx(m,{value:l.objectTypeCode,onChange:(i,n)=>r({objectTypeCode:n.value})})})]});case"OutlookItemTrackingRule":return e.jsxs("div",{className:d.row,children:[e.jsx(w,{label:"Tracked in CRM",checked:l.trackedInCrm,onChange:(i,n)=>r({trackedInCrm:n.checked===!0})}),e.jsx(a,{label:"Applies To",children:e.jsx(p,{value:l.appliesTo??"PrimaryEntity",onChange:(i,n)=>r({appliesTo:n.value}),children:e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"})})})]});case"OutlookRenderTypeRule":return e.jsx(a,{label:"Render type",children:e.jsxs(p,{value:l.type,onChange:(i,n)=>r({type:n.value}),children:[e.jsx("option",{value:"Web",children:"Web"}),e.jsx("option",{value:"Outlook",children:"Outlook"})]})});case"OutlookVersionRule":return e.jsx(a,{label:"Outlook version",children:e.jsxs(p,{value:l.version,onChange:(i,n)=>r({version:n.value}),children:[e.jsx("option",{value:"2003",children:"2003"}),e.jsx("option",{value:"2007",children:"2007"}),e.jsx("option",{value:"2010",children:"2010"})]})});case"PageRule":return e.jsx(a,{label:"Address pattern",children:e.jsx(m,{value:l.address,onChange:(i,n)=>r({address:n.value}),placeholder:"main.aspx"})});case"RecordPrivilegeRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Privilege",children:e.jsx(p,{value:l.privilegeType,onChange:(i,n)=>r({privilegeType:n.value}),children:V.map(i=>e.jsx("option",{value:i,children:i},i))})}),e.jsx(a,{label:"Applies To",children:e.jsxs(p,{value:l.appliesTo??"",onChange:(i,n)=>r({appliesTo:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Default"}),e.jsx("option",{value:"PrimaryEntity",children:"PrimaryEntity"})]})})]});case"RelationshipTypeRule":return e.jsxs("div",{className:d.row,children:[e.jsx(a,{label:"Applies To",children:e.jsx(p,{value:l.appliesTo,disabled:!0,children:e.jsx("option",{value:"SelectedEntity",children:"SelectedEntity"})})}),e.jsx(a,{label:"Relationship type",children:e.jsxs(p,{value:l.relationshipType??"",onChange:(i,n)=>r({relationshipType:n.value||void 0}),children:[e.jsx("option",{value:"",children:"Any"}),e.jsx("option",{value:"OneToMany",children:"OneToMany"}),e.jsx("option",{value:"ManyToMany",children:"ManyToMany"}),e.jsx("option",{value:"NoRelationship",children:"NoRelationship"})]})}),e.jsx(w,{label:"Allow custom relationship",checked:l.allowCustomRelationship===!0,onChange:(i,n)=>r({allowCustomRelationship:n.checked===!0})}),e.jsx(w,{label:"Allow system relationship",checked:l.allowSystemRelationship===!0,onChange:(i,n)=>r({allowSystemRelationship:n.checked===!0})})]});default:return e.jsxs(C,{size:200,italic:!0,style:{color:s.colorNeutralForeground3},children:[l.kind," — no additional parameters"]})}};return e.jsxs("div",{className:d.step,role:"listitem",children:[e.jsxs("div",{className:d.header,children:[e.jsx(G,{appearance:"outline",size:"small",className:d.kindBadge,children:_[l.kind]??l.kind}),e.jsx(O,{appearance:"subtle",icon:e.jsx(B,{}),size:"small",onClick:c,"aria-label":`Remove ${l.kind} step`})]}),e.jsxs("div",{className:d.fields,children:[A(),e.jsxs("div",{className:d.row,children:[e.jsx(w,{label:"Default value",checked:g?k??!0:!0,disabled:!g,title:g?"Default value returned if the rule cannot be evaluated.":"This rule kind does not support a Default attribute in Ribbon XML.",onChange:(i,n)=>{g&&r({default:n.checked})}}),e.jsx(w,{label:"Invert result",checked:b?y??!1:!1,disabled:!b,title:b?"Reverse the evaluated result.":"This rule kind does not support InvertResult in Ribbon XML.",onChange:(i,n)=>{b&&r({invertResult:n.checked})}})]})]})]})};function Oe(l){return l.length===0?"No steps defined — rule always passes.":l.map(X).join(" AND ")}function X(l){const o="invertResult"in l&&l.invertResult?"NOT ":"";switch(l.kind){case"SelectionCountRule":{const c=l.minimum!==void 0?`at least ${l.minimum}`:null,v=l.maximum!==void 0?`at most ${l.maximum}`:null,d=[c,v].filter(Boolean).join(" and "),j=l.appliesTo?` (${l.appliesTo})`:"";return`${o}Selection count is ${d}${j}`}case"EntityRule":{const c=l.entityName??"any entity",v=l.context?` in ${l.context} context`:"",d=l.appliesTo?` (${l.appliesTo})`:"";return`${o}Entity is "${c}"${v}${d}`}case"FormStateRule":return`${o}Form state is "${l.state}"`;case"CommandClientTypeRule":return`${o}Client type is "${l.type}" (${ke(l.type)})`;case"CrmClientTypeRule":return`${o}CRM client type is "${l.type}"`;case"CustomRule":return`${o}Custom rule: ${l.functionName}() from ${l.library}`;case"OrRule":return`(${l.rules.map(X).join(" OR ")})`;case"MiscellaneousPrivilegeRule":{const c=l.privilegeDepth?` at ${l.privilegeDepth} depth`:"";return`${o}User has "${l.privilegeName}" privilege${c}`}case"EntityPrivilegeRule":{const c=l.entityName?` on "${l.entityName}"`:"",v=l.appliesTo?` (${l.appliesTo})`:"";return`${o}User has ${l.privilegeType} privilege${c} at ${l.privilegeDepth} depth${v}`}case"EntityPropertyRule":{const c=l.entityName?` for "${l.entityName}"`:"";return`${o}Entity property "${l.propertyName}" is ${l.propertyValue}${c}`}case"FormTypeRule":return`${o}Form type is "${l.type}"`;case"FormEntityContextRule":return`${o}Form entity context is "${l.entityName}"`;case"ValueRule":return`${o}Field "${l.field}" equals "${l.value}"`;case"SkuRule":return`${o}SKU is "${l.sku}"`;case"HideForTabletExperienceRule":return`${o}Hide for tablet experience`;case"OrganizationSettingRule":return`${o}Organization setting "${l.setting}" is enabled`;case"PageRule":return`${o}Page address matches "${l.address}"`;case"RecordPrivilegeRule":{const c=l.appliesTo?` (${l.appliesTo})`:"";return`${o}User has ${l.privilegeType} privilege on current record${c}`}case"RelationshipTypeRule":{const c=l.relationshipType??"any";return`${o}Relationship type is "${c}" (${l.appliesTo})`}case"ReferencingAttributeRequiredRule":return`${o}Referencing attribute is required`;case"OutlookItemTrackingRule":return`${o}Outlook item is ${l.trackedInCrm?"":"not "}tracked in CRM`;case"OutlookRenderTypeRule":return`${o}Outlook render type is "${l.type}"`;case"OutlookVersionRule":return`${o}Outlook version is "${l.version}"`;case"CrmOfflineAccessStateRule":return`${o}CRM offline state is "${l.state}"`;case"CrmOutlookClientTypeRule":return`${o}CRM Outlook client type is "${l.type}"`;case"CrmOutlookClientVersionRule":return`${o}CRM Outlook client version is ${l.major}.${l.minor??0}+`;case"DeviceTypeRule":return`${o}Device type is "${l.type}"`;case"OptionSetRule":return`${o}Option set "${l.optionSet}" state code is "${l.stateCode}"`;case"ShowOnQuickActionRule":return"Show on quick action (references Mscrm.ShowOnQuickAction)";case"ShowOnGridAndQuickActionRule":return"Show on grid and quick action (references Mscrm.ShowOnGridAndQuickAction)";case"ShowOnGridRule":return"Show on grid (references Mscrm.ShowOnGrid)";default:return"Unknown rule step"}}function ke(l){switch(l){case"Modern":return"Dynamics 365 tablets";case"Refresh":return"Unified Interface / modern web";case"Legacy":return"Classic ribbon / Outlook list views";default:return l}}const Ee=F({drawer:{width:"560px",maxWidth:"90vw"},body:{display:"flex",flexDirection:"column",gap:s.spacingVerticalS,padding:s.spacingVerticalM,overflowY:"auto"},header:{display:"flex",alignItems:"center",gap:s.spacingHorizontalS},stepsList:{display:"flex",flexDirection:"column",gap:s.spacingVerticalXS,listStyle:"none",padding:0,margin:0},summary:{padding:s.spacingVerticalS,backgroundColor:s.colorNeutralBackground3,borderRadius:s.borderRadiusMedium,fontStyle:"italic",color:s.colorNeutralForeground2,fontSize:s.fontSizeBase200},addRow:{display:"flex",gap:s.spacingHorizontalS},pickerPopover:{maxHeight:"60vh",overflowY:"auto",minWidth:"320px",padding:s.spacingVerticalM},usedBy:{color:s.colorNeutralForeground3,fontSize:s.fontSizeBase200},ruleIdRow:{display:"flex",alignItems:"flex-end",gap:s.spacingHorizontalS},ruleIdInput:{fontFamily:s.fontFamilyMonospace},error:{color:s.colorPaletteRedForeground1,fontSize:s.fontSizeBase100},sortableItem:{listStyle:"none"},sortableInner:{display:"flex",alignItems:"flex-start",gap:s.spacingHorizontalS},dragHandle:{marginTop:s.spacingVerticalS,cursor:"grab"}}),Ae=()=>{const l=Ee(),o=I(t=>t.ruleEditorOpen),c=I(t=>t.ruleEditorId),v=I(t=>t.ruleEditorKind),d=I(t=>t.closeRuleEditor),j=I(t=>t.openRuleEditor),R=S(t=>t.enableRules),y=S(t=>t.displayRules),g=S(t=>t.commands),k=S(t=>t.upsertEnableRule),b=S(t=>t.upsertDisplayRule),r=S(t=>t.renameEnableRuleId),E=S(t=>t.renameDisplayRuleId),[A,i]=$.useState(!1),[n,T]=$.useState(""),x=v==="enable",u=x?R.find(t=>t.id===c):y.find(t=>t.id===c);$.useEffect(()=>{u&&T(u.id)},[u]);const N=$.useMemo(()=>u?.steps.map((t,h)=>`step-${h}`)??[],[u]),K=g.filter(t=>x?t.enableRules.includes(c??""):t.displayRules.includes(c??"")).length,Y=(t,h)=>{if(!u)return;const f=[...u.steps];f[t]=h,x?k({...u,steps:f}):b({...u,steps:f})},J=t=>{if(!u)return;const h=u.steps.filter((f,P)=>P!==t);x?k({...u,steps:h}):b({...u,steps:h})},Z=t=>{if(!u)return;const h=[...u.steps,t];x?k({...u,steps:h}):b({...u,steps:h}),i(!1)},ee=t=>{if(!u||!t.over||t.active.id===t.over.id)return;const h=N.indexOf(String(t.active.id)),f=N.indexOf(String(t.over.id));if(h<0||f<0)return;const P=me(u.steps,h,f);x?k({...u,steps:P}):b({...u,steps:P})};if(!u)return null;const le=Oe(u.steps),ne=(x?R:y).some(t=>t.id===n.trim()&&t.id!==u.id),D=n.trim()?/\s/.test(n)?"Rule ID cannot contain whitespace.":ne?"A rule with this ID already exists.":"":"Rule ID is required.";return e.jsxs(te,{position:"end",open:o,onOpenChange:()=>d(),className:l.drawer,children:[e.jsx(re,{children:e.jsx(ae,{action:e.jsx(O,{appearance:"subtle",icon:e.jsx(B,{}),onClick:d,"aria-label":"Close rule editor"}),children:e.jsxs("div",{className:l.header,children:[e.jsx(G,{appearance:"filled",color:x?"success":"informative",size:"small",children:x?"Enable":"Display"}),e.jsx(C,{size:400,weight:"semibold",style:{fontFamily:s.fontFamilyMonospace},children:u.id})]})})}),e.jsxs(se,{className:l.body,children:[e.jsxs(C,{className:l.usedBy,children:["Used by ",K," command(s)"]}),e.jsxs("div",{className:l.ruleIdRow,children:[e.jsx(m,{className:l.ruleIdInput,value:n,onChange:(t,h)=>T(h.value),"aria-label":"Rule ID"}),e.jsx(O,{appearance:"secondary",size:"small",disabled:!n.trim()||!!D||n===u.id,onClick:()=>{const t=n.trim();(x?r(u.id,t):E(u.id,t))&&j(t,x?"enable":"display")},children:"Apply ID change"})]}),D&&e.jsx(C,{className:l.error,children:D}),x&&e.jsx(oe,{intent:"warning",children:e.jsx(ue,{children:"Enable rules have a restricted set of allowed step types. Display-only rule kinds are disabled."})}),e.jsx(M,{children:"Steps (ALL must pass)"}),e.jsx(ce,{collisionDetection:de,onDragEnd:ee,children:e.jsx(pe,{items:N,strategy:he,children:e.jsxs("ol",{className:l.stepsList,role:"list","aria-label":"Rule steps",children:[u.steps.map((t,h)=>e.jsx(Te,{id:N[h],styles:l,children:e.jsx(q,{step:t,onChange:f=>Y(h,f),onRemove:()=>J(h),disableEnableOnlyKinds:x})},N[h])),u.steps.length===0&&e.jsx(C,{italic:!0,style:{color:s.colorNeutralForeground3},children:"No steps yet — all buttons with this rule will be visible/enabled by default."})]})})}),e.jsxs(H,{open:A,onOpenChange:(t,h)=>i(h.open),children:[e.jsx(Q,{children:e.jsx(O,{icon:e.jsx(L,{}),appearance:"secondary",onClick:()=>i(!0),children:"Add step"})}),e.jsx(U,{className:l.pickerPopover,children:e.jsx(W,{onSelect:Z,disableEnableOnlyKinds:x})})]}),e.jsx(M,{children:"Plain-English summary"}),e.jsx("div",{className:l.summary,role:"note","aria-label":"Rule summary",children:le})]})]})};function Te({id:l,children:o,styles:c}){const{attributes:v,listeners:d,setNodeRef:j,setActivatorNodeRef:R,transform:y,transition:g}=ye({id:l});return e.jsx("li",{ref:j,className:c.sortableItem,style:{transform:xe.Transform.toString(y),transition:g},children:e.jsxs("div",{className:c.sortableInner,children:[e.jsx(O,{ref:R,appearance:"subtle",size:"small",className:c.dragHandle,...v,...d,"aria-label":"Drag to reorder step",children:"Drag"}),e.jsx("div",{style:{flex:1},children:o})]})})}export{Ae as RuleEditorPanel,Ae as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cw as e,aw as O,ar as I,a as C,cx as $}from"./fluent-icons-DiKr_qRE.js";import{r as H,b as X}from"./monaco-BLZnQb2P.js";import{i as M,e as k,u as q}from"./index-
|
|
1
|
+
import{cw as e,aw as O,ar as I,a as C,cx as $}from"./fluent-icons-DiKr_qRE.js";import{r as H,b as X}from"./monaco-BLZnQb2P.js";import{i as M,e as k,u as q}from"./index-DjHxPFpB.js";import{x as A,l as P,m as U,H as G,a as c,k as Y,Q as g,a1 as l,j as B,B as R,F as p,S as j,I as L}from"./fluent-ui-kUA2U4Gr.js";import"./dnd-DHB99ZH7.js";const Q=$({drawer:{width:"600px",maxWidth:"95vw"},body:{display:"flex",flexDirection:"column",gap:l.spacingHorizontalM,padding:l.spacingHorizontalM,overflowY:"auto"},stepRow:{display:"flex",flexDirection:"column",gap:l.spacingHorizontalXS,padding:l.spacingHorizontalS,border:`1px solid ${l.colorNeutralStroke2}`,borderRadius:l.borderRadiusMedium,backgroundColor:l.colorNeutralBackground2},stepHeader:{display:"flex",alignItems:"center",gap:l.spacingHorizontalS},stepFields:{display:"flex",gap:l.spacingHorizontalS,flexWrap:"wrap",alignItems:"flex-end"},sectionLabel:{color:l.colorNeutralForeground3,textTransform:"uppercase",fontSize:l.fontSizeBase100,letterSpacing:"0.5px",fontWeight:l.fontWeightSemibold},warningNote:{backgroundColor:l.colorStatusWarningBackground1,borderRadius:l.borderRadiusMedium,padding:`${l.spacingHorizontalXS} ${l.spacingHorizontalS}`,fontSize:l.fontSizeBase100}}),D=["Large","LargeLarge","LargeMedium","LargeSmall","MediumLarge","MediumMedium","MediumSmall","SmallMedium","SmallSmall","Popup"],ae=()=>{const o=Q(),b=M(a=>a.scalingEditorOpen),S=M(a=>a.closeScalingEditor),v=k(a=>a.location),u=k(a=>a.tabId),_=q(a=>a.ribbons),E=q(a=>a.setScaling),y=_[v],r=y.tabs.find(a=>a.id===u),h=u?y.scalingByTab?.[u]:void 0,[w,x]=H.useState([]),[N,m]=H.useState([]);X.useEffect(()=>{if(!(!b||!r)){if(h){x([...h.maxSizes]),m([...h.scales]);return}x([{id:`MaxSize.${r.id}.1`,groupId:r.groups[0]?.id??"",size:"Large",sequence:10}]),m([{id:`Scale.${r.id}.1`,groupId:r.groups[0]?.id??"",size:"SmallSmall",sequence:200}])}},[b,r,h]);const d=r?.groups??[],F=()=>{x(a=>[...a,{id:`MaxSize.${a.length+1}`,groupId:d[0]?.id??"",size:"Large",sequence:(a.length+1)*10}])},T=()=>{m(a=>[...a,{id:`Scale.${a.length+1}`,groupId:d[0]?.id??"",size:"SmallSmall",sequence:200+(a.length+1)*10}])},z=(a,i)=>{x(s=>s.map((n,t)=>t===a?{...n,...i}:n))},f=(a,i)=>{m(s=>s.map((n,t)=>t===a?{...n,...i}:n))},W=()=>{E(v,u,{tabId:u,maxSizes:w,scales:N}),S()};return e.jsxs(A,{className:o.drawer,open:b,position:"end",onOpenChange:(a,i)=>!i.open&&S(),children:[e.jsx(P,{children:e.jsx(U,{action:e.jsx(c,{appearance:"subtle",icon:e.jsx(O,{}),onClick:S,"aria-label":"Close"}),children:e.jsx(G,{children:"Scaling Editor"})})}),e.jsx(Y,{children:e.jsxs("div",{className:o.body,children:[e.jsxs("div",{className:o.warningNote,children:["⚠ ",e.jsx("strong",{children:"Scaling applies ONLY to the Classic ribbon"})," — forms NOT updated to Unified Interface, and Dynamics 365 for Outlook list views. The modern command bar (Unified Interface) ignores all MaxSize and Scale definitions entirely."]}),r&&e.jsxs(g,{size:200,style:{color:l.colorNeutralForeground3},children:["Tab: ",e.jsx("strong",{children:r.label})," (",r.id,")"]}),e.jsx(B,{}),e.jsxs("div",{children:[e.jsx(g,{className:o.sectionLabel,children:"MaxSize (largest size, shown first)"}),e.jsx(g,{size:100,style:{color:l.colorNeutralForeground3,display:"block",marginBottom:l.spacingHorizontalS},children:"Sequence numbers must be lower than all Scale step sequence numbers."}),w.map((a,i)=>e.jsxs("div",{className:o.stepRow,style:{marginBottom:l.spacingHorizontalXS},children:[e.jsxs("div",{className:o.stepHeader,children:[e.jsxs(R,{appearance:"tint",color:"brand",size:"small",children:["MaxSize ",i+1]}),e.jsx("div",{style:{flex:1}}),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(I,{}),onClick:()=>x(s=>s.filter((n,t)=>t!==i))})]}),e.jsxs("div",{className:o.stepFields,children:[e.jsx(p,{label:"Group",style:{minWidth:"160px"},children:e.jsxs(j,{size:"small",value:a.groupId,onChange:(s,n)=>z(i,{groupId:n.value}),children:[d.length===0&&e.jsx("option",{value:"",children:"— no groups —"}),d.map(s=>e.jsx("option",{value:s.id,children:s.label||s.id},s.id))]})}),e.jsx(p,{label:"Size",style:{minWidth:"140px"},children:e.jsx(j,{size:"small",value:a.size,onChange:(s,n)=>z(i,{size:n.value}),children:D.map(s=>e.jsx("option",{value:s,children:s},s))})}),e.jsx(p,{label:"Sequence",style:{width:"80px"},children:e.jsx(L,{size:"small",type:"number",value:String(a.sequence),onChange:(s,n)=>z(i,{sequence:parseInt(n.value,10)||0})})})]})]},i)),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(C,{}),onClick:F,children:"Add MaxSize"})]}),e.jsx(B,{}),e.jsxs("div",{children:[e.jsx(g,{className:o.sectionLabel,children:"Scale steps (collapse order — top-down)"}),e.jsx(g,{size:100,style:{color:l.colorNeutralForeground3,display:"block",marginBottom:l.spacingHorizontalS},children:"Scale elements are applied in document order (top-down when shrinking, bottom-up when growing). Sequence numbers must be higher than all MaxSize sequence numbers."}),N.map((a,i)=>e.jsxs("div",{className:o.stepRow,style:{marginBottom:l.spacingHorizontalXS},children:[e.jsxs("div",{className:o.stepHeader,children:[e.jsxs(R,{appearance:"tint",color:"informative",size:"small",children:["Scale ",i+1]}),e.jsx("div",{style:{flex:1}}),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(I,{}),onClick:()=>m(s=>s.filter((n,t)=>t!==i))})]}),e.jsxs("div",{className:o.stepFields,children:[e.jsx(p,{label:"Group",style:{minWidth:"160px"},children:e.jsxs(j,{size:"small",value:a.groupId,onChange:(s,n)=>f(i,{groupId:n.value}),children:[d.length===0&&e.jsx("option",{value:"",children:"— no groups —"}),d.map(s=>e.jsx("option",{value:s.id,children:s.label||s.id},s.id))]})}),e.jsx(p,{label:"Size",style:{minWidth:"140px"},children:e.jsx(j,{size:"small",value:a.size,onChange:(s,n)=>f(i,{size:n.value}),children:D.map(s=>e.jsx("option",{value:s,children:s},s))})}),e.jsx(p,{label:"Sequence",style:{width:"80px"},children:e.jsx(L,{size:"small",type:"number",value:String(a.sequence),onChange:(s,n)=>f(i,{sequence:parseInt(n.value,10)||0})})})]})]},i)),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(C,{}),onClick:T,children:"Add Scale step"})]}),e.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:l.spacingHorizontalS,paddingTop:l.spacingHorizontalS},children:[e.jsx(c,{appearance:"secondary",onClick:S,children:"Cancel"}),e.jsx(c,{appearance:"primary",onClick:W,children:"Save scaling"})]})]})})]})};export{ae as ScalingEditorPanel,ae as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cw as e,aw as L,ar as I,a as T,cx as Q}from"./fluent-icons-DiKr_qRE.js";import{r as w,b as V}from"./monaco-BLZnQb2P.js";import{i as P,e as E,u as H}from"./index-
|
|
1
|
+
import{cw as e,aw as L,ar as I,a as T,cx as Q}from"./fluent-icons-DiKr_qRE.js";import{r as w,b as V}from"./monaco-BLZnQb2P.js";import{i as P,e as E,u as H}from"./index-DjHxPFpB.js";import{x as X,l as Y,m as J,H as K,a as c,k as Z,u as F,w as N,Q as p,a1 as o,B as ee,F as x,I as v,S}from"./fluent-ui-kUA2U4Gr.js";import"./dnd-DHB99ZH7.js";function C(){return{kind:"EntityRule",appliesTo:"PrimaryEntity",context:"HomePageGrid"}}function A(){return{kind:"PageRule",address:""}}const ae=Q({drawer:{width:"560px",maxWidth:"95vw"},body:{display:"flex",flexDirection:"column",gap:o.spacingHorizontalM,padding:o.spacingHorizontalM,overflowY:"auto"},ruleRow:{display:"flex",flexDirection:"column",gap:o.spacingHorizontalXS,padding:o.spacingHorizontalS,border:`1px solid ${o.colorNeutralStroke2}`,borderRadius:o.borderRadiusMedium,backgroundColor:o.colorNeutralBackground2},ruleHeader:{display:"flex",alignItems:"center",gap:o.spacingHorizontalS},stepFields:{display:"flex",gap:o.spacingHorizontalS,alignItems:"flex-end",flexWrap:"wrap"}}),re=()=>{const b=ae(),j=P(a=>a.tabDisplayRulesOpen),h=P(a=>a.closeTabDisplayRules),g=E(a=>a.location),z=E(a=>a.tabId),B=H(a=>a.ribbons),_=H(a=>a.setTabDisplayRules),i=B[g].tabs.find(a=>a.id===z),f=g==="Application",D=!!i?.commandId,[y,d]=w.useState(()=>i?.tabDisplayRules??[]),[k,u]=w.useState(null);V.useEffect(()=>{j&&(u(null),d(i?.tabDisplayRules??[]))},[j,i]);const G=()=>{d(a=>[...a,{tabCommand:i?.commandId??"",rules:[C()]}])},M=a=>{d(l=>l.filter((s,n)=>n!==a))},W=(a,l)=>{D||d(s=>s.map((n,t)=>t===a?{...n,tabCommand:l}:n))},m=(a,l,s)=>{d(n=>n.map((t,r)=>r===a?{...t,rules:t.rules.map((R,q)=>q===l?s:R)}:t))},$=a=>{d(l=>l.map((s,n)=>n===a?{...s,rules:[...s.rules,f?A():C()]}:s))},O=(a,l)=>{d(s=>s.map((n,t)=>t===a?{...n,rules:n.rules.filter((r,R)=>R!==l)}:n))},U=()=>{if(!i){u("No active tab selected.");return}for(const[a,l]of y.entries()){if(!l.tabCommand.trim()){u(`Rule ${a+1}: tabCommand is required.`);return}if(i.commandId&&l.tabCommand!==i.commandId){u(`Rule ${a+1}: tabCommand must match the tab command ID (${i.commandId}).`);return}if(!f&&l.rules.some(s=>s.kind==="PageRule")){u(`Rule ${a+1}: PageRule is only valid for Application ribbon tabs.`);return}}u(null),_(g,z,y),h()};return e.jsxs(X,{className:b.drawer,open:j,position:"end",onOpenChange:(a,l)=>!l.open&&h(),children:[e.jsx(Y,{children:e.jsx(J,{action:e.jsx(c,{appearance:"subtle",icon:e.jsx(L,{}),onClick:h,"aria-label":"Close"}),children:e.jsx(K,{children:"Tab Display Rules"})})}),e.jsx(Z,{children:e.jsxs("div",{className:b.body,children:[k&&e.jsx(F,{intent:"error",children:e.jsx(N,{children:k})}),e.jsx(F,{intent:"info",children:e.jsx(N,{children:e.jsxs(p,{size:200,children:["Tabs are ",e.jsx("strong",{children:"hidden by default"}),". Each Tab Display Rule defines when this tab is shown. The tabCommand must match the tab's Command ID."]})})}),i&&e.jsxs("div",{children:[e.jsxs(p,{size:200,style:{color:o.colorNeutralForeground3},children:["Tab: ",e.jsx("strong",{children:i.label})," (",i.id,")"]}),i.commandId&&e.jsxs(p,{size:200,style:{color:o.colorNeutralForeground3,display:"block"},children:["Command ID:"," ",e.jsx("code",{style:{fontFamily:o.fontFamilyMonospace},children:i.commandId})]})]}),y.length===0&&e.jsx(p,{style:{color:o.colorNeutralForeground3,textAlign:"center"},children:"No display rules — this tab will be hidden."}),y.map((a,l)=>e.jsxs("div",{className:b.ruleRow,children:[e.jsxs("div",{className:b.ruleHeader,children:[e.jsxs(ee,{appearance:"outline",size:"small",children:["Rule ",l+1]}),e.jsx("div",{style:{flex:1}}),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(I,{}),onClick:()=>M(l),"aria-label":"Remove rule"})]}),e.jsx(x,{label:"Tab command ID",hint:"Must match Tab.commandId",children:e.jsx(v,{value:a.tabCommand,onChange:(s,n)=>W(l,n.value),disabled:D,size:"small",style:{fontFamily:o.fontFamilyMonospace}})}),e.jsx(p,{size:100,weight:"semibold",style:{color:o.colorNeutralForeground3},children:"Steps"}),a.rules.map((s,n)=>e.jsxs("div",{className:b.stepFields,children:[e.jsx(x,{label:"Type",style:{minWidth:"140px"},children:e.jsxs(S,{size:"small",value:s.kind,onChange:(t,r)=>{r.value==="PageRule"?m(l,n,A()):m(l,n,C())},children:[e.jsx("option",{value:"EntityRule",children:"Entity Rule"}),f&&e.jsx("option",{value:"PageRule",children:"Page Rule"})]})}),s.kind==="EntityRule"&&e.jsxs(e.Fragment,{children:[e.jsx(x,{label:"Applies to",style:{minWidth:"130px"},children:e.jsxs(S,{size:"small",value:s.appliesTo??"PrimaryEntity",onChange:(t,r)=>m(l,n,{...s,appliesTo:r.value}),children:[e.jsx("option",{value:"PrimaryEntity",children:"Primary entity"}),e.jsx("option",{value:"SelectedEntity",children:"Selected entity"})]})}),e.jsx(x,{label:"Context",style:{minWidth:"160px"},children:e.jsxs(S,{size:"small",value:s.context??"HomePageGrid",onChange:(t,r)=>m(l,n,{...s,context:r.value}),children:[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"})]})}),e.jsx(x,{label:"Entity (optional)",children:e.jsx(v,{size:"small",value:s.entityName??"",onChange:(t,r)=>m(l,n,{...s,entityName:r.value||void 0}),placeholder:"any"})})]}),s.kind==="PageRule"&&e.jsx(x,{label:"Address pattern",style:{flex:1},children:e.jsx(v,{size:"small",value:s.address,onChange:(t,r)=>m(l,n,{...s,address:r.value}),placeholder:"https://…"})}),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(I,{}),onClick:()=>O(l,n),"aria-label":"Remove step"})]},n)),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(T,{}),onClick:()=>$(l),children:"Add step"}),e.jsx(p,{size:100,style:{color:o.colorNeutralForeground3},children:"Info: EntityRule is valid for entity-scoped tabs. Use PageRule only for globally-scoped application ribbon tabs."})]},l)),e.jsx(c,{appearance:"subtle",icon:e.jsx(T,{}),onClick:G,children:"Add display rule"}),e.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:o.spacingHorizontalS,paddingTop:o.spacingHorizontalS},children:[e.jsx(c,{appearance:"secondary",onClick:h,children:"Cancel"}),e.jsx(c,{appearance:"primary",onClick:U,children:"Save rules"})]})]})})]})};export{re as TabDisplayRulesPanel,re as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cw as e,aw as M,ar as D,a as L,cx as $}from"./fluent-icons-DiKr_qRE.js";import{r as n,b as A}from"./monaco-BLZnQb2P.js";import{i as k}from"./index-
|
|
1
|
+
import{cw as e,aw as M,ar as D,a as L,cx as $}from"./fluent-icons-DiKr_qRE.js";import{r as n,b as A}from"./monaco-BLZnQb2P.js";import{i as k}from"./index-DjHxPFpB.js";import{d as F,h as I,f as _,i as X,H,a as c,g as T,F as u,I as j,J as O,Q as i,a1 as l,S as V,e as E}from"./fluent-ui-kUA2U4Gr.js";import"./dnd-DHB99ZH7.js";const W=$({surface:{width:"720px",maxWidth:"95vw",maxHeight:"84vh",height:"84vh"},body:{display:"flex",flexDirection:"column",gap:l.spacingHorizontalM,overflowY:"auto"},paramRow:{display:"flex",alignItems:"flex-end",gap:l.spacingHorizontalS},urlPreview:{fontFamily:l.fontFamilyMonospace,fontSize:l.fontSizeBase200,backgroundColor:l.colorNeutralBackground3,padding:`${l.spacingVerticalXS} ${l.spacingHorizontalS}`,borderRadius:l.borderRadiusMedium,wordBreak:"break-all",border:`1px solid ${l.colorNeutralStroke2}`},passParamsTable:{display:"grid",gridTemplateColumns:"120px 1fr",gap:`${l.spacingVerticalXS} ${l.spacingHorizontalS}`,fontSize:l.fontSizeBase200},warnNote:{backgroundColor:l.colorStatusWarningBackground1,borderRadius:l.borderRadiusMedium,padding:`${l.spacingVerticalXS} ${l.spacingHorizontalS}`,fontSize:l.fontSizeBase100}}),f=[{key:"typename",desc:"Logical name of the table"},{key:"type",desc:"Entity type code (integer — may vary between orgs)"},{key:"id",desc:"GUID of the primary record"},{key:"orgname",desc:"Unique organization name"},{key:"userlcid",desc:"User's language LCID"},{key:"orglcid",desc:"Organization's base language LCID"}],q=[{label:"New tab (Navigate)",value:"0"},{label:"Dialog",value:"1"},{label:"Popup",value:"2"}],Z=()=>{const r=W(),S=k(a=>a.urlComposerOpen),d=k(a=>a.closeUrlComposer),[t,C]=n.useState("https://"),[p,w]=n.useState(!1),[z,R]=n.useState("0"),[h,g]=n.useState([]),x=n.useMemo(()=>{const a=[...h].filter(s=>s.key.trim()).map(s=>`${encodeURIComponent(s.key)}={${s.value||s.key}}`);return p&&f.forEach(s=>{a.push(`${s.key}={${s.key}}`)}),a.length>0?`${t}?${a.join("&")}`:t},[t,p,h]),U=n.useMemo(()=>x.replace(/&/g,"&"),[x]),N=()=>{g(a=>[...a,{key:"",value:""}])},P=a=>{g(s=>s.filter((m,o)=>o!==a))},b=(a,s,m)=>{g(o=>o.map((v,B)=>B===a?{...v,[s]:m}:v))},y=t.startsWith("https://");return e.jsx(F,{open:S,onOpenChange:(a,s)=>!s.open&&d(),children:e.jsx(I,{className:r.surface,children:e.jsxs(_,{style:{height:"100%"},children:[e.jsx(X,{action:e.jsx(c,{appearance:"subtle",icon:e.jsx(M,{}),onClick:d,"aria-label":"Close"}),children:e.jsx(H,{children:"URL Action Composer"})}),e.jsxs(T,{className:r.body,children:[e.jsx(u,{label:"Base URL",required:!0,validationState:y?"none":"error",validationMessage:y?void 0:"URL must start with https://",children:e.jsx(j,{value:t,onChange:(a,s)=>C(s.value),placeholder:"https://contoso.com/page"})}),e.jsxs("div",{className:r.warnNote,children:["⚠ Ampersands in URLs must be escaped as ",e.jsx("code",{children:"&"})," in XML. CBS handles this automatically when generating XML."]}),e.jsx(O,{label:"PassParams — append standard record context parameters",checked:p,onChange:(a,s)=>w(s.checked)}),p&&e.jsxs("div",{children:[e.jsx(i,{size:200,weight:"semibold",children:"Standard PassParams:"}),e.jsx("div",{className:r.passParamsTable,children:f.map(a=>e.jsxs(A.Fragment,{children:[e.jsx("code",{style:{fontFamily:l.fontFamilyMonospace,fontSize:l.fontSizeBase200},children:a.key}),e.jsx(i,{size:100,style:{color:l.colorNeutralForeground3},children:a.desc})]},a.key))}),e.jsxs(i,{size:100,style:{color:l.colorStatusWarningForeground1,marginTop:l.spacingVerticalXS,display:"block"},children:["Note: Use ",e.jsx("code",{children:"typename"})," instead of ",e.jsx("code",{children:"type"})," for reliability — type codes can differ between environments."]})]}),e.jsxs("div",{children:[e.jsx(i,{weight:"semibold",size:200,children:"Custom query parameters"}),e.jsxs(i,{size:100,style:{color:l.colorNeutralForeground3,display:"block",marginBottom:l.spacingVerticalXS},children:["Each parameter becomes a querystring key=value pair. Use CRM tokens like"," ",e.jsx("code",{children:"{id}"}),"."]}),h.map((a,s)=>e.jsxs("div",{className:r.paramRow,style:{marginBottom:l.spacingHorizontalXS},children:[e.jsx(u,{label:"Key",style:{flex:1},children:e.jsx(j,{size:"small",value:a.key,onChange:(m,o)=>b(s,"key",o.value),placeholder:"paramName"})}),e.jsx(u,{label:"Value / token",style:{flex:1},children:e.jsx(j,{size:"small",value:a.value,onChange:(m,o)=>b(s,"value",o.value),placeholder:"static value or {id}"})}),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(D,{}),onClick:()=>P(s),"aria-label":"Remove parameter",style:{marginBottom:"4px"}})]},s)),e.jsx(c,{appearance:"subtle",size:"small",icon:e.jsx(L,{}),onClick:N,children:"Add parameter"})]}),e.jsx(u,{label:"Open in",children:e.jsx(V,{value:z,onChange:(a,s)=>R(s.value),children:q.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))})}),e.jsxs("div",{children:[e.jsx(i,{size:200,weight:"semibold",style:{display:"block",marginBottom:"4px"},children:"URL preview (tokens shown literally):"}),e.jsx("div",{className:r.urlPreview,children:x})]}),e.jsxs("div",{children:[e.jsxs(i,{size:200,weight:"semibold",style:{display:"block",marginBottom:"4px"},children:["XML-encoded URL (",e.jsx("code",{children:"&"})," → ",e.jsx("code",{children:"&"}),"):"]}),e.jsx("div",{className:r.urlPreview,children:U})]})]}),e.jsxs(E,{children:[e.jsx(c,{appearance:"secondary",onClick:d,children:"Cancel"}),e.jsx(c,{appearance:"primary",disabled:!y,onClick:d,children:"Apply URL"})]})]})})})};export{Z as UrlComposerModal,Z as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cw as s,aw as Q,bL as Z,z as J,cx as K,aA as z,aZ as j,ah as S}from"./fluent-icons-DiKr_qRE.js";import{r as t}from"./monaco-BLZnQb2P.js";import{i as O,h as ee,D as se,b as le,c as $,a as oe,w as k}from"./index-
|
|
1
|
+
import{cw as s,aw as Q,bL as Z,z as J,cx as K,aA as z,aZ as j,ah as S}from"./fluent-icons-DiKr_qRE.js";import{r as t}from"./monaco-BLZnQb2P.js";import{i as O,h as ee,D as se,b as le,c as $,a as oe,w as k}from"./index-DjHxPFpB.js";import{b as E,s as re}from"./webResourceService-Ck07E3GN.js";import{W as N,d as ae,h as ne,f as te,i as ie,H as ce,a as b,g as de,I as ue,S as ge,C as xe,u as he,w as pe,Q as i,a1 as o,c as me,D as fe,e as je}from"./fluent-ui-kUA2U4Gr.js";import"./dnd-DHB99ZH7.js";const Se=K({surface:{width:"780px",maxWidth:"95vw",height:"80vh",maxHeight:"80vh"},body:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",gap:o.spacingHorizontalS},toolbar:{display:"flex",alignItems:"center",gap:o.spacingHorizontalS,flexShrink:0},grid:{flex:1,overflow:"hidden"},gridWrap:{height:"100%"},gridRow:{display:"flex",alignItems:"center",gap:o.spacingHorizontalS,padding:`${o.spacingVerticalXS} ${o.spacingHorizontalS}`,cursor:"pointer",borderRadius:o.borderRadiusMedium,":hover":{backgroundColor:o.colorNeutralBackground3}},gridRowSelected:{backgroundColor:o.colorBrandBackground2},gridHeader:{display:"flex",alignItems:"center",gap:o.spacingHorizontalS,padding:`${o.spacingVerticalXS} ${o.spacingHorizontalS}`,borderBottom:`1px solid ${o.colorNeutralStroke2}`,flexShrink:0},col1:{width:"24px",flexShrink:0},col2:{width:"32px",flexShrink:0},col3:{flex:1,overflow:"hidden"},col4:{width:"60px",flexShrink:0,textAlign:"right"},col5:{width:"100px",flexShrink:0,color:o.colorNeutralForeground3},nameCell:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},descCell:{fontSize:o.fontSizeBase100,color:o.colorNeutralForeground3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}),be={js:s.jsx(S,{}),ts:s.jsx(S,{}),css:s.jsx(S,{}),html:s.jsx(S,{}),svg:s.jsx(j,{}),png:s.jsx(j,{}),gif:s.jsx(j,{}),jpg:s.jsx(j,{}),xml:s.jsx(z,{}),resx:s.jsx(z,{})};function y(g){return g.split(".").pop()?.toLowerCase()??""}const ye=[{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"}],ze=({onSelect:g})=>{const r=Se(),w=O(e=>e.webResourceBrowserOpen),d=O(e=>e.closeWebResourceBrowser),T=ee(e=>e.publisherPrefix),D=t.useRef(null),[B,I]=t.useState([]),[v,x]=t.useState(!1),[H,F]=t.useState(!1),[W,h]=t.useState(null),[C,L]=t.useState(""),[p,U]=t.useState("all"),[R,_]=t.useState(!0),[m,M]=t.useState(null),f=t.useMemo(()=>{const e=C.toLowerCase();return B.filter(l=>{const a=y(l.name),n=e===""||l.name.toLowerCase().includes(e)||(l.description??"").toLowerCase().includes(e),u=p==="all"||a===p,q=!R||l.isCustom;return n&&u&&q})},[B,C,p,R]),c=f.find(e=>e.id===m)??null,A=[N({columnId:"type",renderHeaderCell:()=>s.jsx(i,{size:100,style:{color:o.colorNeutralForeground3},children:"Type"}),renderCell:e=>{const l=y(e.name),a=be[l]??s.jsx(z,{});return s.jsx("div",{className:r.col2,style:{color:o.colorNeutralForeground3},children:a})}}),N({columnId:"name",renderHeaderCell:()=>s.jsx(i,{size:100,style:{color:o.colorNeutralForeground3},children:"Name"}),renderCell:e=>s.jsxs("div",{className:r.col3,children:[s.jsx("div",{className:r.nameCell,children:s.jsx(i,{style:{fontFamily:o.fontFamilyMonospace,fontSize:o.fontSizeBase200},children:e.name})}),e.description&&s.jsx("div",{className:r.descCell,children:e.description})]})}),N({columnId:"modified",renderHeaderCell:()=>s.jsx(i,{size:100,style:{color:o.colorNeutralForeground3},children:"Modified"}),renderCell:e=>s.jsx("div",{className:r.col5,children:s.jsx(i,{size:100,children:e.modifiedOn?new Date(e.modifiedOn).toLocaleDateString():"—"})})})];t.useEffect(()=>{w&&(x(!0),h(null),E().then(e=>I(e)).catch(e=>h(e instanceof Error?e.message:String(e))).finally(()=>x(!1)))},[w]);const P=async()=>{x(!0),h(null);try{I(await E())}catch(e){h(e instanceof Error?e.message:String(e))}finally{x(!1)}},G=e=>new Promise((l,a)=>{const n=new FileReader;n.onerror=()=>a(n.error??new Error("Unable to read file")),n.onload=()=>{const u=String(n.result??"");l(u.includes(",")?u.split(",")[1]??"":u)},n.readAsDataURL(e)}),X=e=>{const l=y(e.name);return`${T||"new"}_/${l==="js"||l==="css"||l==="html"||l==="xml"?"scripts":l==="svg"||l==="png"?"icons":"webresources"}/${e.name}`},V=async e=>{F(!0);try{const l=await G(e),a=y(e.name),n={html:1,css:2,js:3,xml:4,png:5,jpg:6,gif:7,xsl:9,ico:10,svg:11,resx:12}[a]??4;await re(X(e),l,n,e.name),await P()}finally{F(!1)}},Y=()=>{c&&(k.invoke(c),g?.(c),d())};return s.jsx(ae,{open:w,onOpenChange:(e,l)=>{l.open||(k.clear(),d())},children:s.jsx(ne,{className:r.surface,children:s.jsxs(te,{style:{height:"100%"},children:[s.jsx(ie,{action:s.jsx(b,{appearance:"subtle",icon:s.jsx(Q,{}),onClick:d,"aria-label":"Close"}),children:s.jsx(ce,{children:"Web Resource Browser"})}),s.jsxs(de,{className:r.body,children:[s.jsx("input",{ref:D,type:"file",accept:".js,.html,.svg,.png,.css,.xml,.resx,.jpg,.gif,.ico,.xsl",style:{display:"none"},onChange:e=>{const l=e.target.files?.[0];e.currentTarget.value="",l&&V(l)}}),s.jsxs("div",{className:r.toolbar,children:[s.jsx(ue,{contentBefore:s.jsx(Z,{}),placeholder:"Search by name…",value:C,onChange:(e,l)=>L(l.value),size:"small",style:{flex:1}}),s.jsx(ge,{size:"small",value:p,onChange:(e,l)=>U(l.value),style:{width:"100px"},children:ye.map(e=>s.jsx("option",{value:e.value,children:e.label},e.value))}),s.jsx(xe,{label:"Custom only",checked:R,onChange:(e,l)=>_(l.checked===!0)})]}),W&&s.jsx(he,{intent:"error",children:s.jsx(pe,{children:W})}),s.jsxs("div",{className:r.grid,children:[v&&s.jsx(i,{style:{color:o.colorNeutralForeground3,padding:o.spacingHorizontalM},children:"Loading web resources…"}),!v&&f.length===0&&s.jsx(i,{style:{color:o.colorNeutralForeground3,padding:o.spacingHorizontalM,textAlign:"center"},children:"No web resources found."}),!v&&f.length>0&&s.jsxs(se,{className:r.gridWrap,items:f,columns:A,getRowId:e=>e.id,focusMode:"composite",selectionMode:"single",subtleSelection:!0,selectedItems:m?new Set([m]):new Set,onSelectionChange:(e,l)=>{const a=[...l.selectedItems][0];M(a??null)},children:[s.jsx(le,{children:s.jsx($,{children:({renderHeaderCell:e})=>s.jsx(me,{children:e()})})}),s.jsx(oe,{itemSize:56,height:360,listProps:{width:"100%"},children:({item:e,rowId:l},a)=>s.jsx($,{style:a,className:`${r.gridRow} ${e.id===m?r.gridRowSelected:""}`,onDoubleClick:()=>{M(e.id),k.invoke(e),g?.(e),d()},children:({renderCell:n})=>s.jsx(fe,{children:n(e)})},l)})]})]}),c&&s.jsx("div",{style:{padding:o.spacingHorizontalXS,backgroundColor:o.colorNeutralBackground3,borderRadius:o.borderRadiusMedium,flexShrink:0},children:s.jsxs(i,{size:200,style:{fontFamily:o.fontFamilyMonospace},children:["$webresource:",c.name]})})]}),s.jsxs(je,{children:[s.jsx(b,{appearance:"subtle",icon:s.jsx(J,{}),disabled:H,onClick:()=>D.current?.click(),children:H?"Uploading…":"Upload"}),s.jsx("div",{style:{flex:1}}),s.jsx(b,{appearance:"secondary",onClick:d,children:"Cancel"}),s.jsx(b,{appearance:"primary",disabled:!c,onClick:Y,children:"Select"})]})]})})})};export{ze as WebResourceBrowser,ze as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{cw as n,af as A,aw as $,aj as E,j as B,c9 as X,z as O,cx as P}from"./fluent-icons-DiKr_qRE.js";import{r as u}from"./monaco-BLZnQb2P.js";import{u as p,i as k}from"./index-
|
|
1
|
+
import{cw as n,af as A,aw as $,aj as E,j as B,c9 as X,z as O,cx as P}from"./fluent-icons-DiKr_qRE.js";import{r as u}from"./monaco-BLZnQb2P.js";import{u as p,i as k}from"./index-DjHxPFpB.js";import{g as F}from"./xmlGenerator-DEaVrfZJ.js";import{b as H}from"./webResourceService-Ck07E3GN.js";import{M as U}from"./MonacoEditor-DFYisBG6.js";import{x as V,l as z,m as G,a1 as d,a as K,k as W,u as _,w as Q,K as Z,T as q,U as L}from"./fluent-ui-kUA2U4Gr.js";import"./dnd-DHB99ZH7.js";const J=["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 I(t,C){const g=[];return g.push(t.languages.registerCompletionItemProvider("xml",{triggerCharacters:[":","$"],provideCompletionItems(l,e){const o=l.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!o.includes("$LocLabels:"))return{suggestions:[]};const b=o.lastIndexOf("$LocLabels:")+11,s=o.slice(b),i={startLineNumber:e.lineNumber,startColumn:e.column-s.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:p.getState().locLabels.map(m=>({label:m.id,kind:t.languages.CompletionItemKind.Reference,insertText:m.id,range:i,detail:"LocLabel reference"}))}}})),g.push(t.languages.registerCompletionItemProvider("xml",{triggerCharacters:[":","$"],provideCompletionItems(l,e){const o=l.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!o.includes("$webresource:"))return{suggestions:[]};const b=o.lastIndexOf("$webresource:")+13,s=o.slice(b),i={startLineNumber:e.lineNumber,startColumn:e.column-s.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:C().map(m=>({label:m,kind:t.languages.CompletionItemKind.File,insertText:m,range:i,detail:"Web resource"}))}}})),g.push(t.languages.registerCompletionItemProvider("xml",{triggerCharacters:['"'],provideCompletionItems(l,e){const o=l.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!/Command\s*=\s*"[^"]*$/.test(o))return{suggestions:[]};const s=o.match(/Command\s*=\s*"([^"]*)$/)?.[1]??"",i={startLineNumber:e.lineNumber,startColumn:e.column-s.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:p.getState().commands.map(m=>({label:m.id,kind:t.languages.CompletionItemKind.Function,insertText:m.id,range:i,detail:"CommandDefinition"}))}}})),g.push(t.languages.registerCompletionItemProvider("xml",{triggerCharacters:['"'],provideCompletionItems(l,e){const o=l.getValueInRange({startLineNumber:e.lineNumber,startColumn:1,endLineNumber:e.lineNumber,endColumn:e.column});if(!/ModernImage\s*=\s*"[^"]*$/.test(o))return{suggestions:[]};const s=o.match(/ModernImage\s*=\s*"([^"]*)$/)?.[1]??"",i={startLineNumber:e.lineNumber,startColumn:e.column-s.length,endLineNumber:e.lineNumber,endColumn:e.column};return{suggestions:J.map(c=>({label:c,kind:t.languages.CompletionItemKind.Color,insertText:c,range:i,detail:"Fluent icon (ModernImage)",documentation:`Renders the ${c}_20_Regular Fluent icon`}))}}})),g}function S(t){t.forEach(C=>C.dispose())}const Y=P({drawer:{width:"960px",maxWidth:"90vw"},body:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:0},infoBar:{flexShrink:0,margin:`${d.spacingVerticalS} ${d.spacingHorizontalM}`},tabRow:{flexShrink:0,padding:`0 ${d.spacingHorizontalM}`},toolbar:{flexShrink:0,display:"flex",alignItems:"center",gap:d.spacingHorizontalS,padding:`${d.spacingVerticalXS} ${d.spacingHorizontalM}`,borderTop:`1px solid ${d.colorNeutralStroke2}`,borderBottom:`1px solid ${d.colorNeutralStroke2}`},editorContainer:{flex:1,minHeight:0,overflow:"hidden"}}),ee=[{label:"Home Grid",value:"HomepageGrid"},{label:"Sub Grid",value:"SubGrid"},{label:"Form",value:"Form"},{label:"Application",value:"Application"}],me=()=>{const t=Y(),C=k(r=>r.xmlDrawerOpen),g=k(r=>r.closeXmlDrawer),l=p(r=>r.ribbons),e=p(r=>r.baseline),o=p(r=>r.commands),b=p(r=>r.displayRules),s=p(r=>r.enableRules),i=p(r=>r.locLabels),f=k(r=>r.openImportXml),[c,m]=u.useState("HomepageGrid"),[x,v]=u.useState([]),y=u.useRef(null),N=u.useRef(null),h=u.useRef([]);u.useEffect(()=>{C&&H().then(r=>v(r.map(a=>a.name))).catch(()=>v([]))},[C]),u.useEffect(()=>()=>{S(h.current),h.current=[]},[]);const T=u.useCallback((r,a)=>{y.current=r,N.current=a,S(h.current),h.current=I(a,()=>x)},[x]);u.useEffect(()=>{N.current&&(S(h.current),h.current=I(N.current,()=>x))},[x]);const D=()=>{y.current?.getAction("editor.action.formatDocument")?.run()},w=u.useCallback(r=>{try{return`<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
${F({location:r,current:l[r],baseline:e[r],commands:o,displayRules:b,enableRules:s,locLabels:i,entityLogicalName:l[r].entityLogicalName})}`}catch(a){return`<!-- Error generating XML: ${String(a)} -->`}},[l,e,o,b,s,i])(c),j=()=>{navigator.clipboard.writeText(w)},M=()=>{const r=new Blob([w],{type:"application/xml"}),a=URL.createObjectURL(r),R=document.createElement("a");R.href=a,R.download=`RibbonDiffXml_${c}.xml`,R.click(),URL.revokeObjectURL(a)};return n.jsxs(V,{position:"end",open:C,onOpenChange:()=>g(),className:t.drawer,children:[n.jsx(z,{children:n.jsxs(G,{action:n.jsx(K,{appearance:"subtle",icon:n.jsx($,{}),onClick:g,"aria-label":"Close XML drawer"}),children:[n.jsx(A,{style:{marginRight:d.spacingHorizontalS}}),"RibbonDiffXml"]})}),n.jsxs(W,{className:t.body,children:[n.jsx(_,{className:t.infoBar,intent:"info",children:n.jsxs(Q,{children:["This is the ",n.jsx("strong",{children:"RibbonDiffXml"})," that will be packaged into your solution ZIP and imported into Dataverse. It contains only the delta (your changes), not the full ribbon."]})}),n.jsx("div",{className:t.tabRow,children:n.jsx(Z,{selectedValue:c,onTabSelect:(r,a)=>m(a.value),children:ee.map(r=>n.jsx(q,{value:r.value,children:r.label},r.value))})}),n.jsxs("div",{className:t.toolbar,children:[n.jsx(L,{icon:n.jsx(E,{}),onClick:j,children:"Copy"}),n.jsx(L,{icon:n.jsx(B,{}),onClick:M,children:"Download"}),n.jsx(L,{icon:n.jsx(X,{}),onClick:D,children:"Format XML"}),n.jsx(L,{icon:n.jsx(O,{}),onClick:f,children:"Import this XML"})]}),n.jsx("div",{className:t.editorContainer,children:n.jsx(U,{language:"xml",value:w,readOnly:!0,height:"100%",onMount:T})})]})]})};export{me as XmlDrawer,me as default};
|