{"version":3,"file":"rtl.js","sourceRoot":"../src/","sources":["rtl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAErE,IAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,4DAA4D;AAC5D,IAAI,MAA2B,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAA6B;IAA7B,sBAAA,EAAA,UAA6B;IAClD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;QAC3B,OAAO,KAAK,CAAC,GAAG,CAAC;KAClB;IACD,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,wFAAwF;QACxF,IAAI,QAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,MAAM,GAAG,QAAQ,KAAK,GAAG,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,CAAC;SAChB;QAED,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;QACxB,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,EAAE;YAC/B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;YAC3G,iBAAiB,CAAC,MAAM,CAAC,CAAC;SAC3B;KACF;IAED,OAAO,CAAC,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,cAA+B;IAA/B,+BAAA,EAAA,sBAA+B;IACpE,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;IACxB,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAChE;IAED,IAAI,cAAc,EAAE;QAClB,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACnD;IAED,MAAM,GAAG,KAAK,CAAC;IACf,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,KAA6B;IAA7B,sBAAA,EAAA,UAA6B;IAC1E,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;QACjB,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,EAAE;YACzB,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;SACtB;aAAM,IAAI,GAAG,KAAK,QAAQ,CAAC,KAAK,EAAE;YACjC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;SACrB;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { KeyCodes } from './KeyCodes';\nimport { getDocument } from './dom/getDocument';\nimport { getItem, setItem } from './sessionStorage';\nimport { setRTL as mergeStylesSetRTL } from '@uifabric/merge-styles';\n\nconst RTL_LOCAL_STORAGE_KEY = 'isRTL';\n\n// Default to undefined so that we initialize on first read.\nlet _isRTL: boolean | undefined;\n\n/**\n * Gets the rtl state of the page (returns true if in rtl.)\n */\nexport function getRTL(theme: { rtl?: boolean } = {}): boolean {\n  if (theme.rtl !== undefined) {\n    return theme.rtl;\n  }\n  if (_isRTL === undefined) {\n    // Fabric supports persisting the RTL setting between page refreshes via session storage\n    let savedRTL = getItem(RTL_LOCAL_STORAGE_KEY);\n    if (savedRTL !== null) {\n      _isRTL = savedRTL === '1';\n      setRTL(_isRTL);\n    }\n\n    let doc = getDocument();\n    if (_isRTL === undefined && doc) {\n      _isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';\n      mergeStylesSetRTL(_isRTL);\n    }\n  }\n\n  return !!_isRTL;\n}\n\n/**\n * Sets the rtl state of the page (by adjusting the dir attribute of the html element.)\n */\nexport function setRTL(isRTL: boolean, persistSetting: boolean = false): void {\n  let doc = getDocument();\n  if (doc) {\n    doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');\n  }\n\n  if (persistSetting) {\n    setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');\n  }\n\n  _isRTL = isRTL;\n  mergeStylesSetRTL(_isRTL);\n}\n\n/**\n * Returns the given key, but flips right/left arrows if necessary.\n */\nexport function getRTLSafeKeyCode(key: number, theme: { rtl?: boolean } = {}): number {\n  if (getRTL(theme)) {\n    if (key === KeyCodes.left) {\n      key = KeyCodes.right;\n    } else if (key === KeyCodes.right) {\n      key = KeyCodes.left;\n    }\n  }\n\n  return key;\n}\n"]}