{"ast":null,"code":"import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport $cqdCi$react, { useState as $cqdCi$useState, useImperativeHandle as $cqdCi$useImperativeHandle, Fragment as $cqdCi$Fragment } from \"react\";\nimport $cqdCi$reactdom from \"react-dom\";\nimport { VisuallyHidden as $cqdCi$VisuallyHidden } from \"@react-aria/visually-hidden\";\n\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {\n    get: v,\n    set: s,\n    enumerable: true,\n    configurable: true\n  });\n}\n\nvar $b95a471aac7c72bc$exports = {};\n$parcel$export($b95a471aac7c72bc$exports, \"announce\", function () {\n  return $b95a471aac7c72bc$export$a9b970dcc4ae71a9;\n});\n$parcel$export($b95a471aac7c72bc$exports, \"clearAnnouncer\", function () {\n  return $b95a471aac7c72bc$export$d10ae4f68404609a;\n});\n$parcel$export($b95a471aac7c72bc$exports, \"destroyAnnouncer\", function () {\n  return $b95a471aac7c72bc$export$d8686216b8b81b2f;\n});\nvar $b95a471aac7c72bc$var$LIVEREGION_TIMEOUT_DELAY = 7000;\nvar $b95a471aac7c72bc$var$liveRegionAnnouncer = $cqdCi$react.createRef();\nvar $b95a471aac7c72bc$var$node = null;\nvar $b95a471aac7c72bc$var$messageId = 0;\n\nfunction $b95a471aac7c72bc$export$a9b970dcc4ae71a9(message) {\n  var assertiveness = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'assertive';\n  var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : $b95a471aac7c72bc$var$LIVEREGION_TIMEOUT_DELAY;\n  $b95a471aac7c72bc$var$ensureInstance(function (announcer) {\n    return announcer.announce(message, assertiveness, timeout);\n  });\n}\n\nfunction $b95a471aac7c72bc$export$d10ae4f68404609a(assertiveness) {\n  $b95a471aac7c72bc$var$ensureInstance(function (announcer) {\n    return announcer.clear(assertiveness);\n  });\n}\n\nfunction $b95a471aac7c72bc$export$d8686216b8b81b2f() {\n  if ($b95a471aac7c72bc$var$liveRegionAnnouncer.current) {\n    $cqdCi$reactdom.unmountComponentAtNode($b95a471aac7c72bc$var$node);\n    document.body.removeChild($b95a471aac7c72bc$var$node);\n    $b95a471aac7c72bc$var$node = null;\n  }\n}\n\nfunction $b95a471aac7c72bc$var$ensureInstance(callback) {\n  if (!$b95a471aac7c72bc$var$liveRegionAnnouncer.current) {\n    $b95a471aac7c72bc$var$node = document.createElement('div');\n    $b95a471aac7c72bc$var$node.dataset.liveAnnouncer = 'true';\n    document.body.prepend($b95a471aac7c72bc$var$node);\n    $cqdCi$reactdom.render($cqdCi$react.createElement($b95a471aac7c72bc$var$LiveRegionAnnouncer, {\n      ref: $b95a471aac7c72bc$var$liveRegionAnnouncer\n    }), $b95a471aac7c72bc$var$node, function () {\n      return callback($b95a471aac7c72bc$var$liveRegionAnnouncer.current);\n    });\n  } else callback($b95a471aac7c72bc$var$liveRegionAnnouncer.current);\n}\n\nvar $b95a471aac7c72bc$var$LiveRegionAnnouncer = $cqdCi$react.forwardRef(function (_, ref) {\n  var _$cqdCi$useState = $cqdCi$useState([]),\n      _$cqdCi$useState2 = _slicedToArray(_$cqdCi$useState, 2),\n      assertiveMessages = _$cqdCi$useState2[0],\n      setAssertiveMessages = _$cqdCi$useState2[1];\n\n  var _$cqdCi$useState3 = $cqdCi$useState([]),\n      _$cqdCi$useState4 = _slicedToArray(_$cqdCi$useState3, 2),\n      politeMessages = _$cqdCi$useState4[0],\n      setPoliteMessages = _$cqdCi$useState4[1];\n\n  var clear = function clear(assertiveness) {\n    if (!assertiveness || assertiveness === 'assertive') setAssertiveMessages([]);\n    if (!assertiveness || assertiveness === 'polite') setPoliteMessages([]);\n  };\n\n  var $b95a471aac7c72bc$export$a9b970dcc4ae71a9 = function $b95a471aac7c72bc$export$a9b970dcc4ae71a9(message1) {\n    var assertiveness = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'assertive';\n    var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : $b95a471aac7c72bc$var$LIVEREGION_TIMEOUT_DELAY;\n    var id = $b95a471aac7c72bc$var$messageId++;\n    if (assertiveness === 'assertive') setAssertiveMessages(function (messages) {\n      return [].concat(_toConsumableArray(messages), [{\n        id: id,\n        text: message1\n      }]);\n    });else setPoliteMessages(function (messages) {\n      return [].concat(_toConsumableArray(messages), [{\n        id: id,\n        text: message1\n      }]);\n    });\n    if (message1 !== '') setTimeout(function () {\n      if (assertiveness === 'assertive') setAssertiveMessages(function (messages) {\n        return messages.filter(function (message) {\n          return message.id !== id;\n        });\n      });else setPoliteMessages(function (messages) {\n        return messages.filter(function (message) {\n          return message.id !== id;\n        });\n      });\n    }, timeout);\n  };\n\n  $cqdCi$useImperativeHandle(ref, function () {\n    return {\n      announce: $b95a471aac7c72bc$export$a9b970dcc4ae71a9,\n      clear: clear\n    };\n  });\n  return $cqdCi$react.createElement($cqdCi$Fragment, null, $cqdCi$react.createElement($b95a471aac7c72bc$var$MessageBlock, {\n    \"aria-live\": \"assertive\"\n  }, assertiveMessages.map(function (message) {\n    return $cqdCi$react.createElement(\"div\", {\n      key: message.id\n    }, message.text);\n  })), $cqdCi$react.createElement($b95a471aac7c72bc$var$MessageBlock, {\n    \"aria-live\": \"polite\"\n  }, politeMessages.map(function (message) {\n    return $cqdCi$react.createElement(\"div\", {\n      key: message.id\n    }, message.text);\n  })));\n});\n\nfunction $b95a471aac7c72bc$var$MessageBlock(_ref) {\n  var children = _ref.children,\n      ariaLive = _ref['aria-live'];\n  return $cqdCi$react.createElement($cqdCi$VisuallyHidden, {\n    role: \"log\",\n    \"aria-live\": ariaLive,\n    \"aria-relevant\": \"additions\"\n  }, children);\n}\n\nexport { $b95a471aac7c72bc$export$a9b970dcc4ae71a9 as announce, $b95a471aac7c72bc$export$d10ae4f68404609a as clearAnnouncer, $b95a471aac7c72bc$export$d8686216b8b81b2f as destroyAnnouncer };","map":{"version":3,"sources":["packages/@react-aria/live-announcer/src/LiveAnnouncer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAM,8CAAwB,GAAG,IAAjC;AAEA,IAAI,yCAAmB,GAAG,YAAK,CAAC,SAAN,EAA1B;AACA,IAAI,0BAAI,GAAgB,IAAxB;AACA,IAAI,+BAAS,GAAG,CAAhB;;SAKgB,yC,CACd,O,EAGA;AAAA,MAFA,aAEA,uEAF+B,WAE/B;AAAA,MADA,OACA,uEADU,8CACV;AACA,EAAA,oCAAc,CAAA,UAAC,SAAD;AAAA,WAAc,SAAS,CAAC,QAAV,CAAmB,OAAnB,EAA4B,aAA5B,EAA2C,OAA3C,CAAd;AAAA,GAAA,CAAd;AACD;;SAKe,yC,CAAe,a,EAA8B;AAC3D,EAAA,oCAAc,CAAA,UAAC,SAAD;AAAA,WAAc,SAAS,CAAC,KAAV,CAAgB,aAAhB,CAAd;AAAA,GAAA,CAAd;AACD;;SAKe,yC,GAAmB;AACjC,MAAI,yCAAmB,CAAC,OAAxB,EAAiC;AAC/B,IAAA,eAAQ,CAAC,sBAAT,CAAgC,0BAAhC;AACA,IAAA,QAAQ,CAAC,IAAT,CAAc,WAAd,CAA0B,0BAA1B;AACA,IAAA,0BAAI,GAAG,IAAP;AACD;AACF;;AAIE,SACM,oCADN,CACqB,QADrB,EAC+D;AAChE,MAAE,CAAG,yCAAmB,CAAC,OAAzB,EAAkC;AAChC,IAAA,0BAAI,GAAG,QAAQ,CAAC,aAAT,CAAuB,KAAvB,CAAP;AACA,IAAA,0BAAI,CAAC,OAAL,CAAa,aAAb,GAA6B,MAA7B;AACA,IAAA,QAAQ,CAAC,IAAT,CAAc,OAAd,CAAsB,0BAAtB;AACA,IAAA,eAAQ,CAAC,MAAT,CAAe,YAAA,CAAA,aAAA,CACZ,yCADY,EACO;AAAC,MAAA,GAAG,EAAE;AAAN,KADP,CAAf,EAEE,0BAFF,EAEM;AAAA,aACE,QAAQ,CAAC,yCAAmB,CAAC,OAArB,CADV;AAAA,KAFN;AAKD,GATD,MAUE,QAAQ,CAAC,yCAAmB,CAAC,OAArB,CAAR;AAEH;;AAED,IAAM,yCAAmB,GAAG,YAAK,CAAC,UAAN,CAAgB,UAAE,CAAF,EAAK,GAAL,EAAmC;AAC7E,yBAAgD,eAAQ,CAAC,EAAD,CAAxD;AAAA;AAAA,MAAK,iBAAL;AAAA,MAAwB,oBAAxB;;AACA,0BAA0C,eAAQ,CAAC,EAAD,CAAlD;AAAA;AAAA,MAAK,cAAL;AAAA,MAAqB,iBAArB;;AAEA,MAAI,KAAK,GAAA,SAAL,KAAK,CAAI,aAAJ,EAAqC;AAC5C,QAAE,CAAG,aAAH,IAAoB,aAAa,KAAK,WAAxC,EACE,oBAAoB,CAAC,EAAD,CAApB;AAGF,QAAE,CAAG,aAAH,IAAoB,aAAa,KAAK,QAAxC,EACE,iBAAiB,CAAC,EAAD,CAAjB;AAEH,GARD;;AAUA,MAAI,yCAAQ,GAAA,SAAR,yCAAQ,CAAI,QAAJ,EAAyF;AAAA,QAApE,aAAoE,uEAApD,WAAoD;AAAA,QAAvC,OAAuC,uEAA7B,8CAA6B;AACnG,QAAI,EAAE,GAAG,+BAAS,EAAlB;AAEA,QAAI,aAAa,KAAK,WAAtB,EACE,oBAAoB,CAAA,UAAC,QAAD;AAAA,0CAAiB,QAAjB,IAA2B;YAAC,EAAD;AAAK,QAAA,IAAI,EAAE;AAAX,OAA3B;AAAA,KAAA,CAApB,CADF,KAGE,iBAAiB,CAAA,UAAC,QAAD;AAAA,0CAAiB,QAAjB,IAA2B;YAAC,EAAD;AAAK,QAAA,IAAI,EAAE;AAAX,OAA3B;AAAA,KAAA,CAAjB;AAGF,QAAI,QAAO,KAAK,EAAhB,EACE,UAAU,CAAA,YAAO;AACf,UAAI,aAAa,KAAK,WAAtB,EACE,oBAAoB,CAAA,UAAC,QAAD;AAAA,eAAa,QAAQ,CAAC,MAAT,CAAe,UAAC,OAAD;AAAA,iBAAY,OAAO,CAAC,EAAR,KAAe,EAA3B;AAAA,SAAf,CAAb;AAAA,OAAA,CAApB,CADF,KAGE,iBAAiB,CAAA,UAAC,QAAD;AAAA,eAAa,QAAQ,CAAC,MAAT,CAAe,UAAC,OAAD;AAAA,iBAAY,OAAO,CAAC,EAAR,KAAe,EAA3B;AAAA,SAAf,CAAb;AAAA,OAAA,CAAjB;AAEH,KANS,EAMP,OANO,CAAV;AAQH,GAlBD;;AAoBA,EAAA,0BAAmB,CAAC,GAAD,EAAI;AAAA,WAAS;gBAC9B,yCAD8B;aAE9B;AAF8B,KAAT;AAAA,GAAJ,CAAnB;AAKA,SAAM,YAAA,CAAA,aAAA,CACH,eADG,EACK,IADL,EACK,YAAA,CAAA,aAAA,CACN,kCADM,EACM;AAAC,iBAAU;AAAX,GADN,EAEJ,iBAAiB,CAAC,GAAlB,CAAqB,UAAC,OAAD;AAAA,WAAQ,YAAA,CAAA,aAAA,CAAK,KAAL,EAAQ;AAAC,MAAA,GAAG,EAAE,OAAO,CAAC;AAAd,KAAR,EAA2B,OAAO,CAAC,IAAnC,CAAR;AAAA,GAArB,CAFI,CADL,E,2BAKD,kC,EAAY;AAAC,iBAAU;AAAX,G,EACV,cAAc,CAAC,GAAf,CAAkB,UAAC,OAAD;AAAA,WAAQ,YAAA,CAAA,aAAA,CAAK,KAAL,EAAQ;AAAC,MAAA,GAAG,EAAE,OAAO,CAAC;AAAd,KAAR,EAA2B,OAAO,CAAC,IAAnC,CAAR;AAAA,GAAlB,C,CAND,CAAN;AAUD,CAjD2B,CAA5B;;SAwDS,kC,OAAmE;AAAA,MAArD,QAAqD,QAArD,QAAqD;AAAA,MAA9B,QAA8B,QAA3C,WAA2C;AAC1E,SAAM,YAAA,CAAA,aAAA,CACH,qBADG,EACW;AACb,IAAA,IAAI,EAAC,KADQ;AAEb,iBAAW,QAFE;AAGb,qBAAc;AAHD,GADX,EAKD,QALC,CAAN;AAQD","sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React, {Fragment, ReactNode, RefObject, useImperativeHandle, useState} from 'react';\nimport ReactDOM from 'react-dom';\nimport {VisuallyHidden} from '@react-aria/visually-hidden';\n\ntype Assertiveness = 'assertive' | 'polite';\ninterface Announcer {\n  announce(message: string, assertiveness: Assertiveness, timeout: number): void,\n  clear(assertiveness: Assertiveness): void\n}\n\n/* Inspired by https://github.com/AlmeroSteyn/react-aria-live */\nconst LIVEREGION_TIMEOUT_DELAY = 7000;\n\nlet liveRegionAnnouncer = React.createRef<Announcer>();\nlet node: HTMLElement = null;\nlet messageId = 0;\n\n/**\n * Announces the message using screen reader technology.\n */\nexport function announce(\n  message: string,\n  assertiveness: Assertiveness = 'assertive',\n  timeout = LIVEREGION_TIMEOUT_DELAY\n) {\n  ensureInstance(announcer => announcer.announce(message, assertiveness, timeout));\n}\n\n/**\n * Stops all queued announcements.\n */\nexport function clearAnnouncer(assertiveness: Assertiveness) {\n  ensureInstance(announcer => announcer.clear(assertiveness));\n}\n\n/**\n * Removes the announcer from the DOM.\n */\nexport function destroyAnnouncer() {\n  if (liveRegionAnnouncer.current) {\n    ReactDOM.unmountComponentAtNode(node);\n    document.body.removeChild(node);\n    node = null;\n  }\n}\n\n/**\n * Ensures we only have one instance of the announcer so that we don't have elements competing.\n */\nfunction ensureInstance(callback: (announcer: Announcer) => void) {\n  if (!liveRegionAnnouncer.current) {\n    node = document.createElement('div');\n    node.dataset.liveAnnouncer = 'true';\n    document.body.prepend(node);\n    ReactDOM.render(\n      <LiveRegionAnnouncer ref={liveRegionAnnouncer} />,\n      node,\n      () => callback(liveRegionAnnouncer.current)\n    );\n  } else {\n    callback(liveRegionAnnouncer.current);\n  }\n}\n\nconst LiveRegionAnnouncer = React.forwardRef((_, ref: RefObject<Announcer>) => {\n  let [assertiveMessages, setAssertiveMessages] = useState([]);\n  let [politeMessages, setPoliteMessages] = useState([]);\n\n  let clear = (assertiveness: Assertiveness) => {\n    if (!assertiveness || assertiveness === 'assertive') {\n      setAssertiveMessages([]);\n    }\n\n    if (!assertiveness || assertiveness === 'polite') {\n      setPoliteMessages([]);\n    }\n  };\n\n  let announce = (message: string, assertiveness = 'assertive', timeout = LIVEREGION_TIMEOUT_DELAY) => {\n    let id = messageId++;\n\n    if (assertiveness === 'assertive') {\n      setAssertiveMessages(messages => [...messages, {id, text: message}]);\n    } else {\n      setPoliteMessages(messages => [...messages, {id, text: message}]);\n    }\n\n    if (message !== '') {\n      setTimeout(() => {\n        if (assertiveness === 'assertive') {\n          setAssertiveMessages(messages => messages.filter(message => message.id !== id));\n        } else {\n          setPoliteMessages(messages => messages.filter(message => message.id !== id));\n        }\n      }, timeout);\n    }\n  };\n\n  useImperativeHandle(ref, () => ({\n    announce,\n    clear\n  }));\n\n  return (\n    <Fragment>\n      <MessageBlock aria-live=\"assertive\">\n        {assertiveMessages.map(message => <div key={message.id}>{message.text}</div>)}\n      </MessageBlock>\n      <MessageBlock aria-live=\"polite\">\n        {politeMessages.map(message => <div key={message.id}>{message.text}</div>)}\n      </MessageBlock>\n    </Fragment>\n  );\n});\n\ninterface MessageBlockProps {\n   children: ReactNode,\n   'aria-live': Assertiveness\n }\n\nfunction MessageBlock({children, 'aria-live': ariaLive}: MessageBlockProps) {\n  return (\n    <VisuallyHidden\n      role=\"log\"\n      aria-live={ariaLive}\n      aria-relevant=\"additions\">\n      {children}\n    </VisuallyHidden>\n  );\n}\n"]},"metadata":{},"sourceType":"module"}