botframework-webchat-fluent-theme 4.17.0-main.20240423.ec25060 → 4.17.0-main.20240501.533c151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/botframework-webchat-fluent-theme.css.map +1 -0
  2. package/dist/{index.d.mts → botframework-webchat-fluent-theme.d.mts} +7 -1
  3. package/dist/{index.d.ts → botframework-webchat-fluent-theme.d.ts} +7 -1
  4. package/dist/botframework-webchat-fluent-theme.development.css.map +1 -1
  5. package/dist/botframework-webchat-fluent-theme.development.d.ts +2 -0
  6. package/dist/botframework-webchat-fluent-theme.development.js +2 -2424
  7. package/dist/botframework-webchat-fluent-theme.development.js.map +1 -1
  8. package/dist/botframework-webchat-fluent-theme.js +3 -0
  9. package/dist/botframework-webchat-fluent-theme.js.map +1 -0
  10. package/dist/botframework-webchat-fluent-theme.mjs +3 -0
  11. package/dist/botframework-webchat-fluent-theme.mjs.map +1 -0
  12. package/dist/botframework-webchat-fluent-theme.production.min.css.map +1 -1
  13. package/dist/botframework-webchat-fluent-theme.production.min.d.ts +2 -0
  14. package/dist/botframework-webchat-fluent-theme.production.min.js +2 -10
  15. package/dist/botframework-webchat-fluent-theme.production.min.js.map +1 -1
  16. package/package.json +17 -12
  17. package/src/components/Theme.module.css +15 -0
  18. package/src/components/sendbox/index.module.css +21 -6
  19. package/src/components/sendbox/index.tsx +47 -8
  20. package/src/components/telephoneKeypad/Surrogate.tsx +1 -1
  21. package/src/components/telephoneKeypad/private/TelephoneKeypad.tsx +5 -8
  22. package/src/index.ts +11 -4
  23. package/dist/index.css.map +0 -1
  24. package/dist/index.js +0 -1151
  25. package/dist/index.js.map +0 -1
  26. package/dist/index.mjs +0 -1115
  27. package/dist/index.mjs.map +0 -1
@@ -0,0 +1,3 @@
1
+ "use strict";var Dt=Object.create;var j=Object.defineProperty;var Pt=Object.getOwnPropertyDescriptor;var It=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,zt=Object.prototype.hasOwnProperty;var Ot=(e,t)=>{for(var o in t)j(e,o,{get:t[o],enumerable:!0})},we=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of It(t))!zt.call(e,n)&&n!==o&&j(e,n,{get:()=>t[n],enumerable:!(r=Pt(t,n))||r.enumerable});return e};var s=(e,t,o)=>(o=e!=null?Dt(Kt(e)):{},we(t||!e||!e.__esModule?j(o,"default",{value:e,enumerable:!0}):o,e)),Rt=e=>we(j({},"__esModule",{value:!0}),e);var Jo={};Ot(Jo,{FluentThemeProvider:()=>Ft,buildInfo:()=>qo,testIds:()=>u});module.exports=Rt(Jo);var At=require("inject-meta-tag");var Ct=require("botframework-webchat-component"),z=s(require("react"));var N=s(require("react"));var Te=require("react"),ke=(0,Te.createContext)(new Proxy({},{get(){throw new Error("botframework-webchat: This hook can only used under its corresponding <Provider>.")}}));ke.displayName="TelephoneKeypad.Context";var X=ke;var Ut=(0,N.memo)(({children:e})=>{let[t,o]=(0,N.useState)(!1),r=(0,N.useMemo)(()=>Object.freeze({setShown:o,shown:t}),[o,t]);return N.default.createElement(X.Provider,{value:r},e)}),ne=Ut;var V=s(require("react"));var Ce=require("botframework-webchat-component"),Fe=s(require("classnames")),l=s(require("react")),le=require("use-ref-from");var w=s(require("react")),Ne=require("use-ref-from");var _e={"telephone-keypad__button":"r","telephone-keypad__button__ruby":"e","telephone-keypad__button__text":"o","telephone-keypad--horizontal":"l"};var Wt=".webchat-fluent .r{-webkit-user-select:none;align-items:center;-webkit-appearance:none;appearance:none;background-color:#fff;border-radius:100%;border:solid 1px var(--webchat-colorNeutralStroke1);color:var(--webchat-colorGray200);font-weight:var(--webchat-fontWeightSemibold);cursor:pointer;display:flex;flex-direction:column;height:60px;opacity:.7;padding:0;position:relative;touch-action:none;user-select:none;width:60px}.webchat-fluent .r:hover{background-color:var(--webchat-colorGray30)}.webchat-fluent .e{color:var(--webchat-colorGray190);font-size:10px}.webchat-fluent .o{font-size:24px;margin-top:8px}.webchat-fluent .l .r{height:32px;justify-content:center;margin:8px 4px;width:32px}.webchat-fluent .l .e{display:none}.webchat-fluent .l .o{font-size:20px;margin-top:0}.webchat-fluent .c{align-items:center;background:var(--webchat-colorNeutralBackground1);border:none;border-radius:var(--webchat-borderRadiusXLarge);display:flex;flex-direction:column;font-family:var(--webchat-fontFamilyBase);justify-content:center}.webchat-fluent .n{box-sizing:border-box;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr);justify-items:center;padding:16px;width:100%}.webchat-fluent .d{align-items:center;color:var(--webchat-colorNeutralForeground4);display:flex;font-size:12px;gap:6px;margin-block-end:6px}.webchat-fluent .i{color:var(--webchat-colorBrandForegroundLink);text-decoration-color:transparent}.webchat-fluent .i:target{color:var(--webchat-colorBrandForegroundLinkSelected)}.webchat-fluent .i:hover{color:var(--webchat-colorBrandForegroundLinkHover);text-decoration:underline 1px currentColor}.webchat-fluent .i:active{color:var(--webchat-colorBrandForegroundLinkPressed)}.webchat-fluent .i:focus-visible{outline:none;text-decoration:underline 1px double var(--webchat-colorStrokeFocus2)}.webchat-fluent.a{display:contents;--webchat-colorNeutralForeground1: var(--colorNeutralForeground1, #242424);--webchat-colorNeutralForeground2: var(--colorNeutralForeground2, #424242);--webchat-colorNeutralForeground4: var(--colorNeutralForeground4, #707070);--webchat-colorNeutralForeground2BrandHover: var(--colorNeutralForeground2BrandHover, #02729c);--webchat-colorNeutralForeground2BrandPressed: var(--colorNeutralForeground2BrandPressed, #01678c);--webchat-colorNeutralForeground2BrandSelected: var(--colorNeutralForeground2BrandSelected, #067191);--webchat-colorNeutralForegroundDisabled: var(--colorNeutralForegroundDisabled, #bdbdbd);--webchat-colorNeutralBackground1: var(--colorNeutralBackground1, #ffffff);--webchat-colorNeutralBackground4: var(--colorNeutralBackground4, #f0f0f0);--webchat-colorNeutralBackground5: var(--colorNeutralBackground5, #ebebeb);--webchat-colorNeutralStroke1: var(--colorNeutralStroke1, #d1d1d1);--webchat-colorNeutralStroke2: var(--colorNeutralStroke2, #e0e0e0);--webchat-colorNeutralStroke1Selected: var(--colorNeutralStroke1Selected, #bdbdbd);--webchat-colorStrokeFocus2: var(--colorStrokeFocus2, #000000);--webchat-colorBrandStroke2: var(--colorBrandStroke2, #9edcf7);--webchat-colorBrandForeground2Hover: var(--colorBrandForeground2Hover, #015a7a);--webchat-colorBrandForeground2Pressed: var(--colorBrandForeground2Pressed, #01384d);--webchat-colorBrandForegroundLink: var(--colorBrandForegroundLink, #01678c);--webchat-colorBrandForegroundLinkHover: var(--colorBrandForegroundLinkHover, #015a7a);--webchat-colorBrandForegroundLinkPressed: var(--colorBrandForegroundLinkPressed, #014259);--webchat-colorBrandForegroundLinkSelected: var(--colorBrandForegroundLinkSelected, #01678c);--webchat-colorBrandBackground2Hover: var(--colorBrandBackground2Hover, #bee7fa);--webchat-colorBrandBackground2Pressed: var(--colorBrandBackground2Pressed, #7fd2f5);--webchat-colorCompoundBrandForeground1Hover: var(--colorCompoundBrandForeground1Hover, #02729c);--webchat-colorStatusDangerForeground1: var(--colorStatusDangerForeground1, #b10e1c);--webchat-colorGray30: var(--colorGray30, #edebe9);--webchat-colorGray160: var(--colorGray160, #323130);--webchat-colorGray190: var(--colorGray190, #201f1e);--webchat-colorGray200: var(--colorGray200, #1b1a19);--webchat-borderRadiusSmall: var(--borderRadiusSmall, 2px);--webchat-borderRadiusLarge: var(--borderRadiusLarge, 6px);--webchat-borderRadiusXLarge: var(--borderRadiusXLarge, 8px);--webchat-shadow16: var(--shadow16, 0 6.4px 14.4px 0 rgba(0, 0, 0, .132), 0 1.2px 3.6px 0 rgba(0, 0, 0, .108));--webchat-spacingHorizontalMNudge: var(--spacingHorizontalMNudge, 10px);--webchat-fontFamilyBase: var(--fontFamilyBase, \"Segoe UI\", \"Segoe UI Web (West European)\", -apple-system, BlinkMacSystemFont, Roboto, \"Helvetica Neue\", sans-serif);--webchat-fontFamilyNumeric: var(--fontFamilyNumeric, Bahnschrift, \"Segoe UI\", \"Segoe UI Web (West European)\", -apple-system, BlinkMacSystemFont, Roboto, \"Helvetica Neue\", sans-serif);--webchat-fontWeightSemibold: var(--fontWeightSemibold, 600);--webchat-strokeWidthThicker: var(--strokeWidthThicker, 3px);--webchat-durationUltraFast: var(--durationUltraFast, 0);--webchat-durationNormal: var(--durationNormal, .2s);--webchat-curveAccelerateMid: var(--curveAccelerateMid, cubic-bezier(1,0,1,1));--webchat-curveDecelerateMid: var(--curveDecelerateMid, cubic-bezier(0,0,0,1))}@media (prefers-reduced-motion){.webchat-fluent.a{--webchat-durationUltraFast: .01ms;--webchat-durationNormal: .01ms}}.webchat-fluent .b{background-color:var(--webchat-colorNeutralBackground4);border-radius:inherit;cursor:copy;display:grid;gap:8px;inset:0;place-content:center;place-items:center;position:absolute}.webchat-fluent .u{background-color:#e00;color:#fff}.webchat-fluent .h{height:36px;pointer-events:none;width:36px}.webchat-fluent .s{align-items:center;background:transparent;border-radius:8px;border:1px solid var(--webchat-colorBrandStroke2);color:currentColor;cursor:pointer;display:flex;font-size:12px;gap:4px;padding:4px 8px;text-align:start;transition:all .15s ease-out}@media (hover: hover){.webchat-fluent .s:not([aria-disabled=true]):hover{background-color:var(--webchat-colorBrandBackground2Hover);color:var(--webchat-colorBrandForeground2Hover)}}.webchat-fluent .s:not([aria-disabled=true]):active{background-color:var(--webchat-colorBrandBackground2Pressed);color:var(--webchat-colorBrandForeground2Pressed)}.webchat-fluent .s[aria-disabled=true]{color:var(--webchat-colorNeutralForegroundDisabled);cursor:not-allowed}.webchat-fluent .g{font-size:12px;height:1em;width:1em}.webchat-fluent .p{align-items:flex-end;align-self:flex-end;display:flex;flex-direction:column;gap:8px}.webchat-fluent .p:not(:empty){padding-block-end:8px;padding-inline-start:4px}.webchat-fluent .p.w{flex-direction:row;flex-wrap:wrap;justify-content:flex-end}.webchat-fluent .p.v{flex-direction:column}.webchat-fluent .f{display:flex;gap:4px;margin-inline-start:auto}.webchat-fluent .x{align-items:center;-webkit-appearance:none;appearance:none;aspect-ratio:1;background:transparent;border-radius:var(--webchat-borderRadiusSmall);border:none;color:currentColor;cursor:pointer;display:flex;justify-content:center;padding:3px;width:32px}.webchat-fluent .x>svg{font-size:20px;pointer-events:none}.webchat-fluent .x.k{color:var(--webchat-colorNeutralForeground2BrandSelected)}@media (hover: hover){.webchat-fluent .x:not([aria-disabled=true]):hover{color:var(--webchat-colorNeutralForeground2BrandHover)}}.webchat-fluent .x:not([aria-disabled=true]):active{color:var(--webchat-colorNeutralForeground2BrandPressed)}.webchat-fluent .x[aria-disabled=true]{color:var(--webchat-colorNeutralForegroundDisabled);cursor:not-allowed}.webchat-fluent .m{align-self:center;border-inline-end:1px solid var(--webchat-colorNeutralStroke2);height:28px}.webchat-fluent .m:is(:first-child,:last-child,:only-child){display:none}.webchat-fluent .B{display:grid}.webchat-fluent .F{font-size:0;height:0;opacity:0;width:0}.webchat-fluent .y{border-radius:var(--webchat-borderRadiusLarge);border:1px solid var(--webchat-colorNeutralStroke1);cursor:default;padding:6px 8px;width:fit-content}.webchat-fluent .N{color:transparent;font-size:0;height:0;left:0;position:absolute;top:0;width:0}.webchat-fluent .S{display:grid;grid-template-areas:\"main\";max-height:200px;overflow:hidden}.webchat-fluent .z{height:0;visibility:collapse}.webchat-fluent .L{border:none;font:inherit;grid-area:main;outline:inherit;overflow-wrap:anywhere;resize:inherit;scrollbar-gutter:stable}.webchat-fluent .H{overflow:hidden;visibility:hidden;white-space:pre-wrap}.webchat-fluent .W{background-color:inherit;color:currentColor;height:100%;padding:0}.webchat-fluent .P{scrollbar-color:unset;scrollbar-width:unset;-moz-scrollbar-color:var(--webchat-colorNeutralBackground5) var(--webchat-colorNeutralForeground2);-moz-scrollbar-width:thin}.webchat-fluent .P::-webkit-scrollbar{width:8px}.webchat-fluent .P::-webkit-scrollbar-track{background-color:var(--webchat-colorNeutralBackground5);border-radius:16px}.webchat-fluent .P::-webkit-scrollbar-thumb{background-color:var(--webchat-colorNeutralForeground2);border-radius:16px}.webchat-fluent .P::-webkit-scrollbar-corner{background-color:var(--webchat-colorNeutralBackground5)}.webchat-fluent .R{color:var(--webchat-colorNeutralForeground1);font-family:var(--webchat-fontFamilyBase);padding:0 10px 10px;text-rendering:optimizeLegibility;--webchat-sendbox-attachment-area-active: ;--webchat-sendbox-border-radius: var(--webchat-borderRadiusLarge)}.webchat-fluent .G{background-color:var(--webchat-colorNeutralBackground1);border-radius:var(--webchat-sendbox-border-radius);border:1px solid var(--webchat-colorNeutralStroke1);display:grid;font-family:var(--webchat-fontFamilyBase);font-size:14px;gap:6px;grid-template:[telephone-keypad-start] \"text-area\" [telephone-keypad-end] var(--webchat-sendbox-attachment-area-active) \"controls\" / [telephone-keypad] 1fr;line-height:20px;padding:8px;position:relative}.webchat-fluent .G:has(.t){--webchat-sendbox-attachment-area-active: \"attachment\" }.webchat-fluent .G:focus-within{border-color:var(--webchat-colorNeutralStroke1Selected)}.webchat-fluent .G:after{border-bottom-left-radius:var(--webchat-sendbox-border-radius);border-bottom-right-radius:var(--webchat-sendbox-border-radius);border-bottom:var(--webchat-strokeWidthThicker) solid var(--webchat-colorCompoundBrandForeground1Hover);bottom:-1px;clip-path:inset(calc(100% - var(--webchat-strokeWidthThicker)) 50% 0 50%);content:\"\";height:var(--webchat-sendbox-border-radius);left:-1px;position:absolute;right:-1px;transition:clip-path var(--webchat-durationUltraFast) var(--webchat-curveAccelerateMid)}.webchat-fluent .G:focus-within:after{clip-path:inset(calc(100% - var(--webchat-strokeWidthThicker)) 0 0 0);transition:clip-path var(--webchat-durationNormal) var(--webchat-curveDecelerateMid)}.webchat-fluent .G>.D{grid-area:text-area}.webchat-fluent .G>.t{grid-area:attachment}.webchat-fluent .G>.M{grid-area:controls}.webchat-fluent .G>.U{grid-area:telephone-keypad}.webchat-fluent .C{background-color:transparent;border:none;flex:auto;font-family:var(--webchat-fontFamilyBase);font-size:14px;line-height:20px;outline:none;padding:4px 4px 0;resize:none}.webchat-fluent .j{align-items:center;display:flex;padding-inline-start:4px}.webchat-fluent .T{color:var(--webchat-colorNeutralForeground4);cursor:default;font-family:var(--webchat-fontFamilyNumeric);font-size:10px;line-height:14px;margin-inline-end:4px}.webchat-fluent .I{color:var(--webchat-colorStatusDangerForeground1)}\n/*! For license information please see botframework-webchat-fluent-theme.css.LEGAL.txt */\n";function G(){if(globalThis.document){let e=document.createElement("style");e.append(document.createTextNode(Wt)),document.head.appendChild(e)}}var Be=require("react");function jt(e){return(0,Be.useMemo)(()=>Object.freeze(Object.fromEntries(Object.entries(e).map(([t,o])=>[t,`${t} ${o}`]))),[e])}var i=jt;var Se=(0,w.memo)((0,w.forwardRef)(({button:e,"data-testid":t,onClick:o,ruby:r},n)=>{let c=i(_e),p=(0,Ne.useRefFrom)(o),a=(0,w.useCallback)(()=>p.current?.(),[p]);return w.default.createElement("button",{className:c["telephone-keypad__button"],"data-testid":t,onClick:a,ref:n,type:"button"},w.default.createElement("span",{className:c["telephone-keypad__button__text"]},e==="star"?"\u2217":e==="pound"?"#":e),!!r&&w.default.createElement("ruby",{className:c["telephone-keypad__button__ruby"]},r))}));Se.displayName="TelephoneKeypad.Button";var x=Se;var R=s(require("react")),Ee=(0,R.memo)(e=>R.default.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 16 16",width:"1em",xmlns:"http://www.w3.org/2000/svg"},R.default.createElement("path",{d:"M8.5 7.5a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3Zm.25-2a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1ZM2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Z",fill:"currentColor"})));var Xt={sendBoxDropZone:"send box drop zone",sendBoxSendButton:"send box send button",sendBoxTextBox:"send box text area",sendBoxTelephoneKeypadButton1:"send box telephone keypad button 1",sendBoxTelephoneKeypadButton2:"send box telephone keypad button 2",sendBoxTelephoneKeypadButton3:"send box telephone keypad button 3",sendBoxTelephoneKeypadButton4:"send box telephone keypad button 4",sendBoxTelephoneKeypadButton5:"send box telephone keypad button 5",sendBoxTelephoneKeypadButton6:"send box telephone keypad button 6",sendBoxTelephoneKeypadButton7:"send box telephone keypad button 7",sendBoxTelephoneKeypadButton8:"send box telephone keypad button 8",sendBoxTelephoneKeypadButton9:"send box telephone keypad button 9",sendBoxTelephoneKeypadButton0:"send box telephone keypad button 0",sendBoxTelephoneKeypadButtonStar:"send box telephone keypad button star",sendBoxTelephoneKeypadButtonPound:"send box telephone keypad button pound",sendBoxTelephoneKeypadToolbarButton:"send box telephone keypad toolbar button",sendBoxUploadButton:"send box upload button"},u=Xt;var $=require("react");function T(){let{setShown:e,shown:t}=(0,$.useContext)(X);return(0,$.useMemo)(()=>Object.freeze([t,e]),[t,e])}var ae={"telephone-keypad":"c","telephone-keypad__box":"n","telephone-keypad__info-message":"d","telephone-keypad__info-message-link":"i"};var{LocalizedString:$t}=Ce.Components,Ae=(0,l.memo)(({children:e,isHorizontal:t})=>{let o=i(ae);return t?null:l.default.createElement("div",{className:o["telephone-keypad__box"]},e)});Ae.displayName="TelephoneKeypad:Orientation";var Me=(0,l.memo)(({autoFocus:e,className:t,onButtonClick:o,isHorizontal:r})=>{let n=(0,le.useRefFrom)(e),c=i(ae),p=(0,l.useRef)(null),a=(0,le.useRefFrom)(o),[,m]=T(),b=(0,l.useCallback)(()=>a.current?.("1"),[a]),h=(0,l.useCallback)(()=>a.current?.("2"),[a]),f=(0,l.useCallback)(()=>a.current?.("3"),[a]),_=(0,l.useCallback)(()=>a.current?.("4"),[a]),I=(0,l.useCallback)(()=>a.current?.("5"),[a]),F=(0,l.useCallback)(()=>a.current?.("6"),[a]),A=(0,l.useCallback)(()=>a.current?.("7"),[a]),M=(0,l.useCallback)(()=>a.current?.("8"),[a]),H=(0,l.useCallback)(()=>a.current?.("9"),[a]),B=(0,l.useCallback)(()=>a.current?.("0"),[a]),U=(0,l.useCallback)(()=>a.current?.("star"),[a]),Z=(0,l.useCallback)(()=>a.current?.("pound"),[a]),te=(0,l.useCallback)(oe=>{oe.key==="Escape"&&m(!1)},[m]);return(0,l.useEffect)(()=>{n.current&&p.current?.focus()},[n,p]),l.default.createElement("div",{className:(0,Fe.default)(c["telephone-keypad"],t),onKeyDown:te},l.default.createElement(Ae,{isHorizontal:r},l.default.createElement(x,{button:"1","data-testid":u.sendBoxTelephoneKeypadButton1,onClick:b,ref:p}),l.default.createElement(x,{button:"2","data-testid":u.sendBoxTelephoneKeypadButton2,onClick:h,ruby:"ABC"}),l.default.createElement(x,{button:"3","data-testid":u.sendBoxTelephoneKeypadButton3,onClick:f,ruby:"DEF"}),l.default.createElement(x,{button:"4","data-testid":u.sendBoxTelephoneKeypadButton4,onClick:_,ruby:"GHI"}),l.default.createElement(x,{button:"5","data-testid":u.sendBoxTelephoneKeypadButton5,onClick:I,ruby:"JKL"}),l.default.createElement(x,{button:"6","data-testid":u.sendBoxTelephoneKeypadButton6,onClick:F,ruby:"MNO"}),l.default.createElement(x,{button:"7","data-testid":u.sendBoxTelephoneKeypadButton7,onClick:A,ruby:"PQRS"}),l.default.createElement(x,{button:"8","data-testid":u.sendBoxTelephoneKeypadButton8,onClick:M,ruby:"TUV"}),l.default.createElement(x,{button:"9","data-testid":u.sendBoxTelephoneKeypadButton9,onClick:H,ruby:"WXYZ"}),l.default.createElement(x,{button:"star","data-testid":u.sendBoxTelephoneKeypadButtonStar,onClick:U}),l.default.createElement(x,{button:"0","data-testid":u.sendBoxTelephoneKeypadButton0,onClick:B,ruby:"+"}),l.default.createElement(x,{button:"pound","data-testid":u.sendBoxTelephoneKeypadButtonPound,onClick:Z})),l.default.createElement("div",{className:c["telephone-keypad__info-message"]},l.default.createElement(Ee,null),l.default.createElement($t,{linkClassName:c["telephone-keypad__info-message-link"],stringIds:"TELEPHONE_KEYPAD_INPUT_MESSAGE"})))});Me.displayName="TelephoneKeypad";var He=Me;var Le=(0,V.memo)(e=>T()[0]?V.default.createElement(He,{...e}):null);Le.displayName="TelephoneKeypad.Surrogate";var se=Le;var Pe=s(require("react")),Ie=s(require("classnames"));var De={theme:"a"};var Yt="webchat-fluent";function de(e){let t=i(De);return Pe.default.createElement("div",{className:(0,Ie.default)(Yt,t.theme)},e.children)}var Nt=require("botframework-webchat-component"),K=s(require("classnames")),d=s(require("react")),ye=require("use-ref-from");var ie=s(require("react"));function Ke(e){return ie.default.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},ie.default.createElement("path",{d:"M2.18 2.11a.5.5 0 0 1 .54-.06l15 7.5a.5.5 0 0 1 0 .9l-15 7.5a.5.5 0 0 1-.7-.58L3.98 10 2.02 2.63a.5.5 0 0 1 .16-.52Zm2.7 8.39-1.61 6.06L16.38 10 3.27 3.44 4.88 9.5h6.62a.5.5 0 1 1 0 1H4.88Z",fill:"currentColor"}))}var Ue=require("botframework-webchat-component"),Ze=s(require("classnames")),y=s(require("react")),We=require("use-ref-from");var ce=s(require("react"));function ze(e){return ce.default.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},ce.default.createElement("path",{d:"M6 2a2 2 0 0 0-2 2v5.2c.32-.08.66-.15 1-.18V4a1 1 0 0 1 1-1h4v3.5c0 .83.67 1.5 1.5 1.5H15v8a1 1 0 0 1-1 1h-3.6c-.18.36-.4.7-.66 1H14a2 2 0 0 0 2-2V7.41c0-.4-.16-.78-.44-1.06l-3.91-3.91A1.5 1.5 0 0 0 10.59 2H6Zm8.8 5h-3.3a.5.5 0 0 1-.5-.5V3.2L14.8 7ZM10 14.5a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm-4-2a.5.5 0 0 0-1 0V14H3.5a.5.5 0 0 0 0 1H5v1.5a.5.5 0 0 0 1 0V15h1.5a.5.5 0 0 0 0-1H6v-1.5Z",fill:"currentColor"}))}var Oe={"sendbox__attachment-drop-zone":"b","sendbox__attachment-drop-zone--droppable":"u","sendbox__attachment-drop-zone-icon":"h"};var{useLocalizer:Jt}=Ue.hooks,Qt=e=>{e.preventDefault()},Re=e=>!!e.dataTransfer?.types?.some(t=>t.toLowerCase()==="files");function eo(e,t){let o=e.parentNode;for(;o;){if(o===t)return!0;o=o.parentNode}return!1}var je=e=>{let[t,o]=(0,y.useState)(!1),r=i(Oe),n=(0,y.useRef)(null),c=Jt(),p=(0,We.useRefFrom)(e.onFilesAdded);(0,y.useEffect)(()=>{let m=0,b=f=>{m++,Re(f)&&o(n.current&&(f.target===n.current||f.target instanceof HTMLElement&&eo(f.target,n.current))?"droppable":"visible")},h=()=>--m<=0&&o(!1);return document.addEventListener("dragenter",b,!1),document.addEventListener("dragleave",h,!1),()=>{document.removeEventListener("dragenter",b),document.removeEventListener("dragleave",h)}},[o]);let a=(0,y.useCallback)(m=>{m.preventDefault(),o(!1),Re(m.nativeEvent)&&p.current([...m.dataTransfer.files])},[p,o]);return t?y.default.createElement("div",{className:(0,Ze.default)(r["sendbox__attachment-drop-zone"],{[r["sendbox__attachment-drop-zone--droppable"]]:t==="droppable"}),"data-testid":u.sendBoxDropZone,onDragOver:Qt,onDrop:a,ref:n},y.default.createElement(ze,{className:r["sendbox__attachment-drop-zone-icon"]}),c("TEXT_INPUT_DROP_ZONE")):null};je.displayName="DropZone";var Xe=(0,y.memo)(je);var Ge=Xe;var Qe=require("botframework-webchat-component"),et=s(require("classnames")),L=s(require("react"));var Ye=require("botframework-webchat-component"),qe=s(require("classnames")),k=s(require("react"));var $e={"suggested-action":"s","suggested-action__image":"g"};var S=s(require("react")),oo=e=>e.preventDefault(),ro=(0,S.forwardRef)(({"aria-hidden":e,children:t,disabled:o,onClick:r,tabIndex:n,...c},p)=>{let a=(0,S.useRef)(null);return S.default.createElement("button",{"aria-disabled":o?"true":"false","aria-hidden":e,onClick:o?oo:r,ref:p||a,tabIndex:n,...o&&{"aria-disabled":"true",tabIndex:-1},...c,type:"button"},t)}),Ve=(0,S.memo)(ro);var{useDisabled:no,useFocus:ao,usePerformCardAction:lo,useScrollToEnd:so,useStyleSet:io,useSuggestedActions:co}=Ye.hooks;function uo({buttonText:e,className:t,displayText:o,image:r,imageAlt:n,text:c,type:p,value:a}){let[m,b]=co(),[{suggestedAction:h}]=io(),[f]=no(),_=ao(),I=(0,k.useRef)(null),F=lo(),A=i($e),M=so(),H=(0,k.useCallback)(({target:B})=>{(async function(){await _("sendBoxWithoutKeyboard"),F({displayText:o,text:c,type:p,value:a},{target:B}),p==="openUrl"&&b([]),M()})()},[o,_,F,M,b,c,p,a]);return k.default.createElement(Ve,{className:(0,qe.default)(A["suggested-action"],h+"",(t||"")+""),disabled:f,onClick:H,ref:I,type:"button"},r&&k.default.createElement("img",{alt:n,className:A["suggested-action__image"],src:r}),k.default.createElement("span",null,e))}var Je=(0,k.memo)(uo);function ue(e){let{title:t}=e,{type:o,value:r}=e;return o==="messageBack"?t||e.displayText:t||(typeof r=="string"?r:JSON.stringify(r))}var pe={"suggested-actions":"p","suggested-actions--flow":"w","suggested-actions--stacked":"v"};var{useLocalizer:mo,useStyleOptions:bo,useStyleSet:ho,useSuggestedActions:fo}=Qe.hooks;function go(e){let[{suggestedActionLayout:t}]=bo(),[{suggestedActions:o}]=ho(),r=i(pe);return L.default.createElement("div",{"aria-label":e["aria-label"],"aria-live":"polite","aria-orientation":"vertical",className:(0,et.default)(r["suggested-actions"],o+"",{[r["suggested-actions--flow"]]:t==="flow",[r["suggested-actions--stacked"]]:t!=="flow"},e.className),role:"toolbar"},!!e.children&&!!L.default.Children.count(e.children)&&e.children)}function xo(){let e=i(pe),t=mo(),[o]=fo(),r=o.map((n,c)=>{let{displayText:p,image:a,imageAltText:m,text:b,type:h,value:f}=n;return o?.length?L.default.createElement(Je,{buttonText:ue(n),displayText:p,image:a,imageAlt:a&&(m||b),itemIndex:c,key:c,text:b,type:h,value:f}):null});return L.default.createElement(go,{"aria-label":t("SUGGESTED_ACTIONS_LABEL_ALT"),className:e["suggested-actions"]},r)}var tt=(0,L.memo)(xo);var ot=tt;var at=require("botframework-webchat-component"),v=s(require("react")),lt=require("use-ref-from");var me=s(require("react"));function rt(e){return me.default.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},me.default.createElement("path",{d:"m4.83 10.48 5.65-5.65a3 3 0 0 1 4.25 4.24L8 15.8a1.5 1.5 0 0 1-2.12-2.12l6-6.01a.5.5 0 1 0-.7-.71l-6 6.01a2.5 2.5 0 0 0 3.53 3.54l6.71-6.72a4 4 0 1 0-5.65-5.66L4.12 9.78a.5.5 0 0 0 .7.7Z",fill:"currentColor"}))}var q=s(require("classnames")),E=s(require("react"));var Y={sendbox__toolbar:"f","sendbox__toolbar-button":"x","sendbox__toolbar-button--selected":"k","sendbox__toolbar-separator":"m"};var vo=e=>e.preventDefault(),D=(0,E.memo)(e=>{let t=i(Y);return E.default.createElement("button",{"aria-label":e["aria-label"],className:(0,q.default)(t["sendbox__toolbar-button"],e.className,{[t["sendbox__toolbar-button--selected"]]:e.selected}),"data-testid":e["data-testid"],onClick:e.disabled?vo:e.onClick,type:e.type==="submit"?"submit":"button",...e.disabled&&{"aria-disabled":"true",tabIndex:-1}},e.children)});D.displayName="ToolbarButton";var be=(0,E.memo)(e=>{let t=i(Y);return E.default.createElement("div",{className:(0,q.default)(t.sendbox__toolbar,e.className)},e.children)});be.displayName="Toolbar";var he=(0,E.memo)(e=>{let t=i(Y);return E.default.createElement("div",{"aria-orientation":"vertical",className:(0,q.default)(t["sendbox__toolbar-separator"],e.className),role:"separator"})});he.displayName="ToolbarSeparator";var nt={"sendbox__add-attachment":"B","sendbox__add-attachment-input":"F"};var{useLocalizer:To,useStyleOptions:ko}=at.hooks;function _o(e){let t=(0,v.useRef)(null),o=i(nt),r=To(),[{uploadAccept:n,uploadMultiple:c}]=ko(),p=(0,lt.useRefFrom)(e.onFilesAdded),a=(0,v.useCallback)(()=>t.current?.click(),[t]),m=(0,v.useCallback)(({target:{files:b}})=>{b&&(p.current?.([...b]),t.current&&(t.current.value=""))},[t,p]);return v.default.createElement("div",{className:o["sendbox__add-attachment"]},v.default.createElement("input",{accept:n,"aria-disabled":e.disabled,"aria-hidden":"true",className:o["sendbox__add-attachment-input"],multiple:c,onInput:e.disabled?void 0:m,readOnly:e.disabled,ref:t,role:"button",tabIndex:-1,type:"file"}),v.default.createElement(D,{"aria-label":r("TEXT_INPUT_UPLOAD_BUTTON_ALT"),"data-testid":u.sendBoxUploadButton,onClick:a},v.default.createElement(rt,null)))}var st=(0,v.memo)(_o);var it=require("botframework-webchat-component"),J=s(require("react")),ct=s(require("classnames"));var dt={sendbox__attachment:"y"};var{useLocalizer:No}=it.hooks,So={one:"TEXT_INPUT_ATTACHMENTS_ONE",two:"TEXT_INPUT_ATTACHMENTS_TWO",few:"TEXT_INPUT_ATTACHMENTS_FEW",many:"TEXT_INPUT_ATTACHMENTS_MANY",other:"TEXT_INPUT_ATTACHMENTS_OTHER"};function Eo({attachments:e,className:t}){let o=i(dt),r=No({plural:!0});return e.length?J.default.createElement("div",{className:(0,ct.default)(o.sendbox__attachment,t)},r(So,e.length)):null}var ut=(0,J.memo)(Eo);var Q=s(require("react"));var pt={"sendbox__error-message":"N"};function Fo(e){let t=i(pt);return Q.default.createElement("span",{className:t["sendbox__error-message"],id:e.id,role:"alert"},e.error)}var mt=(0,Q.memo)(Fo);var P=s(require("react")),ht=require("botframework-webchat-component");var fe=s(require("react"));function bt(e){return fe.default.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},fe.default.createElement("path",{d:"M6 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Zm0 4a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM7.25 12a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 16a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM15.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Z",fill:"currentColor"}))}var{useLocalizer:Ao}=ht.hooks,ft=(0,P.memo)(()=>{let[e,t]=T(),o=Ao(),r=(0,P.useCallback)(()=>t(n=>!n),[t]);return P.default.createElement(D,{"aria-label":o("TEXT_INPUT_TELEPHONE_KEYPAD_BUTTON_ALT"),"data-testid":u.sendBoxTelephoneKeypadToolbarButton,onClick:r,selected:e},P.default.createElement(bt,null))});ft.displayName="SendBox.TelephoneKeypadToolbarButton";var gt=ft;var ee=s(require("classnames")),C=s(require("react"));var xt={"sendbox__text-area":"S","sendbox__text-area--hidden":"z","sendbox__text-area-shared":"L","sendbox__text-area-doppelganger":"H","sendbox__text-area-input":"W","sendbox__text-area-input--scroll":"P"};var yt=(0,C.forwardRef)((e,t)=>{let o=i(xt),r=(0,C.useCallback)(n=>{!n.shiftKey&&n.key==="Enter"&&(n.preventDefault(),"form"in n.target&&n.target.form instanceof HTMLFormElement&&n.target?.form?.requestSubmit())},[]);return C.default.createElement("div",{className:(0,ee.default)(o["sendbox__text-area"],{[o["sendbox__text-area--hidden"]]:e.hidden},e.className),role:e.hidden?"hidden":void 0},C.default.createElement("div",{className:(0,ee.default)(o["sendbox__text-area-doppelganger"],o["sendbox__text-area-shared"],o["sendbox__text-area-input--scroll"])},e.value||e.placeholder," "),C.default.createElement("textarea",{"aria-label":e["aria-label"],className:(0,ee.default)(o["sendbox__text-area-input"],o["sendbox__text-area-shared"],o["sendbox__text-area-input--scroll"]),"data-testid":e["data-testid"],onInput:e.onInput,onKeyDown:r,placeholder:e.placeholder,ref:t,rows:e.startRows??1,tabIndex:e.hidden?-1:void 0,value:e.value}))});yt.displayName="TextArea";var vt=yt;var wt=require("botframework-webchat-component"),ge=require("react"),Tt=require("use-ref-from"),{useConnectivityStatus:Ho,useLocalizer:Lo}=wt.hooks,Do=({attachments:e,message:t})=>{let[o]=Ho(),r=Lo(),n=(0,Tt.useRefFrom)(o!=="connected"&&o!=="reconnected"?"offline":!t&&!e.length?"empty":void 0),c=(0,ge.useMemo)(()=>Object.freeze(new Map().set("empty",r("SEND_BOX_IS_EMPTY_TOOLTIP_ALT")).set("offline",r("CONNECTIVITY_STATUS_ALT_FATAL"))),[r]);return(0,ge.useMemo)(()=>Object.freeze([n,n.current&&c.get(n.current)]),[c,n])},kt=Do;var _t=require("react");function xe(e){let t=(0,_t.useMemo)(()=>Math.random().toString(36).substr(2,5),[]);return e=e?`${e}--`:"",`${e}${t}`}var Bt={sendbox:"R",sendbox__sendbox:"G","sendbox__attachment--in-grid":"t","sendbox__text-area--in-grid":"D","sendbox__sendbox-controls--in-grid":"M","sendbox__telephone-keypad--in-grid":"U","sendbox__sendbox-text":"C","sendbox__sendbox-controls":"j","sendbox__text-counter":"T","sendbox__text-counter--error":"I"};var{useFocus:Io,useLocalizer:Ko,useMakeThumbnail:zo,useRegisterFocusSendBox:Oo,useSendBoxAttachments:Ro,useSendMessage:Uo,useStyleOptions:Zo}=Nt.hooks;function Wo(e){let t=(0,d.useRef)(null),[o,r]=(0,d.useState)(""),[n,c]=Ro(),[{hideTelephoneKeypadButton:p,hideUploadButton:a,maxMessageLength:m}]=Zo(),b=!!m&&o.length>m,h=i(Bt),f=Ko(),_=Uo(),I=zo(),F=xe("sendbox__error-message-id"),[A,M]=kt({message:o,attachments:n}),[H]=T(),B=Io();Oo((0,d.useCallback)(({noKeyboard:g,waitUntil:re})=>{t.current&&(g?re((async()=>{let O=t.current?.getAttribute("readonly");t.current?.setAttribute("readonly","true"),await new Promise(W=>setTimeout(W,0)),t.current?.focus(),typeof O!="string"?t.current?.removeAttribute("readonly"):t.current?.setAttribute("readonly",O)})()):t.current?.focus())},[t]));let U=(0,ye.useRefFrom)(n),Z=(0,ye.useRefFrom)(o),te=(0,d.useCallback)(g=>{"tabIndex"in g.target&&typeof g.target.tabIndex=="number"&&g.target.tabIndex>=0||B("sendBox")},[B]),oe=(0,d.useCallback)(g=>r(g.currentTarget.value),[r]),ve=(0,d.useCallback)(async g=>{let re=Object.freeze(await Promise.all(g.map(O=>I(O).then(W=>Object.freeze({blob:O,...W&&{thumbnailURL:W}})))));c(re)},[I,c]),Mt=(0,d.useCallback)(g=>{g.preventDefault(),A.current!=="empty"&&!b&&(_(Z.current,void 0,{attachments:U.current}),r(""),c([])),B("sendBox")},[U,Z,_,c,r,b,A,B]),Ht=(0,d.useCallback)(g=>_(`/DTMF ${g}`),[_]),Lt={"aria-invalid":"false",...M&&{"aria-invalid":"true","aria-errormessage":F}};return d.default.createElement("form",{...Lt,className:(0,K.default)(h.sendbox,e.className),onSubmit:Mt},d.default.createElement(ot,null),d.default.createElement("div",{className:(0,K.default)(h.sendbox__sendbox),onClickCapture:te},d.default.createElement(vt,{"aria-label":f(b?"TEXT_INPUT_LENGTH_EXCEEDED_ALT":"TEXT_INPUT_ALT"),className:(0,K.default)(h["sendbox__sendbox-text"],h["sendbox__text-area--in-grid"]),"data-testid":u.sendBoxTextBox,hidden:H,onInput:oe,placeholder:e.placeholder??f("TEXT_INPUT_PLACEHOLDER"),ref:t,value:o}),d.default.createElement(se,{autoFocus:!0,className:h["sendbox__telephone-keypad--in-grid"],isHorizontal:!1,onButtonClick:Ht}),d.default.createElement(ut,{attachments:n,className:h["sendbox__attachment--in-grid"]}),d.default.createElement("div",{className:(0,K.default)(h["sendbox__sendbox-controls"],h["sendbox__sendbox-controls--in-grid"])},!H&&m&&d.default.createElement("div",{className:(0,K.default)(h["sendbox__text-counter"],{[h["sendbox__text-counter--error"]]:b})},`${o.length}/${m}`),d.default.createElement(be,null,!p&&d.default.createElement(gt,null),!a&&d.default.createElement(st,{onFilesAdded:ve}),d.default.createElement(he,null),d.default.createElement(D,{"aria-label":f("TEXT_INPUT_SEND_BUTTON_ALT"),"data-testid":u.sendBoxSendButton,disabled:b||H,type:"submit"},d.default.createElement(Ke,null)))),d.default.createElement(Ge,{onFilesAdded:ve}),d.default.createElement(mt,{error:M,id:F})))}var St=(0,d.memo)(Wo);var Et=St;var{ThemeProvider:jo}=Ct.Components,Xo=[()=>()=>()=>Et],Go=({children:e})=>z.default.createElement(de,null,z.default.createElement(ne,null,z.default.createElement(jo,{sendBoxMiddleware:Xo},e))),Ft=(0,z.memo)(Go);var $o="tsup",Vo="commonjs",Yo="4.17.0-main.20240501.533c151",qo={buildTool:$o,moduleFormat:Vo,version:Yo};(0,At.injectMetaTag)("botframework-webchat:fluent-theme","version=4.17.0-main.20240501.533c151; build-tool=tsup; module-format=commonjs");G();
2
+ /*! For license information please see botframework-webchat-fluent-theme.js.LEGAL.txt */
3
+ //# sourceMappingURL=botframework-webchat-fluent-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/private/FluentThemeProvider.tsx","../src/components/telephoneKeypad/Provider.tsx","../src/components/telephoneKeypad/private/Context.ts","../src/components/telephoneKeypad/Surrogate.tsx","../src/components/telephoneKeypad/private/TelephoneKeypad.tsx","../src/components/telephoneKeypad/private/Button.tsx","../src/components/telephoneKeypad/private/Button.module.css","../src/styles/injectStyle.ts","../src/styles/useStyles.ts","../src/icons/InfoSmallIcon.tsx","../src/testIds.ts","../src/components/telephoneKeypad/useShown.ts","../src/components/telephoneKeypad/private/TelephoneKeypad.module.css","../src/components/Theme.tsx","../src/components/Theme.module.css","../src/components/sendbox/index.tsx","../src/icons/SendIcon.tsx","../src/components/dropZone/index.tsx","../src/icons/AddDocumentIcon.tsx","../src/components/dropZone/index.module.css","../src/components/DropZone.tsx","../src/components/suggestedActions/index.tsx","../src/components/suggestedActions/SuggestedAction.tsx","../src/components/suggestedActions/SuggestedAction.module.css","../src/components/suggestedActions/AccessibleButton.tsx","../src/components/suggestedActions/private/computeSuggestedActionText.ts","../src/components/suggestedActions/index.module.css","../src/components/SuggestedActions.tsx","../src/components/sendbox/AddAttachmentButton.tsx","../src/icons/AttachmentIcon.tsx","../src/components/sendbox/Toolbar.tsx","../src/components/sendbox/Toolbar.module.css","../src/components/sendbox/AddAttachmentButton.module.css","../src/components/sendbox/Attachments.tsx","../src/components/sendbox/Attachments.module.css","../src/components/sendbox/ErrorMessage.tsx","../src/components/sendbox/ErrorMessage.module.css","../src/components/sendbox/TelephoneKeypadToolbarButton.tsx","../src/icons/TelephoneKeypad.tsx","../src/components/sendbox/TextArea.tsx","../src/components/sendbox/TextArea.module.css","../src/components/sendbox/private/useSubmitError.ts","../src/components/sendbox/private/useUniqueId.ts","../src/components/sendbox/index.module.css","../src/components/SendBox.tsx"],"sourcesContent":["import { injectMetaTag } from 'inject-meta-tag';\n\nimport FluentThemeProvider from './private/FluentThemeProvider';\nimport { injectStyle } from './styles';\nimport testIds from './testIds';\n\nconst buildTool = process.env['build_tool'];\nconst moduleFormat = process.env['module_format'];\nconst version = process.env['npm_package_version'];\n\nconst buildInfo = { buildTool, moduleFormat, version };\n\ninjectMetaTag(\n 'botframework-webchat:fluent-theme',\n `version=${process.env['npm_package_version']}; build-tool=${process.env['build_tool']}; module-format=${process.env['module_format']}`\n);\n\ninjectStyle();\n\nexport { FluentThemeProvider, buildInfo, testIds };\n","import { Components } from 'botframework-webchat-component';\nimport React, { memo, type ReactNode } from 'react';\n\nimport { TelephoneKeypadProvider } from '../components/TelephoneKeypad';\nimport WebChatTheme from '../components/Theme';\nimport SendBox from '../components/SendBox';\n\nconst { ThemeProvider } = Components;\n\ntype Props = Readonly<{ children?: ReactNode | undefined }>;\n\nconst sendBoxMiddleware = [() => () => () => SendBox];\n\nconst FluentThemeProvider = ({ children }: Props) => (\n <WebChatTheme>\n <TelephoneKeypadProvider>\n <ThemeProvider sendBoxMiddleware={sendBoxMiddleware}>{children}</ThemeProvider>\n </TelephoneKeypadProvider>\n </WebChatTheme>\n);\n\nexport default memo(FluentThemeProvider);\n","import React, { memo, useMemo, useState, type ReactNode } from 'react';\n\nimport Context from './private/Context';\n\ntype Props = Readonly<{ children?: ReactNode | undefined }>;\n\nconst Provider = memo(({ children }: Props) => {\n const [shown, setShown] = useState(false);\n\n const context = useMemo(\n () =>\n Object.freeze({\n setShown,\n shown\n }),\n [setShown, shown]\n );\n\n return <Context.Provider value={context}>{children}</Context.Provider>;\n});\n\nexport default Provider;\n","import { createContext, type Dispatch, type SetStateAction } from 'react';\n\ntype ContextType = Readonly<{\n setShown: Dispatch<SetStateAction<boolean>>;\n shown: boolean;\n}>;\n\nconst Context = createContext<ContextType>(\n new Proxy({} as ContextType, {\n get() {\n throw new Error('botframework-webchat: This hook can only used under its corresponding <Provider>.');\n }\n })\n);\n\nContext.displayName = 'TelephoneKeypad.Context';\n\nexport default Context;\n","import React, { memo } from 'react';\n\nimport type { PropsOf } from '../../types/PropsOf';\nimport TelephoneKeypad from './private/TelephoneKeypad';\nimport useShown from './useShown';\n\ntype Props = PropsOf<typeof TelephoneKeypad>;\n\nconst TelephoneKeypadSurrogate = memo((props: Props) => (useShown()[0] ? <TelephoneKeypad {...props} /> : null));\n\nTelephoneKeypadSurrogate.displayName = 'TelephoneKeypad.Surrogate';\n\nexport default TelephoneKeypadSurrogate;\n","import { Components } from 'botframework-webchat-component';\nimport cx from 'classnames';\nimport React, { memo, useCallback, useEffect, useRef, type KeyboardEventHandler, type ReactNode } from 'react';\nimport { useRefFrom } from 'use-ref-from';\n\nimport Button from './Button';\n// import HorizontalDialPadController from './HorizontalDialPadController';\nimport InfoSmallIcon from '../../../icons/InfoSmallIcon';\nimport { useStyles } from '../../../styles';\nimport testIds from '../../../testIds';\nimport { type DTMF } from '../types';\nimport useShown from '../useShown';\nimport styles from './TelephoneKeypad.module.css';\n\nconst { LocalizedString } = Components;\n\ntype Props = Readonly<{\n autoFocus?: boolean | undefined;\n className?: string | undefined;\n isHorizontal: boolean;\n onButtonClick: (button: DTMF) => void;\n}>;\n\nconst Orientation = memo(\n ({ children, isHorizontal }: Readonly<{ children?: ReactNode | undefined; isHorizontal: boolean }>) => {\n const classNames = useStyles(styles);\n\n return isHorizontal ? null : ( // <HorizontalDialPadController>{children}</HorizontalDialPadController>\n <div className={classNames['telephone-keypad__box']}>{children}</div>\n );\n }\n);\n\nOrientation.displayName = 'TelephoneKeypad:Orientation';\n\nconst TelephoneKeypad = memo(({ autoFocus, className, onButtonClick, isHorizontal }: Props) => {\n const autoFocusRef = useRefFrom(autoFocus);\n const classNames = useStyles(styles);\n const firstButtonRef = useRef<HTMLButtonElement>(null);\n const onButtonClickRef = useRefFrom(onButtonClick);\n const [, setShown] = useShown();\n\n const handleButton1Click = useCallback(() => onButtonClickRef.current?.('1'), [onButtonClickRef]);\n const handleButton2Click = useCallback(() => onButtonClickRef.current?.('2'), [onButtonClickRef]);\n const handleButton3Click = useCallback(() => onButtonClickRef.current?.('3'), [onButtonClickRef]);\n const handleButton4Click = useCallback(() => onButtonClickRef.current?.('4'), [onButtonClickRef]);\n const handleButton5Click = useCallback(() => onButtonClickRef.current?.('5'), [onButtonClickRef]);\n const handleButton6Click = useCallback(() => onButtonClickRef.current?.('6'), [onButtonClickRef]);\n const handleButton7Click = useCallback(() => onButtonClickRef.current?.('7'), [onButtonClickRef]);\n const handleButton8Click = useCallback(() => onButtonClickRef.current?.('8'), [onButtonClickRef]);\n const handleButton9Click = useCallback(() => onButtonClickRef.current?.('9'), [onButtonClickRef]);\n const handleButton0Click = useCallback(() => onButtonClickRef.current?.('0'), [onButtonClickRef]);\n const handleButtonStarClick = useCallback(() => onButtonClickRef.current?.('star'), [onButtonClickRef]);\n const handleButtonPoundClick = useCallback(() => onButtonClickRef.current?.('pound'), [onButtonClickRef]);\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (event.key === 'Escape') {\n // TODO: Should send focus to the send box.\n setShown(false);\n }\n },\n [setShown]\n );\n\n useEffect(() => {\n autoFocusRef.current && firstButtonRef.current?.focus();\n }, [autoFocusRef, firstButtonRef]);\n\n return (\n <div className={cx(classNames['telephone-keypad'], className)} onKeyDown={handleKeyDown}>\n <Orientation isHorizontal={isHorizontal}>\n <Button\n button=\"1\"\n data-testid={testIds.sendBoxTelephoneKeypadButton1}\n onClick={handleButton1Click}\n ref={firstButtonRef}\n />\n <Button\n button=\"2\"\n data-testid={testIds.sendBoxTelephoneKeypadButton2}\n onClick={handleButton2Click}\n ruby=\"ABC\"\n />\n <Button\n button=\"3\"\n data-testid={testIds.sendBoxTelephoneKeypadButton3}\n onClick={handleButton3Click}\n ruby=\"DEF\"\n />\n <Button\n button=\"4\"\n data-testid={testIds.sendBoxTelephoneKeypadButton4}\n onClick={handleButton4Click}\n ruby=\"GHI\"\n />\n <Button\n button=\"5\"\n data-testid={testIds.sendBoxTelephoneKeypadButton5}\n onClick={handleButton5Click}\n ruby=\"JKL\"\n />\n <Button\n button=\"6\"\n data-testid={testIds.sendBoxTelephoneKeypadButton6}\n onClick={handleButton6Click}\n ruby=\"MNO\"\n />\n <Button\n button=\"7\"\n data-testid={testIds.sendBoxTelephoneKeypadButton7}\n onClick={handleButton7Click}\n ruby=\"PQRS\"\n />\n <Button\n button=\"8\"\n data-testid={testIds.sendBoxTelephoneKeypadButton8}\n onClick={handleButton8Click}\n ruby=\"TUV\"\n />\n <Button\n button=\"9\"\n data-testid={testIds.sendBoxTelephoneKeypadButton9}\n onClick={handleButton9Click}\n ruby=\"WXYZ\"\n />\n <Button button=\"star\" data-testid={testIds.sendBoxTelephoneKeypadButtonStar} onClick={handleButtonStarClick} />\n <Button button=\"0\" data-testid={testIds.sendBoxTelephoneKeypadButton0} onClick={handleButton0Click} ruby=\"+\" />\n <Button\n button=\"pound\"\n data-testid={testIds.sendBoxTelephoneKeypadButtonPound}\n onClick={handleButtonPoundClick}\n />\n </Orientation>\n <div className={classNames['telephone-keypad__info-message']}>\n <InfoSmallIcon />\n <LocalizedString\n linkClassName={classNames['telephone-keypad__info-message-link']}\n stringIds=\"TELEPHONE_KEYPAD_INPUT_MESSAGE\"\n />\n </div>\n </div>\n );\n});\n\nTelephoneKeypad.displayName = 'TelephoneKeypad';\n\nexport default TelephoneKeypad;\n","import React, { forwardRef, memo, useCallback, type Ref } from 'react';\n\nimport { useRefFrom } from 'use-ref-from';\n\nimport { type DTMF } from '../types';\n\nimport styles from './Button.module.css';\nimport { useStyles } from '../../../styles';\n\ntype Props = Readonly<{\n button: DTMF;\n ['data-testid']?: string | undefined;\n onClick?: (() => void) | undefined;\n ruby?: string | undefined;\n}>;\n\nconst Button = memo(\n // As we are all TypeScript, internal components do not need propTypes.\n // eslint-disable-next-line react/prop-types\n forwardRef(({ button, 'data-testid': dataTestId, onClick, ruby }: Props, ref: Ref<HTMLButtonElement>) => {\n const classNames = useStyles(styles);\n const onClickRef = useRefFrom(onClick);\n\n const handleClick = useCallback(() => onClickRef.current?.(), [onClickRef]);\n\n return (\n <button\n className={classNames['telephone-keypad__button']}\n data-testid={dataTestId}\n onClick={handleClick}\n ref={ref}\n type=\"button\"\n >\n <span className={classNames['telephone-keypad__button__text']}>\n {button === 'star' ? '\\u2217' : button === 'pound' ? '#' : button}\n </span>\n {!!ruby && <ruby className={classNames['telephone-keypad__button__ruby']}>{ruby}</ruby>}\n </button>\n );\n })\n);\n\nButton.displayName = 'TelephoneKeypad.Button';\n\nexport default Button;\n","\n:global(.webchat-fluent) .telephone-keypad__button {\n -webkit-user-select: none;\n align-items: center;\n appearance: none;\n /* backgroundColor: isDarkTheme() || isHighContrastTheme() ? black : white, */\n background-color: White;\n border-radius: 100%;\n\n /* Whitelabel styles */\n /* border: `solid 1px ${isHighContrastTheme() ? white : isDarkTheme() ? gray160 : gray40}`, */\n /* color: inherit; */\n\n border: solid 1px var(--webchat-colorNeutralStroke1);\n color: var(--webchat-colorGray200);\n font-weight: var(--webchat-fontWeightSemibold);\n\n cursor: pointer;\n display: flex;\n flex-direction: column;\n height: 60px;\n opacity: 0.7;\n padding: 0;\n position: relative;\n touch-action: none;\n user-select: none;\n width: 60px;\n\n &:hover {\n /* backgroundColor: isHighContrastTheme() ? gray210 : isDarkTheme() ? gray150 : gray30 */\n background-color: var(--webchat-colorGray30)\n }\n}\n\n:global(.webchat-fluent) .telephone-keypad__button__ruby {\n /* color: isHighContrastTheme() ? white : isDarkTheme() ? gray40 : gray160, */\n color: var(--webchat-colorGray190);\n font-size: 10px;\n}\n\n:global(.webchat-fluent) .telephone-keypad__button__text {\n font-size: 24px;\n margin-top: 8px;\n}\n\n:global(.webchat-fluent) .telephone-keypad--horizontal {\n & .telephone-keypad__button {\n height: 32px;\n justify-content: center;\n margin: 8px 4px;\n width: 32px;\n };\n\n .telephone-keypad__button__ruby {\n display: none;\n }\n\n & .telephone-keypad__button__text {\n font-size: 20px;\n margin-top: 0;\n }\n}\n","export const injectedStyles = '@--INJECTED-STYLES-CONTENT--@';\n\nexport default function injectStyles() {\n if (globalThis.document) {\n const style = document.createElement('style');\n style.append(document.createTextNode(injectedStyles));\n document.head.appendChild(style);\n }\n}\n","import { useMemo } from 'react';\n\nfunction useStyles<T extends CSSModuleClasses>(styles: T): T {\n // @ts-expect-error: entries/fromEntries don't allow to specify keys type\n return useMemo(\n () =>\n Object.freeze(\n Object.fromEntries(\n Object.entries(styles).map(([baseClassName, resultClassName]) => [\n baseClassName,\n `${baseClassName} ${resultClassName}`\n ])\n )\n ),\n [styles]\n );\n}\n\nexport default useStyles;\n","import React, { memo } from 'react';\n\nexport default memo((props: Readonly<{ readonly className?: string }>) => (\n <svg\n aria-hidden=\"true\"\n className={props.className}\n height=\"1em\"\n viewBox=\"0 0 16 16\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.5 7.5a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3Zm.25-2a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1ZM2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Z\"\n fill=\"currentColor\"\n />\n </svg>\n));\n","const testIds = {\n sendBoxDropZone: 'send box drop zone',\n sendBoxSendButton: 'send box send button',\n sendBoxTextBox: 'send box text area',\n sendBoxTelephoneKeypadButton1: `send box telephone keypad button 1`,\n sendBoxTelephoneKeypadButton2: `send box telephone keypad button 2`,\n sendBoxTelephoneKeypadButton3: `send box telephone keypad button 3`,\n sendBoxTelephoneKeypadButton4: `send box telephone keypad button 4`,\n sendBoxTelephoneKeypadButton5: `send box telephone keypad button 5`,\n sendBoxTelephoneKeypadButton6: `send box telephone keypad button 6`,\n sendBoxTelephoneKeypadButton7: `send box telephone keypad button 7`,\n sendBoxTelephoneKeypadButton8: `send box telephone keypad button 8`,\n sendBoxTelephoneKeypadButton9: `send box telephone keypad button 9`,\n sendBoxTelephoneKeypadButton0: `send box telephone keypad button 0`,\n sendBoxTelephoneKeypadButtonStar: `send box telephone keypad button star`,\n sendBoxTelephoneKeypadButtonPound: `send box telephone keypad button pound`,\n sendBoxTelephoneKeypadToolbarButton: 'send box telephone keypad toolbar button',\n sendBoxUploadButton: 'send box upload button'\n};\n\nexport default testIds;\n","import { useContext, useMemo, type Dispatch, type SetStateAction } from 'react';\n\nimport Context from './private/Context';\n\nexport default function useShown(): readonly [boolean, Dispatch<SetStateAction<boolean>>] {\n const { setShown, shown } = useContext(Context);\n\n return useMemo(() => Object.freeze([shown, setShown]), [shown, setShown]);\n}\n","\n:global(.webchat-fluent) .telephone-keypad {\n /* Commented out whitelabel styles for now. */\n /* background: getHighContrastDarkThemeColor(highContrastColor: black, darkThemeColor: gray190, string, defaultColor: gray10), */\n /* borderRadius: '8px 8px 0px 0px; */\n /* boxShadow: '-3px 0px 7px 0px rgba(0, 0, 0, 0.13), -0.6px 0px 1.8px 0px rgba(0, 0, 0, 0.10)', */\n\n align-items: center;\n background: var(--webchat-colorNeutralBackground1);\n /* border: isHighContrastTheme() ? `1px solid ${white}` : none; */\n border: none;\n border-radius: var(--webchat-borderRadiusXLarge);\n /* boxShadow: var(--shadow16); */\n display: flex;\n flex-direction: column;\n font-family: var(--webchat-fontFamilyBase);\n justify-content: center;\n /* margin: var(--spacingHorizontalMNudge)' */\n}\n\n:global(.webchat-fluent) .telephone-keypad__box {\n box-sizing: border-box;\n display: grid;\n gap: 16px;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(4, 1fr);\n justify-items: center;\n padding: 16px;\n width: 100%;\n}\n\n:global(.webchat-fluent) .telephone-keypad__info-message {\n align-items: center;\n color: var(--webchat-colorNeutralForeground4);\n display: flex;\n font-size: 12px;\n gap: 6px;\n margin-block-end: 6px;\n}\n\n:global(.webchat-fluent) .telephone-keypad__info-message-link {\n color: var(--webchat-colorBrandForegroundLink);\n text-decoration-color: transparent;\n\n &:target {\n color: var(--webchat-colorBrandForegroundLinkSelected);\n }\n &:hover {\n color: var(--webchat-colorBrandForegroundLinkHover);\n text-decoration: underline 1px currentColor;\n }\n &:active {\n color: var(--webchat-colorBrandForegroundLinkPressed);\n }\n &:focus-visible {\n outline: none;\n text-decoration: underline 1px double var(--webchat-colorStrokeFocus2);\n }\n}\n","import React, { type ReactNode } from 'react';\nimport cx from 'classnames';\nimport styles from './Theme.module.css';\nimport { useStyles } from '../styles';\n\nexport const rootClassName = 'webchat-fluent';\n\nexport default function WebchatTheme(props: Readonly<{ readonly children: ReactNode | undefined }>) {\n const classNames = useStyles(styles);\n return <div className={cx(rootClassName, classNames['theme'])}>{props.children}</div>;\n}\n","\n:global(.webchat-fluent).theme {\n display: contents;\n\n --webchat-colorNeutralForeground1: var(--colorNeutralForeground1, #242424);\n --webchat-colorNeutralForeground2: var(--colorNeutralForeground2, #424242);\n --webchat-colorNeutralForeground4: var(--colorNeutralForeground4, #707070);\n\n --webchat-colorNeutralForeground2BrandHover: var(--colorNeutralForeground2BrandHover, #02729c);\n --webchat-colorNeutralForeground2BrandPressed: var(--colorNeutralForeground2BrandPressed, #01678c);\n --webchat-colorNeutralForeground2BrandSelected: var(--colorNeutralForeground2BrandSelected, #067191);\n\n --webchat-colorNeutralForegroundDisabled: var(--colorNeutralForegroundDisabled, #bdbdbd);\n\n --webchat-colorNeutralBackground1: var(--colorNeutralBackground1, #ffffff);\n --webchat-colorNeutralBackground4: var(--colorNeutralBackground4, #f0f0f0);\n --webchat-colorNeutralBackground5: var(--colorNeutralBackground5, #ebebeb);\n\n --webchat-colorNeutralStroke1: var(--colorNeutralStroke1, #d1d1d1);\n --webchat-colorNeutralStroke2: var(--colorNeutralStroke2, #e0e0e0);\n --webchat-colorNeutralStroke1Selected: var(--colorNeutralStroke1Selected, #bdbdbd);\n \n --webchat-colorStrokeFocus2: var(--colorStrokeFocus2, #000000);\n\n --webchat-colorBrandStroke2: var(--colorBrandStroke2, #9edcf7);\n\n --webchat-colorBrandForeground2Hover: var(--colorBrandForeground2Hover, #015a7a);\n --webchat-colorBrandForeground2Pressed: var(--colorBrandForeground2Pressed, #01384d);\n\n --webchat-colorBrandForegroundLink: var(--colorBrandForegroundLink, #01678c);\n --webchat-colorBrandForegroundLinkHover: var(--colorBrandForegroundLinkHover, #015a7a);\n --webchat-colorBrandForegroundLinkPressed: var(--colorBrandForegroundLinkPressed, #014259);\n --webchat-colorBrandForegroundLinkSelected: var(--colorBrandForegroundLinkSelected, #01678c); \n\n --webchat-colorBrandBackground2Hover: var(--colorBrandBackground2Hover, #bee7fa);\n --webchat-colorBrandBackground2Pressed: var(--colorBrandBackground2Pressed, #7fd2f5);\n\n --webchat-colorCompoundBrandForeground1Hover: var(--colorCompoundBrandForeground1Hover, #02729c);\n\n --webchat-colorStatusDangerForeground1: var(--colorStatusDangerForeground1, #b10e1c);\n\n /* https://github.com/microsoft/fluentui/blob/master/packages/tokens/src/global/colors.ts */\n --webchat-colorGray30: var(--colorGray30, #edebe9);\n --webchat-colorGray160: var(--colorGray160, #323130);\n --webchat-colorGray190: var(--colorGray190, #201f1e);\n --webchat-colorGray200: var(--colorGray200, #1b1a19);\n\n /* https://github.com/microsoft/fluentui/blob/master/packages/tokens/src/global/borderRadius.ts */\n --webchat-borderRadiusSmall: var(--borderRadiusSmall, 2px);\n --webchat-borderRadiusLarge: var(--borderRadiusLarge, 6px);\n --webchat-borderRadiusXLarge: var(--borderRadiusXLarge, 8px);\n\n /* https://github.com/microsoft/fluentui/blob/master/packages/tokens/src/utils/shadows.ts */\n --webchat-shadow16: var(--shadow16, 0 6.4px 14.4px 0 rgba(0, 0, 0, 0.132), 0 1.2px 3.6px 0 rgba(0, 0, 0, 0.108));\n\n /* https://github.com/microsoft/fluentui/blob/master/packages/tokens/src/global/spacings.ts */\n --webchat-spacingHorizontalMNudge: var(--spacingHorizontalMNudge, 10px);\n\n /* https://github.com/microsoft/fluentui/blob/master/packages/tokens/src/global/fonts.ts */\n --webchat-fontFamilyBase: var(--fontFamilyBase, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif);\n --webchat-fontFamilyNumeric: var(--fontFamilyNumeric, Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif);\n\n /* https://github.com/microsoft/fluentui/blob/master/packages/tokens/src/global/fonts.ts */\n --webchat-fontWeightSemibold: var(--fontWeightSemibold, 600);\n \n --webchat-strokeWidthThicker: var(--strokeWidthThicker, 3px);\n\n --webchat-durationUltraFast: var(--durationUltraFast, 0);\n --webchat-durationNormal: var(--durationNormal, 200ms);\n\n --webchat-curveAccelerateMid: var(--curveAccelerateMid, cubic-bezier(1,0,1,1));\n --webchat-curveDecelerateMid: var(--curveDecelerateMid, cubic-bezier(0,0,0,1));\n}\n\n@media (prefers-reduced-motion) {\n :global(.webchat-fluent).theme {\n --webchat-durationUltraFast: 0.01ms;\n --webchat-durationNormal: 0.01ms;\n }\n}","import { hooks, type SendBoxFocusOptions } from 'botframework-webchat-component';\nimport cx from 'classnames';\nimport React, { memo, useCallback, useRef, useState, type FormEventHandler, type MouseEventHandler } from 'react';\nimport { useRefFrom } from 'use-ref-from';\nimport { SendIcon } from '../../icons/SendIcon';\nimport testIds from '../../testIds';\nimport DropZone from '../DropZone';\nimport SuggestedActions from '../SuggestedActions';\nimport { TelephoneKeypadSurrogate, useTelephoneKeypadShown, type DTMF } from '../TelephoneKeypad';\nimport AddAttachmentButton from './AddAttachmentButton';\nimport Attachments from './Attachments';\nimport ErrorMessage from './ErrorMessage';\nimport TelephoneKeypadToolbarButton from './TelephoneKeypadToolbarButton';\nimport TextArea from './TextArea';\nimport { Toolbar, ToolbarButton, ToolbarSeparator } from './Toolbar';\nimport useSubmitError from './private/useSubmitError';\nimport useUniqueId from './private/useUniqueId';\nimport styles from './index.module.css';\nimport { useStyles } from '../../styles';\n\nconst {\n useFocus,\n useLocalizer,\n useMakeThumbnail,\n useRegisterFocusSendBox,\n useSendBoxAttachments,\n useSendMessage,\n useStyleOptions\n} = hooks;\n\nfunction SendBox(\n props: Readonly<{\n className?: string | undefined;\n placeholder?: string | undefined;\n }>\n) {\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const [message, setMessage] = useState('');\n const [attachments, setAttachments] = useSendBoxAttachments();\n const [{ hideTelephoneKeypadButton, hideUploadButton, maxMessageLength }] = useStyleOptions();\n const isMessageLengthExceeded = !!maxMessageLength && message.length > maxMessageLength;\n const classNames = useStyles(styles);\n const localize = useLocalizer();\n const sendMessage = useSendMessage();\n const makeThumbnail = useMakeThumbnail();\n const errorMessageId = useUniqueId('sendbox__error-message-id');\n const [errorRef, errorMessage] = useSubmitError({ message, attachments });\n const [telephoneKeypadShown] = useTelephoneKeypadShown();\n const setFocus = useFocus();\n\n useRegisterFocusSendBox(\n useCallback(\n ({ noKeyboard, waitUntil }: SendBoxFocusOptions) => {\n if (!inputRef.current) {\n return;\n }\n if (noKeyboard) {\n waitUntil(\n (async () => {\n const previousReadOnly = inputRef.current?.getAttribute('readonly');\n inputRef.current?.setAttribute('readonly', 'true');\n // TODO: [P2] We should update this logic to handle quickly-successive `focusCallback`.\n // If a succeeding `focusCallback` is being called, the `setTimeout` should run immediately.\n // Or the second `focusCallback` should not set `readonly` to `true`.\n // eslint-disable-next-line no-restricted-globals\n await new Promise(resolve => setTimeout(resolve, 0));\n inputRef.current?.focus();\n if (typeof previousReadOnly !== 'string') {\n inputRef.current?.removeAttribute('readonly');\n } else {\n inputRef.current?.setAttribute('readonly', previousReadOnly);\n }\n })()\n );\n } else {\n inputRef.current?.focus();\n }\n },\n [inputRef]\n )\n );\n\n const attachmentsRef = useRefFrom(attachments);\n const messageRef = useRefFrom(message);\n\n const handleSendBoxClick = useCallback<MouseEventHandler>(\n event => {\n if ('tabIndex' in event.target && typeof event.target.tabIndex === 'number' && event.target.tabIndex >= 0) {\n return;\n }\n\n setFocus('sendBox');\n },\n [setFocus]\n );\n\n const handleMessageChange: React.FormEventHandler<HTMLTextAreaElement> = useCallback(\n event => setMessage(event.currentTarget.value),\n [setMessage]\n );\n\n const handleAddFiles = useCallback(\n async (inputFiles: File[]) => {\n const newAttachments = Object.freeze(\n await Promise.all(\n inputFiles.map(file =>\n makeThumbnail(file).then(thumbnailURL =>\n Object.freeze({\n blob: file,\n ...(thumbnailURL && { thumbnailURL })\n })\n )\n )\n )\n );\n\n setAttachments(newAttachments);\n\n // TODO: Currently in the UX, we have no way to remove attachments.\n // Keep concatenating doesn't make sense in current UX.\n // When end-user can remove attachment, we should enable the code again.\n // setAttachments(attachments => attachments.concat(newAttachments));\n },\n [makeThumbnail, setAttachments]\n );\n\n const handleFormSubmit: FormEventHandler<HTMLFormElement> = useCallback(\n event => {\n event.preventDefault();\n\n if (errorRef.current !== 'empty' && !isMessageLengthExceeded) {\n sendMessage(messageRef.current, undefined, { attachments: attachmentsRef.current });\n\n setMessage('');\n setAttachments([]);\n }\n\n setFocus('sendBox');\n },\n [attachmentsRef, messageRef, sendMessage, setAttachments, setMessage, isMessageLengthExceeded, errorRef, setFocus]\n );\n\n const handleTelephoneKeypadButtonClick = useCallback(\n // TODO: We need more official way of sending DTMF.\n (dtmf: DTMF) => sendMessage(`/DTMF ${dtmf}`),\n [sendMessage]\n );\n\n const aria = {\n 'aria-invalid': 'false' as const,\n ...(errorMessage && {\n 'aria-invalid': 'true' as const,\n 'aria-errormessage': errorMessageId\n })\n };\n\n return (\n <form {...aria} className={cx(classNames['sendbox'], props.className)} onSubmit={handleFormSubmit}>\n <SuggestedActions />\n <div className={cx(classNames['sendbox__sendbox'])} onClickCapture={handleSendBoxClick}>\n <TextArea\n aria-label={isMessageLengthExceeded ? localize('TEXT_INPUT_LENGTH_EXCEEDED_ALT') : localize('TEXT_INPUT_ALT')}\n className={cx(classNames['sendbox__sendbox-text'], classNames['sendbox__text-area--in-grid'])}\n data-testid={testIds.sendBoxTextBox}\n hidden={telephoneKeypadShown}\n onInput={handleMessageChange}\n placeholder={props.placeholder ?? localize('TEXT_INPUT_PLACEHOLDER')}\n ref={inputRef}\n value={message}\n />\n <TelephoneKeypadSurrogate\n autoFocus={true}\n className={classNames['sendbox__telephone-keypad--in-grid']}\n isHorizontal={false}\n onButtonClick={handleTelephoneKeypadButtonClick}\n />\n <Attachments attachments={attachments} className={classNames['sendbox__attachment--in-grid']} />\n <div className={cx(classNames['sendbox__sendbox-controls'], classNames['sendbox__sendbox-controls--in-grid'])}>\n {!telephoneKeypadShown && maxMessageLength && (\n <div\n className={cx(classNames['sendbox__text-counter'], {\n [classNames['sendbox__text-counter--error']]: isMessageLengthExceeded\n })}\n >\n {`${message.length}/${maxMessageLength}`}\n </div>\n )}\n <Toolbar>\n {!hideTelephoneKeypadButton && <TelephoneKeypadToolbarButton />}\n {!hideUploadButton && <AddAttachmentButton onFilesAdded={handleAddFiles} />}\n <ToolbarSeparator />\n <ToolbarButton\n aria-label={localize('TEXT_INPUT_SEND_BUTTON_ALT')}\n data-testid={testIds.sendBoxSendButton}\n disabled={isMessageLengthExceeded || telephoneKeypadShown}\n type=\"submit\"\n >\n <SendIcon />\n </ToolbarButton>\n </Toolbar>\n </div>\n <DropZone onFilesAdded={handleAddFiles} />\n <ErrorMessage error={errorMessage} id={errorMessageId} />\n </div>\n </form>\n );\n}\n\nexport default memo(SendBox);\n","import React from 'react';\n\nexport function SendIcon(props: Readonly<{ readonly className?: string }>) {\n return (\n <svg\n aria-hidden=\"true\"\n className={props.className}\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.18 2.11a.5.5 0 0 1 .54-.06l15 7.5a.5.5 0 0 1 0 .9l-15 7.5a.5.5 0 0 1-.7-.58L3.98 10 2.02 2.63a.5.5 0 0 1 .16-.52Zm2.7 8.39-1.61 6.06L16.38 10 3.27 3.44 4.88 9.5h6.62a.5.5 0 1 1 0 1H4.88Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n","import { hooks } from 'botframework-webchat-component';\nimport cx from 'classnames';\nimport React, { memo, useCallback, useEffect, useRef, useState, type DragEventHandler } from 'react';\nimport { useRefFrom } from 'use-ref-from';\n\nimport { AddDocumentIcon } from '../../icons/AddDocumentIcon';\nimport testIds from '../../testIds';\nimport styles from './index.module.css';\nimport { useStyles } from '../../styles';\n\nconst { useLocalizer } = hooks;\n\nconst handleDragOver: DragEventHandler<HTMLDivElement> = event => {\n // This is for preventing the browser from opening the dropped file in a new tab.\n event.preventDefault();\n};\n\n// Notes: For files dragging from outside of browser, it only tell us if it is a \"File\" instead of \"text/plain\" or \"text/uri-list\".\n// For images dragging inside of browser, it only tell us that it is \"text/plain\", \"text/uri-list\" and \"text/html\". But not \"image/*\".\n// So we cannot whitelist what is droppable.\n// We are using case-insensitive of type \"files\" so we can drag in WebDriver.\nconst isFilesTransferEvent = (event: DragEvent) =>\n !!event.dataTransfer?.types?.some(type => type.toLowerCase() === 'files');\n\nfunction isDescendantOf(target: Node, ancestor: Node): boolean {\n let current = target.parentNode;\n\n while (current) {\n if (current === ancestor) {\n return true;\n }\n\n current = current.parentNode;\n }\n\n return false;\n}\n\nconst DropZone = (props: { readonly onFilesAdded: (files: File[]) => void }) => {\n const [dropZoneState, setDropZoneState] = useState<false | 'visible' | 'droppable'>(false);\n const classNames = useStyles(styles);\n const dropZoneRef = useRef<HTMLDivElement>(null);\n const localize = useLocalizer();\n const onFilesAddedRef = useRefFrom(props.onFilesAdded);\n\n useEffect(() => {\n let entranceCounter = 0;\n\n const handleDragEnter = (event: DragEvent) => {\n entranceCounter++;\n\n if (isFilesTransferEvent(event)) {\n setDropZoneState(\n dropZoneRef.current &&\n (event.target === dropZoneRef.current ||\n (event.target instanceof HTMLElement && isDescendantOf(event.target, dropZoneRef.current)))\n ? 'droppable'\n : 'visible'\n );\n }\n };\n\n const handleDragLeave = () => --entranceCounter <= 0 && setDropZoneState(false);\n\n document.addEventListener('dragenter', handleDragEnter, false);\n document.addEventListener('dragleave', handleDragLeave, false);\n\n return () => {\n document.removeEventListener('dragenter', handleDragEnter);\n document.removeEventListener('dragleave', handleDragLeave);\n };\n }, [setDropZoneState]);\n\n const handleDrop = useCallback<DragEventHandler<HTMLDivElement>>(\n event => {\n event.preventDefault();\n\n setDropZoneState(false);\n\n if (!isFilesTransferEvent(event.nativeEvent)) {\n return;\n }\n\n onFilesAddedRef.current([...event.dataTransfer.files]);\n },\n [onFilesAddedRef, setDropZoneState]\n );\n\n return dropZoneState ? (\n <div\n className={cx(classNames['sendbox__attachment-drop-zone'], {\n [classNames['sendbox__attachment-drop-zone--droppable']]: dropZoneState === 'droppable'\n })}\n data-testid={testIds.sendBoxDropZone}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n ref={dropZoneRef}\n >\n <AddDocumentIcon className={classNames['sendbox__attachment-drop-zone-icon']} />\n {localize('TEXT_INPUT_DROP_ZONE')}\n </div>\n ) : null;\n};\n\nDropZone.displayName = 'DropZone';\n\nexport default memo(DropZone);\n","import React from 'react';\n\nexport function AddDocumentIcon(props: Readonly<{ readonly className?: string }>) {\n return (\n <svg\n aria-hidden=\"true\"\n className={props.className}\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 2a2 2 0 0 0-2 2v5.2c.32-.08.66-.15 1-.18V4a1 1 0 0 1 1-1h4v3.5c0 .83.67 1.5 1.5 1.5H15v8a1 1 0 0 1-1 1h-3.6c-.18.36-.4.7-.66 1H14a2 2 0 0 0 2-2V7.41c0-.4-.16-.78-.44-1.06l-3.91-3.91A1.5 1.5 0 0 0 10.59 2H6Zm8.8 5h-3.3a.5.5 0 0 1-.5-.5V3.2L14.8 7ZM10 14.5a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm-4-2a.5.5 0 0 0-1 0V14H3.5a.5.5 0 0 0 0 1H5v1.5a.5.5 0 0 0 1 0V15h1.5a.5.5 0 0 0 0-1H6v-1.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n",":global(.webchat-fluent) .sendbox__attachment-drop-zone {\n background-color: var(--webchat-colorNeutralBackground4);\n border-radius: inherit;\n cursor: copy;\n display: grid;\n gap: 8px;\n inset: 0;\n place-content: center;\n place-items: center;\n position: absolute;\n}\n\n:global(.webchat-fluent) .sendbox__attachment-drop-zone--droppable {\n background-color: #e00;\n color: White\n}\n\n:global(.webchat-fluent) .sendbox__attachment-drop-zone-icon {\n height: 36px;\n /* Set \"pointer-events: none\" to ignore dragging over the icon. Otherwise, when dragging over the icon; it would disable the \"--droppable\" modifier.*/\n pointer-events: none;\n width: 36px\n}\n","import DropZone from './dropZone/index';\n\nexport default DropZone;\n","import { hooks } from 'botframework-webchat-component';\nimport cx from 'classnames';\nimport React, { memo, type ReactNode } from 'react';\nimport SuggestedAction from './SuggestedAction';\nimport computeSuggestedActionText from './private/computeSuggestedActionText';\nimport styles from './index.module.css';\nimport { useStyles } from '../../styles';\n\nconst { useLocalizer, useStyleOptions, useStyleSet, useSuggestedActions } = hooks;\n\nfunction SuggestedActionStackedOrFlowContainer(\n props: Readonly<{\n 'aria-label'?: string | undefined;\n children?: ReactNode | undefined;\n className?: string | undefined;\n }>\n) {\n const [{ suggestedActionLayout }] = useStyleOptions();\n const [{ suggestedActions: suggestedActionsStyleSet }] = useStyleSet();\n const classNames = useStyles(styles);\n\n return (\n <div\n aria-label={props['aria-label']}\n aria-live=\"polite\"\n aria-orientation=\"vertical\"\n className={cx(\n classNames['suggested-actions'],\n suggestedActionsStyleSet + '',\n {\n [classNames['suggested-actions--flow']]: suggestedActionLayout === 'flow',\n [classNames['suggested-actions--stacked']]: suggestedActionLayout !== 'flow'\n },\n props.className\n )}\n role=\"toolbar\"\n >\n {!!props.children && !!React.Children.count(props.children) && props.children}\n </div>\n );\n}\n\nfunction SuggestedActions() {\n const classNames = useStyles(styles);\n const localize = useLocalizer();\n const [suggestedActions] = useSuggestedActions();\n const children = suggestedActions.map((cardAction, index) => {\n const { displayText, image, imageAltText, text, type, value } = cardAction as {\n displayText?: string;\n image?: string;\n imageAltText?: string;\n text?: string;\n type:\n | 'call'\n | 'downloadFile'\n | 'imBack'\n | 'messageBack'\n | 'openUrl'\n | 'playAudio'\n | 'playVideo'\n | 'postBack'\n | 'showImage'\n | 'signin';\n value?: { [key: string]: any } | string;\n };\n\n if (!suggestedActions?.length) {\n return null;\n }\n\n return (\n <SuggestedAction\n buttonText={computeSuggestedActionText(cardAction)}\n displayText={displayText}\n image={image}\n // Image alt text should use `imageAltText` field and fallback to `text` field.\n // https://github.com/microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md#image-alt-text\n imageAlt={image && (imageAltText || text)}\n itemIndex={index}\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n text={text}\n type={type}\n value={value}\n />\n );\n });\n return (\n <SuggestedActionStackedOrFlowContainer\n aria-label={localize('SUGGESTED_ACTIONS_LABEL_ALT')}\n className={classNames['suggested-actions']}\n >\n {children}\n </SuggestedActionStackedOrFlowContainer>\n );\n}\n\nexport default memo(SuggestedActions);\n","import { hooks } from 'botframework-webchat-component';\nimport { type DirectLineCardAction } from 'botframework-webchat-core';\nimport cx from 'classnames';\nimport React, { MouseEventHandler, memo, useCallback, useRef } from 'react';\nimport styles from './SuggestedAction.module.css';\nimport { useStyles } from '../../styles';\nimport AccessibleButton from './AccessibleButton';\n\nconst { useDisabled, useFocus, usePerformCardAction, useScrollToEnd, useStyleSet, useSuggestedActions } = hooks;\n\ntype SuggestedActionProps = Readonly<{\n buttonText: string | undefined;\n className?: string | undefined;\n displayText?: string | undefined;\n image?: string | undefined;\n imageAlt?: string | undefined;\n itemIndex: number;\n text?: string | undefined;\n type?:\n | 'call'\n | 'downloadFile'\n | 'imBack'\n | 'messageBack'\n | 'openUrl'\n | 'playAudio'\n | 'playVideo'\n | 'postBack'\n | 'showImage'\n | 'signin';\n value?: any;\n}>;\n\nfunction SuggestedAction({\n buttonText,\n className,\n displayText,\n image,\n imageAlt,\n text,\n type,\n value\n}: SuggestedActionProps) {\n const [_, setSuggestedActions] = useSuggestedActions();\n const [{ suggestedAction: suggestedActionStyleSet }] = useStyleSet();\n const [disabled] = useDisabled();\n const focus = useFocus();\n const focusRef = useRef<HTMLButtonElement>(null);\n const performCardAction = usePerformCardAction();\n const classNames = useStyles(styles);\n const scrollToEnd = useScrollToEnd();\n\n const handleClick = useCallback<MouseEventHandler<HTMLButtonElement>>(\n ({ target }) => {\n (async function () {\n // We need to focus to the send box before we are performing this card action.\n // The will make sure the focus is always on Web Chat.\n // Otherwise, the focus may momentarily send to `document.body` and screen reader will be confused.\n await focus('sendBoxWithoutKeyboard');\n\n // TODO: [P3] #XXX We should not destruct DirectLineCardAction into React props and pass them in. It makes typings difficult.\n // Instead, we should pass a \"cardAction\" props.\n performCardAction({ displayText, text, type, value } as DirectLineCardAction, { target });\n\n // Since \"openUrl\" action do not submit, the suggested action buttons do not hide after click.\n type === 'openUrl' && setSuggestedActions([]);\n\n scrollToEnd();\n })();\n },\n [displayText, focus, performCardAction, scrollToEnd, setSuggestedActions, text, type, value]\n );\n\n return (\n <AccessibleButton\n className={cx(classNames['suggested-action'], suggestedActionStyleSet + '', (className || '') + '')}\n disabled={disabled}\n onClick={handleClick}\n ref={focusRef}\n type=\"button\"\n >\n {image && <img alt={imageAlt} className={classNames['suggested-action__image']} src={image} />}\n <span>{buttonText}</span>\n </AccessibleButton>\n );\n}\n\nexport default memo(SuggestedAction);\n",":global(.webchat-fluent) .suggested-action {\n align-items: center;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--webchat-colorBrandStroke2);\n color: currentColor;\n cursor: pointer;\n display: flex;\n font-size: 12px;\n gap: 4px;\n padding: 4px 8px 4px;\n text-align: start;\n transition: all .15s ease-out;\n\n @media (hover: hover) {\n &:not([aria-disabled=\"true\"]):hover {\n background-color: var(--webchat-colorBrandBackground2Hover);\n color: var(--webchat-colorBrandForeground2Hover)\n }\n }\n &:not([aria-disabled=\"true\"]):active {\n background-color: var(--webchat-colorBrandBackground2Pressed);\n color: var(--webchat-colorBrandForeground2Pressed)\n }\n &[aria-disabled=\"true\"] {\n color: var(--webchat-colorNeutralForegroundDisabled);\n cursor: not-allowed\n }\n}\n\n:global(.webchat-fluent) .suggested-action__image {\n font-size: 12px;\n height: 1em;\n width: 1em;\n}\n","import React, { MouseEventHandler, ReactNode, forwardRef, memo, useRef } from 'react';\n\nconst preventDefaultHandler: MouseEventHandler<HTMLButtonElement> = event => event.preventDefault();\n\ntype AccessibleButtonProps = Readonly<{\n className?: string | undefined;\n 'aria-hidden'?: boolean;\n children?: ReactNode;\n disabled?: boolean;\n onClick?: MouseEventHandler<HTMLButtonElement>;\n tabIndex?: number;\n type: 'button';\n}>;\n\n// Differences between <button> and <AccessibleButton>:\n// - Disable behavior\n// - When the widget is disabled\n// - Set \"aria-disabled\" attribute to \"true\"\n// - Set \"readonly\" attribute\n// - Set \"tabIndex\" to -1\n// - Remove \"onClick\" handler\n// - Why this is needed\n// - Browser compatibility: when the widget is disabled, different browser send focus to different places\n// - When the widget become disabled, it's reasonable to keep the focus on the same widget for an extended period of time\n// - When the user presses TAB after the current widget is disabled, it should jump to the next non-disabled widget\n\n// Developers using this accessible widget will need to:\n// - Style the disabled widget themselves, using CSS query `:disabled, [aria-disabled=\"true\"] {}`\n// - Modify all code that check disabled through \"disabled\" attribute to use aria-disabled=\"true\" instead\n// - aria-disabled=\"true\" is the source of truth\n// - If the widget is contained by a <form>, the developer need to filter out some `onSubmit` event caused by this widget\n\nconst AccessibleButton = forwardRef<HTMLButtonElement, AccessibleButtonProps>(\n ({ 'aria-hidden': ariaHidden, children, disabled, onClick, tabIndex, ...props }, forwardedRef) => {\n const targetRef = useRef<HTMLButtonElement>(null);\n\n const ref = forwardedRef || targetRef;\n\n return (\n <button\n aria-disabled={disabled ? 'true' : 'false'}\n aria-hidden={ariaHidden}\n onClick={disabled ? preventDefaultHandler : onClick}\n ref={ref}\n tabIndex={tabIndex}\n {...(disabled && {\n 'aria-disabled': 'true',\n tabIndex: -1\n })}\n {...props}\n type=\"button\"\n >\n {children}\n </button>\n );\n }\n);\n\nexport default memo(AccessibleButton);\n","import type { DirectLineCardAction } from 'botframework-webchat-core';\n\n// Please refer to this article to find out how to compute the \"button text\" for suggested action.\n// https://github.com/Microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md#card-action\nexport default function computeSuggestedActionText(cardAction: DirectLineCardAction) {\n // \"CardAction\" must contains at least image or title.\n const { title } = cardAction as { title?: string };\n const { type, value } = cardAction;\n\n if (type === 'messageBack') {\n return title || cardAction.displayText;\n } else if (title) {\n return title;\n } else if (typeof value === 'string') {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\n// TODO: [P1] This is copied from botframework-webchat-component. Think about what we should do to eliminate duplications.\n","\n:global(.webchat-fluent) .suggested-actions {\n align-items: flex-end;\n align-self: flex-end;\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &:not(:empty) {\n padding-block-end: 8px;\n padding-inline-start: 4px\n }\n\n &.suggested-actions--flow {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-end;\n }\n\n &.suggested-actions--stacked {\n flex-direction: column\n }\n}\n","import SuggestedActions from './suggestedActions/index';\n\nexport default SuggestedActions;\n","import { hooks } from 'botframework-webchat-component';\nimport React, { useCallback, useRef, type ChangeEventHandler, memo } from 'react';\nimport { useRefFrom } from 'use-ref-from';\nimport { AttachmentIcon } from '../../icons/AttachmentIcon';\nimport testIds from '../../testIds';\nimport { ToolbarButton } from './Toolbar';\nimport styles from './AddAttachmentButton.module.css';\nimport { useStyles } from '../../styles';\n\nconst { useLocalizer, useStyleOptions } = hooks;\n\nfunction AddAttachmentButton(\n props: Readonly<{\n disabled?: boolean | undefined;\n onFilesAdded: ((files: File[]) => void) | undefined;\n }>\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const classNames = useStyles(styles);\n const localize = useLocalizer();\n const [{ uploadAccept, uploadMultiple }] = useStyleOptions();\n const onFilesAddedRef = useRefFrom(props.onFilesAdded);\n\n const handleClick = useCallback(() => inputRef.current?.click(), [inputRef]);\n\n const handleFileChange = useCallback<ChangeEventHandler<HTMLInputElement>>(\n ({ target: { files } }) => {\n if (files) {\n onFilesAddedRef.current?.([...files]);\n\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n }\n },\n [inputRef, onFilesAddedRef]\n );\n\n return (\n <div className={classNames['sendbox__add-attachment']}>\n <input\n accept={uploadAccept}\n aria-disabled={props.disabled}\n aria-hidden=\"true\"\n className={classNames['sendbox__add-attachment-input']}\n multiple={uploadMultiple}\n onInput={props.disabled ? undefined : handleFileChange}\n readOnly={props.disabled}\n ref={inputRef}\n role=\"button\"\n tabIndex={-1}\n type=\"file\"\n />\n <ToolbarButton\n aria-label={localize('TEXT_INPUT_UPLOAD_BUTTON_ALT')}\n data-testid={testIds.sendBoxUploadButton}\n onClick={handleClick}\n >\n <AttachmentIcon />\n </ToolbarButton>\n </div>\n );\n}\n\nexport default memo(AddAttachmentButton);\n","import React from 'react';\n\nexport function AttachmentIcon(props: Readonly<{ readonly className?: string }>) {\n return (\n <svg\n aria-hidden=\"true\"\n className={props.className}\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"m4.83 10.48 5.65-5.65a3 3 0 0 1 4.25 4.24L8 15.8a1.5 1.5 0 0 1-2.12-2.12l6-6.01a.5.5 0 1 0-.7-.71l-6 6.01a2.5 2.5 0 0 0 3.53 3.54l6.71-6.72a4 4 0 1 0-5.65-5.66L4.12 9.78a.5.5 0 0 0 .7.7Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n","import cx from 'classnames';\nimport React, { memo, type MouseEventHandler, type ReactNode } from 'react';\nimport styles from './Toolbar.module.css';\nimport { useStyles } from '../../styles';\n\nconst preventDefaultHandler: MouseEventHandler<HTMLButtonElement> = event => event.preventDefault();\n\nexport const ToolbarButton = memo(\n (\n props: Readonly<{\n 'aria-label'?: string | undefined;\n children?: ReactNode | undefined;\n className?: string | undefined;\n 'data-testid'?: string | undefined;\n disabled?: boolean | undefined;\n onClick?: MouseEventHandler<HTMLButtonElement> | undefined;\n selected?: boolean | undefined;\n type?: 'button' | 'submit' | undefined;\n }>\n ) => {\n const classNames = useStyles(styles);\n\n return (\n <button\n aria-label={props['aria-label']}\n className={cx(classNames['sendbox__toolbar-button'], props.className, {\n [classNames['sendbox__toolbar-button--selected']]: props.selected\n })}\n data-testid={props['data-testid']}\n onClick={props.disabled ? preventDefaultHandler : props.onClick}\n type={props.type === 'submit' ? 'submit' : 'button'}\n {...(props.disabled && {\n 'aria-disabled': 'true',\n tabIndex: -1\n })}\n >\n {props.children}\n </button>\n );\n }\n);\n\nToolbarButton.displayName = 'ToolbarButton';\n\nexport const Toolbar = memo((props: Readonly<{ children?: ReactNode | undefined; className?: string | undefined }>) => {\n const classNames = useStyles(styles);\n\n return <div className={cx(classNames['sendbox__toolbar'], props.className)}>{props.children}</div>;\n});\n\nToolbar.displayName = 'Toolbar';\n\nexport const ToolbarSeparator = memo(\n (props: Readonly<{ children?: ReactNode | undefined; className?: string | undefined }>) => {\n const classNames = useStyles(styles);\n\n return (\n <div\n aria-orientation=\"vertical\"\n className={cx(classNames['sendbox__toolbar-separator'], props.className)}\n role=\"separator\"\n />\n );\n }\n);\n\nToolbarSeparator.displayName = 'ToolbarSeparator';\n",":global(.webchat-fluent) .sendbox__toolbar {\n display: flex;\n gap: 4px;\n margin-inline-start: auto;\n}\n\n:global(.webchat-fluent) .sendbox__toolbar-button {\n align-items: center;\n appearance: none;\n aspect-ratio: 1;\n background: transparent;\n border-radius: var(--webchat-borderRadiusSmall);\n border: none;\n color: currentColor;\n cursor: pointer;\n display: flex;\n justify-content: center;\n padding: 3px;\n width: 32px;\n\n > svg {\n font-size: 20px;\n pointer-events: none;\n }\n\n &.sendbox__toolbar-button--selected {\n color: var(--webchat-colorNeutralForeground2BrandSelected);\n }\n @media (hover: hover) {\n &:not([aria-disabled=\"true\"]):hover {\n color: var(--webchat-colorNeutralForeground2BrandHover);\n }\n }\n &:not([aria-disabled=\"true\"]):active {\n color: var(--webchat-colorNeutralForeground2BrandPressed);\n }\n &[aria-disabled=\"true\"] {\n color: var(--webchat-colorNeutralForegroundDisabled);\n cursor: not-allowed;\n }\n}\n\n:global(.webchat-fluent) .sendbox__toolbar-separator {\n align-self: center;\n border-inline-end: 1px solid var(--webchat-colorNeutralStroke2);\n height: 28px;\n\n &:first-child, &:last-child, &:only-child {\n display: none\n }\n}\n",":global(.webchat-fluent) .sendbox__add-attachment {\n display: grid\n}\n\n:global(.webchat-fluent) .sendbox__add-attachment-input {\n font-size: 0;\n height: 0;\n opacity: 0;\n width: 0;\n}\n","import { hooks } from 'botframework-webchat-component';\nimport React, { memo } from 'react';\nimport cx from 'classnames';\nimport styles from './Attachments.module.css';\nimport { useStyles } from '../../styles';\n\nconst { useLocalizer } = hooks;\n\nconst attachmentsPluralStringIds = {\n one: 'TEXT_INPUT_ATTACHMENTS_ONE',\n two: 'TEXT_INPUT_ATTACHMENTS_TWO',\n few: 'TEXT_INPUT_ATTACHMENTS_FEW',\n many: 'TEXT_INPUT_ATTACHMENTS_MANY',\n other: 'TEXT_INPUT_ATTACHMENTS_OTHER'\n};\n\nfunction Attachments({\n attachments,\n className\n}: Readonly<{\n readonly attachments: readonly Readonly<{ blob: Blob | File; thumbnailURL?: URL | undefined }>[];\n readonly className?: string | undefined;\n}>) {\n const classNames = useStyles(styles);\n const localizeWithPlural = useLocalizer({ plural: true });\n\n return attachments.length ? (\n <div className={cx(classNames['sendbox__attachment'], className)}>\n {localizeWithPlural(attachmentsPluralStringIds, attachments.length)}\n </div>\n ) : null;\n}\n\nexport default memo(Attachments);\n",":global(.webchat-fluent) .sendbox__attachment {\n border-radius: var(--webchat-borderRadiusLarge);\n border: 1px solid var(--webchat-colorNeutralStroke1);\n cursor: default;\n padding: 6px 8px;\n width: fit-content\n}\n","import React, { memo } from 'react';\nimport styles from './ErrorMessage.module.css';\nimport { useStyles } from '../../styles';\n\nfunction ErrorMessage(props: Readonly<{ id: string; error?: string | undefined }>) {\n const classNames = useStyles(styles);\n return (\n // eslint-disable-next-line react/forbid-dom-props\n <span className={classNames['sendbox__error-message']} id={props.id} role=\"alert\">\n {props.error}\n </span>\n );\n}\n\nexport default memo(ErrorMessage);\n",":global(.webchat-fluent) .sendbox__error-message {\n color: transparent;\n font-size: 0;\n height: 0;\n left: 0;\n position: absolute;\n top: 0;\n width: 0;\n}\n","import React, { memo, useCallback } from 'react';\n\nimport { hooks } from 'botframework-webchat-component';\nimport { TelephoneKeypadIcon } from '../../icons/TelephoneKeypad';\nimport testIds from '../../testIds';\nimport { useTelephoneKeypadShown } from '../TelephoneKeypad';\nimport { ToolbarButton } from './Toolbar';\n\nconst { useLocalizer } = hooks;\n\nconst TelephoneKeypadToolbarButton = memo(() => {\n const [telephoneKeypadShown, setTelephoneKeypadShown] = useTelephoneKeypadShown();\n const localize = useLocalizer();\n\n const handleClick = useCallback(() => setTelephoneKeypadShown(shown => !shown), [setTelephoneKeypadShown]);\n\n return (\n <ToolbarButton\n aria-label={localize('TEXT_INPUT_TELEPHONE_KEYPAD_BUTTON_ALT')}\n data-testid={testIds.sendBoxTelephoneKeypadToolbarButton}\n onClick={handleClick}\n selected={telephoneKeypadShown}\n >\n <TelephoneKeypadIcon />\n </ToolbarButton>\n );\n});\n\nTelephoneKeypadToolbarButton.displayName = 'SendBox.TelephoneKeypadToolbarButton';\n\nexport default TelephoneKeypadToolbarButton;\n","import React from 'react';\n\nexport function TelephoneKeypadIcon(props: Readonly<{ readonly className?: string }>) {\n return (\n <svg\n aria-hidden=\"true\"\n className={props.className}\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Zm0 4a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM7.25 12a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 16a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM15.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n","import cx from 'classnames';\nimport React, { forwardRef, useCallback, type FormEventHandler, type KeyboardEventHandler } from 'react';\nimport { useStyles } from '../../styles';\nimport styles from './TextArea.module.css';\n\nconst TextArea = forwardRef<\n HTMLTextAreaElement,\n Readonly<{\n 'aria-label'?: string | undefined;\n className?: string | undefined;\n 'data-testid'?: string | undefined;\n\n /**\n * `true`, if the text area should be hidden but stay in the DOM, otherwise, `false`.\n *\n * Keeping the element in the DOM while making it invisible to users and PWDs is useful in these scenarios:\n *\n * - When the DTMF keypad is going away, we need to send focus to the text area before we unmount DTMF keypad,\n * This ensures the flow of focus did not sent to document body\n */\n hidden?: boolean | undefined;\n onInput?: FormEventHandler<HTMLTextAreaElement> | undefined;\n placeholder?: string | undefined;\n startRows?: number | undefined;\n value?: string | undefined;\n }>\n>((props, ref) => {\n const classNames = useStyles(styles);\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLTextAreaElement>>(event => {\n // Shift+Enter adds a new line\n // Enter requests related form submission\n if (!event.shiftKey && event.key === 'Enter') {\n event.preventDefault();\n\n if ('form' in event.target && event.target.form instanceof HTMLFormElement) {\n event.target?.form?.requestSubmit();\n }\n }\n }, []);\n\n return (\n <div\n className={cx(\n classNames['sendbox__text-area'],\n {\n [classNames['sendbox__text-area--hidden']]: props.hidden\n },\n props.className\n )}\n role={props.hidden ? 'hidden' : undefined}\n >\n <div\n className={cx(\n classNames['sendbox__text-area-doppelganger'],\n classNames['sendbox__text-area-shared'],\n classNames['sendbox__text-area-input--scroll']\n )}\n >\n {props.value || props.placeholder}{' '}\n </div>\n <textarea\n aria-label={props['aria-label']}\n className={cx(\n classNames['sendbox__text-area-input'],\n classNames['sendbox__text-area-shared'],\n classNames['sendbox__text-area-input--scroll']\n )}\n data-testid={props['data-testid']}\n onInput={props.onInput}\n onKeyDown={handleKeyDown}\n placeholder={props.placeholder}\n ref={ref}\n rows={props.startRows ?? 1}\n // eslint-disable-next-line no-magic-numbers\n tabIndex={props.hidden ? -1 : undefined}\n value={props.value}\n />\n </div>\n );\n});\n\nTextArea.displayName = 'TextArea';\n\nexport default TextArea;\n",":global(.webchat-fluent) .sendbox__text-area {\n display: grid;\n grid-template-areas: 'main';\n max-height: 200px;\n overflow: hidden;\n}\n\n:global(.webchat-fluent) .sendbox__text-area--hidden {\n /* TODO: Not perfect way of hiding the text box. */\n height: 0;\n visibility: collapse;\n}\n\n:global(.webchat-fluent) .sendbox__text-area-shared {\n border: none;\n font: inherit;\n grid-area: main;\n outline: inherit;\n overflow-wrap: anywhere;\n resize: inherit;\n scrollbar-gutter: stable;\n}\n\n:global(.webchat-fluent) .sendbox__text-area-doppelganger {\n overflow: hidden;\n visibility: hidden;\n white-space: pre-wrap;\n}\n\n:global(.webchat-fluent) .sendbox__text-area-input {\n background-color: inherit;\n color: currentColor;\n height: 100%;\n padding: 0;\n}\n\n:global(.webchat-fluent) .sendbox__text-area-input--scroll {\n /* Edge uses -webkit-scrollbar if scrollbar-* is not set */\n scrollbar-color: unset;\n scrollbar-width: unset;\n /* Firefox */\n -moz-scrollbar-color: var(--webchat-colorNeutralBackground5) var(--webchat-colorNeutralForeground2);\n -moz-scrollbar-width: thin;\n\n /* Chrome, Edge, and Safari */\n &::-webkit-scrollbar {\n width: 8px\n }\n\n &::-webkit-scrollbar-track {\n background-color: var(--webchat-colorNeutralBackground5);\n border-radius: 16px\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: var(--webchat-colorNeutralForeground2);\n border-radius: 16px\n }\n\n &::-webkit-scrollbar-corner {\n background-color: var(--webchat-colorNeutralBackground5);\n }\n}\n","import { hooks } from 'botframework-webchat-component';\nimport { RefObject, useMemo } from 'react';\nimport { useRefFrom } from 'use-ref-from';\n\nconst { useConnectivityStatus, useLocalizer } = hooks;\n\ntype ErrorMessageStringMap = ReadonlyMap<SendError, string>;\n\ntype SendError = 'empty' | 'offline';\n\nconst useSubmitError = ({\n attachments,\n message\n}: Readonly<{\n attachments: readonly Readonly<{ blob: Blob | File; thumbnailURL?: URL | undefined }>[];\n message: string;\n}>) => {\n const [connectivityStatus] = useConnectivityStatus();\n const localize = useLocalizer();\n\n const submitErrorRef = useRefFrom<'empty' | 'offline' | undefined>(\n connectivityStatus !== 'connected' && connectivityStatus !== 'reconnected'\n ? 'offline'\n : !message && !attachments.length\n ? 'empty'\n : undefined\n );\n\n const errorMessageStringMap = useMemo<ErrorMessageStringMap>(\n () =>\n Object.freeze(\n new Map<SendError, string>()\n .set('empty', localize('SEND_BOX_IS_EMPTY_TOOLTIP_ALT'))\n // TODO: [P0] We should add a new string for \"Cannot send message while offline.\"\n .set('offline', localize('CONNECTIVITY_STATUS_ALT_FATAL'))\n ),\n [localize]\n );\n\n return useMemo<Readonly<[RefObject<SendError | undefined>, string | undefined]>>(\n () => Object.freeze([submitErrorRef, submitErrorRef.current && errorMessageStringMap.get(submitErrorRef.current)]),\n [errorMessageStringMap, submitErrorRef]\n );\n};\n\nexport default useSubmitError;\n","/* eslint no-magic-numbers: [\"error\", { \"ignore\": [2, 5, 36] }] */\n\nimport { useMemo } from 'react';\n// TODO: fix math-random fails to import crypto\n// import random from 'math-random';\n\nexport default function useUniqueId(prefix?: string): string {\n const id = useMemo(() => Math.random().toString(36).substr(2, 5), []);\n\n prefix = prefix ? `${prefix}--` : '';\n\n return `${prefix}${id}`;\n}\n",":global(.webchat-fluent) .sendbox {\n color: var(--webchat-colorNeutralForeground1);\n font-family: var(--webchat-fontFamilyBase);\n padding: 0 10px 10px;\n text-rendering: optimizeLegibility;\n\n --webchat-sendbox-attachment-area-active: ;\n --webchat-sendbox-border-radius: var(--webchat-borderRadiusLarge);\n}\n\n:global(.webchat-fluent) .sendbox__sendbox {\n background-color: var(--webchat-colorNeutralBackground1);\n border-radius: var(--webchat-sendbox-border-radius);\n border: 1px solid var(--webchat-colorNeutralStroke1);\n display: grid;\n font-family: var(--webchat-fontFamilyBase);\n font-size: 14px;\n gap: 6px;\n grid-template:\n [telephone-keypad-start] 'text-area' [telephone-keypad-end]\n var(--webchat-sendbox-attachment-area-active)\n 'controls' / [telephone-keypad] 1fr\n ;\n line-height: 20px;\n padding: 8px;\n position: relative;\n\n &:has(.sendbox__attachment--in-grid) {\n --webchat-sendbox-attachment-area-active: 'attachment'\n }\n\n &:focus-within {\n border-color: var(--webchat-colorNeutralStroke1Selected);\n }\n\n &::after {\n border-bottom-left-radius: var(--webchat-sendbox-border-radius);\n border-bottom-right-radius: var(--webchat-sendbox-border-radius);\n border-bottom: var(--webchat-strokeWidthThicker) solid var(--webchat-colorCompoundBrandForeground1Hover);\n bottom: -1px;\n clip-path: inset(calc(100% - var(--webchat-strokeWidthThicker)) 50% 0 50%);\n content: \"\";\n height: var(--webchat-sendbox-border-radius);\n left: -1px;\n position: absolute;\n right: -1px;\n transition: clip-path var(--webchat-durationUltraFast) var(--webchat-curveAccelerateMid);\n }\n\n &:focus-within::after {\n clip-path: inset(calc(100% - var(--webchat-strokeWidthThicker)) 0 0 0);\n transition: clip-path var(--webchat-durationNormal) var(--webchat-curveDecelerateMid);\n }\n\n > .sendbox__text-area--in-grid {\n grid-area: text-area;\n }\n\n > .sendbox__attachment--in-grid {\n grid-area: attachment;\n }\n\n > .sendbox__sendbox-controls--in-grid {\n grid-area: controls;\n }\n\n > .sendbox__telephone-keypad--in-grid {\n grid-area: telephone-keypad;\n }\n}\n\n:global(.webchat-fluent) .sendbox__sendbox-text {\n background-color: transparent;\n border: none;\n flex: auto;\n font-family: var(--webchat-fontFamilyBase);\n font-size: 14px;\n line-height: 20px;\n outline: none;\n padding: 4px 4px 0;\n resize: none;\n}\n\n:global(.webchat-fluent) .sendbox__sendbox-controls {\n align-items: center;\n display: flex;\n padding-inline-start: 4px;\n}\n\n:global(.webchat-fluent) .sendbox__text-counter {\n color: var(--webchat-colorNeutralForeground4);\n cursor: default;\n font-family: var(--webchat-fontFamilyNumeric);\n font-size: 10px;\n line-height: 14px;\n margin-inline-end: 4px;\n}\n\n:global(.webchat-fluent) .sendbox__text-counter--error {\n color: var(--webchat-colorStatusDangerForeground1);\n}\n","import SendBox from './sendbox/index';\n\nexport default SendBox;\n"],"mappings":"ykBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,yBAAAE,GAAA,cAAAC,GAAA,YAAAC,IAAA,eAAAC,GAAAL,IAAA,IAAAM,GAA8B,2BCA9B,IAAAC,GAA2B,0CAC3BC,EAA4C,oBCD5C,IAAAC,EAA+D,oBCA/D,IAAAC,GAAkE,iBAO5DC,MAAU,kBACd,IAAI,MAAM,CAAC,EAAkB,CAC3B,KAAM,CACJ,MAAM,IAAI,MAAM,mFAAmF,CACrG,CACF,CAAC,CACH,EAEAA,GAAQ,YAAc,0BAEtB,IAAOC,EAAQD,GDXf,IAAME,MAAW,QAAK,CAAC,CAAE,SAAAC,CAAS,IAAa,CAC7C,GAAM,CAACC,EAAOC,CAAQ,KAAI,YAAS,EAAK,EAElCC,KAAU,WACd,IACE,OAAO,OAAO,CACZ,SAAAD,EACA,MAAAD,CACF,CAAC,EACH,CAACC,EAAUD,CAAK,CAClB,EAEA,OAAO,EAAAG,QAAA,cAACC,EAAQ,SAAR,CAAiB,MAAOF,GAAUH,CAAS,CACrD,CAAC,EAEMM,GAAQP,GErBf,IAAAQ,EAA4B,oBCA5B,IAAAC,GAA2B,0CAC3BC,GAAe,yBACfC,EAAuG,oBACvGC,GAA2B,wBCH3B,IAAAC,EAA+D,oBAE/DC,GAA2B,wBCF3B,IAAAC,GAAA,CAC0B,2BAAAC,IAiCA,iCAAAC,IAMA,iCAAAC,IAKA,+BAAAC,KC7CnB,IAAMC,GAAiB,gCAEf,SAARC,GAAgC,CACrC,GAAI,WAAW,SAAU,CACvB,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,OAAO,SAAS,eAAeF,EAAc,CAAC,EACpD,SAAS,KAAK,YAAYE,CAAK,CACjC,CACF,CCRA,IAAAC,GAAwB,iBAExB,SAASC,GAAsCC,EAAc,CAE3D,SAAO,YACL,IACE,OAAO,OACL,OAAO,YACL,OAAO,QAAQA,CAAM,EAAE,IAAI,CAAC,CAACC,EAAeC,CAAe,IAAM,CAC/DD,EACA,GAAGA,CAAa,IAAIC,CAAe,EACrC,CAAC,CACH,CACF,EACF,CAACF,CAAM,CACT,CACF,CAEA,IAAOG,EAAQJ,GHFf,IAAMK,MAAS,WAGb,cAAW,CAAC,CAAE,OAAAC,EAAQ,cAAeC,EAAY,QAAAC,EAAS,KAAAC,CAAK,EAAUC,IAAgC,CACvG,IAAMC,EAAaC,EAAUC,EAAM,EAC7BC,KAAa,eAAWN,CAAO,EAE/BO,KAAc,eAAY,IAAMD,EAAW,UAAU,EAAG,CAACA,CAAU,CAAC,EAE1E,OACE,EAAAE,QAAA,cAAC,UACC,UAAWL,EAAW,0BAA0B,EAChD,cAAaJ,EACb,QAASQ,EACT,IAAKL,EACL,KAAK,UAEL,EAAAM,QAAA,cAAC,QAAK,UAAWL,EAAW,gCAAgC,GACzDL,IAAW,OAAS,SAAWA,IAAW,QAAU,IAAMA,CAC7D,EACC,CAAC,CAACG,GAAQ,EAAAO,QAAA,cAAC,QAAK,UAAWL,EAAW,gCAAgC,GAAIF,CAAK,CAClF,CAEJ,CAAC,CACH,EAEAJ,GAAO,YAAc,yBAErB,IAAOQ,EAAQR,GI5Cf,IAAAY,EAA4B,oBAErBC,MAAQ,QAAMC,GACnB,EAAAC,QAAA,cAAC,OACC,cAAY,OACZ,UAAWD,EAAM,UACjB,OAAO,MACP,QAAQ,YACR,MAAM,MACN,MAAM,8BAEN,EAAAC,QAAA,cAAC,QACC,EAAE,gKACF,KAAK,eACP,CACF,CACD,EChBD,IAAMC,GAAU,CACd,gBAAiB,qBACjB,kBAAmB,uBACnB,eAAgB,qBAChB,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,8BAA+B,qCAC/B,iCAAkC,wCAClC,kCAAmC,yCACnC,oCAAqC,2CACrC,oBAAqB,wBACvB,EAEOC,EAAQD,GCpBf,IAAAE,EAAwE,iBAIzD,SAARC,GAAmF,CACxF,GAAM,CAAE,SAAAC,EAAU,MAAAC,CAAM,KAAI,cAAWC,CAAO,EAE9C,SAAO,WAAQ,IAAM,OAAO,OAAO,CAACD,EAAOD,CAAQ,CAAC,EAAG,CAACC,EAAOD,CAAQ,CAAC,CAC1E,CCRA,IAAAG,GAAA,CAC0B,mBAAAC,IAmBA,wBAAAC,IAWA,iCAAAC,IASA,sCAAAC,KR1B1B,GAAM,CAAE,gBAAAC,EAAgB,EAAI,cAStBC,MAAc,QAClB,CAAC,CAAE,SAAAC,EAAU,aAAAC,CAAa,IAA6E,CACrG,IAAMC,EAAaC,EAAUC,EAAM,EAEnC,OAAOH,EAAe,KACpB,EAAAI,QAAA,cAAC,OAAI,UAAWH,EAAW,uBAAuB,GAAIF,CAAS,CAEnE,CACF,EAEAD,GAAY,YAAc,8BAE1B,IAAMO,MAAkB,QAAK,CAAC,CAAE,UAAAC,EAAW,UAAAC,EAAW,cAAAC,EAAe,aAAAR,CAAa,IAAa,CAC7F,IAAMS,KAAe,eAAWH,CAAS,EACnCL,EAAaC,EAAUC,EAAM,EAC7BO,KAAiB,UAA0B,IAAI,EAC/CC,KAAmB,eAAWH,CAAa,EAC3C,CAAC,CAAEI,CAAQ,EAAIC,EAAS,EAExBC,KAAqB,eAAY,IAAMH,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FI,KAAqB,eAAY,IAAMJ,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FK,KAAqB,eAAY,IAAML,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FM,KAAqB,eAAY,IAAMN,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FO,KAAqB,eAAY,IAAMP,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FQ,KAAqB,eAAY,IAAMR,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FS,KAAqB,eAAY,IAAMT,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FU,KAAqB,eAAY,IAAMV,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FW,KAAqB,eAAY,IAAMX,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1FY,KAAqB,eAAY,IAAMZ,EAAiB,UAAU,GAAG,EAAG,CAACA,CAAgB,CAAC,EAC1Fa,KAAwB,eAAY,IAAMb,EAAiB,UAAU,MAAM,EAAG,CAACA,CAAgB,CAAC,EAChGc,KAAyB,eAAY,IAAMd,EAAiB,UAAU,OAAO,EAAG,CAACA,CAAgB,CAAC,EAClGe,MAAgB,eACpBC,IAAS,CACHA,GAAM,MAAQ,UAEhBf,EAAS,EAAK,CAElB,EACA,CAACA,CAAQ,CACX,EAEA,sBAAU,IAAM,CACdH,EAAa,SAAWC,EAAe,SAAS,MAAM,CACxD,EAAG,CAACD,EAAcC,CAAc,CAAC,EAG/B,EAAAN,QAAA,cAAC,OAAI,aAAW,GAAAwB,SAAG3B,EAAW,kBAAkB,EAAGM,CAAS,EAAG,UAAWmB,IACxE,EAAAtB,QAAA,cAACN,GAAA,CAAY,aAAcE,GACzB,EAAAI,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAAShB,EACT,IAAKJ,EACP,EACA,EAAAN,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAASf,EACT,KAAK,MACP,EACA,EAAAX,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAASd,EACT,KAAK,MACP,EACA,EAAAZ,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAASb,EACT,KAAK,MACP,EACA,EAAAb,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAASZ,EACT,KAAK,MACP,EACA,EAAAd,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAASX,EACT,KAAK,MACP,EACA,EAAAf,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAASV,EACT,KAAK,OACP,EACA,EAAAhB,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAAST,EACT,KAAK,MACP,EACA,EAAAjB,QAAA,cAACyB,EAAA,CACC,OAAO,IACP,cAAaC,EAAQ,8BACrB,QAASR,EACT,KAAK,OACP,EACA,EAAAlB,QAAA,cAACyB,EAAA,CAAO,OAAO,OAAO,cAAaC,EAAQ,iCAAkC,QAASN,EAAuB,EAC7G,EAAApB,QAAA,cAACyB,EAAA,CAAO,OAAO,IAAI,cAAaC,EAAQ,8BAA+B,QAASP,EAAoB,KAAK,IAAI,EAC7G,EAAAnB,QAAA,cAACyB,EAAA,CACC,OAAO,QACP,cAAaC,EAAQ,kCACrB,QAASL,EACX,CACF,EACA,EAAArB,QAAA,cAAC,OAAI,UAAWH,EAAW,gCAAgC,GACzD,EAAAG,QAAA,cAAC2B,GAAA,IAAc,EACf,EAAA3B,QAAA,cAACP,GAAA,CACC,cAAeI,EAAW,qCAAqC,EAC/D,UAAU,iCACZ,CACF,CACF,CAEJ,CAAC,EAEDI,GAAgB,YAAc,kBAE9B,IAAOF,GAAQE,GD1If,IAAM2B,MAA2B,QAAMC,GAAkBC,EAAS,EAAE,CAAC,EAAI,EAAAC,QAAA,cAACC,GAAA,CAAiB,GAAGH,EAAO,EAAK,IAAK,EAE/GD,GAAyB,YAAc,4BAEvC,IAAOK,GAAQL,GUZf,IAAAM,GAAsC,oBACtCC,GAAe,yBCDf,IAAAC,GAAA,CACyB,MAAAC,KDIlB,IAAMC,GAAgB,iBAEd,SAARC,GAA8BC,EAA+D,CAClG,IAAMC,EAAaC,EAAUC,EAAM,EACnC,OAAO,GAAAC,QAAA,cAAC,OAAI,aAAW,GAAAC,SAAGP,GAAeG,EAAW,KAAQ,GAAID,EAAM,QAAS,CACjF,CEVA,IAAAM,GAAgD,0CAChDC,EAAe,yBACfC,EAA0G,oBAC1GC,GAA2B,wBCH3B,IAAAC,GAAkB,oBAEX,SAASC,GAASC,EAAkD,CACzE,OACE,GAAAC,QAAA,cAAC,OACC,cAAY,OACZ,UAAWD,EAAM,UACjB,OAAO,MACP,QAAQ,YACR,MAAM,MACN,MAAM,8BAEN,GAAAC,QAAA,cAAC,QACC,EAAE,gMACF,KAAK,eACP,CACF,CAEJ,CClBA,IAAAC,GAAsB,0CACtBC,GAAe,yBACfC,EAA6F,oBAC7FC,GAA2B,wBCH3B,IAAAC,GAAkB,oBAEX,SAASC,GAAgBC,EAAkD,CAChF,OACE,GAAAC,QAAA,cAAC,OACC,cAAY,OACZ,UAAWD,EAAM,UACjB,OAAO,MACP,QAAQ,YACR,MAAM,MACN,MAAM,8BAEN,GAAAC,QAAA,cAAC,QACC,EAAE,sYACF,KAAK,eACP,CACF,CAEJ,CClBA,IAAAC,GAAA,CAA0B,gCAAAC,IAYA,2CAAAC,IAKA,qCAAAC,KFP1B,GAAM,CAAE,aAAAC,EAAa,EAAI,SAEnBC,GAAmDC,GAAS,CAEhEA,EAAM,eAAe,CACvB,EAMMC,GAAwBD,GAC5B,CAAC,CAACA,EAAM,cAAc,OAAO,KAAKE,GAAQA,EAAK,YAAY,IAAM,OAAO,EAE1E,SAASC,GAAeC,EAAcC,EAAyB,CAC7D,IAAIC,EAAUF,EAAO,WAErB,KAAOE,GAAS,CACd,GAAIA,IAAYD,EACd,MAAO,GAGTC,EAAUA,EAAQ,UACpB,CAEA,MAAO,EACT,CAEA,IAAMC,GAAYC,GAA8D,CAC9E,GAAM,CAACC,EAAeC,CAAgB,KAAI,YAA0C,EAAK,EACnFC,EAAaC,EAAUC,EAAM,EAC7BC,KAAc,UAAuB,IAAI,EACzCC,EAAWjB,GAAa,EACxBkB,KAAkB,eAAWR,EAAM,YAAY,KAErD,aAAU,IAAM,CACd,IAAIS,EAAkB,EAEhBC,EAAmBlB,GAAqB,CAC5CiB,IAEIhB,GAAqBD,CAAK,GAC5BU,EACEI,EAAY,UACTd,EAAM,SAAWc,EAAY,SAC3Bd,EAAM,kBAAkB,aAAeG,GAAeH,EAAM,OAAQc,EAAY,OAAO,GACxF,YACA,SACN,CAEJ,EAEMK,EAAkB,IAAM,EAAEF,GAAmB,GAAKP,EAAiB,EAAK,EAE9E,gBAAS,iBAAiB,YAAaQ,EAAiB,EAAK,EAC7D,SAAS,iBAAiB,YAAaC,EAAiB,EAAK,EAEtD,IAAM,CACX,SAAS,oBAAoB,YAAaD,CAAe,EACzD,SAAS,oBAAoB,YAAaC,CAAe,CAC3D,CACF,EAAG,CAACT,CAAgB,CAAC,EAErB,IAAMU,KAAa,eACjBpB,GAAS,CACPA,EAAM,eAAe,EAErBU,EAAiB,EAAK,EAEjBT,GAAqBD,EAAM,WAAW,GAI3CgB,EAAgB,QAAQ,CAAC,GAAGhB,EAAM,aAAa,KAAK,CAAC,CACvD,EACA,CAACgB,EAAiBN,CAAgB,CACpC,EAEA,OAAOD,EACL,EAAAY,QAAA,cAAC,OACC,aAAW,GAAAC,SAAGX,EAAW,+BAA+B,EAAG,CACzD,CAACA,EAAW,0CAA0C,CAAC,EAAGF,IAAkB,WAC9E,CAAC,EACD,cAAac,EAAQ,gBACrB,WAAYxB,GACZ,OAAQqB,EACR,IAAKN,GAEL,EAAAO,QAAA,cAACG,GAAA,CAAgB,UAAWb,EAAW,oCAAoC,EAAG,EAC7EI,EAAS,sBAAsB,CAClC,EACE,IACN,EAEAR,GAAS,YAAc,WAEvB,IAAOM,MAAQ,QAAKN,EAAQ,EGxG5B,IAAOkB,GAAQC,GCFf,IAAAC,GAAsB,0CACtBC,GAAe,yBACfC,EAA4C,oBCF5C,IAAAC,GAAsB,0CAEtBC,GAAe,yBACfC,EAAoE,oBCHpE,IAAAC,GAAA,CAA0B,mBAAAC,IA8BA,0BAAAC,KC9B1B,IAAAC,EAA8E,oBAExEC,GAA8DC,GAASA,EAAM,eAAe,EA8B5FC,MAAmB,cACvB,CAAC,CAAE,cAAeC,EAAY,SAAAC,EAAU,SAAAC,EAAU,QAAAC,EAAS,SAAAC,EAAU,GAAGC,CAAM,EAAGC,IAAiB,CAChG,IAAMC,KAAY,UAA0B,IAAI,EAIhD,OACE,EAAAC,QAAA,cAAC,UACC,gBAAeN,EAAW,OAAS,QACnC,cAAaF,EACb,QAASE,EAAWL,GAAwBM,EAC5C,IAPQG,GAAgBC,EAQxB,SAAUH,EACT,GAAIF,GAAY,CACf,gBAAiB,OACjB,SAAU,EACZ,EACC,GAAGG,EACJ,KAAK,UAEJJ,CACH,CAEJ,CACF,EAEOQ,MAAQ,QAAKV,EAAgB,EFlDpC,GAAM,CAAE,YAAAW,GAAa,SAAAC,GAAU,qBAAAC,GAAsB,eAAAC,GAAgB,YAAAC,GAAa,oBAAAC,EAAoB,EAAI,SAwB1G,SAASC,GAAgB,CACvB,WAAAC,EACA,UAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,KAAAC,EACA,KAAAC,EACA,MAAAC,CACF,EAAyB,CACvB,GAAM,CAACC,EAAGC,CAAmB,EAAIX,GAAoB,EAC/C,CAAC,CAAE,gBAAiBY,CAAwB,CAAC,EAAIb,GAAY,EAC7D,CAACc,CAAQ,EAAIlB,GAAY,EACzBmB,EAAQlB,GAAS,EACjBmB,KAAW,UAA0B,IAAI,EACzCC,EAAoBnB,GAAqB,EACzCoB,EAAaC,EAAUC,EAAM,EAC7BC,EAActB,GAAe,EAE7BuB,KAAc,eAClB,CAAC,CAAE,OAAAC,CAAO,IAAM,EACb,gBAAkB,CAIjB,MAAMR,EAAM,wBAAwB,EAIpCE,EAAkB,CAAE,YAAAZ,EAAa,KAAAG,EAAM,KAAAC,EAAM,MAAAC,CAAM,EAA2B,CAAE,OAAAa,CAAO,CAAC,EAGxFd,IAAS,WAAaG,EAAoB,CAAC,CAAC,EAE5CS,EAAY,CACd,GAAG,CACL,EACA,CAAChB,EAAaU,EAAOE,EAAmBI,EAAaT,EAAqBJ,EAAMC,EAAMC,CAAK,CAC7F,EAEA,OACE,EAAAc,QAAA,cAACC,GAAA,CACC,aAAW,GAAAC,SAAGR,EAAW,kBAAkB,EAAGL,EAA0B,IAAKT,GAAa,IAAM,EAAE,EAClG,SAAUU,EACV,QAASQ,EACT,IAAKN,EACL,KAAK,UAEJV,GAAS,EAAAkB,QAAA,cAAC,OAAI,IAAKjB,EAAU,UAAWW,EAAW,yBAAyB,EAAG,IAAKZ,EAAO,EAC5F,EAAAkB,QAAA,cAAC,YAAMrB,CAAW,CACpB,CAEJ,CAEA,IAAOiB,MAAQ,QAAKlB,EAAe,EGlFpB,SAARyB,GAA4CC,EAAkC,CAEnF,GAAM,CAAE,MAAAC,CAAM,EAAID,EACZ,CAAE,KAAAE,EAAM,MAAAC,CAAM,EAAIH,EAExB,OAAIE,IAAS,cACJD,GAASD,EAAW,YAClBC,IAEA,OAAOE,GAAU,SACnBA,EAGF,KAAK,UAAUA,CAAK,EAC7B,CClBA,IAAAC,GAAA,CAC0B,oBAAAC,IAYtB,0BAAAC,IAMA,6BAAAC,KLXJ,GAAM,CAAE,aAAAC,GAAc,gBAAAC,GAAiB,YAAAC,GAAa,oBAAAC,EAAoB,EAAI,SAE5E,SAASC,GACPC,EAKA,CACA,GAAM,CAAC,CAAE,sBAAAC,CAAsB,CAAC,EAAIL,GAAgB,EAC9C,CAAC,CAAE,iBAAkBM,CAAyB,CAAC,EAAIL,GAAY,EAC/DM,EAAaC,EAAUC,EAAM,EAEnC,OACE,EAAAC,QAAA,cAAC,OACC,aAAYN,EAAM,YAAY,EAC9B,YAAU,SACV,mBAAiB,WACjB,aAAW,GAAAO,SACTJ,EAAW,mBAAmB,EAC9BD,EAA2B,GAC3B,CACE,CAACC,EAAW,yBAAyB,CAAC,EAAGF,IAA0B,OACnE,CAACE,EAAW,4BAA4B,CAAC,EAAGF,IAA0B,MACxE,EACAD,EAAM,SACR,EACA,KAAK,WAEJ,CAAC,CAACA,EAAM,UAAY,CAAC,CAAC,EAAAM,QAAM,SAAS,MAAMN,EAAM,QAAQ,GAAKA,EAAM,QACvE,CAEJ,CAEA,SAASQ,IAAmB,CAC1B,IAAML,EAAaC,EAAUC,EAAM,EAC7BI,EAAWd,GAAa,EACxB,CAACe,CAAgB,EAAIZ,GAAoB,EACzCa,EAAWD,EAAiB,IAAI,CAACE,EAAYC,IAAU,CAC3D,GAAM,CAAE,YAAAC,EAAa,MAAAC,EAAO,aAAAC,EAAc,KAAAC,EAAM,KAAAC,EAAM,MAAAC,CAAM,EAAIP,EAmBhE,OAAKF,GAAkB,OAKrB,EAAAJ,QAAA,cAACc,GAAA,CACC,WAAYC,GAA2BT,CAAU,EACjD,YAAaE,EACb,MAAOC,EAGP,SAAUA,IAAUC,GAAgBC,GACpC,UAAWJ,EAEX,IAAKA,EACL,KAAMI,EACN,KAAMC,EACN,MAAOC,EACT,EAjBO,IAmBX,CAAC,EACD,OACE,EAAAb,QAAA,cAACP,GAAA,CACC,aAAYU,EAAS,6BAA6B,EAClD,UAAWN,EAAW,mBAAmB,GAExCQ,CACH,CAEJ,CAEA,IAAON,MAAQ,QAAKG,EAAgB,EM/FpC,IAAOc,GAAQC,GCFf,IAAAC,GAAsB,0CACtBC,EAA0E,oBAC1EC,GAA2B,wBCF3B,IAAAC,GAAkB,oBAEX,SAASC,GAAeC,EAAkD,CAC/E,OACE,GAAAC,QAAA,cAAC,OACC,cAAY,OACZ,UAAWD,EAAM,UACjB,OAAO,MACP,QAAQ,YACR,MAAM,MACN,MAAM,8BAEN,GAAAC,QAAA,cAAC,QACC,EAAE,6LACF,KAAK,eACP,CACF,CAEJ,CClBA,IAAAC,EAAe,yBACfC,EAAoE,oBCDpE,IAAAC,EAAA,CAA0B,iBAAAC,IAMA,0BAAAC,IAmBtB,oCAAAC,IAiBsB,6BAAAC,KDrC1B,IAAMC,GAA8DC,GAASA,EAAM,eAAe,EAErFC,KAAgB,QAEzBC,GAUG,CACH,IAAMC,EAAaC,EAAUC,CAAM,EAEnC,OACE,EAAAC,QAAA,cAAC,UACC,aAAYJ,EAAM,YAAY,EAC9B,aAAW,EAAAK,SAAGJ,EAAW,yBAAyB,EAAGD,EAAM,UAAW,CACpE,CAACC,EAAW,mCAAmC,CAAC,EAAGD,EAAM,QAC3D,CAAC,EACD,cAAaA,EAAM,aAAa,EAChC,QAASA,EAAM,SAAWH,GAAwBG,EAAM,QACxD,KAAMA,EAAM,OAAS,SAAW,SAAW,SAC1C,GAAIA,EAAM,UAAY,CACrB,gBAAiB,OACjB,SAAU,EACZ,GAECA,EAAM,QACT,CAEJ,CACF,EAEAD,EAAc,YAAc,gBAErB,IAAMO,MAAU,QAAMN,GAA0F,CACrH,IAAMC,EAAaC,EAAUC,CAAM,EAEnC,OAAO,EAAAC,QAAA,cAAC,OAAI,aAAW,EAAAC,SAAGJ,EAAW,iBAAqBD,EAAM,SAAS,GAAIA,EAAM,QAAS,CAC9F,CAAC,EAEDM,GAAQ,YAAc,UAEf,IAAMC,MAAmB,QAC7BP,GAA0F,CACzF,IAAMC,EAAaC,EAAUC,CAAM,EAEnC,OACE,EAAAC,QAAA,cAAC,OACC,mBAAiB,WACjB,aAAW,EAAAC,SAAGJ,EAAW,4BAA4B,EAAGD,EAAM,SAAS,EACvE,KAAK,YACP,CAEJ,CACF,EAEAO,GAAiB,YAAc,mBElE/B,IAAAC,GAAA,CAA0B,0BAAAC,IAIA,gCAAAC,KJK1B,GAAM,CAAE,aAAAC,GAAc,gBAAAC,EAAgB,EAAI,SAE1C,SAASC,GACPC,EAIA,CACA,IAAMC,KAAW,UAAyB,IAAI,EACxCC,EAAaC,EAAUC,EAAM,EAC7BC,EAAWR,GAAa,EACxB,CAAC,CAAE,aAAAS,EAAc,eAAAC,CAAe,CAAC,EAAIT,GAAgB,EACrDU,KAAkB,eAAWR,EAAM,YAAY,EAE/CS,KAAc,eAAY,IAAMR,EAAS,SAAS,MAAM,EAAG,CAACA,CAAQ,CAAC,EAErES,KAAmB,eACvB,CAAC,CAAE,OAAQ,CAAE,MAAAC,CAAM,CAAE,IAAM,CACrBA,IACFH,EAAgB,UAAU,CAAC,GAAGG,CAAK,CAAC,EAEhCV,EAAS,UACXA,EAAS,QAAQ,MAAQ,IAG/B,EACA,CAACA,EAAUO,CAAe,CAC5B,EAEA,OACE,EAAAI,QAAA,cAAC,OAAI,UAAWV,EAAW,yBAAyB,GAClD,EAAAU,QAAA,cAAC,SACC,OAAQN,EACR,gBAAeN,EAAM,SACrB,cAAY,OACZ,UAAWE,EAAW,+BAA+B,EACrD,SAAUK,EACV,QAASP,EAAM,SAAW,OAAYU,EACtC,SAAUV,EAAM,SAChB,IAAKC,EACL,KAAK,SACL,SAAU,GACV,KAAK,OACP,EACA,EAAAW,QAAA,cAACC,EAAA,CACC,aAAYR,EAAS,8BAA8B,EACnD,cAAaS,EAAQ,oBACrB,QAASL,GAET,EAAAG,QAAA,cAACG,GAAA,IAAe,CAClB,CACF,CAEJ,CAEA,IAAOX,MAAQ,QAAKL,EAAmB,EKhEvC,IAAAiB,GAAsB,0CACtBC,EAA4B,oBAC5BC,GAAe,yBCFf,IAAAC,GAAA,CAA0B,oBAAAC,KDM1B,GAAM,CAAE,aAAAC,EAAa,EAAI,SAEnBC,GAA6B,CACjC,IAAK,6BACL,IAAK,6BACL,IAAK,6BACL,KAAM,8BACN,MAAO,8BACT,EAEA,SAASC,GAAY,CACnB,YAAAC,EACA,UAAAC,CACF,EAGI,CACF,IAAMC,EAAaC,EAAUC,EAAM,EAC7BC,EAAqBR,GAAa,CAAE,OAAQ,EAAK,CAAC,EAExD,OAAOG,EAAY,OACjB,EAAAM,QAAA,cAAC,OAAI,aAAW,GAAAC,SAAGL,EAAW,oBAAwBD,CAAS,GAC5DI,EAAmBP,GAA4BE,EAAY,MAAM,CACpE,EACE,IACN,CAEA,IAAOI,MAAQ,QAAKL,EAAW,EEjC/B,IAAAS,EAA4B,oBCA5B,IAAAC,GAAA,CAA0B,yBAAAC,KDI1B,SAASC,GAAaC,EAA6D,CACjF,IAAMC,EAAaC,EAAUC,EAAM,EACnC,OAEE,EAAAC,QAAA,cAAC,QAAK,UAAWH,EAAW,wBAAwB,EAAG,GAAID,EAAM,GAAI,KAAK,SACvEA,EAAM,KACT,CAEJ,CAEA,IAAOG,MAAQ,QAAKJ,EAAY,EEdhC,IAAAM,EAAyC,oBAEzCC,GAAsB,0CCFtB,IAAAC,GAAkB,oBAEX,SAASC,GAAoBC,EAAkD,CACpF,OACE,GAAAC,QAAA,cAAC,OACC,cAAY,OACZ,UAAWD,EAAM,UACjB,OAAO,MACP,QAAQ,YACR,MAAM,MACN,MAAM,8BAEN,GAAAC,QAAA,cAAC,QACC,EAAE,mhBACF,KAAK,eACP,CACF,CAEJ,CDVA,GAAM,CAAE,aAAAC,EAAa,EAAI,SAEnBC,MAA+B,QAAK,IAAM,CAC9C,GAAM,CAACC,EAAsBC,CAAuB,EAAIC,EAAwB,EAC1EC,EAAWL,GAAa,EAExBM,KAAc,eAAY,IAAMH,EAAwBI,GAAS,CAACA,CAAK,EAAG,CAACJ,CAAuB,CAAC,EAEzG,OACE,EAAAK,QAAA,cAACC,EAAA,CACC,aAAYJ,EAAS,wCAAwC,EAC7D,cAAaK,EAAQ,oCACrB,QAASJ,EACT,SAAUJ,GAEV,EAAAM,QAAA,cAACG,GAAA,IAAoB,CACvB,CAEJ,CAAC,EAEDV,GAA6B,YAAc,uCAE3C,IAAOW,GAAQX,GE9Bf,IAAAY,GAAe,yBACfC,EAAiG,oBCDjG,IAAAC,GAAA,CAA0B,qBAAAC,IAOA,6BAAAC,IAMA,4BAAAC,IAUA,kCAAAC,IAMA,2BAAAC,IAOA,mCAAAC,KD/B1B,IAAMC,MAAW,cAqBf,CAACC,EAAOC,IAAQ,CAChB,IAAMC,EAAaC,EAAUC,EAAM,EAE7BC,KAAgB,eAAuDC,GAAS,CAGhF,CAACA,EAAM,UAAYA,EAAM,MAAQ,UACnCA,EAAM,eAAe,EAEjB,SAAUA,EAAM,QAAUA,EAAM,OAAO,gBAAgB,iBACzDA,EAAM,QAAQ,MAAM,cAAc,EAGxC,EAAG,CAAC,CAAC,EAEL,OACE,EAAAC,QAAA,cAAC,OACC,aAAW,GAAAC,SACTN,EAAW,oBAAoB,EAC/B,CACE,CAACA,EAAW,4BAA4B,CAAC,EAAGF,EAAM,MACpD,EACAA,EAAM,SACR,EACA,KAAMA,EAAM,OAAS,SAAW,QAEhC,EAAAO,QAAA,cAAC,OACC,aAAW,GAAAC,SACTN,EAAW,iCAAiC,EAC5CA,EAAW,2BAA2B,EACtCA,EAAW,kCAAkC,CAC/C,GAECF,EAAM,OAASA,EAAM,YAAa,GACrC,EACA,EAAAO,QAAA,cAAC,YACC,aAAYP,EAAM,YAAY,EAC9B,aAAW,GAAAQ,SACTN,EAAW,0BAA0B,EACrCA,EAAW,2BAA2B,EACtCA,EAAW,kCAAkC,CAC/C,EACA,cAAaF,EAAM,aAAa,EAChC,QAASA,EAAM,QACf,UAAWK,EACX,YAAaL,EAAM,YACnB,IAAKC,EACL,KAAMD,EAAM,WAAa,EAEzB,SAAUA,EAAM,OAAS,GAAK,OAC9B,MAAOA,EAAM,MACf,CACF,CAEJ,CAAC,EAEDD,GAAS,YAAc,WAEvB,IAAOK,GAAQL,GEpFf,IAAAU,GAAsB,0CACtBC,GAAmC,iBACnCC,GAA2B,wBAErB,CAAE,sBAAAC,GAAuB,aAAAC,EAAa,EAAI,SAM1CC,GAAiB,CAAC,CACtB,YAAAC,EACA,QAAAC,CACF,IAGO,CACL,GAAM,CAACC,CAAkB,EAAIL,GAAsB,EAC7CM,EAAWL,GAAa,EAExBM,KAAiB,eACrBF,IAAuB,aAAeA,IAAuB,cACzD,UACA,CAACD,GAAW,CAACD,EAAY,OACvB,QACA,MACR,EAEMK,KAAwB,YAC5B,IACE,OAAO,OACL,IAAI,IAAuB,EACxB,IAAI,QAASF,EAAS,+BAA+B,CAAC,EAEtD,IAAI,UAAWA,EAAS,+BAA+B,CAAC,CAC7D,EACF,CAACA,CAAQ,CACX,EAEA,SAAO,YACL,IAAM,OAAO,OAAO,CAACC,EAAgBA,EAAe,SAAWC,EAAsB,IAAID,EAAe,OAAO,CAAC,CAAC,EACjH,CAACC,EAAuBD,CAAc,CACxC,CACF,EAEOE,GAAQP,GC3Cf,IAAAQ,GAAwB,iBAIT,SAARC,GAA6BC,EAAyB,CAC3D,IAAMC,KAAK,YAAQ,IAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,EAAG,CAAC,CAAC,EAEpE,OAAAD,EAASA,EAAS,GAAGA,CAAM,KAAO,GAE3B,GAAGA,CAAM,GAAGC,CAAE,EACvB,CCZA,IAAAC,GAAA,CAA0B,QAAAC,IAUA,iBAAAC,IAiBjB,+BAAAC,IA2BJ,8BAAAC,IAQA,qCAAAC,IAIA,qCAAAC,IAKqB,wBAAAC,IAYA,4BAAAC,IAMA,wBAAAC,IASA,+BAAAC,K5B9E1B,GAAM,CACJ,SAAAC,GACA,aAAAC,GACA,iBAAAC,GACA,wBAAAC,GACA,sBAAAC,GACA,eAAAC,GACA,gBAAAC,EACF,EAAI,SAEJ,SAASC,GACPC,EAIA,CACA,IAAMC,KAAW,UAA4B,IAAI,EAC3C,CAACC,EAASC,CAAU,KAAI,YAAS,EAAE,EACnC,CAACC,EAAaC,CAAc,EAAIT,GAAsB,EACtD,CAAC,CAAE,0BAAAU,EAA2B,iBAAAC,EAAkB,iBAAAC,CAAiB,CAAC,EAAIV,GAAgB,EACtFW,EAA0B,CAAC,CAACD,GAAoBN,EAAQ,OAASM,EACjEE,EAAaC,EAAUC,EAAM,EAC7BC,EAAWpB,GAAa,EACxBqB,EAAcjB,GAAe,EAC7BkB,EAAgBrB,GAAiB,EACjCsB,EAAiBC,GAAY,2BAA2B,EACxD,CAACC,EAAUC,CAAY,EAAIC,GAAe,CAAE,QAAAlB,EAAS,YAAAE,CAAY,CAAC,EAClE,CAACiB,CAAoB,EAAIC,EAAwB,EACjDC,EAAW/B,GAAS,EAE1BG,MACE,eACE,CAAC,CAAE,WAAA6B,EAAY,UAAAC,EAAU,IAA2B,CAC7CxB,EAAS,UAGVuB,EACFC,IACG,SAAY,CACX,IAAMC,EAAmBzB,EAAS,SAAS,aAAa,UAAU,EAClEA,EAAS,SAAS,aAAa,WAAY,MAAM,EAKjD,MAAM,IAAI,QAAQ0B,GAAW,WAAWA,EAAS,CAAC,CAAC,EACnD1B,EAAS,SAAS,MAAM,EACpB,OAAOyB,GAAqB,SAC9BzB,EAAS,SAAS,gBAAgB,UAAU,EAE5CA,EAAS,SAAS,aAAa,WAAYyB,CAAgB,CAE/D,GAAG,CACL,EAEAzB,EAAS,SAAS,MAAM,EAE5B,EACA,CAACA,CAAQ,CACX,CACF,EAEA,IAAM2B,KAAiB,eAAWxB,CAAW,EACvCyB,KAAa,eAAW3B,CAAO,EAE/B4B,MAAqB,eACzBC,GAAS,CACH,aAAcA,EAAM,QAAU,OAAOA,EAAM,OAAO,UAAa,UAAYA,EAAM,OAAO,UAAY,GAIxGR,EAAS,SAAS,CACpB,EACA,CAACA,CAAQ,CACX,EAEMS,MAAmE,eACvED,GAAS5B,EAAW4B,EAAM,cAAc,KAAK,EAC7C,CAAC5B,CAAU,CACb,EAEM8B,MAAiB,eACrB,MAAOC,GAAuB,CAC5B,IAAMC,GAAiB,OAAO,OAC5B,MAAM,QAAQ,IACZD,EAAW,IAAIE,GACbrB,EAAcqB,CAAI,EAAE,KAAKC,GACvB,OAAO,OAAO,CACZ,KAAMD,EACN,GAAIC,GAAgB,CAAE,aAAAA,CAAa,CACrC,CAAC,CACH,CACF,CACF,CACF,EAEAhC,EAAe8B,EAAc,CAM/B,EACA,CAACpB,EAAeV,CAAc,CAChC,EAEMiC,MAAsD,eAC1DP,GAAS,CACPA,EAAM,eAAe,EAEjBb,EAAS,UAAY,SAAW,CAACT,IACnCK,EAAYe,EAAW,QAAS,OAAW,CAAE,YAAaD,EAAe,OAAQ,CAAC,EAElFzB,EAAW,EAAE,EACbE,EAAe,CAAC,CAAC,GAGnBkB,EAAS,SAAS,CACpB,EACA,CAACK,EAAgBC,EAAYf,EAAaT,EAAgBF,EAAYM,EAAyBS,EAAUK,CAAQ,CACnH,EAEMgB,MAAmC,eAEtCC,GAAe1B,EAAY,SAAS0B,CAAI,EAAE,EAC3C,CAAC1B,CAAW,CACd,EAEM2B,GAAO,CACX,eAAgB,QAChB,GAAItB,GAAgB,CAClB,eAAgB,OAChB,oBAAqBH,CACvB,CACF,EAEA,OACE,EAAA0B,QAAA,cAAC,QAAM,GAAGD,GAAM,aAAW,EAAAE,SAAGjC,EAAW,QAAYV,EAAM,SAAS,EAAG,SAAUsC,IAC/E,EAAAI,QAAA,cAACE,GAAA,IAAiB,EAClB,EAAAF,QAAA,cAAC,OAAI,aAAW,EAAAC,SAAGjC,EAAW,gBAAmB,EAAG,eAAgBoB,IAClE,EAAAY,QAAA,cAACG,GAAA,CACC,aAAsChC,EAA1BJ,EAAmC,iCAA6C,gBAAb,EAC/E,aAAW,EAAAkC,SAAGjC,EAAW,uBAAuB,EAAGA,EAAW,6BAA6B,CAAC,EAC5F,cAAaoC,EAAQ,eACrB,OAAQzB,EACR,QAASW,GACT,YAAahC,EAAM,aAAea,EAAS,wBAAwB,EACnE,IAAKZ,EACL,MAAOC,EACT,EACA,EAAAwC,QAAA,cAACK,GAAA,CACC,UAAW,GACX,UAAWrC,EAAW,oCAAoC,EAC1D,aAAc,GACd,cAAe6B,GACjB,EACA,EAAAG,QAAA,cAACM,GAAA,CAAY,YAAa5C,EAAa,UAAWM,EAAW,8BAA8B,EAAG,EAC9F,EAAAgC,QAAA,cAAC,OAAI,aAAW,EAAAC,SAAGjC,EAAW,2BAA2B,EAAGA,EAAW,oCAAoC,CAAC,GACzG,CAACW,GAAwBb,GACxB,EAAAkC,QAAA,cAAC,OACC,aAAW,EAAAC,SAAGjC,EAAW,uBAAuB,EAAG,CACjD,CAACA,EAAW,8BAA8B,CAAC,EAAGD,CAChD,CAAC,GAEA,GAAGP,EAAQ,MAAM,IAAIM,CAAgB,EACxC,EAEF,EAAAkC,QAAA,cAACO,GAAA,KACE,CAAC3C,GAA6B,EAAAoC,QAAA,cAACQ,GAAA,IAA6B,EAC5D,CAAC3C,GAAoB,EAAAmC,QAAA,cAACS,GAAA,CAAoB,aAAclB,GAAgB,EACzE,EAAAS,QAAA,cAACU,GAAA,IAAiB,EAClB,EAAAV,QAAA,cAACW,EAAA,CACC,aAAYxC,EAAS,4BAA4B,EACjD,cAAaiC,EAAQ,kBACrB,SAAUrC,GAA2BY,EACrC,KAAK,UAEL,EAAAqB,QAAA,cAACY,GAAA,IAAS,CACZ,CACF,CACF,EACA,EAAAZ,QAAA,cAACa,GAAA,CAAS,aAActB,GAAgB,EACxC,EAAAS,QAAA,cAACc,GAAA,CAAa,MAAOrC,EAAc,GAAIH,EAAgB,CACzD,CACF,CAEJ,CAEA,IAAOJ,MAAQ,QAAKb,EAAO,E6B9M3B,IAAO0D,GAAQC,G5CKf,GAAM,CAAE,cAAAC,EAAc,EAAI,cAIpBC,GAAoB,CAAC,IAAM,IAAM,IAAMC,EAAO,EAE9CC,GAAsB,CAAC,CAAE,SAAAC,CAAS,IACtC,EAAAC,QAAA,cAACC,GAAA,KACC,EAAAD,QAAA,cAACE,GAAA,KACC,EAAAF,QAAA,cAACL,GAAA,CAAc,kBAAmBC,IAAoBG,CAAS,CACjE,CACF,EAGKI,MAAQ,QAAKL,EAAmB,EDfvC,IAAMM,GAAY,OACZC,GAAe,WACfC,GAAU,+BAEVC,GAAY,CAAE,UAAAH,GAAW,aAAAC,GAAc,QAAAC,EAAQ,KAErD,kBACE,oCACA,+EACF,EAEAE,EAAY","names":["src_exports","__export","FluentThemeProvider_default","buildInfo","testIds_default","__toCommonJS","import_inject_meta_tag","import_botframework_webchat_component","import_react","import_react","import_react","Context","Context_default","Provider","children","shown","setShown","context","React","Context_default","Provider_default","import_react","import_botframework_webchat_component","import_classnames","import_react","import_use_ref_from","import_react","import_use_ref_from","Button_default","telephone-keypad__button","telephone-keypad__button__ruby","telephone-keypad__button__text","telephone-keypad--horizontal","injectedStyles","injectStyles","style","import_react","useStyles","styles","baseClassName","resultClassName","useStyles_default","Button","button","dataTestId","onClick","ruby","ref","classNames","useStyles_default","Button_default","onClickRef","handleClick","React","import_react","InfoSmallIcon_default","props","React","testIds","testIds_default","import_react","useShown","setShown","shown","Context_default","TelephoneKeypad_default","telephone-keypad","telephone-keypad__box","telephone-keypad__info-message","telephone-keypad__info-message-link","LocalizedString","Orientation","children","isHorizontal","classNames","useStyles_default","TelephoneKeypad_default","React","TelephoneKeypad","autoFocus","className","onButtonClick","autoFocusRef","firstButtonRef","onButtonClickRef","setShown","useShown","handleButton1Click","handleButton2Click","handleButton3Click","handleButton4Click","handleButton5Click","handleButton6Click","handleButton7Click","handleButton8Click","handleButton9Click","handleButton0Click","handleButtonStarClick","handleButtonPoundClick","handleKeyDown","event","cx","Button_default","testIds_default","InfoSmallIcon_default","TelephoneKeypadSurrogate","props","useShown","React","TelephoneKeypad_default","Surrogate_default","import_react","import_classnames","Theme_default","theme","rootClassName","WebchatTheme","props","classNames","useStyles_default","Theme_default","React","cx","import_botframework_webchat_component","import_classnames","import_react","import_use_ref_from","import_react","SendIcon","props","React","import_botframework_webchat_component","import_classnames","import_react","import_use_ref_from","import_react","AddDocumentIcon","props","React","dropZone_default","sendbox__attachment-drop-zone","sendbox__attachment-drop-zone--droppable","sendbox__attachment-drop-zone-icon","useLocalizer","handleDragOver","event","isFilesTransferEvent","type","isDescendantOf","target","ancestor","current","DropZone","props","dropZoneState","setDropZoneState","classNames","useStyles_default","dropZone_default","dropZoneRef","localize","onFilesAddedRef","entranceCounter","handleDragEnter","handleDragLeave","handleDrop","React","cx","testIds_default","AddDocumentIcon","DropZone_default","dropZone_default","import_botframework_webchat_component","import_classnames","import_react","import_botframework_webchat_component","import_classnames","import_react","SuggestedAction_default","suggested-action","suggested-action__image","import_react","preventDefaultHandler","event","AccessibleButton","ariaHidden","children","disabled","onClick","tabIndex","props","forwardedRef","targetRef","React","AccessibleButton_default","useDisabled","useFocus","usePerformCardAction","useScrollToEnd","useStyleSet","useSuggestedActions","SuggestedAction","buttonText","className","displayText","image","imageAlt","text","type","value","_","setSuggestedActions","suggestedActionStyleSet","disabled","focus","focusRef","performCardAction","classNames","useStyles_default","SuggestedAction_default","scrollToEnd","handleClick","target","React","AccessibleButton_default","cx","computeSuggestedActionText","cardAction","title","type","value","suggestedActions_default","suggested-actions","suggested-actions--flow","suggested-actions--stacked","useLocalizer","useStyleOptions","useStyleSet","useSuggestedActions","SuggestedActionStackedOrFlowContainer","props","suggestedActionLayout","suggestedActionsStyleSet","classNames","useStyles_default","suggestedActions_default","React","cx","SuggestedActions","localize","suggestedActions","children","cardAction","index","displayText","image","imageAltText","text","type","value","SuggestedAction_default","computeSuggestedActionText","SuggestedActions_default","suggestedActions_default","import_botframework_webchat_component","import_react","import_use_ref_from","import_react","AttachmentIcon","props","React","import_classnames","import_react","Toolbar_default","sendbox__toolbar","sendbox__toolbar-button","sendbox__toolbar-button--selected","sendbox__toolbar-separator","preventDefaultHandler","event","ToolbarButton","props","classNames","useStyles_default","Toolbar_default","React","cx","Toolbar","ToolbarSeparator","AddAttachmentButton_default","sendbox__add-attachment","sendbox__add-attachment-input","useLocalizer","useStyleOptions","AddAttachmentButton","props","inputRef","classNames","useStyles_default","AddAttachmentButton_default","localize","uploadAccept","uploadMultiple","onFilesAddedRef","handleClick","handleFileChange","files","React","ToolbarButton","testIds_default","AttachmentIcon","import_botframework_webchat_component","import_react","import_classnames","Attachments_default","sendbox__attachment","useLocalizer","attachmentsPluralStringIds","Attachments","attachments","className","classNames","useStyles_default","Attachments_default","localizeWithPlural","React","cx","import_react","ErrorMessage_default","sendbox__error-message","ErrorMessage","props","classNames","useStyles_default","ErrorMessage_default","React","import_react","import_botframework_webchat_component","import_react","TelephoneKeypadIcon","props","React","useLocalizer","TelephoneKeypadToolbarButton","telephoneKeypadShown","setTelephoneKeypadShown","useShown","localize","handleClick","shown","React","ToolbarButton","testIds_default","TelephoneKeypadIcon","TelephoneKeypadToolbarButton_default","import_classnames","import_react","TextArea_default","sendbox__text-area","sendbox__text-area--hidden","sendbox__text-area-shared","sendbox__text-area-doppelganger","sendbox__text-area-input","sendbox__text-area-input--scroll","TextArea","props","ref","classNames","useStyles_default","TextArea_default","handleKeyDown","event","React","cx","import_botframework_webchat_component","import_react","import_use_ref_from","useConnectivityStatus","useLocalizer","useSubmitError","attachments","message","connectivityStatus","localize","submitErrorRef","errorMessageStringMap","useSubmitError_default","import_react","useUniqueId","prefix","id","sendbox_default","sendbox","sendbox__sendbox","sendbox__attachment--in-grid","sendbox__text-area--in-grid","sendbox__sendbox-controls--in-grid","sendbox__telephone-keypad--in-grid","sendbox__sendbox-text","sendbox__sendbox-controls","sendbox__text-counter","sendbox__text-counter--error","useFocus","useLocalizer","useMakeThumbnail","useRegisterFocusSendBox","useSendBoxAttachments","useSendMessage","useStyleOptions","SendBox","props","inputRef","message","setMessage","attachments","setAttachments","hideTelephoneKeypadButton","hideUploadButton","maxMessageLength","isMessageLengthExceeded","classNames","useStyles_default","sendbox_default","localize","sendMessage","makeThumbnail","errorMessageId","useUniqueId","errorRef","errorMessage","useSubmitError_default","telephoneKeypadShown","useShown","setFocus","noKeyboard","waitUntil","previousReadOnly","resolve","attachmentsRef","messageRef","handleSendBoxClick","event","handleMessageChange","handleAddFiles","inputFiles","newAttachments","file","thumbnailURL","handleFormSubmit","handleTelephoneKeypadButtonClick","dtmf","aria","React","cx","SuggestedActions_default","TextArea_default","testIds_default","Surrogate_default","Attachments_default","Toolbar","TelephoneKeypadToolbarButton_default","AddAttachmentButton_default","ToolbarSeparator","ToolbarButton","SendIcon","DropZone_default","ErrorMessage_default","SendBox_default","sendbox_default","ThemeProvider","sendBoxMiddleware","SendBox_default","FluentThemeProvider","children","React","WebchatTheme","Provider_default","FluentThemeProvider_default","buildTool","moduleFormat","version","buildInfo","injectStyles"]}
@@ -0,0 +1,3 @@
1
+ import{injectMetaTag as kr}from"inject-meta-tag";import{Components as gr}from"botframework-webchat-component";import ne,{memo as xr}from"react";import lt,{memo as st,useMemo as dt,useState as it}from"react";import{createContext as at}from"react";var le=at(new Proxy({},{get(){throw new Error("botframework-webchat: This hook can only used under its corresponding <Provider>.")}}));le.displayName="TelephoneKeypad.Context";var L=le;var ct=st(({children:e})=>{let[t,o]=it(!1),r=dt(()=>Object.freeze({setShown:o,shown:t}),[o,t]);return lt.createElement(L.Provider,{value:r},e)}),U=ct;import Ct,{memo as Ft}from"react";import{Components as _t}from"botframework-webchat-component";import Bt from"classnames";import m,{memo as pe,useCallback as x,useEffect as Nt,useRef as St}from"react";import{useRefFrom as ue}from"use-ref-from";import Z,{forwardRef as ht,memo as ft,useCallback as gt}from"react";import{useRefFrom as xt}from"use-ref-from";var se={"telephone-keypad__button":"r","telephone-keypad__button__ruby":"e","telephone-keypad__button__text":"o","telephone-keypad--horizontal":"l"};var pt=".webchat-fluent .r{-webkit-user-select:none;align-items:center;-webkit-appearance:none;appearance:none;background-color:#fff;border-radius:100%;border:solid 1px var(--webchat-colorNeutralStroke1);color:var(--webchat-colorGray200);font-weight:var(--webchat-fontWeightSemibold);cursor:pointer;display:flex;flex-direction:column;height:60px;opacity:.7;padding:0;position:relative;touch-action:none;user-select:none;width:60px}.webchat-fluent .r:hover{background-color:var(--webchat-colorGray30)}.webchat-fluent .e{color:var(--webchat-colorGray190);font-size:10px}.webchat-fluent .o{font-size:24px;margin-top:8px}.webchat-fluent .l .r{height:32px;justify-content:center;margin:8px 4px;width:32px}.webchat-fluent .l .e{display:none}.webchat-fluent .l .o{font-size:20px;margin-top:0}.webchat-fluent .c{align-items:center;background:var(--webchat-colorNeutralBackground1);border:none;border-radius:var(--webchat-borderRadiusXLarge);display:flex;flex-direction:column;font-family:var(--webchat-fontFamilyBase);justify-content:center}.webchat-fluent .n{box-sizing:border-box;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr);justify-items:center;padding:16px;width:100%}.webchat-fluent .d{align-items:center;color:var(--webchat-colorNeutralForeground4);display:flex;font-size:12px;gap:6px;margin-block-end:6px}.webchat-fluent .i{color:var(--webchat-colorBrandForegroundLink);text-decoration-color:transparent}.webchat-fluent .i:target{color:var(--webchat-colorBrandForegroundLinkSelected)}.webchat-fluent .i:hover{color:var(--webchat-colorBrandForegroundLinkHover);text-decoration:underline 1px currentColor}.webchat-fluent .i:active{color:var(--webchat-colorBrandForegroundLinkPressed)}.webchat-fluent .i:focus-visible{outline:none;text-decoration:underline 1px double var(--webchat-colorStrokeFocus2)}.webchat-fluent.a{display:contents;--webchat-colorNeutralForeground1: var(--colorNeutralForeground1, #242424);--webchat-colorNeutralForeground2: var(--colorNeutralForeground2, #424242);--webchat-colorNeutralForeground4: var(--colorNeutralForeground4, #707070);--webchat-colorNeutralForeground2BrandHover: var(--colorNeutralForeground2BrandHover, #02729c);--webchat-colorNeutralForeground2BrandPressed: var(--colorNeutralForeground2BrandPressed, #01678c);--webchat-colorNeutralForeground2BrandSelected: var(--colorNeutralForeground2BrandSelected, #067191);--webchat-colorNeutralForegroundDisabled: var(--colorNeutralForegroundDisabled, #bdbdbd);--webchat-colorNeutralBackground1: var(--colorNeutralBackground1, #ffffff);--webchat-colorNeutralBackground4: var(--colorNeutralBackground4, #f0f0f0);--webchat-colorNeutralBackground5: var(--colorNeutralBackground5, #ebebeb);--webchat-colorNeutralStroke1: var(--colorNeutralStroke1, #d1d1d1);--webchat-colorNeutralStroke2: var(--colorNeutralStroke2, #e0e0e0);--webchat-colorNeutralStroke1Selected: var(--colorNeutralStroke1Selected, #bdbdbd);--webchat-colorStrokeFocus2: var(--colorStrokeFocus2, #000000);--webchat-colorBrandStroke2: var(--colorBrandStroke2, #9edcf7);--webchat-colorBrandForeground2Hover: var(--colorBrandForeground2Hover, #015a7a);--webchat-colorBrandForeground2Pressed: var(--colorBrandForeground2Pressed, #01384d);--webchat-colorBrandForegroundLink: var(--colorBrandForegroundLink, #01678c);--webchat-colorBrandForegroundLinkHover: var(--colorBrandForegroundLinkHover, #015a7a);--webchat-colorBrandForegroundLinkPressed: var(--colorBrandForegroundLinkPressed, #014259);--webchat-colorBrandForegroundLinkSelected: var(--colorBrandForegroundLinkSelected, #01678c);--webchat-colorBrandBackground2Hover: var(--colorBrandBackground2Hover, #bee7fa);--webchat-colorBrandBackground2Pressed: var(--colorBrandBackground2Pressed, #7fd2f5);--webchat-colorCompoundBrandForeground1Hover: var(--colorCompoundBrandForeground1Hover, #02729c);--webchat-colorStatusDangerForeground1: var(--colorStatusDangerForeground1, #b10e1c);--webchat-colorGray30: var(--colorGray30, #edebe9);--webchat-colorGray160: var(--colorGray160, #323130);--webchat-colorGray190: var(--colorGray190, #201f1e);--webchat-colorGray200: var(--colorGray200, #1b1a19);--webchat-borderRadiusSmall: var(--borderRadiusSmall, 2px);--webchat-borderRadiusLarge: var(--borderRadiusLarge, 6px);--webchat-borderRadiusXLarge: var(--borderRadiusXLarge, 8px);--webchat-shadow16: var(--shadow16, 0 6.4px 14.4px 0 rgba(0, 0, 0, .132), 0 1.2px 3.6px 0 rgba(0, 0, 0, .108));--webchat-spacingHorizontalMNudge: var(--spacingHorizontalMNudge, 10px);--webchat-fontFamilyBase: var(--fontFamilyBase, \"Segoe UI\", \"Segoe UI Web (West European)\", -apple-system, BlinkMacSystemFont, Roboto, \"Helvetica Neue\", sans-serif);--webchat-fontFamilyNumeric: var(--fontFamilyNumeric, Bahnschrift, \"Segoe UI\", \"Segoe UI Web (West European)\", -apple-system, BlinkMacSystemFont, Roboto, \"Helvetica Neue\", sans-serif);--webchat-fontWeightSemibold: var(--fontWeightSemibold, 600);--webchat-strokeWidthThicker: var(--strokeWidthThicker, 3px);--webchat-durationUltraFast: var(--durationUltraFast, 0);--webchat-durationNormal: var(--durationNormal, .2s);--webchat-curveAccelerateMid: var(--curveAccelerateMid, cubic-bezier(1,0,1,1));--webchat-curveDecelerateMid: var(--curveDecelerateMid, cubic-bezier(0,0,0,1))}@media (prefers-reduced-motion){.webchat-fluent.a{--webchat-durationUltraFast: .01ms;--webchat-durationNormal: .01ms}}.webchat-fluent .b{background-color:var(--webchat-colorNeutralBackground4);border-radius:inherit;cursor:copy;display:grid;gap:8px;inset:0;place-content:center;place-items:center;position:absolute}.webchat-fluent .u{background-color:#e00;color:#fff}.webchat-fluent .h{height:36px;pointer-events:none;width:36px}.webchat-fluent .s{align-items:center;background:transparent;border-radius:8px;border:1px solid var(--webchat-colorBrandStroke2);color:currentColor;cursor:pointer;display:flex;font-size:12px;gap:4px;padding:4px 8px;text-align:start;transition:all .15s ease-out}@media (hover: hover){.webchat-fluent .s:not([aria-disabled=true]):hover{background-color:var(--webchat-colorBrandBackground2Hover);color:var(--webchat-colorBrandForeground2Hover)}}.webchat-fluent .s:not([aria-disabled=true]):active{background-color:var(--webchat-colorBrandBackground2Pressed);color:var(--webchat-colorBrandForeground2Pressed)}.webchat-fluent .s[aria-disabled=true]{color:var(--webchat-colorNeutralForegroundDisabled);cursor:not-allowed}.webchat-fluent .g{font-size:12px;height:1em;width:1em}.webchat-fluent .p{align-items:flex-end;align-self:flex-end;display:flex;flex-direction:column;gap:8px}.webchat-fluent .p:not(:empty){padding-block-end:8px;padding-inline-start:4px}.webchat-fluent .p.w{flex-direction:row;flex-wrap:wrap;justify-content:flex-end}.webchat-fluent .p.v{flex-direction:column}.webchat-fluent .f{display:flex;gap:4px;margin-inline-start:auto}.webchat-fluent .x{align-items:center;-webkit-appearance:none;appearance:none;aspect-ratio:1;background:transparent;border-radius:var(--webchat-borderRadiusSmall);border:none;color:currentColor;cursor:pointer;display:flex;justify-content:center;padding:3px;width:32px}.webchat-fluent .x>svg{font-size:20px;pointer-events:none}.webchat-fluent .x.k{color:var(--webchat-colorNeutralForeground2BrandSelected)}@media (hover: hover){.webchat-fluent .x:not([aria-disabled=true]):hover{color:var(--webchat-colorNeutralForeground2BrandHover)}}.webchat-fluent .x:not([aria-disabled=true]):active{color:var(--webchat-colorNeutralForeground2BrandPressed)}.webchat-fluent .x[aria-disabled=true]{color:var(--webchat-colorNeutralForegroundDisabled);cursor:not-allowed}.webchat-fluent .m{align-self:center;border-inline-end:1px solid var(--webchat-colorNeutralStroke2);height:28px}.webchat-fluent .m:is(:first-child,:last-child,:only-child){display:none}.webchat-fluent .B{display:grid}.webchat-fluent .F{font-size:0;height:0;opacity:0;width:0}.webchat-fluent .y{border-radius:var(--webchat-borderRadiusLarge);border:1px solid var(--webchat-colorNeutralStroke1);cursor:default;padding:6px 8px;width:fit-content}.webchat-fluent .N{color:transparent;font-size:0;height:0;left:0;position:absolute;top:0;width:0}.webchat-fluent .S{display:grid;grid-template-areas:\"main\";max-height:200px;overflow:hidden}.webchat-fluent .z{height:0;visibility:collapse}.webchat-fluent .L{border:none;font:inherit;grid-area:main;outline:inherit;overflow-wrap:anywhere;resize:inherit;scrollbar-gutter:stable}.webchat-fluent .H{overflow:hidden;visibility:hidden;white-space:pre-wrap}.webchat-fluent .W{background-color:inherit;color:currentColor;height:100%;padding:0}.webchat-fluent .P{scrollbar-color:unset;scrollbar-width:unset;-moz-scrollbar-color:var(--webchat-colorNeutralBackground5) var(--webchat-colorNeutralForeground2);-moz-scrollbar-width:thin}.webchat-fluent .P::-webkit-scrollbar{width:8px}.webchat-fluent .P::-webkit-scrollbar-track{background-color:var(--webchat-colorNeutralBackground5);border-radius:16px}.webchat-fluent .P::-webkit-scrollbar-thumb{background-color:var(--webchat-colorNeutralForeground2);border-radius:16px}.webchat-fluent .P::-webkit-scrollbar-corner{background-color:var(--webchat-colorNeutralBackground5)}.webchat-fluent .R{color:var(--webchat-colorNeutralForeground1);font-family:var(--webchat-fontFamilyBase);padding:0 10px 10px;text-rendering:optimizeLegibility;--webchat-sendbox-attachment-area-active: ;--webchat-sendbox-border-radius: var(--webchat-borderRadiusLarge)}.webchat-fluent .G{background-color:var(--webchat-colorNeutralBackground1);border-radius:var(--webchat-sendbox-border-radius);border:1px solid var(--webchat-colorNeutralStroke1);display:grid;font-family:var(--webchat-fontFamilyBase);font-size:14px;gap:6px;grid-template:[telephone-keypad-start] \"text-area\" [telephone-keypad-end] var(--webchat-sendbox-attachment-area-active) \"controls\" / [telephone-keypad] 1fr;line-height:20px;padding:8px;position:relative}.webchat-fluent .G:has(.t){--webchat-sendbox-attachment-area-active: \"attachment\" }.webchat-fluent .G:focus-within{border-color:var(--webchat-colorNeutralStroke1Selected)}.webchat-fluent .G:after{border-bottom-left-radius:var(--webchat-sendbox-border-radius);border-bottom-right-radius:var(--webchat-sendbox-border-radius);border-bottom:var(--webchat-strokeWidthThicker) solid var(--webchat-colorCompoundBrandForeground1Hover);bottom:-1px;clip-path:inset(calc(100% - var(--webchat-strokeWidthThicker)) 50% 0 50%);content:\"\";height:var(--webchat-sendbox-border-radius);left:-1px;position:absolute;right:-1px;transition:clip-path var(--webchat-durationUltraFast) var(--webchat-curveAccelerateMid)}.webchat-fluent .G:focus-within:after{clip-path:inset(calc(100% - var(--webchat-strokeWidthThicker)) 0 0 0);transition:clip-path var(--webchat-durationNormal) var(--webchat-curveDecelerateMid)}.webchat-fluent .G>.D{grid-area:text-area}.webchat-fluent .G>.t{grid-area:attachment}.webchat-fluent .G>.M{grid-area:controls}.webchat-fluent .G>.U{grid-area:telephone-keypad}.webchat-fluent .C{background-color:transparent;border:none;flex:auto;font-family:var(--webchat-fontFamilyBase);font-size:14px;line-height:20px;outline:none;padding:4px 4px 0;resize:none}.webchat-fluent .j{align-items:center;display:flex;padding-inline-start:4px}.webchat-fluent .T{color:var(--webchat-colorNeutralForeground4);cursor:default;font-family:var(--webchat-fontFamilyNumeric);font-size:10px;line-height:14px;margin-inline-end:4px}.webchat-fluent .I{color:var(--webchat-colorStatusDangerForeground1)}\n/*! For license information please see botframework-webchat-fluent-theme.css.LEGAL.txt */\n";function D(){if(globalThis.document){let e=document.createElement("style");e.append(document.createTextNode(pt)),document.head.appendChild(e)}}import{useMemo as mt}from"react";function bt(e){return mt(()=>Object.freeze(Object.fromEntries(Object.entries(e).map(([t,o])=>[t,`${t} ${o}`]))),[e])}var l=bt;var de=ft(ht(({button:e,"data-testid":t,onClick:o,ruby:r},a)=>{let s=l(se),i=xt(o),n=gt(()=>i.current?.(),[i]);return Z.createElement("button",{className:s["telephone-keypad__button"],"data-testid":t,onClick:n,ref:a,type:"button"},Z.createElement("span",{className:s["telephone-keypad__button__text"]},e==="star"?"\u2217":e==="pound"?"#":e),!!r&&Z.createElement("ruby",{className:s["telephone-keypad__button__ruby"]},r))}));de.displayName="TelephoneKeypad.Button";var g=de;import ie,{memo as yt}from"react";var ce=yt(e=>ie.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 16 16",width:"1em",xmlns:"http://www.w3.org/2000/svg"},ie.createElement("path",{d:"M8.5 7.5a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3Zm.25-2a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1ZM2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Z",fill:"currentColor"})));var vt={sendBoxDropZone:"send box drop zone",sendBoxSendButton:"send box send button",sendBoxTextBox:"send box text area",sendBoxTelephoneKeypadButton1:"send box telephone keypad button 1",sendBoxTelephoneKeypadButton2:"send box telephone keypad button 2",sendBoxTelephoneKeypadButton3:"send box telephone keypad button 3",sendBoxTelephoneKeypadButton4:"send box telephone keypad button 4",sendBoxTelephoneKeypadButton5:"send box telephone keypad button 5",sendBoxTelephoneKeypadButton6:"send box telephone keypad button 6",sendBoxTelephoneKeypadButton7:"send box telephone keypad button 7",sendBoxTelephoneKeypadButton8:"send box telephone keypad button 8",sendBoxTelephoneKeypadButton9:"send box telephone keypad button 9",sendBoxTelephoneKeypadButton0:"send box telephone keypad button 0",sendBoxTelephoneKeypadButtonStar:"send box telephone keypad button star",sendBoxTelephoneKeypadButtonPound:"send box telephone keypad button pound",sendBoxTelephoneKeypadToolbarButton:"send box telephone keypad toolbar button",sendBoxUploadButton:"send box upload button"},d=vt;import{useContext as wt,useMemo as Tt}from"react";function y(){let{setShown:e,shown:t}=wt(L);return Tt(()=>Object.freeze([t,e]),[t,e])}var W={"telephone-keypad":"c","telephone-keypad__box":"n","telephone-keypad__info-message":"d","telephone-keypad__info-message-link":"i"};var{LocalizedString:Et}=_t,me=pe(({children:e,isHorizontal:t})=>{let o=l(W);return t?null:m.createElement("div",{className:o["telephone-keypad__box"]},e)});me.displayName="TelephoneKeypad:Orientation";var be=pe(({autoFocus:e,className:t,onButtonClick:o,isHorizontal:r})=>{let a=ue(e),s=l(W),i=St(null),n=ue(o),[,c]=y(),u=x(()=>n.current?.("1"),[n]),p=x(()=>n.current?.("2"),[n]),h=x(()=>n.current?.("3"),[n]),v=x(()=>n.current?.("4"),[n]),S=x(()=>n.current?.("5"),[n]),T=x(()=>n.current?.("6"),[n]),k=x(()=>n.current?.("7"),[n]),_=x(()=>n.current?.("8"),[n]),B=x(()=>n.current?.("9"),[n]),w=x(()=>n.current?.("0"),[n]),A=x(()=>n.current?.("star"),[n]),M=x(()=>n.current?.("pound"),[n]),z=x(O=>{O.key==="Escape"&&c(!1)},[c]);return Nt(()=>{a.current&&i.current?.focus()},[a,i]),m.createElement("div",{className:Bt(s["telephone-keypad"],t),onKeyDown:z},m.createElement(me,{isHorizontal:r},m.createElement(g,{button:"1","data-testid":d.sendBoxTelephoneKeypadButton1,onClick:u,ref:i}),m.createElement(g,{button:"2","data-testid":d.sendBoxTelephoneKeypadButton2,onClick:p,ruby:"ABC"}),m.createElement(g,{button:"3","data-testid":d.sendBoxTelephoneKeypadButton3,onClick:h,ruby:"DEF"}),m.createElement(g,{button:"4","data-testid":d.sendBoxTelephoneKeypadButton4,onClick:v,ruby:"GHI"}),m.createElement(g,{button:"5","data-testid":d.sendBoxTelephoneKeypadButton5,onClick:S,ruby:"JKL"}),m.createElement(g,{button:"6","data-testid":d.sendBoxTelephoneKeypadButton6,onClick:T,ruby:"MNO"}),m.createElement(g,{button:"7","data-testid":d.sendBoxTelephoneKeypadButton7,onClick:k,ruby:"PQRS"}),m.createElement(g,{button:"8","data-testid":d.sendBoxTelephoneKeypadButton8,onClick:_,ruby:"TUV"}),m.createElement(g,{button:"9","data-testid":d.sendBoxTelephoneKeypadButton9,onClick:B,ruby:"WXYZ"}),m.createElement(g,{button:"star","data-testid":d.sendBoxTelephoneKeypadButtonStar,onClick:A}),m.createElement(g,{button:"0","data-testid":d.sendBoxTelephoneKeypadButton0,onClick:w,ruby:"+"}),m.createElement(g,{button:"pound","data-testid":d.sendBoxTelephoneKeypadButtonPound,onClick:M})),m.createElement("div",{className:s["telephone-keypad__info-message"]},m.createElement(ce,null),m.createElement(Et,{linkClassName:s["telephone-keypad__info-message-link"],stringIds:"TELEPHONE_KEYPAD_INPUT_MESSAGE"})))});be.displayName="TelephoneKeypad";var he=be;var fe=Ft(e=>y()[0]?Ct.createElement(he,{...e}):null);fe.displayName="TelephoneKeypad.Surrogate";var j=fe;import Mt from"react";import Ht from"classnames";var ge={theme:"a"};var Lt="webchat-fluent";function X(e){let t=l(ge);return Mt.createElement("div",{className:Ht(Lt,t.theme)},e.children)}import{hooks as ar}from"botframework-webchat-component";import F from"classnames";import b,{memo as lr,useCallback as E,useRef as sr,useState as dr}from"react";import{useRefFrom as Qe}from"use-ref-from";import xe from"react";function ye(e){return xe.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},xe.createElement("path",{d:"M2.18 2.11a.5.5 0 0 1 .54-.06l15 7.5a.5.5 0 0 1 0 .9l-15 7.5a.5.5 0 0 1-.7-.58L3.98 10 2.02 2.63a.5.5 0 0 1 .16-.52Zm2.7 8.39-1.61 6.06L16.38 10 3.27 3.44 4.88 9.5h6.62a.5.5 0 1 1 0 1H4.88Z",fill:"currentColor"}))}import{hooks as Pt}from"botframework-webchat-component";import It from"classnames";import ke,{memo as Kt,useCallback as zt,useEffect as Ot,useRef as Rt,useState as Ut}from"react";import{useRefFrom as Zt}from"use-ref-from";import ve from"react";function we(e){return ve.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},ve.createElement("path",{d:"M6 2a2 2 0 0 0-2 2v5.2c.32-.08.66-.15 1-.18V4a1 1 0 0 1 1-1h4v3.5c0 .83.67 1.5 1.5 1.5H15v8a1 1 0 0 1-1 1h-3.6c-.18.36-.4.7-.66 1H14a2 2 0 0 0 2-2V7.41c0-.4-.16-.78-.44-1.06l-3.91-3.91A1.5 1.5 0 0 0 10.59 2H6Zm8.8 5h-3.3a.5.5 0 0 1-.5-.5V3.2L14.8 7ZM10 14.5a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm-4-2a.5.5 0 0 0-1 0V14H3.5a.5.5 0 0 0 0 1H5v1.5a.5.5 0 0 0 1 0V15h1.5a.5.5 0 0 0 0-1H6v-1.5Z",fill:"currentColor"}))}var Te={"sendbox__attachment-drop-zone":"b","sendbox__attachment-drop-zone--droppable":"u","sendbox__attachment-drop-zone-icon":"h"};var{useLocalizer:Wt}=Pt,jt=e=>{e.preventDefault()},_e=e=>!!e.dataTransfer?.types?.some(t=>t.toLowerCase()==="files");function Xt(e,t){let o=e.parentNode;for(;o;){if(o===t)return!0;o=o.parentNode}return!1}var Be=e=>{let[t,o]=Ut(!1),r=l(Te),a=Rt(null),s=Wt(),i=Zt(e.onFilesAdded);Ot(()=>{let c=0,u=h=>{c++,_e(h)&&o(a.current&&(h.target===a.current||h.target instanceof HTMLElement&&Xt(h.target,a.current))?"droppable":"visible")},p=()=>--c<=0&&o(!1);return document.addEventListener("dragenter",u,!1),document.addEventListener("dragleave",p,!1),()=>{document.removeEventListener("dragenter",u),document.removeEventListener("dragleave",p)}},[o]);let n=zt(c=>{c.preventDefault(),o(!1),_e(c.nativeEvent)&&i.current([...c.dataTransfer.files])},[i,o]);return t?ke.createElement("div",{className:It(r["sendbox__attachment-drop-zone"],{[r["sendbox__attachment-drop-zone--droppable"]]:t==="droppable"}),"data-testid":d.sendBoxDropZone,onDragOver:jt,onDrop:n,ref:a},ke.createElement(we,{className:r["sendbox__attachment-drop-zone-icon"]}),s("TEXT_INPUT_DROP_ZONE")):null};Be.displayName="DropZone";var Ne=Kt(Be);var Se=Ne;import{hooks as bo}from"botframework-webchat-component";import ho from"classnames";import P,{memo as fo}from"react";import{hooks as eo}from"botframework-webchat-component";import to from"classnames";import G,{memo as oo,useCallback as ro,useRef as no}from"react";var Ee={"suggested-action":"s","suggested-action__image":"g"};import $t,{forwardRef as Vt,memo as Yt,useRef as qt}from"react";var Jt=e=>e.preventDefault(),Qt=Vt(({"aria-hidden":e,children:t,disabled:o,onClick:r,tabIndex:a,...s},i)=>{let n=qt(null);return $t.createElement("button",{"aria-disabled":o?"true":"false","aria-hidden":e,onClick:o?Jt:r,ref:i||n,tabIndex:a,...o&&{"aria-disabled":"true",tabIndex:-1},...s,type:"button"},t)}),Ce=Yt(Qt);var{useDisabled:ao,useFocus:lo,usePerformCardAction:so,useScrollToEnd:io,useStyleSet:co,useSuggestedActions:uo}=eo;function po({buttonText:e,className:t,displayText:o,image:r,imageAlt:a,text:s,type:i,value:n}){let[c,u]=uo(),[{suggestedAction:p}]=co(),[h]=ao(),v=lo(),S=no(null),T=so(),k=l(Ee),_=io(),B=ro(({target:w})=>{(async function(){await v("sendBoxWithoutKeyboard"),T({displayText:o,text:s,type:i,value:n},{target:w}),i==="openUrl"&&u([]),_()})()},[o,v,T,_,u,s,i,n]);return G.createElement(Ce,{className:to(k["suggested-action"],p+"",(t||"")+""),disabled:h,onClick:B,ref:S,type:"button"},r&&G.createElement("img",{alt:a,className:k["suggested-action__image"],src:r}),G.createElement("span",null,e))}var Fe=oo(po);function $(e){let{title:t}=e,{type:o,value:r}=e;return o==="messageBack"?t||e.displayText:t||(typeof r=="string"?r:JSON.stringify(r))}var V={"suggested-actions":"p","suggested-actions--flow":"w","suggested-actions--stacked":"v"};var{useLocalizer:go,useStyleOptions:xo,useStyleSet:yo,useSuggestedActions:vo}=bo;function wo(e){let[{suggestedActionLayout:t}]=xo(),[{suggestedActions:o}]=yo(),r=l(V);return P.createElement("div",{"aria-label":e["aria-label"],"aria-live":"polite","aria-orientation":"vertical",className:ho(r["suggested-actions"],o+"",{[r["suggested-actions--flow"]]:t==="flow",[r["suggested-actions--stacked"]]:t!=="flow"},e.className),role:"toolbar"},!!e.children&&!!P.Children.count(e.children)&&e.children)}function To(){let e=l(V),t=go(),[o]=vo(),r=o.map((a,s)=>{let{displayText:i,image:n,imageAltText:c,text:u,type:p,value:h}=a;return o?.length?P.createElement(Fe,{buttonText:$(a),displayText:i,image:n,imageAlt:n&&(c||u),itemIndex:s,key:s,text:u,type:p,value:h}):null});return P.createElement(wo,{"aria-label":t("SUGGESTED_ACTIONS_LABEL_ALT"),className:e["suggested-actions"]},r)}var Ae=fo(To);var Me=Ae;import{hooks as No}from"botframework-webchat-component";import K,{useCallback as Pe,useRef as So,memo as Eo}from"react";import{useRefFrom as Co}from"use-ref-from";import He from"react";function Le(e){return He.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},He.createElement("path",{d:"m4.83 10.48 5.65-5.65a3 3 0 0 1 4.25 4.24L8 15.8a1.5 1.5 0 0 1-2.12-2.12l6-6.01a.5.5 0 1 0-.7-.71l-6 6.01a2.5 2.5 0 0 0 3.53 3.54l6.71-6.72a4 4 0 1 0-5.65-5.66L4.12 9.78a.5.5 0 0 0 .7.7Z",fill:"currentColor"}))}import Y from"classnames";import q,{memo as J}from"react";var I={sendbox__toolbar:"f","sendbox__toolbar-button":"x","sendbox__toolbar-button--selected":"k","sendbox__toolbar-separator":"m"};var _o=e=>e.preventDefault(),N=J(e=>{let t=l(I);return q.createElement("button",{"aria-label":e["aria-label"],className:Y(t["sendbox__toolbar-button"],e.className,{[t["sendbox__toolbar-button--selected"]]:e.selected}),"data-testid":e["data-testid"],onClick:e.disabled?_o:e.onClick,type:e.type==="submit"?"submit":"button",...e.disabled&&{"aria-disabled":"true",tabIndex:-1}},e.children)});N.displayName="ToolbarButton";var Q=J(e=>{let t=l(I);return q.createElement("div",{className:Y(t.sendbox__toolbar,e.className)},e.children)});Q.displayName="Toolbar";var ee=J(e=>{let t=l(I);return q.createElement("div",{"aria-orientation":"vertical",className:Y(t["sendbox__toolbar-separator"],e.className),role:"separator"})});ee.displayName="ToolbarSeparator";var De={"sendbox__add-attachment":"B","sendbox__add-attachment-input":"F"};var{useLocalizer:Fo,useStyleOptions:Ao}=No;function Mo(e){let t=So(null),o=l(De),r=Fo(),[{uploadAccept:a,uploadMultiple:s}]=Ao(),i=Co(e.onFilesAdded),n=Pe(()=>t.current?.click(),[t]),c=Pe(({target:{files:u}})=>{u&&(i.current?.([...u]),t.current&&(t.current.value=""))},[t,i]);return K.createElement("div",{className:o["sendbox__add-attachment"]},K.createElement("input",{accept:a,"aria-disabled":e.disabled,"aria-hidden":"true",className:o["sendbox__add-attachment-input"],multiple:s,onInput:e.disabled?void 0:c,readOnly:e.disabled,ref:t,role:"button",tabIndex:-1,type:"file"}),K.createElement(N,{"aria-label":r("TEXT_INPUT_UPLOAD_BUTTON_ALT"),"data-testid":d.sendBoxUploadButton,onClick:n},K.createElement(Le,null)))}var Ie=Eo(Mo);import{hooks as Lo}from"botframework-webchat-component";import Do,{memo as Po}from"react";import Io from"classnames";var Ke={sendbox__attachment:"y"};var{useLocalizer:Ko}=Lo,zo={one:"TEXT_INPUT_ATTACHMENTS_ONE",two:"TEXT_INPUT_ATTACHMENTS_TWO",few:"TEXT_INPUT_ATTACHMENTS_FEW",many:"TEXT_INPUT_ATTACHMENTS_MANY",other:"TEXT_INPUT_ATTACHMENTS_OTHER"};function Oo({attachments:e,className:t}){let o=l(Ke),r=Ko({plural:!0});return e.length?Do.createElement("div",{className:Io(o.sendbox__attachment,t)},r(zo,e.length)):null}var ze=Po(Oo);import Uo,{memo as Zo}from"react";var Oe={"sendbox__error-message":"N"};function Wo(e){let t=l(Oe);return Uo.createElement("span",{className:t["sendbox__error-message"],id:e.id,role:"alert"},e.error)}var Re=Zo(Wo);import We,{memo as jo,useCallback as Xo}from"react";import{hooks as Go}from"botframework-webchat-component";import Ue from"react";function Ze(e){return Ue.createElement("svg",{"aria-hidden":"true",className:e.className,height:"1em",viewBox:"0 0 20 20",width:"1em",xmlns:"http://www.w3.org/2000/svg"},Ue.createElement("path",{d:"M6 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Zm0 4a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM7.25 12a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 16a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM15.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Z",fill:"currentColor"}))}var{useLocalizer:$o}=Go,je=jo(()=>{let[e,t]=y(),o=$o(),r=Xo(()=>t(a=>!a),[t]);return We.createElement(N,{"aria-label":o("TEXT_INPUT_TELEPHONE_KEYPAD_BUTTON_ALT"),"data-testid":d.sendBoxTelephoneKeypadToolbarButton,onClick:r,selected:e},We.createElement(Ze,null))});je.displayName="SendBox.TelephoneKeypadToolbarButton";var Xe=je;import te from"classnames";import oe,{forwardRef as Yo,useCallback as qo}from"react";var Ge={"sendbox__text-area":"S","sendbox__text-area--hidden":"z","sendbox__text-area-shared":"L","sendbox__text-area-doppelganger":"H","sendbox__text-area-input":"W","sendbox__text-area-input--scroll":"P"};var $e=Yo((e,t)=>{let o=l(Ge),r=qo(a=>{!a.shiftKey&&a.key==="Enter"&&(a.preventDefault(),"form"in a.target&&a.target.form instanceof HTMLFormElement&&a.target?.form?.requestSubmit())},[]);return oe.createElement("div",{className:te(o["sendbox__text-area"],{[o["sendbox__text-area--hidden"]]:e.hidden},e.className),role:e.hidden?"hidden":void 0},oe.createElement("div",{className:te(o["sendbox__text-area-doppelganger"],o["sendbox__text-area-shared"],o["sendbox__text-area-input--scroll"])},e.value||e.placeholder," "),oe.createElement("textarea",{"aria-label":e["aria-label"],className:te(o["sendbox__text-area-input"],o["sendbox__text-area-shared"],o["sendbox__text-area-input--scroll"]),"data-testid":e["data-testid"],onInput:e.onInput,onKeyDown:r,placeholder:e.placeholder,ref:t,rows:e.startRows??1,tabIndex:e.hidden?-1:void 0,value:e.value}))});$e.displayName="TextArea";var Ve=$e;import{hooks as Jo}from"botframework-webchat-component";import{useMemo as Ye}from"react";import{useRefFrom as Qo}from"use-ref-from";var{useConnectivityStatus:er,useLocalizer:tr}=Jo,or=({attachments:e,message:t})=>{let[o]=er(),r=tr(),a=Qo(o!=="connected"&&o!=="reconnected"?"offline":!t&&!e.length?"empty":void 0),s=Ye(()=>Object.freeze(new Map().set("empty",r("SEND_BOX_IS_EMPTY_TOOLTIP_ALT")).set("offline",r("CONNECTIVITY_STATUS_ALT_FATAL"))),[r]);return Ye(()=>Object.freeze([a,a.current&&s.get(a.current)]),[s,a])},qe=or;import{useMemo as rr}from"react";function re(e){let t=rr(()=>Math.random().toString(36).substr(2,5),[]);return e=e?`${e}--`:"",`${e}${t}`}var Je={sendbox:"R",sendbox__sendbox:"G","sendbox__attachment--in-grid":"t","sendbox__text-area--in-grid":"D","sendbox__sendbox-controls--in-grid":"M","sendbox__telephone-keypad--in-grid":"U","sendbox__sendbox-text":"C","sendbox__sendbox-controls":"j","sendbox__text-counter":"T","sendbox__text-counter--error":"I"};var{useFocus:ir,useLocalizer:cr,useMakeThumbnail:ur,useRegisterFocusSendBox:pr,useSendBoxAttachments:mr,useSendMessage:br,useStyleOptions:hr}=ar;function fr(e){let t=sr(null),[o,r]=dr(""),[a,s]=mr(),[{hideTelephoneKeypadButton:i,hideUploadButton:n,maxMessageLength:c}]=hr(),u=!!c&&o.length>c,p=l(Je),h=cr(),v=br(),S=ur(),T=re("sendbox__error-message-id"),[k,_]=qe({message:o,attachments:a}),[B]=y(),w=ir();pr(E(({noKeyboard:f,waitUntil:R})=>{t.current&&(f?R((async()=>{let C=t.current?.getAttribute("readonly");t.current?.setAttribute("readonly","true"),await new Promise(H=>setTimeout(H,0)),t.current?.focus(),typeof C!="string"?t.current?.removeAttribute("readonly"):t.current?.setAttribute("readonly",C)})()):t.current?.focus())},[t]));let A=Qe(a),M=Qe(o),z=E(f=>{"tabIndex"in f.target&&typeof f.target.tabIndex=="number"&&f.target.tabIndex>=0||w("sendBox")},[w]),O=E(f=>r(f.currentTarget.value),[r]),ae=E(async f=>{let R=Object.freeze(await Promise.all(f.map(C=>S(C).then(H=>Object.freeze({blob:C,...H&&{thumbnailURL:H}})))));s(R)},[S,s]),ot=E(f=>{f.preventDefault(),k.current!=="empty"&&!u&&(v(M.current,void 0,{attachments:A.current}),r(""),s([])),w("sendBox")},[A,M,v,s,r,u,k,w]),rt=E(f=>v(`/DTMF ${f}`),[v]),nt={"aria-invalid":"false",..._&&{"aria-invalid":"true","aria-errormessage":T}};return b.createElement("form",{...nt,className:F(p.sendbox,e.className),onSubmit:ot},b.createElement(Me,null),b.createElement("div",{className:F(p.sendbox__sendbox),onClickCapture:z},b.createElement(Ve,{"aria-label":h(u?"TEXT_INPUT_LENGTH_EXCEEDED_ALT":"TEXT_INPUT_ALT"),className:F(p["sendbox__sendbox-text"],p["sendbox__text-area--in-grid"]),"data-testid":d.sendBoxTextBox,hidden:B,onInput:O,placeholder:e.placeholder??h("TEXT_INPUT_PLACEHOLDER"),ref:t,value:o}),b.createElement(j,{autoFocus:!0,className:p["sendbox__telephone-keypad--in-grid"],isHorizontal:!1,onButtonClick:rt}),b.createElement(ze,{attachments:a,className:p["sendbox__attachment--in-grid"]}),b.createElement("div",{className:F(p["sendbox__sendbox-controls"],p["sendbox__sendbox-controls--in-grid"])},!B&&c&&b.createElement("div",{className:F(p["sendbox__text-counter"],{[p["sendbox__text-counter--error"]]:u})},`${o.length}/${c}`),b.createElement(Q,null,!i&&b.createElement(Xe,null),!n&&b.createElement(Ie,{onFilesAdded:ae}),b.createElement(ee,null),b.createElement(N,{"aria-label":h("TEXT_INPUT_SEND_BUTTON_ALT"),"data-testid":d.sendBoxSendButton,disabled:u||B,type:"submit"},b.createElement(ye,null)))),b.createElement(Se,{onFilesAdded:ae}),b.createElement(Re,{error:_,id:T})))}var et=lr(fr);var tt=et;var{ThemeProvider:yr}=gr,vr=[()=>()=>()=>tt],wr=({children:e})=>ne.createElement(X,null,ne.createElement(U,null,ne.createElement(yr,{sendBoxMiddleware:vr},e))),Tr=xr(wr);var _r="tsup",Br="esmodules",Nr="4.17.0-main.20240501.533c151",Zl={buildTool:_r,moduleFormat:Br,version:Nr};kr("botframework-webchat:fluent-theme","version=4.17.0-main.20240501.533c151; build-tool=tsup; module-format=esmodules");D();export{Tr as FluentThemeProvider,Zl as buildInfo,d as testIds};
2
+ /*! For license information please see botframework-webchat-fluent-theme.mjs.LEGAL.txt */
3
+ //# sourceMappingURL=botframework-webchat-fluent-theme.mjs.map